mirror of
https://github.com/Z3Prover/z3
synced 2025-05-04 06:15:46 +00:00
adjust overflow premises, add stubs for used constraints as premises
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
ed60cdc403
commit
697723d53b
3 changed files with 74 additions and 135 deletions
|
@ -38,8 +38,8 @@ namespace polysat {
|
|||
class inf_saturate : public inference_engine {
|
||||
bool find_upper_bound(pvar x, signed_constraint& c, rational& bound);
|
||||
|
||||
bool push_omega_viable(conflict_core& core, clause_builder& reason, unsigned level, pdd const& x, pdd const& y);
|
||||
bool push_omega_mul(conflict_core& core, clause_builder& reason, unsigned level, pdd const& x, pdd const& y);
|
||||
void push_omega(clause_builder& reason, unsigned level, pdd const& x, pdd const& y);
|
||||
void push_omega_bisect(clause_builder& reason, unsigned level, pdd const& x, rational x_max, pdd const& y, rational y_max);
|
||||
signed_constraint ineq(unsigned level, bool strict, pdd const& lhs, pdd const& rhs);
|
||||
void push_c(conflict_core& core, signed_constraint const& c, clause_builder& reason);
|
||||
void push_l(conflict_core& core, unsigned level, bool strict, pdd const& lhs, pdd const& rhs, clause_builder& reason);
|
||||
|
@ -83,6 +83,9 @@ namespace polysat {
|
|||
// xy := x * Y
|
||||
bool is_xY(pvar x, pdd const& xy, pdd& y);
|
||||
|
||||
// a * b does not overflow
|
||||
bool is_non_overflow(pdd const& a, pdd const& b);
|
||||
|
||||
public:
|
||||
|
||||
bool perform(pvar v, conflict_core& core) override;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue