3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-03-05 05:00:23 +00:00

Remove bail_vars

This commit is contained in:
Jakob Rath 2022-11-14 15:02:58 +01:00
parent eec8e8ebe4
commit e2804c3db2
3 changed files with 3 additions and 18 deletions

View file

@ -153,7 +153,6 @@ namespace polysat {
if (is_empty) {
SASSERT(m_literals.empty());
SASSERT(m_vars.empty());
SASSERT(m_bail_vars.empty());
SASSERT(m_vars_occurring.empty());
SASSERT(m_lemmas.empty());
SASSERT(m_narrow_queue.empty());
@ -164,7 +163,6 @@ namespace polysat {
void conflict::reset() {
m_literals.reset();
m_vars.reset();
m_bail_vars.reset();
m_relevant_vars.reset();
m_var_occurrences.reset();
m_vars_occurring.reset();
@ -372,7 +370,6 @@ namespace polysat {
SASSERT(!empty());
m_literals.reset();
m_vars.reset();
m_bail_vars.reset();
m_relevant_vars.reset();
m_var_occurrences.reset();
m_vars_occurring.reset();
@ -410,9 +407,10 @@ namespace polysat {
// If evaluation depends on a decision,
// then we rather keep the more general constraint c instead of inserting "x = v"
// TODO: the old implementation based on bail_vars is broken because it may skip relevant decisions.
// is there a way to keep the same effect by adding a side lemma at this point?
bool has_decision = false;
#if 0
// TODO: this is problematic; may skip relevant decisions
for (pvar v : c->vars())
if (s.is_assigned(v) && s.m_justification[v].is_decision())
m_bail_vars.insert(v), has_decision = true;
@ -448,9 +446,6 @@ namespace polysat {
SASSERT(contains_pvar(v));
auto const& j = s.m_justification[v];
if (j.is_decision() && m_bail_vars.contains(v)) // TODO: what if also m_vars.contains(v)? might have a chance at elimination
return false;
s.inc_activity(v);
m_vars.remove(v);
@ -566,10 +561,6 @@ namespace polysat {
out << " vars";
for (auto v : m_vars)
out << " v" << v;
if (!m_bail_vars.empty())
out << " bail vars";
for (auto v : m_bail_vars)
out << " v" << v;
if (!m_lemmas.empty())
out << " side lemmas";
for (clause const* lemma : m_lemmas)