From 7913b03ba5072efeb9f6ef009ce27cec8ff19cac Mon Sep 17 00:00:00 2001 From: Pierre-Marie Pédrot Date: Tue, 10 Apr 2018 18:24:45 +0200 Subject: 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. --- engine/termops.ml | 7 +++++++ engine/termops.mli | 1 + 2 files changed, 8 insertions(+) (limited to 'engine') 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 : -- cgit v1.2.3