diff options
author | 2009-04-08 20:23:46 +0000 | |
---|---|---|
committer | 2009-04-08 20:23:46 +0000 | |
commit | 870bc5c4badfa48556e473ad7b14c9d36b42d53d (patch) | |
tree | 4d050ab55045b7a10edac70b3c6723d248ac0f43 /plugins/subtac/eterm.ml | |
parent | 2b04a76fca80b7357a7ba40322f4c001d4e12cb4 (diff) |
Experimental support for automatic destruction of recursive calls and
clearing of recursive protototypes in Program obligations. Relies on
marking said prototypes with a particular constant and preprocessing
obligation goals with an appropriate tactic.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12071 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'plugins/subtac/eterm.ml')
-rw-r--r-- | plugins/subtac/eterm.ml | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/plugins/subtac/eterm.ml b/plugins/subtac/eterm.ml index 00a69bba7..d65b520b6 100644 --- a/plugins/subtac/eterm.ml +++ b/plugins/subtac/eterm.ml @@ -92,7 +92,6 @@ let subst_vars acc n t = (** Rewrite type of an evar ([ H1 : t1, ... Hn : tn |- concl ]) to a product : forall H1 : t1, ..., forall Hn : tn, concl. Changes evars and hypothesis references to variable references. - A little optimization: don't include unnecessary let-ins and their dependencies. *) let etype_of_evar evs hyps concl = let rec aux acc n = function @@ -104,11 +103,9 @@ let etype_of_evar evs hyps concl = let trans' = Idset.union trans trans' in (match copt with Some c -> -(* if noccurn 1 rest then lift (-1) rest, s', trans' *) -(* else *) - let c', s'', trans'' = subst_evar_constr evs n c in - let c' = subst_vars acc 0 c' in - mkNamedProd_or_LetIn (id, Some c', t'') rest, + let c', s'', trans'' = subst_evar_constr evs n c in + let c' = subst_vars acc 0 c' in + mkNamedProd_or_LetIn (id, Some c', t'') rest, Intset.union s'' s', Idset.union trans'' trans' | None -> |