aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2018-04-10 18:24:45 +0200
committerPierre-Marie Pédrot2018-04-10 19:15:42 +0200
commit7913b03ba5072efeb9f6ef009ce27cec8ff19cac (patch)
treebd6b9cdf466c6a4c7973b2209d0c292e05bd854d /engine
parent834530272b9006e28a4b7ba35b1f8f861f51e7ce (diff)
Replace uses of Termops.dependent by more specific functions.
This is more efficient in general, because Termops.dependent doesn't take advantage of the knowledge of its pattern argument.
Diffstat (limited to 'engine')
-rw-r--r--engine/termops.ml7
-rw-r--r--engine/termops.mli1
2 files changed, 8 insertions, 0 deletions
diff --git a/engine/termops.ml b/engine/termops.ml
index b7531f6fc9..e9d17e3c59 100644
--- a/engine/termops.ml
+++ b/engine/termops.ml
@@ -851,6 +851,13 @@ let occur_meta_or_existential sigma c =
| _ -> EConstr.iter sigma occrec c
in try occrec c; false with Occur -> true
+let occur_metavariable sigma m c =
+ let rec occrec c = match EConstr.kind sigma c with
+ | Meta m' -> if Int.equal m m' then raise Occur
+ | _ -> EConstr.iter sigma occrec c
+ in
+ try occrec c; false with Occur -> true
+
let occur_evar sigma n c =
let rec occur_rec c = match EConstr.kind sigma c with
| Evar (sp,_) when Evar.equal sp n -> raise Occur
diff --git a/engine/termops.mli b/engine/termops.mli
index 3b0c4bba64..54b47f9e4a 100644
--- a/engine/termops.mli
+++ b/engine/termops.mli
@@ -94,6 +94,7 @@ exception Occur
val occur_meta : Evd.evar_map -> constr -> bool
val occur_existential : Evd.evar_map -> constr -> bool
val occur_meta_or_existential : Evd.evar_map -> constr -> bool
+val occur_metavariable : Evd.evar_map -> metavariable -> constr -> bool
val occur_evar : Evd.evar_map -> Evar.t -> constr -> bool
val occur_var : env -> Evd.evar_map -> Id.t -> constr -> bool
val occur_var_in_decl :