3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-23 14:23:40 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-12-09 08:25:24 -08:00
parent ca9fbcf6f4
commit ed9c0b84f6
2 changed files with 9 additions and 6 deletions

View file

@ -33,7 +33,7 @@ namespace polysat {
for (auto c1 : core) { for (auto c1 : core) {
if (!c1->is_ule()) if (!c1->is_ule())
continue; continue;
if (!c1.is_currently_false(s)) if (c1.is_currently_true(s))
continue; continue;
auto c = c1.as_inequality(); auto c = c1.as_inequality();
if (try_ugt_x(v, core, c)) if (try_ugt_x(v, core, c))
@ -70,7 +70,7 @@ namespace polysat {
SASSERT(!crit1.is_currently_true(s)); SASSERT(!crit1.is_currently_true(s));
LOG("critical " << m_rule << " " << crit1); LOG("critical " << m_rule << " " << crit1);
LOG("consequent " << c << " value: " << c.bvalue(s) << " " << c.is_currently_false(s) << " " << core.contains(~c)); LOG("consequent " << c << " value: " << c.bvalue(s) << " is-false: " << c.is_currently_false(s) << " " << core.contains(~c));
// ensure new core is a conflict // ensure new core is a conflict

View file

@ -469,12 +469,15 @@ namespace polysat {
++m_stats.m_num_conflicts; ++m_stats.m_num_conflicts;
SASSERT(is_conflict()); SASSERT(is_conflict());
if (m_conflict.conflict_var() != null_var) { if (m_conflict.conflict_var() != null_var) {
pvar v = m_conflict.conflict_var();
// This case corresponds to a propagation of conflict_var, except it's not explicitly on the stack. // This case corresponds to a propagation of conflict_var, except it's not explicitly on the stack.
VERIFY(m_viable.resolve(m_conflict.conflict_var(), m_conflict)); VERIFY(m_viable.resolve(v, m_conflict));
// TBD: make sure last value decision is blocked by this conflict. // TBD: saturate resulting conflict to get better lemmas.
// A conflict in test_l5 reverts v1 = 2 more than once. LOG("try-saturate");
m_conflict.try_saturate(v);
LOG("end-try-saturate");
} }
search_iterator search_it(m_search); search_iterator search_it(m_search);