diff options
author | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2018-04-10 18:24:45 +0200 |
---|---|---|
committer | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2018-04-10 19:15:42 +0200 |
commit | 7913b03ba5072efeb9f6ef009ce27cec8ff19cac (patch) | |
tree | bd6b9cdf466c6a4c7973b2209d0c292e05bd854d /engine | |
parent | 834530272b9006e28a4b7ba35b1f8f861f51e7ce (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.ml | 7 | ||||
-rw-r--r-- | engine/termops.mli | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/engine/termops.ml b/engine/termops.ml index b7531f6fc..e9d17e3c5 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 3b0c4bba6..54b47f9e4 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 : |