3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-12-09 21:33:23 +00:00

outline for adding monomials

This commit is contained in:
Nikolaj Bjorner 2025-09-26 12:03:26 +03:00
parent a6ea667776
commit 6adb234673
14 changed files with 242 additions and 140 deletions

View file

@ -9,8 +9,16 @@ namespace nla {
class core;
class lar_solver;
class mul_saturate : common {
lp::lar_solver& lra;
void multiply_constraint(lp::lar_base_constraint const& c, monic const& m, lpvar x);
// source of multiplication constraint
u_map<lp::constraint_index> m_new_mul_constraints;
svector<std::pair<lpvar, bool>> m_var_signs;
tracked_uint_set m_seen_vars;
scoped_ptr<lp::lar_solver> local_solver;
void init_solver();
void add_multiply_constraints();
void add_multiply_constraint(lp::constraint_index con_id, lp::lpvar mi, lpvar x);
lbool solve(lp::explanation& ex);
void add_lemma(lp::explanation const& ex1);
public:
mul_saturate(core* core);