3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-11 19:53:34 +00:00

set eliminated to false on literals used in clauses

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-11-30 11:20:19 -08:00
parent da0aa71082
commit 427b5ef002
4 changed files with 5 additions and 3 deletions

View file

@ -96,7 +96,7 @@ namespace sat {
// apply substitution
for (i = 0; i < sz; 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()));
}
std::sort(c.begin(), c.end());

View file

@ -266,6 +266,7 @@ namespace sat {
void set_external(bool_var v);
void set_non_external(bool_var v);
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 search_lvl() const { return 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 {
SASSERT(v != sat::null_bool_var);
l = sat::literal(v, sign);
m_solver.set_eliminated(v, false);
}
SASSERT(l != sat::null_literal);
if (root)

View file

@ -204,12 +204,12 @@ void solver::assert_expr(expr* f, expr* t) {
}
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) {
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) {