3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-19 09:40:20 +00:00

include chronological backtracking, two-phase sat, xor inprocessing, probsat, ddfw

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-06-13 03:34:31 -07:00
parent 46d23ea8d7
commit d17248821a
32 changed files with 3246 additions and 654 deletions

View file

@ -133,18 +133,12 @@ namespace sat {
s.del_clause(c);
break;
default:
c.shrink(new_sz);
s.shrink(c, sz, new_sz);
*it2 = *it;
it2++;
if (!c.frozen()) {
s.attach_clause(c);
}
if (s.m_config.m_drat && new_sz < sz) {
s.m_drat.add(c, true);
c.restore(sz);
s.m_drat.del(c);
c.shrink(new_sz);
}
break;
}
}
@ -173,12 +167,33 @@ namespace sat {
}
};
bool cleaner::is_clean() const {
for (clause* cp : s.m_clauses) {
for (literal lit : *cp) {
if (s.value(lit) != l_undef && s.lvl(lit) == 0) return false;
}
}
for (clause* cp : s.m_learned) {
for (literal lit : *cp) {
if (s.value(lit) != l_undef && s.lvl(lit) == 0) return false;
}
}
unsigned idx = 0;
for (auto& wlist : s.m_watches) {
literal lit = to_literal(idx);
if (s.value(lit) != l_undef && s.lvl(lit) == 0 && !wlist.empty()) return false;
++idx;
}
return true;
}
/**
\brief Return true if cleaner executed.
*/
bool cleaner::operator()(bool force) {
CASSERT("cleaner_bug", s.check_invariant());
unsigned trail_sz = s.m_trail.size();
s.propagate(false); // make sure that everything was propagated.
TRACE("sat_cleaner_bug", s.display(tout); s.display_watches(tout););
if (s.m_inconsistent)