mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +00:00
Merge branch 'opt' of https://github.com/nikolajbjorner/z3 into opt
This commit is contained in:
commit
a9f32cd382
|
@ -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());
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in a new issue