3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-24 03:57:51 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-11-08 05:08:57 -08:00
parent e1bc9cc0bb
commit 57c40e480b
8 changed files with 120 additions and 96 deletions

View file

@ -161,7 +161,7 @@ namespace polysat {
clause_ref lemma = c_lemma.build();
cm().store(lemma.get(), s);
if (s.m_bvars.value(c.blit()) == l_undef)
s.assign_bool(s.level(*lemma), c.blit(), lemma.get(), nullptr);
s.assign_propagate(c.blit(), *lemma);
}
void conflict::remove(signed_constraint c) {
@ -178,6 +178,14 @@ namespace polysat {
insert(c_new, c_new_premises);
}
bool conflict::contains(signed_constraint c) {
if (c->has_bvar())
return m_literals.contains(c.blit().index());
else
return m_constraints.contains(c);
}
void conflict::set_bailout() {
SASSERT(!is_bailout());
m_bailout = true;
@ -237,11 +245,11 @@ namespace polysat {
for (unsigned v : m_vars) {
if (!is_pmarked(v))
continue;
auto diseq = ~s.eq(s.var(v), s.get_value(v));
cm().ensure_bvar(diseq.get());
if (diseq.bvalue(s) == l_undef)
s.assign_bool(s.get_level(v), ~diseq.blit(), nullptr, nullptr);
lemma.push(diseq);
auto eq = s.eq(s.var(v), s.get_value(v));
cm().ensure_bvar(eq.get());
if (eq.bvalue(s) == l_undef)
s.assign_eval(s.get_level(v), eq.blit());
lemma.push(~eq);
}
return lemma;