3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-22 11:07:51 +00:00

fix #2450 - track assumptions across lazy explanations and variable equalities

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-08-03 07:57:16 -07:00
parent db5af3088b
commit 4431a534b3
7 changed files with 86 additions and 55 deletions

View file

@ -1382,14 +1382,14 @@ namespace nlsat {
literal l = core[i];
atom * a = m_atoms[l.var()];
SASSERT(a != 0);
interval_set_ref inf = m_evaluator.infeasible_intervals(a, l.sign());
interval_set_ref inf = m_evaluator.infeasible_intervals(a, l.sign(), nullptr);
r = ism.mk_union(inf, r);
if (ism.is_full(r)) {
// Done
return false;
}
}
TRACE("nlsat_mininize", tout << "interval set after adding partial core:\n" << r << "\n";);
TRACE("nlsat_minimize", tout << "interval set after adding partial core:\n" << r << "\n";);
if (todo.size() == 1) {
// Done
core.push_back(todo[0]);
@ -1401,7 +1401,7 @@ namespace nlsat {
literal l = todo[i];
atom * a = m_atoms[l.var()];
SASSERT(a != 0);
interval_set_ref inf = m_evaluator.infeasible_intervals(a, l.sign());
interval_set_ref inf = m_evaluator.infeasible_intervals(a, l.sign(), nullptr);
r = ism.mk_union(inf, r);
if (ism.is_full(r)) {
// literal l must be in the core
@ -1425,15 +1425,15 @@ namespace nlsat {
todo.reset(); core.reset();
todo.append(num, ls);
while (true) {
TRACE("nlsat_mininize", tout << "core minimization:\n"; display(tout, todo); tout << "\nCORE:\n"; display(tout, core););
TRACE("nlsat_minimize", tout << "core minimization:\n"; display(tout, todo); tout << "\nCORE:\n"; display(tout, core););
if (!minimize_core(todo, core))
break;
std::reverse(todo.begin(), todo.end());
TRACE("nlsat_mininize", tout << "core minimization:\n"; display(tout, todo); tout << "\nCORE:\n"; display(tout, core););
TRACE("nlsat_minimize", tout << "core minimization:\n"; display(tout, todo); tout << "\nCORE:\n"; display(tout, core););
if (!minimize_core(todo, core))
break;
}
TRACE("nlsat_mininize", tout << "core:\n"; display(tout, core););
TRACE("nlsat_minimize", tout << "core:\n"; display(tout, core););
r.append(core.size(), core.c_ptr());
}