mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 19:35:50 +00:00
move unit propagation into monomial_bounds
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
c2cbe72b64
commit
ff3268e636
4 changed files with 90 additions and 78 deletions
|
@ -16,6 +16,8 @@ namespace nla {
|
|||
class core;
|
||||
class monomial_bounds : common {
|
||||
dep_intervals& dep;
|
||||
|
||||
|
||||
void var2interval(lpvar v, scoped_dep_interval& i);
|
||||
bool is_too_big(mpq const& q) const;
|
||||
bool propagate_down(monic const& m, lpvar u);
|
||||
|
@ -27,8 +29,17 @@ namespace nla {
|
|||
void analyze_monomial(monic const& m, unsigned& num_free, lpvar& free_v, unsigned& power) const;
|
||||
bool is_free(lpvar v) const;
|
||||
bool is_zero(lpvar v) const;
|
||||
|
||||
// monomial propagation
|
||||
bool_vector m_propagated;
|
||||
void unit_propagate(monic const& m);
|
||||
bool is_linear(monic const& m);
|
||||
rational fixed_var_product(monic const& m);
|
||||
lpvar non_fixed_var(monic const& m);
|
||||
|
||||
public:
|
||||
monomial_bounds(core* core);
|
||||
void operator()();
|
||||
void propagate();
|
||||
void unit_propagate();
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue