mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
#5417 again, refining root clauses above search level
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
7af2309fae
commit
49bd3ad159
|
@ -38,11 +38,18 @@ namespace euf {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a root clause. Root clauses must all be satisfied by the
|
||||||
|
* final assignment. If a clause is added above search level it
|
||||||
|
* is subject to removal on backtracking. These clauses are therefore
|
||||||
|
* not tracked.
|
||||||
|
*/
|
||||||
void solver::add_root(unsigned n, sat::literal const* lits) {
|
void solver::add_root(unsigned n, sat::literal const* lits) {
|
||||||
if (!relevancy_enabled())
|
if (!relevancy_enabled())
|
||||||
return;
|
return;
|
||||||
ensure_dual_solver();
|
ensure_dual_solver();
|
||||||
m_dual_solver->add_root(n, lits);
|
if (s().at_search_lvl())
|
||||||
|
m_dual_solver->add_root(n, lits);
|
||||||
}
|
}
|
||||||
|
|
||||||
void solver::add_aux(unsigned n, sat::literal const* lits) {
|
void solver::add_aux(unsigned n, sat::literal const* lits) {
|
||||||
|
|
|
@ -62,7 +62,7 @@ namespace q {
|
||||||
if (l.sign() == is_forall(e)) {
|
if (l.sign() == is_forall(e)) {
|
||||||
sat::literal lit = skolemize(q);
|
sat::literal lit = skolemize(q);
|
||||||
add_clause(~l, lit);
|
add_clause(~l, lit);
|
||||||
ctx.add_aux(~l, lit);
|
ctx.add_root(~l, lit);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ctx.push_vec(m_universal, l);
|
ctx.push_vec(m_universal, l);
|
||||||
|
|
Loading…
Reference in a new issue