From f71fd2afb5924d28d1d383f979bc052d35056205 Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Mon, 24 Nov 2014 16:17:22 -0800 Subject: [PATCH 1/2] disable unconstrained elimination pre-processing Signed-off-by: Nikolaj Bjorner --- src/opt/opt_context.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/opt/opt_context.cpp b/src/opt/opt_context.cpp index d41277df9..b85a4f21e 100644 --- a/src/opt/opt_context.cpp +++ b/src/opt/opt_context.cpp @@ -218,6 +218,7 @@ namespace opt { } IF_VERBOSE(1, verbose_stream() << "(optimize:sat)\n";); s.get_model(m_model); + TRACE("opt", model_smt2_pp(tout, m, *m_model, 0);); m_optsmt.setup(*m_opt_solver.get()); update_lower(); switch (m_objectives.size()) { @@ -566,7 +567,7 @@ namespace opt { and_then(mk_simplify_tactic(m), mk_propagate_values_tactic(m), mk_solve_eqs_tactic(m), - mk_elim_uncnstr_tactic(m), + // NB: mk_elim_uncstr_tactic(m) is not sound with soft constraints mk_simplify_tactic(m)); opt_params optp(m_params); tactic_ref tac2, tac3; From e9baaa090090602301ef4a962ba0316a9fd93a76 Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Tue, 25 Nov 2014 10:23:41 -0800 Subject: [PATCH 2/2] rename 'or' to 'fml' toe mae gcc happy, reported by Geroge Karpenkov Signed-off-by: Nikolaj Bjorner --- src/opt/optsmt.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/opt/optsmt.cpp b/src/opt/optsmt.cpp index 615acc61d..7f940aca8 100644 --- a/src/opt/optsmt.cpp +++ b/src/opt/optsmt.cpp @@ -124,14 +124,14 @@ namespace opt { expr_ref_vector ors(m), disj(m); - expr_ref or(m), bound(m.mk_true(), m); + expr_ref fml(m), bound(m.mk_true(), m); for (unsigned i = 0; i < m_upper.size(); ++i) { ors.push_back(m_s->mk_ge(i, m_upper[i])); } { solver::scoped_push _push(*m_s); - or = m.mk_or(ors.size(), ors.c_ptr()); - m_s->assert_expr(or); + fml = m.mk_or(ors.size(), ors.c_ptr()); + m_s->assert_expr(fml); lbool is_sat = l_true; while (!m_cancel) { is_sat = m_s->check_sat(0,0); @@ -149,8 +149,8 @@ namespace opt { } } set_max(m_lower, m_s->get_objective_values(), disj); - or = m.mk_or(ors.size(), ors.c_ptr()); - m_s->assert_expr(or); + fml = m.mk_or(ors.size(), ors.c_ptr()); + m_s->assert_expr(fml); } else if (is_sat == l_undef) { return l_undef;