diff options
| author | Pierre-Marie Pédrot | 2016-06-24 13:52:20 +0200 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2016-06-24 15:16:03 +0200 |
| commit | f4f08411e85185cb03ea0ee0cb42c59988015e65 (patch) | |
| tree | 2832b87b02e05114aec2b8ce888448249d0aee76 /engine/termops.ml | |
| parent | e5446e385ba283f3c4cde83e0fc14987e500778a (diff) | |
Optmimize the subst tactic.
Take advantage that the provided term is always a variable in Equality.is_eq_x.
Diffstat (limited to 'engine/termops.ml')
| -rw-r--r-- | engine/termops.ml | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/engine/termops.ml b/engine/termops.ml index f698f81513..ac8461a3ab 100644 --- a/engine/termops.ml +++ b/engine/termops.ml @@ -564,7 +564,14 @@ let occur_var_in_decl env hyp decl = occur_var env hyp typ || occur_var env hyp body -(* returns the list of free debruijn indices in a term *) +let local_occur_var id c = + let rec occur c = match kind_of_term c with + | Var id' -> if Id.equal id id' then raise Occur + | _ -> Constr.iter occur c + in + try occur c; false with Occur -> true + + (* returns the list of free debruijn indices in a term *) let free_rels m = let rec frec depth acc c = match kind_of_term c with |
