3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-12 02:04:43 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-03-11 09:35:28 -07:00
parent e32020ba10
commit e45871d7c5
5 changed files with 51 additions and 57 deletions

View file

@ -3370,7 +3370,7 @@ namespace smt {
for (theory* t : m_theory_set) {
t->validate_model(*mdl);
}
#if 0
#if 1
for (literal lit : m_assigned_literals) {
if (!is_relevant(lit)) continue;
expr* v = m_bool_var2expr[lit.var()];
@ -3382,6 +3382,7 @@ namespace smt {
}
for (clause* cls : m_aux_clauses) {
bool found = false;
IF_VERBOSE(10, display_clause_smt2(verbose_stream() << "check:\n", *cls) << "\n");
for (literal lit : *cls) {
expr* v = m_bool_var2expr[lit.var()];
if (lit.sign() ? !m_model->is_true(v) : !m_model->is_false(v)) {
@ -3393,6 +3394,45 @@ namespace smt {
IF_VERBOSE(10, display_clause_smt2(verbose_stream() << "not satisfied:\n", *cls) << "\n");
}
}
for (clause* cls : m_lemmas) {
bool found = false;
IF_VERBOSE(10, display_clause_smt2(verbose_stream() << "check:\n", *cls) << "\n");
for (literal lit : *cls) {
expr* v = m_bool_var2expr[lit.var()];
if (lit.sign() ? !m_model->is_true(v) : !m_model->is_false(v)) {
found = true;
break;
}
}
if (!found) {
IF_VERBOSE(10, display_clause_smt2(verbose_stream() << "not satisfied:\n", *cls) << "\n");
}
}
unsigned l_idx = 0;
for (watch_list const& wl : m_watches) {
literal l1 = to_literal(l_idx++);
literal neg_l1 = ~l1;
expr* v = m_bool_var2expr[l1.var()];
if (neg_l1.sign() ? !m_model->is_true(v) : !m_model->is_false(v)) {
continue;
}
literal const * it2 = wl.begin_literals();
literal const * end2 = wl.end_literals();
for (; it2 != end2; ++it2) {
literal l2 = *it2;
if (l1.index() >= l2.index()) {
continue;
}
literal lits[2] = { neg_l1, l2 };
IF_VERBOSE(10, display_literals_smt2(verbose_stream() << "check: ", 2, lits) << "\n";);
v = m_bool_var2expr[l2.var()];
if (l2.sign() ? !m_model->is_true(v) : !m_model->is_false(v)) {
continue;
}
IF_VERBOSE(10, display_literals_smt2(verbose_stream() << "not satisfied: ", 2, lits) << "\n";);
}
}
#endif
}
return r;