3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-03 11:25:40 +00:00
This commit is contained in:
Nikolaj Bjorner 2021-08-01 12:00:22 -07:00
parent 50f5cafb50
commit 924ea6ab31
3 changed files with 9 additions and 10 deletions

View file

@ -34,7 +34,8 @@ namespace euf {
sat::literal solver::mk_literal(expr* e) {
expr_ref _e(e, m);
return internalize(e, false, false, m_is_redundant);
bool is_not = m.is_not(e, e);
return internalize(e, is_not, false, m_is_redundant);
}
sat::literal solver::internalize(expr* e, bool sign, bool root, bool redundant) {
@ -131,7 +132,6 @@ namespace euf {
s().set_external(v);
s().set_eliminated(v, false);
if (lit.sign()) {
v = si.add_bool_var(e);
s().set_external(v);

View file

@ -236,7 +236,7 @@ namespace euf {
sat::bool_var v = get_egraph().explain_diseq(m_explain, a, b);
SASSERT(v == sat::null_bool_var || s().value(v) == l_false);
if (v != sat::null_bool_var)
m_explain.push_back(to_ptr(sat::literal(v, false)));
m_explain.push_back(to_ptr(sat::literal(v, true)));
}
bool solver::propagate(enode* a, enode* b, ext_justification_idx idx) {
@ -289,6 +289,7 @@ namespace euf {
TRACE("euf", tout << "asserted: " << l << "@" << s().scope_lvl() << " := " << mk_bounded_pp(e, m) << "\n";);
if (!e)
return;
euf::enode* n = m_egraph.find(e);
if (!n)
return;

View file

@ -290,14 +290,12 @@ struct goal2sat::imp : public sat::sat_internalizer {
if (v == sat::null_bool_var) {
if (m.is_true(t)) {
sat::literal tt = sat::literal(add_var(false, m.mk_true()), false);
mk_clause(tt);
add_dual_root(1, &tt);
mk_root_clause(tt);
l = sign ? ~tt : tt;
}
else if (m.is_false(t)) {
sat::literal tt = sat::literal(add_var(false, m.mk_false()), true);
mk_clause(tt);
add_dual_root(1, &tt);
mk_root_clause(tt);
l = sign ? tt : ~tt;
}
else if (m_euf) {