3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-12-04 02:56:44 +00:00

prepare for enforcing cheap incremental linearization axioms

This commit is contained in:
Nikolaj Bjorner 2025-09-27 20:33:53 +03:00
parent ad11e4626e
commit a12f4b9686
3 changed files with 153 additions and 45 deletions

View file

@ -34,9 +34,10 @@ namespace nla {
rational rhs;
};
using bound_justification = std::variant<u_dependency*, bound>;
using bound_justifications = vector<bound_justification>;
coi m_coi;
u_map<vector<bound_justification>> m_new_mul_constraints;
u_map<bound_justifications> m_new_mul_constraints;
indexed_uint_set m_to_refine;
ptr_vector<u_dependency> m_ci2dep;
vector<rational> m_values;
@ -60,8 +61,12 @@ namespace nla {
lpvar add_monomial(svector<lp::lpvar> const& vars);
bool is_int(svector<lp::lpvar> const& vars) const;
lpvar add_var(bool is_int);
lbool add_bounds(svector<lpvar> const &vars, bound_justifications &bounds);
void saturate_constraints();
void saturate_constraint(lp::constraint_index con_id, lp::lpvar mi, lpvar x);
void saturate_basic_linearize();
void saturate_signs(lpvar j, rational const& val_j, svector<lpvar> const& vars, rational const& val_vars);
void saturate_units(lpvar j, svector<lpvar> const &vars);
// lemmas