mirror of
https://github.com/Z3Prover/z3
synced 2025-04-13 20:38:43 +00:00
renamed LP bound propagator to avoid linker name clashes
This commit is contained in:
parent
6bc5209e26
commit
e315d063c5
|
@ -1351,9 +1351,9 @@ namespace smt {
|
|||
return false;
|
||||
}
|
||||
|
||||
struct local_bound_propagator: public lean::bound_propagator {
|
||||
struct local_bound_propagator: public lean::lp_bound_propagator {
|
||||
imp & m_imp;
|
||||
local_bound_propagator(imp& i) : bound_propagator(*i.m_solver), m_imp(i) {}
|
||||
local_bound_propagator(imp& i) : lp_bound_propagator(*i.m_solver), m_imp(i) {}
|
||||
|
||||
bool bound_is_interesting(unsigned j, lean::lconstraint_kind kind, const rational & v) {
|
||||
return m_imp.bound_is_interesting(j, kind, v);
|
||||
|
|
|
@ -18,7 +18,7 @@ namespace lean {
|
|||
class bound_analyzer_on_row {
|
||||
|
||||
linear_combination_iterator<mpq> & m_it;
|
||||
bound_propagator & m_bp;
|
||||
lp_bound_propagator & m_bp;
|
||||
unsigned m_row_or_term_index;
|
||||
int m_column_of_u; // index of an unlimited from above monoid
|
||||
// -1 means that such a value is not found, -2 means that at least two of such monoids were found
|
||||
|
@ -31,7 +31,7 @@ public :
|
|||
linear_combination_iterator<mpq> &it,
|
||||
const numeric_pair<mpq>& rs,
|
||||
unsigned row_or_term_index,
|
||||
bound_propagator & bp
|
||||
lp_bound_propagator & bp
|
||||
)
|
||||
:
|
||||
m_it(it),
|
||||
|
@ -325,7 +325,7 @@ public :
|
|||
static void analyze_row(linear_combination_iterator<mpq> &it,
|
||||
const numeric_pair<mpq>& rs,
|
||||
unsigned row_or_term_index,
|
||||
bound_propagator & bp
|
||||
lp_bound_propagator & bp
|
||||
) {
|
||||
bound_analyzer_on_row a(it, rs, row_or_term_index, bp);
|
||||
a.analyze();
|
||||
|
|
|
@ -203,7 +203,7 @@ public:
|
|||
|
||||
void analyze_new_bounds_on_row(
|
||||
unsigned row_index,
|
||||
bound_propagator & bp) {
|
||||
lp_bound_propagator & bp) {
|
||||
lean_assert(!use_tableau());
|
||||
iterator_on_pivot_row<mpq> it(m_mpq_lar_core_solver.get_pivot_row(), m_mpq_lar_core_solver.m_r_basis[row_index]);
|
||||
|
||||
|
@ -217,7 +217,7 @@ public:
|
|||
|
||||
void analyze_new_bounds_on_row_tableau(
|
||||
unsigned row_index,
|
||||
bound_propagator & bp
|
||||
lp_bound_propagator & bp
|
||||
) {
|
||||
|
||||
if (A_r().m_rows[row_index].size() > settings().max_row_length_for_bound_propagation)
|
||||
|
@ -244,7 +244,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
void calculate_implied_bounds_for_row(unsigned i, bound_propagator & bp) {
|
||||
void calculate_implied_bounds_for_row(unsigned i, lp_bound_propagator & bp) {
|
||||
if(use_tableau()) {
|
||||
analyze_new_bounds_on_row_tableau(i, bp);
|
||||
} else {
|
||||
|
@ -348,12 +348,12 @@ public:
|
|||
return ext_var_or_term < m_terms_start_index ? j : ext_var_or_term;
|
||||
}
|
||||
|
||||
void propagate_bounds_on_a_term(const lar_term& t, bound_propagator & bp, unsigned term_offset) {
|
||||
void propagate_bounds_on_a_term(const lar_term& t, lp_bound_propagator & bp, unsigned term_offset) {
|
||||
lean_assert(false); // not implemented
|
||||
}
|
||||
|
||||
|
||||
void explain_implied_bound(implied_bound & ib, bound_propagator & bp) {
|
||||
void explain_implied_bound(implied_bound & ib, lp_bound_propagator & bp) {
|
||||
unsigned i = ib.m_row_or_term_index;
|
||||
int bound_sign = ib.m_is_low_bound? 1: -1;
|
||||
int j_sign = (ib.m_coeff_before_j_is_pos ? 1 :-1) * bound_sign;
|
||||
|
@ -384,7 +384,7 @@ public:
|
|||
return contains(m_ext_vars_to_columns, term);
|
||||
}
|
||||
|
||||
void propagate_bounds_on_terms(bound_propagator & bp) {
|
||||
void propagate_bounds_on_terms(lp_bound_propagator & bp) {
|
||||
for (unsigned i = 0; i < m_terms.size(); i++) {
|
||||
if (term_is_used_as_row(i + m_terms_start_index))
|
||||
continue; // this term is used a left side of a constraint,
|
||||
|
@ -395,7 +395,7 @@ public:
|
|||
|
||||
|
||||
// goes over touched rows and tries to induce bounds
|
||||
void propagate_bounds_for_touched_rows(bound_propagator & bp) {
|
||||
void propagate_bounds_for_touched_rows(lp_bound_propagator & bp) {
|
||||
if (!use_tableau())
|
||||
return; // ! todo : enable bound propagaion here. The current bug is that after the pop
|
||||
// the changed terms become incorrect!
|
||||
|
|
|
@ -4,18 +4,18 @@
|
|||
*/
|
||||
#include "util/lp/lar_solver.h"
|
||||
namespace lean {
|
||||
bound_propagator::bound_propagator(lar_solver & ls):
|
||||
lp_bound_propagator::lp_bound_propagator(lar_solver & ls):
|
||||
m_lar_solver(ls) {}
|
||||
column_type bound_propagator::get_column_type(unsigned j) const {
|
||||
column_type lp_bound_propagator::get_column_type(unsigned j) const {
|
||||
return m_lar_solver.m_mpq_lar_core_solver.m_column_types()[j];
|
||||
}
|
||||
const impq & bound_propagator::get_low_bound(unsigned j) const {
|
||||
const impq & lp_bound_propagator::get_low_bound(unsigned j) const {
|
||||
return m_lar_solver.m_mpq_lar_core_solver.m_r_low_bounds()[j];
|
||||
}
|
||||
const impq & bound_propagator::get_upper_bound(unsigned j) const {
|
||||
const impq & lp_bound_propagator::get_upper_bound(unsigned j) const {
|
||||
return m_lar_solver.m_mpq_lar_core_solver.m_r_upper_bounds()[j];
|
||||
}
|
||||
void bound_propagator::try_add_bound(const mpq & v, unsigned j, bool is_low, bool coeff_before_j_is_pos, unsigned row_or_term_index, bool strict) {
|
||||
void lp_bound_propagator::try_add_bound(const mpq & v, unsigned j, bool is_low, bool coeff_before_j_is_pos, unsigned row_or_term_index, bool strict) {
|
||||
j = m_lar_solver.adjust_column_index_to_term_index(j);
|
||||
lconstraint_kind kind = is_low? GE : LE;
|
||||
if (strict)
|
||||
|
|
|
@ -6,14 +6,14 @@
|
|||
#include "util/lp/lp_settings.h"
|
||||
namespace lean {
|
||||
class lar_solver;
|
||||
class bound_propagator {
|
||||
class lp_bound_propagator {
|
||||
std::unordered_map<unsigned, unsigned> m_improved_low_bounds; // these maps map a column index to the corresponding index in ibounds
|
||||
std::unordered_map<unsigned, unsigned> m_improved_upper_bounds;
|
||||
lar_solver & m_lar_solver;
|
||||
public:
|
||||
vector<implied_bound> m_ibounds;
|
||||
public:
|
||||
bound_propagator(lar_solver & ls);
|
||||
lp_bound_propagator(lar_solver & ls);
|
||||
column_type get_column_type(unsigned) const;
|
||||
const impq & get_low_bound(unsigned) const;
|
||||
const impq & get_upper_bound(unsigned) const;
|
||||
|
|
Loading…
Reference in a new issue