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:
parent
46d23ea8d7
commit
d17248821a
32 changed files with 3246 additions and 654 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue