X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Flambda-delta%2Fsrc%2Fbasic_rg%2FbrgReduction.ml;h=c4b2e9c15e7d0ed8104e4e889d0865c6336d56f5;hb=cee0c3ca597ebbff2250674c255ed1bc909521fb;hp=79ffcb32f6b60160dfc24cdce1799a035986a861;hpb=f7988fc51f7c96617aa2b3320628645480af681a;p=helm.git diff --git a/helm/software/lambda-delta/src/basic_rg/brgReduction.ml b/helm/software/lambda-delta/src/basic_rg/brgReduction.ml index 79ffcb32f..c4b2e9c15 100644 --- a/helm/software/lambda-delta/src/basic_rg/brgReduction.ml +++ b/helm/software/lambda-delta/src/basic_rg/brgReduction.ml @@ -114,7 +114,7 @@ let rec step st m x = begin match m.s with | [] -> m, None, x | (c, v) :: s -> - if N.is_zero n then Q.add_infinite st.S.cc a; + if N.is_zero n then Q.add_nonzero st.S.cc a; O.add ~beta:1 ~upsilon:(List.length s) (); let e = B.push m.e c a (B.abbr v) (* (B.Cast ([], w, v)) *) in step st {m with e = e; s = s} t @@ -160,11 +160,12 @@ let rec ac_nfs st (m1, r1, u) (m2, r2, t) = ac_nfs st (step st m1 v1) (m2, r2, t) | _, B.Bind (a1, (B.Abst (n1, w1) as b1), t1), _, B.Bind (a2, (B.Abst (n2, w2) as b2), t2) -> - if n1 = n2 && ac {st with S.si = false} m1 w1 m2 w2 then + if n1 = n2 then () else Q.add_equal st.S.cc a1 a2; + if ac {st with S.si = false} m1 w1 m2 w2 then ac st (push m1 a1 b1) t1 (push m2 a2 b2) t2 else false - | _, B.Sort _, _, B.Bind (a, (B.Abst (n, _) as b), t) - when N.is_zero n && st.S.si -> + | _, B.Sort _, _, B.Bind (a, (B.Abst (n, _) as b), t) -> + if N.is_zero n then () else Q.add_zero st.S.cc a; O.add ~si:1 (); ac st (push m1 a b) u (push m2 a b) t | _ -> false