diff options
| author | herbelin | 2008-03-10 21:52:06 +0000 |
|---|---|---|
| committer | herbelin | 2008-03-10 21:52:06 +0000 |
| commit | 6b01f89b083bf8acc666264222131d6ce2bb06bf (patch) | |
| tree | 45f4e4184c8592dd409dbc6f0d9955f571113d77 /kernel/closure.ml | |
| 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/closure.ml')
| -rw-r--r-- | kernel/closure.ml | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/kernel/closure.ml b/kernel/closure.ml index 01d31441d6..2ee2443ffc 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] *) |
