3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-16 19:06:17 +00:00
This commit is contained in:
Nikolaj Bjorner 2022-07-20 21:48:47 -07:00
parent 7f983e7d9e
commit 32c0d1f636

View file

@ -1795,9 +1795,9 @@ namespace pb {
} }
if (c.lit() != sat::null_literal && value(c.lit()) != l_true) return true; if (c.lit() != sat::null_literal && value(c.lit()) != l_true) return true;
SASSERT(c.lit() == sat::null_literal || lvl(c.lit()) == 0 || (c.is_watched(*this, c.lit()) && c.is_watched(*this, ~c.lit()))); SASSERT(c.lit() == sat::null_literal || lvl(c.lit()) == 0 || (c.is_watched(*this, c.lit()) && c.is_watched(*this, ~c.lit())));
if (eval(c) == l_true) { if (eval(c) == l_true)
return true; return true;
}
literal_vector lits(c.literals()); literal_vector lits(c.literals());
for (literal l : lits) { for (literal l : lits) {
if (lvl(l) == 0) continue; if (lvl(l) == 0) continue;
@ -1823,6 +1823,8 @@ namespace pb {
} }
bool solver::validate_watch(pbc const& p, literal alit) const { bool solver::validate_watch(pbc const& p, literal alit) const {
if (value(p.lit()) != l_true)
return true;
for (unsigned i = 0; i < p.size(); ++i) { for (unsigned i = 0; i < p.size(); ++i) {
literal l = p[i].second; literal l = p[i].second;
if (l != alit && lvl(l) != 0 && p.is_watched(*this, l) != (i < p.num_watch())) { if (l != alit && lvl(l) != 0 && p.is_watched(*this, l) != (i < p.num_watch())) {
@ -1833,9 +1835,8 @@ namespace pb {
} }
} }
unsigned slack = 0; unsigned slack = 0;
for (unsigned i = 0; i < p.num_watch(); ++i) { for (unsigned i = 0; i < p.num_watch(); ++i)
slack += p[i].first; slack += p[i].first;
}
if (slack != p.slack()) { if (slack != p.slack()) {
IF_VERBOSE(0, display(verbose_stream(), p, true);); IF_VERBOSE(0, display(verbose_stream(), p, true););
UNREACHABLE(); UNREACHABLE();