From 870bc5c4badfa48556e473ad7b14c9d36b42d53d Mon Sep 17 00:00:00 2001 From: msozeau Date: Wed, 8 Apr 2009 20:23:46 +0000 Subject: 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 --- plugins/subtac/eterm.ml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'plugins/subtac/eterm.ml') 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 -> -- cgit v1.2.3