aboutsummaryrefslogtreecommitdiffhomepage
path: root/toplevel
diff options
context:
space:
mode:
authorGravatar aspiwack <aspiwack@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-03-04 16:51:35 +0000
committerGravatar aspiwack <aspiwack@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-03-04 16:51:35 +0000
commitec6ef01a50f874bae1fc2d8cc2513e303f2a575c (patch)
treee466da649473f369358a98eff00d335b96c3c9c6 /toplevel
parentd7119aa0064e0cad1123983417e8beccfb6fe96c (diff)
Backtrack sur la mémoïsation de nf_evar.
L'expérience prouve que ce n'est pas franchement concluant. On peut se risquer à une explication : - nf_evar, version mémoïsée n'est pas tail recursive - On retarde la substitution des hypothèses de l'evar en échange de faire moins de substitutions d'evars. Intuitivement c'est intéressant seulement si il y a plus de substitutions d'evar dupliquées que d'hypothèses dupliquées. Ce qui ne doit pas être le cas (ne serait-ce que parce que dupliquer une evar duplique aussi ses variables libres). This reverts commit 066a564021788e995eb166ad6ed6e55611d6f593. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11958 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'toplevel')
-rw-r--r--toplevel/autoinstance.ml4
1 files changed, 2 insertions, 2 deletions
diff --git a/toplevel/autoinstance.ml b/toplevel/autoinstance.ml
index ec1bbafc2..520f9b631 100644
--- a/toplevel/autoinstance.ml
+++ b/toplevel/autoinstance.ml
@@ -260,7 +260,7 @@ let declare_instance (k:global_reference -> rel_context -> constr list -> unit)
let (evm,gen) = List.fold_right
(fun ev (evm,gen) ->
if Evd.is_defined evm ev
- then Evd.unsafe_remove evm ev,gen
+ then Evd.remove evm ev,gen
else evm,(ev::gen))
gen (evm,[]) in
(* msgnl(str"instance complète : ["++Util.prlist_with_sep (fun _ -> str";") Util.pr_int gen++str"] : "++spc()++pr_evar_defs evm);*)
@@ -268,7 +268,7 @@ let declare_instance (k:global_reference -> rel_context -> constr list -> unit)
let (_,ctx,evm) = List.fold_left
( fun (i,ctx,evm) ev ->
let ctx = (Anonymous,None,lift (-i) (Evd.evar_concl(Evd.find evm ev)))::ctx in
- let evm = subst_evar_in_evm ev (mkRel i) (Evd.unsafe_remove evm ev) in
+ let evm = subst_evar_in_evm ev (mkRel i) (Evd.remove evm ev) in
(i-1,ctx,evm)
) (ngen,[],evm) gen in
let fields = List.rev (Evd.fold ( fun ev evi l -> evar_definition evi::l ) evm []) in