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

bugfix for variable unmarking in the sat solver.

Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
This commit is contained in:
Christoph M. Wintersteiger 2013-10-24 17:48:03 +01:00
parent 2b627b0821
commit ff265c6c6c

View file

@ -1290,13 +1290,13 @@ namespace sat {
bool solver::resolve_conflict() { bool solver::resolve_conflict() {
while (true) { while (true) {
bool r = resolve_conflict_core(); bool r = resolve_conflict_core();
CASSERT("sat_check_marks", check_marks());
// after pop, clauses are reinitialized, this may trigger another conflict. // after pop, clauses are reinitialized, this may trigger another conflict.
if (!r) if (!r)
return false; return false;
if (!inconsistent()) if (!inconsistent())
return true; return true;
} }
CASSERT("sat_check_marks", check_marks());
} }
bool solver::resolve_conflict_core() { bool solver::resolve_conflict_core() {
@ -1399,6 +1399,8 @@ namespace sat {
dyn_sub_res(); dyn_sub_res();
TRACE("sat_lemma", tout << "new lemma (after minimization) size: " << m_lemma.size() << "\n" << m_lemma << "\n";); TRACE("sat_lemma", tout << "new lemma (after minimization) size: " << m_lemma.size() << "\n" << m_lemma << "\n";);
} }
else
reset_lemma_var_marks();
literal_vector::iterator it = m_lemma.begin(); literal_vector::iterator it = m_lemma.begin();
literal_vector::iterator end = m_lemma.end(); literal_vector::iterator end = m_lemma.end();