diff options
author | 2008-03-10 21:52:06 +0000 | |
---|---|---|
committer | 2008-03-10 21:52:06 +0000 | |
commit | 6b01f89b083bf8acc666264222131d6ce2bb06bf (patch) | |
tree | 45f4e4184c8592dd409dbc6f0d9955f571113d77 /kernel | |
parent | b31b50f72144a5aa0eef4801aab1819c7aff6f35 (diff) |
fold travaille maintenant sur la forme beta-iota-zeta réduite du
corps de la constante (comme unfold le fait ici), de telle sorte que
"unfold f; fold f" marche (cf bug 1789)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@10652 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/closure.ml | 9 | ||||
-rw-r--r-- | kernel/closure.mli | 1 |
2 files changed, 7 insertions, 3 deletions
diff --git a/kernel/closure.ml b/kernel/closure.ml index 01d31441d..2ee2443ff 100644 --- a/kernel/closure.ml +++ b/kernel/closure.ml @@ -165,12 +165,15 @@ let betadeltaiotanolet = mkflags [fBETA;fDELTA;fIOTA] let betaiota = mkflags [fBETA;fIOTA] let beta = mkflags [fBETA] let betaiotazeta = mkflags [fBETA;fIOTA;fZETA] + +(* Removing fZETA for finer behaviour would break many developments *) +let unfold_side_flags = [fBETA;fIOTA;fZETA] +let unfold_side_red = mkflags [fBETA;fIOTA;fZETA] let unfold_red kn = let flag = match kn with | EvalVarRef id -> fVAR id - | EvalConstRef kn -> fCONST kn - in (* Remove fZETA for finer behaviour ? *) - mkflags [fBETA;flag;fIOTA;fZETA] + | EvalConstRef kn -> fCONST kn in + mkflags (flag::unfold_side_flags) (************************* Obsolète (* [r_const=(true,cl)] means all constants but those in [cl] *) diff --git a/kernel/closure.mli b/kernel/closure.mli index ea8bccede..926e152e0 100644 --- a/kernel/closure.mli +++ b/kernel/closure.mli @@ -76,6 +76,7 @@ val betadeltaiota : reds val betaiotazeta : reds val betadeltaiotanolet : reds +val unfold_side_red : reds val unfold_red : evaluable_global_reference -> reds (***********************************************************************) |