Hi,
For this formula:
(assert (forall ((a Bool) (b Bool) (d (_ BitVec 1)) (e (_ BitVec 1)) (f (_ BitVec 1)) (g Bool))
(= (= f (ite a (_ bv0 1) (ite (not (= d (_ bv0 1))) (_ bv0 1) (ite b e e)))) g)))
(check-sat-using horn)
Z3 gives an incorrect answer:
[615] % z3 small.smt2
unsat
[616] % z3 fp.xform.bit_blast=true small.smt2
sat
[617] %
[617] % cat small.smt2
(assert (forall ((a Bool) (b Bool) (d (_ BitVec 1)) (e (_ BitVec 1)) (f (_ BitVec 1)) (g Bool))
(= (= f (ite a (_ bv0 1) (ite (not (= d (_ bv0 1))) (_ bv0 1) (ite b e e)))) g)))
(check-sat-using horn)
[618] %
OS: Ubuntu 18.04
Commit: 3313590
Hi,
For this formula:
Z3 gives an incorrect answer:
OS: Ubuntu 18.04
Commit: 3313590