Skip to content

Commit 2b2f016

Browse files
python for accessing lambda, switch to theory branching for QF_LRA
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent 520ea65 commit 2b2f016

File tree

4 files changed

+14
-13
lines changed

4 files changed

+14
-13
lines changed

src/smt/smt_setup.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ namespace smt {
409409
m_params.m_nnf_cnf = false;
410410
m_params.m_arith_eq_bounds = true;
411411
m_params.m_arith_eq2ineq = true;
412-
m_params.m_phase_selection = PS_ALWAYS_FALSE;
412+
// m_params.m_phase_selection = PS_THEORY;
413413
m_params.m_restart_strategy = RS_GEOMETRIC;
414414
m_params.m_restart_factor = 1.5;
415415
m_params.m_restart_adaptive = false;
@@ -442,7 +442,7 @@ namespace smt {
442442
}
443443
}
444444
m_params.m_arith_eq_bounds = true;
445-
m_params.m_phase_selection = PS_ALWAYS_FALSE;
445+
// m_params.m_phase_selection = PS_THEORY;
446446
m_params.m_restart_strategy = RS_GEOMETRIC;
447447
m_params.m_restart_factor = 1.5;
448448
m_params.m_restart_adaptive = false;
@@ -456,13 +456,14 @@ namespace smt {
456456
}
457457

458458
void setup::setup_QF_LRA() {
459-
TRACE("setup", tout << "setup_QF_LRA(st)\n";);
459+
TRACE("setup", tout << "setup_QF_LRA()\n";);
460460
m_params.m_relevancy_lvl = 0;
461461
m_params.m_arith_eq2ineq = true;
462462
m_params.m_arith_reflect = false;
463463
m_params.m_arith_propagate_eqs = false;
464464
m_params.m_eliminate_term_ite = true;
465465
m_params.m_nnf_cnf = false;
466+
m_params.m_phase_selection = PS_THEORY;
466467
setup_lra_arith();
467468
}
468469

src/smt/theory_lra.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -944,10 +944,6 @@ class theory_lra::imp {
944944
if (!m_bool_var2bound.find(v, b)) {
945945
return l_undef;
946946
}
947-
scoped_internalize_state st(*this);
948-
st.vars().push_back(b->get_var());
949-
st.coeffs().push_back(rational::one());
950-
init_left_side(st);
951947
lp::lconstraint_kind k = lp::EQ;
952948
switch (b->get_bound_kind()) {
953949
case lp_api::lower_t:
@@ -956,10 +952,11 @@ class theory_lra::imp {
956952
case lp_api::upper_t:
957953
k = lp::LE;
958954
break;
955+
default:
956+
break;
959957
}
960958
auto vi = get_var_index(b->get_var());
961-
rational bound = b->get_value();
962-
return m_solver->compare_values(vi, k, bound) ? l_true : l_false;
959+
return m_solver->compare_values(vi, k, b->get_value()) ? l_true : l_false;
963960
}
964961

965962
void new_eq_eh(theory_var v1, theory_var v2) {

src/util/lp/bound_analyzer_on_row.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,13 @@ public :
175175
}
176176

177177

178+
mpq bound;
178179
for (const auto &p : m_row) {
179180
bool str;
180181
bool a_is_pos = is_pos(p.coeff());
181-
mpq bound = total / p.coeff() + monoid_min_no_mult(a_is_pos, p.var(), str);
182+
bound = total;
183+
bound /= p.coeff();
184+
bound += monoid_min_no_mult(a_is_pos, p.var(), str);
182185
if (a_is_pos) {
183186
limit_j(p.var(), bound, true, false, strict - static_cast<int>(str) > 0);
184187
}

src/util/lp/stacked_vector.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ Revision History:
2525
#include "util/vector.h"
2626
namespace lp {
2727
template < typename B> class stacked_vector {
28-
vector<unsigned> m_stack_of_vector_sizes;
29-
vector<unsigned> m_stack_of_change_sizes;
28+
svector<unsigned> m_stack_of_vector_sizes;
29+
svector<unsigned> m_stack_of_change_sizes;
3030
vector<std::pair<unsigned, B>> m_changes;
3131
vector<B> m_vector;
3232
public:
@@ -114,7 +114,7 @@ template < typename B> class stacked_vector {
114114
}
115115

116116
template <typename T>
117-
void pop_tail(vector<T> & v, unsigned k) {
117+
void pop_tail(svector<T> & v, unsigned k) {
118118
lp_assert(v.size() >= k);
119119
v.resize(v.size() - k);
120120
}

0 commit comments

Comments
 (0)