3
0
Fork 0
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:
Nikolaj Bjorner 2021-07-19 16:56:10 -07:00
parent 7af2309fae
commit 49bd3ad159
2 changed files with 9 additions and 2 deletions

View file

@ -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) {

View file

@ -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);