3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-12-04 11:06:45 +00:00

turn on 3rd gen saturation

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2025-11-30 08:59:18 -08:00
parent 5438d5ad89
commit 5381cb338f
4 changed files with 196 additions and 188 deletions

View file

@ -146,6 +146,8 @@ namespace nla {
vector<svector<lp::constraint_index>> m_occurs; // map from variable to constraints they occur.
bool_vector m_has_occurs;
unsigned_vector m_var2level, m_level2var;
struct constraint_key {
unsigned pdd;
lp::lconstraint_kind k;
@ -183,30 +185,32 @@ namespace nla {
void remove_occurs(lp::constraint_index ci);
lbool conflict_saturation();
lbool factor(lp::constraint_index ci);
lp::constraint_index factor(lp::constraint_index ci);
bool conflict(lp::constraint_index ci);
void conflict(svector<lp::constraint_index> const& core);
bool vanishing(lpvar x, factorization const& f, lp::constraint_index ci);
lp::constraint_index vanishing(lpvar x, factorization const& f, lp::constraint_index ci);
lp::lpvar select_variable_to_eliminate(lp::constraint_index ci);
unsigned degree_of_var_in_constraint(lpvar v, lp::constraint_index ci) const;
factorization factor(lpvar v, lp::constraint_index ci);
bool resolve_variable(lpvar x, lp::constraint_index ci);
bool resolve_variable(lpvar x, lp::constraint_index ci, lp::constraint_index other_ci, rational const& p_value,
lp::constraint_index resolve_variable(lpvar x, lp::constraint_index ci, lp::constraint_index other_ci, rational const& p_value,
factorization const& f, unsigned_vector const& m1, dd::pdd _f_p);
svector<std::pair<lp::constraint_index, lp::constraint_index>> m_sup_inf;
lbool model_repair();
bool model_repair(lp::lpvar v);
lbool model_repair_loop();
lp::constraint_index model_repair(lp::lpvar v);
struct bound_info {
rational value;
lp::constraint_index bound = lp::null_ci;
svector<lp::constraint_index> bounds;
rational lo_value, hi_value;
lp::constraint_index lo = lp::null_ci, hi = lp::null_ci, vanishing = lp::null_ci;
};
std::pair<bound_info, bound_info> find_bounds(lpvar v);
bool assume_ge(lpvar v, lp::constraint_index lo, lp::constraint_index hi);
bound_info find_bounds(lpvar v);
unsigned max_level(constraint const &c) const;
void assume_ge(lpvar v, lp::constraint_index lo, lp::constraint_index hi);
bool constraint_is_true(lp::constraint_index ci) const;
bool constraint_is_true(constraint const &c) const;
bool constraint_is_conflict(lp::constraint_index ci) const;
bool constraint_is_conflict(constraint const &c) const;
bool is_new_constraint(lp::constraint_index ci) const;
lp::constraint_index gcd_normalize(lp::constraint_index ci);
@ -222,7 +226,6 @@ namespace nla {
rational value(dd::pdd const& p) const;
rational value(lp::lpvar v) const { return m_values[v]; }
bool set_model();
void set_value(lp::lpvar v);
void add_active(lp::constraint_index ci, uint_set const &tabu);