mirror of
https://github.com/Z3Prover/z3
synced 2025-04-07 18:05:21 +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) {
|
||||
if (!relevancy_enabled())
|
||||
return;
|
||||
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) {
|
||||
|
|
|
@ -62,7 +62,7 @@ namespace q {
|
|||
if (l.sign() == is_forall(e)) {
|
||||
sat::literal lit = skolemize(q);
|
||||
add_clause(~l, lit);
|
||||
ctx.add_aux(~l, lit);
|
||||
ctx.add_root(~l, lit);
|
||||
}
|
||||
else {
|
||||
ctx.push_vec(m_universal, l);
|
||||
|
|
Loading…
Reference in a new issue