3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-24 03:57:51 +00:00

add unsat core, activity, quick pass for viable

This commit is contained in:
Nikolaj Bjorner 2021-11-24 13:23:28 +01:00
parent b82c3cfd33
commit caef8d026f
6 changed files with 91 additions and 43 deletions

View file

@ -243,6 +243,7 @@ namespace polysat {
for (unsigned v : m_vars) {
if (!is_pmarked(v))
continue;
s.inc_activity(v);
auto eq = s.eq(s.var(v), s.get_value(v));
cm().ensure_bvar(eq.get());
if (eq.bvalue(s) == l_undef)
@ -285,7 +286,11 @@ namespace polysat {
bool conflict::resolve_value(pvar v) {
// NOTE:
// In the "standard" case where "v = val" is on the stack:
// - core contains both false and true constraints (originally only false ones, but additional true ones may come from saturation)
// - core contains both false and true constraints
// (originally only false ones, but additional true ones may come from saturation)
// forbidden interval projection is performed at top level
SASSERT(v != conflict_var());
if (is_bailout()) {
if (!s.m_justification[v].is_decision())
@ -293,8 +298,7 @@ namespace polysat {
return false;
}
// forbidden interval projection is performed at top level
SASSERT(v != conflict_var());
s.inc_activity(v);
m_vars.remove(v);