mirror of
https://github.com/Z3Prover/z3
synced 2025-08-24 12:07:52 +00:00
refactor forbidden intervals
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
57c40e480b
commit
d0c8240560
6 changed files with 209 additions and 191 deletions
|
@ -23,7 +23,35 @@ namespace polysat {
|
|||
solver& s;
|
||||
void revert_core(conflict& core);
|
||||
void full_interval_conflict(signed_constraint c, vector<signed_constraint> const & side_cond, conflict& core);
|
||||
bool get_interval(signed_constraint const& c, pvar v, eval_interval& out_interval, vector<signed_constraint>& out_side_cond);
|
||||
bool get_interval(signed_constraint const& c, pvar v, eval_interval& out_interval, vector<signed_constraint>& side_cond);
|
||||
void push_condition(bool is_trivial, pdd const& p, vector<signed_constraint>& side_cond);
|
||||
eval_interval to_interval(signed_constraint const& c, bool is_trivial, rational const& coeff,
|
||||
rational & lo_val, pdd & lo, rational & hi_val, pdd & hi);
|
||||
|
||||
|
||||
std::tuple<bool, rational, pdd, pdd> linear_decompose(pvar v, pdd const& p, vector<signed_constraint>& out_side_cond);
|
||||
|
||||
bool match_linear1(signed_constraint const& c,
|
||||
rational const& a1, pdd const& b1, pdd const& e1,
|
||||
rational const& a2, pdd const& b2, pdd const& e2,
|
||||
eval_interval& interval, vector<signed_constraint>& side_cond);
|
||||
|
||||
bool match_linear2(signed_constraint const& c,
|
||||
rational const& a1, pdd const& b1, pdd const& e1,
|
||||
rational const& a2, pdd const& b2, pdd const& e2,
|
||||
eval_interval& interval, vector<signed_constraint>& side_cond);
|
||||
|
||||
bool match_linear3(signed_constraint const& c,
|
||||
rational const& a1, pdd const& b1, pdd const& e1,
|
||||
rational const& a2, pdd const& b2, pdd const& e2,
|
||||
eval_interval& interval, vector<signed_constraint>& side_cond);
|
||||
|
||||
bool match_linear4(signed_constraint const& c,
|
||||
rational const& a1, pdd const& b1, pdd const& e1,
|
||||
rational const& a2, pdd const& b2, pdd const& e2,
|
||||
eval_interval& interval, vector<signed_constraint>& side_cond);
|
||||
|
||||
bool coefficient_is_01(dd::pdd_manager& m, rational const& r) { return r.is_zero() || r.is_one() || r == m.max_value(); };
|
||||
public:
|
||||
forbidden_intervals(solver& s) :s(s) {}
|
||||
bool perform(pvar v, vector<signed_constraint> const& just, conflict& core);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue