3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-07 09:42:14 +00:00

Narrow conflicting constraint after backjumping

This commit is contained in:
Jakob Rath 2022-10-07 18:01:54 +02:00
parent 54ed6d4413
commit 4406652c7b
3 changed files with 36 additions and 0 deletions

View file

@ -869,8 +869,24 @@ namespace polysat {
// SASSERT(lemma_invariant(lemma, old_assignment));
#endif
clause_ref_vector side_lemmas = m_conflict.take_side_lemmas();
sat::literal_vector narrow_queue = m_conflict.take_narrow_queue();
m_conflict.reset();
backjump(jump_level);
for (sat::literal lit : narrow_queue) {
switch (m_bvars.value(lit)) {
case l_true:
lit2cnstr(lit).narrow(*this, false);
break;
case l_false:
lit2cnstr(~lit).narrow(*this, false);
break;
case l_undef:
/* do nothing */
break;
default:
UNREACHABLE();
}
}
for (auto cl : side_lemmas)
add_clause(*cl);
SASSERT(lemma_invariant_part2(lemma_invariant_todo));