3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-05-02 00:23:44 +00:00

overflow example works

- introduce weak/strong eval to temper unit propagation to use only weak evaluation.
- harness the amount of interval propagation provided on overflow constraints
- weak evaluation on overflow constraints is now trivialized
- viable insertion also does conflict detection
This commit is contained in:
Nikolaj Bjorner 2024-01-04 15:55:24 -08:00
parent 5fc208cefc
commit cb672c7992
14 changed files with 122 additions and 76 deletions

View file

@ -103,13 +103,13 @@ namespace polysat {
return true;
}
lbool signed_constraint::eval(assignment& a) const {
lbool r = m_constraint->eval(a);
lbool signed_constraint::weak_eval(assignment& a) const {
lbool r = m_constraint->weak_eval(a);
return m_sign ? ~r : r;
}
lbool signed_constraint::eval_unfold(assignment& a) const {
lbool r = m_constraint->eval_unfold(a);
lbool signed_constraint::strong_eval(assignment& a) const {
lbool r = m_constraint->strong_eval(a);
return m_sign ? ~r : r;
}
@ -118,12 +118,4 @@ namespace polysat {
return out << *m_constraint;
}
bool signed_constraint::is_currently_true(core& c) const {
return eval(c.get_assignment()) == l_true;
}
bool signed_constraint::is_currently_false(core& c) const {
return eval(c.get_assignment()) == l_false;
}
}