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:
parent
5fc208cefc
commit
cb672c7992
14 changed files with 122 additions and 76 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue