diff --git a/src/arith.ml b/src/arith.ml index b22aa6c6195fd7ce6e6b0eb1f1e2d56a39d12c03..d9b17aacada8e768d55b2799b34984a0541c84e6 100644 --- a/src/arith.ml +++ b/src/arith.ml @@ -584,22 +584,7 @@ module DaemonInit = struct let norm = CombiSem(Q.one,v,norm) in Debug.dprintf4 debug "[Arith] @[normalize %a@ into %a@]@\n" Th.print v Th.print v'; - match Th.normo v' with - | Some y -> - let pexp = - Delayed.mk_pexp d expequality - (ExpCombi(9,sub_cl own0 v',norm)) in - Delayed.merge d pexp own0 y; - begin match Delayed.get_dom d dom y with - | None -> () - | Some vy -> - assert (Th.equal vy v'); - Delayed.set_dom d pexp dom own0 v'; - let clsem' = ThE.index v' real in - attach d clsem' (Bag.elt own0) - end - | None -> - Th.merge_itself d norm own0 v' + Th.merge_itself d norm own0 v' end; Delayed.flush d; | _ -> raise UnwaitedEvent diff --git a/tests/smtlib2/lra/sat/arith_init_always_merge_itself.smt2 b/tests/smtlib2/lra/sat/arith_init_always_merge_itself.smt2 new file mode 100644 index 0000000000000000000000000000000000000000..cac785e1537d951f82f159d04a6af1ecc4778a1d --- /dev/null +++ b/tests/smtlib2/lra/sat/arith_init_always_merge_itself.smt2 @@ -0,0 +1,42 @@ +(set-logic QF_LRA) +(declare-fun v1 () Real) +(declare-fun v0 () Real) +(assert + (let ((?n2 2)) + (let ((?n3 4)) + (let ((?n4 (- v0 v1))) + (let ((?n5 (= ?n3 ?n4))) + (let ((?n6 (distinct ?n2 v1))) + (let ((?n7 (- 2))) + (let ((?n8 (* v1 ?n7))) + (let ((?n9 (- 4))) + (let ((?n10 (= ?n8 ?n9))) + (let ((?n11 (= ?n8 ?n3))) + (let ((?n12 (- v1))) + (let ((?n13 (= ?n2 ?n12))) + (let ((?n14 (ite ?n13 ?n4 ?n3))) + (let ((?n15 (ite ?n11 ?n9 ?n14))) + (let ((?n16 (distinct v1 ?n12))) + (let ((?n17 (= ?n2 ?n8))) + (let ((?n18 (ite ?n17 ?n4 ?n8))) + (let ((?n19 (ite ?n16 ?n2 ?n18))) + (let ((?n20 (ite true ?n15 ?n19))) + (let ((?n21 (ite ?n10 ?n20 ?n20))) + (let ((?n22 (ite ?n6 ?n8 ?n14))) + (let ((?n23 (ite ?n6 ?n21 ?n22))) + (let ((?n24 (ite ?n5 ?n23 ?n14))) + (let ((?n25 (ite ?n6 ?n23 v1))) + (let ((?n26 (= ?n24 ?n25))) + (let ((?n27 (= ?n3 ?n3))) + (let ((?n29 (ite false ?n4 ?n15))) + (let ((?n30 (ite ?n27 v1 ?n29))) + (let ((?n31 (distinct ?n25 ?n30))) + (let ((?n32 (= ?n8 ?n4))) + (let ((?n33 (ite ?n32 ?n2 ?n29))) + (let ((?n34 (= ?n18 ?n33))) + (let ((?n35 (and ?n31 ?n34))) + (let ((?n36 (= ?n26 ?n35))) + (let ((?n37 (not ?n36))) ?n37 +)))))))))))))))))))))))))))))))))))) +(check-sat) +(exit)