diff --git a/src/math/lp/lar_constraints.h b/src/math/lp/lar_constraints.h index 96c23038f..45345ab3e 100644 --- a/src/math/lp/lar_constraints.h +++ b/src/math/lp/lar_constraints.h @@ -158,7 +158,8 @@ public: // TBD: would like to make this opaque // and expose just active constraints // constraints need not be active. - unsigned size() const { return m_constraints.size(); } + bool valid_index(constraint_index ci) const { return ci < m_constraints.size(); } +// unsigned size() const { return m_constraints.size(); } vector::const_iterator begin() const { return m_constraints.begin(); } vector::const_iterator end() const { return m_constraints.end(); } diff --git a/src/math/lp/lar_solver.cpp b/src/math/lp/lar_solver.cpp index f678d39b7..b554a66e1 100644 --- a/src/math/lp/lar_solver.cpp +++ b/src/math/lp/lar_solver.cpp @@ -1053,7 +1053,7 @@ bool lar_solver::the_left_sides_sum_to_zero(const vector m_columns_to_ul_pairs; constraint_set m_constraints; -#if 0 - vector m_constraints; - stacked_value m_constraint_count; -#endif // the set of column indices j such that bounds have changed for j int_set m_columns_with_changed_bound; int_set m_rows_with_changed_bounds; @@ -115,16 +111,10 @@ public: unsigned terms_start_index() const { return m_terms_start_index; } const vector & terms() const { return m_terms; } lar_term const& term(unsigned i) const { return *m_terms[i]; } - constraint_set const& constraints() const { - return m_constraints; - } - void set_int_solver(int_solver * int_slv) { - m_int_solver = int_slv; - } - int_solver * get_int_solver() { - return m_int_solver; - } - const lar_base_constraint& get_constraint(unsigned ci) const { return m_constraints[ci]; } + constraint_set const& constraints() const { return m_constraints; } + void set_int_solver(int_solver * int_slv) { m_int_solver = int_slv; } + int_solver * get_int_solver() { return m_int_solver; } + ////////////////// methods //////////////////////////////// static_matrix> & A_r(); static_matrix> const & A_r() const; @@ -354,12 +344,10 @@ public: void prepare_costs_for_r_solver(const lar_term & term); - bool maximize_term_on_corrected_r_solver(lar_term & term, - impq &term_max); + bool maximize_term_on_corrected_r_solver(lar_term & term, impq &term_max); // starting from a given feasible state look for the maximum of the term // return true if found and false if unbounded - lp_status maximize_term(unsigned j_or_term, - impq &term_max); + lp_status maximize_term(unsigned j_or_term, impq &term_max); diff --git a/src/math/lp/nla_core.cpp b/src/math/lp/nla_core.cpp index bc5ccce84..24369dda5 100644 --- a/src/math/lp/nla_core.cpp +++ b/src/math/lp/nla_core.cpp @@ -995,7 +995,7 @@ std::unordered_set core::collect_vars(const lemma& l) const { } } for (const auto& p : current_expl()) { - const auto& c = m_lar_solver.get_constraint(p.second); + const auto& c = m_lar_solver.constraints()[p.second]; for (const auto& r : c.coeffs()) { insert_j(r.second); } diff --git a/src/math/lp/nra_solver.cpp b/src/math/lp/nra_solver.cpp index 4cf1fb082..5808abdd5 100644 --- a/src/math/lp/nra_solver.cpp +++ b/src/math/lp/nra_solver.cpp @@ -92,8 +92,11 @@ typedef nla::variable_map_type variable_map_type; vector core; // add linear inequalities from lra_solver - for (unsigned i = 0; i < s.constraints().size(); ++i) { + unsigned i = 0; + for (auto const* c : s.constraints()) { + (void)c; add_constraint(i); + ++i; } // add polynomial definitions.