aboutsummaryrefslogtreecommitdiff
path: root/pretyping
diff options
context:
space:
mode:
authormohring2002-03-26 16:29:59 +0000
committermohring2002-03-26 16:29:59 +0000
commit3dd52dacc7846b85a11f83c398945c00bb65bad2 (patch)
tree4f5f004e7f617b1bfe8aab8f9eebb0508954da26 /pretyping
parent3bd24bddb74d7a351cbfc8cba7a5e3735f478832 (diff)
Prise en compte des dependances dans la tactique Case
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@2567 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping')
-rw-r--r--pretyping/termops.ml6
-rw-r--r--pretyping/termops.mli1
2 files changed, 7 insertions, 0 deletions
diff --git a/pretyping/termops.ml b/pretyping/termops.ml
index fec2a92549..7f77bcdba7 100644
--- a/pretyping/termops.ml
+++ b/pretyping/termops.ml
@@ -313,6 +313,12 @@ let occur_var_in_decl env hyp (_,c,typ) =
occur_var env hyp (body_of_type typ) ||
occur_var env hyp body
+(* Tests that t is a subterm of c *)
+let occur_term t c =
+ let eq_constr_fail c = if eq_constr t c then raise Occur
+ in let rec occur_rec c = eq_constr_fail c; iter_constr occur_rec c
+ in try occur_rec c; false with Occur -> true
+
(* returns the list of free debruijn indices in a term *)
let free_rels m =
diff --git a/pretyping/termops.mli b/pretyping/termops.mli
index c45b1b016c..ebcd93a348 100644
--- a/pretyping/termops.mli
+++ b/pretyping/termops.mli
@@ -67,6 +67,7 @@ val occur_var : env -> identifier -> types -> bool
val occur_var_in_decl :
env ->
identifier -> 'a * types option * types -> bool
+val occur_term : constr -> constr -> bool
val free_rels : constr -> Intset.t
(* Substitution of metavariables *)