3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-15 13:28:47 +00:00
This commit is contained in:
Nikolaj Bjorner 2017-12-01 08:24:51 -08:00
commit a9f32cd382
4 changed files with 5 additions and 3 deletions

View file

@ -96,7 +96,7 @@ namespace sat {
// apply substitution // apply substitution
for (i = 0; i < sz; i++) { for (i = 0; i < sz; i++) {
c[i] = norm(roots, c[i]); c[i] = norm(roots, c[i]);
VERIFY(c[i] == norm(roots, c[i])); VERIFY(c[i] == norm(roots, c[i]));
VERIFY(!m_solver.was_eliminated(c[i].var())); VERIFY(!m_solver.was_eliminated(c[i].var()));
} }
std::sort(c.begin(), c.end()); std::sort(c.begin(), c.end());

View file

@ -266,6 +266,7 @@ namespace sat {
void set_external(bool_var v); void set_external(bool_var v);
void set_non_external(bool_var v); void set_non_external(bool_var v);
bool was_eliminated(bool_var v) const { return m_eliminated[v] != 0; } bool was_eliminated(bool_var v) const { return m_eliminated[v] != 0; }
void set_eliminated(bool_var v, bool f) { m_eliminated[v] = f; }
unsigned scope_lvl() const { return m_scope_lvl; } unsigned scope_lvl() const { return m_scope_lvl; }
unsigned search_lvl() const { return m_search_lvl; } unsigned search_lvl() const { return m_search_lvl; }
bool at_search_lvl() const { return m_scope_lvl == m_search_lvl; } bool at_search_lvl() const { return m_scope_lvl == m_search_lvl; }

View file

@ -151,6 +151,7 @@ struct goal2sat::imp {
else { else {
SASSERT(v != sat::null_bool_var); SASSERT(v != sat::null_bool_var);
l = sat::literal(v, sign); l = sat::literal(v, sign);
m_solver.set_eliminated(v, false);
} }
SASSERT(l != sat::null_literal); SASSERT(l != sat::null_literal);
if (root) if (root)

View file

@ -204,12 +204,12 @@ void solver::assert_expr(expr* f, expr* t) {
} }
void solver::collect_param_descrs(param_descrs & r) { void solver::collect_param_descrs(param_descrs & r) {
r.insert("solver.enforce_model_conversion", CPK_BOOL, "(default: true) enforce model conversion when asserting formulas"); r.insert("solver.enforce_model_conversion", CPK_BOOL, "(default: false) enforce model conversion when asserting formulas");
} }
void solver::updt_params(params_ref const & p) { void solver::updt_params(params_ref const & p) {
m_params.copy(p); m_params.copy(p);
m_enforce_model_conversion = m_params.get_bool("solver.enforce_model_conversion", true); m_enforce_model_conversion = m_params.get_bool("solver.enforce_model_conversion", false);
} }
void solver::hoist_converter(model_converter_ref& mc) { void solver::hoist_converter(model_converter_ref& mc) {