3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-18 02:16:40 +00:00

change to iterative unfolding left build broken for some time

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-05-26 21:25:53 -07:00
parent 9764007c97
commit 94ffd63b51
3 changed files with 11 additions and 5 deletions

View file

@ -337,9 +337,9 @@ namespace smt {
continue;
lits.reset();
lits.push_back(~lit);
if (!m.is_true(cond))
if (!m.is_true(cond))
lits.push_back(~th.mk_literal(cond));
if (false_literal != null_lit)
if (null_lit != false_literal)
lits.push_back(null_lit);
if (!is_member(p.second, u))
lits.push_back(th.mk_literal(sk().mk_is_non_empty(p.second, re().mk_union(u, r))));
@ -385,8 +385,13 @@ namespace smt {
lits.reset();
lits.push_back(~lit);
expr_ref is_empty1 = sk().mk_is_non_empty(p.second, re().mk_union(u, r));
// TBD: triple check soundness here.
// elim_condition(x, x = 'a') = true
// forall x . x = 'a' => is_empty(r, u)
// <=>
// is_empty(r, u)
if (!m.is_true(cond)) {
lits.push_back(th.mk_literal(mk_forall(m, hd, m.mk_not(cond))));
lits.push_back(th.mk_literal(mk_forall(m, hd, mk_not(m, cond))));
}
lits.push_back(th.mk_literal(is_empty1));
th.add_axiom(lits);