From eba0732629e257f67417a46481bd1e54fd61c79e Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Wed, 12 Apr 2023 19:50:01 -0700 Subject: [PATCH] fix #6675 disable remove_unused_defs from pb-solver until it is integrated with model reconstruction. --- src/ast/rewriter/pb2bv_rewriter.cpp | 15 ++++++++------- src/cmd_context/cmd_context.cpp | 2 +- src/sat/smt/pb_solver.cpp | 9 +++++++-- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/ast/rewriter/pb2bv_rewriter.cpp b/src/ast/rewriter/pb2bv_rewriter.cpp index d3dd8ae7677..98c7a4c5ec6 100644 --- a/src/ast/rewriter/pb2bv_rewriter.cpp +++ b/src/ast/rewriter/pb2bv_rewriter.cpp @@ -825,16 +825,17 @@ struct pb2bv_rewriter::imp { if (a->get_family_id() == au.get_family_id()) { switch (a->get_decl_kind()) { case OP_ADD: - for (unsigned i = 0; i < sz; ++i) { - if (!is_pb(a->get_arg(i), mul)) return false; - } + for (unsigned i = 0; i < sz; ++i) + if (!is_pb(a->get_arg(i), mul)) + return false; return true; case OP_SUB: { - if (!is_pb(a->get_arg(0), mul)) return false; + if (!is_pb(a->get_arg(0), mul)) + return false; r = -mul; - for (unsigned i = 1; i < sz; ++i) { - if (!is_pb(a->get_arg(1), r)) return false; - } + for (unsigned i = 1; i < sz; ++i) + if (!is_pb(a->get_arg(i), r)) + return false; return true; } case OP_UMINUS: diff --git a/src/cmd_context/cmd_context.cpp b/src/cmd_context/cmd_context.cpp index c2ec7fe3093..938393e88df 100644 --- a/src/cmd_context/cmd_context.cpp +++ b/src/cmd_context/cmd_context.cpp @@ -1240,7 +1240,7 @@ bool cmd_context::try_mk_pdecl_app(symbol const & s, unsigned num_args, expr * c if (!dt.is_datatype(args[0]->get_sort())) return false; - for (auto* a : dt.plugin().get_accessors(s)) { + for (auto* a : dt.plugin().get_accessors(s)) { fn = a->instantiate(args[0]->get_sort()); r = m().mk_app(fn, num_args, args); return true; diff --git a/src/sat/smt/pb_solver.cpp b/src/sat/smt/pb_solver.cpp index fed6aaf7cf7..d334df48f53 100644 --- a/src/sat/smt/pb_solver.cpp +++ b/src/sat/smt/pb_solver.cpp @@ -2039,7 +2039,7 @@ namespace pb { for (unsigned sz = m_constraints.size(), i = 0; i < sz; ++i) simplify(*m_constraints[i]); for (unsigned sz = m_learned.size(), i = 0; i < sz; ++i) simplify(*m_learned[i]); init_use_lists(); - remove_unused_defs(); + // remove_unused_defs(); set_non_external(); elim_pure(); for (unsigned sz = m_constraints.size(), i = 0; i < sz; ++i) subsumption(*m_constraints[i]); @@ -2528,8 +2528,13 @@ namespace pb { } void solver::remove_unused_defs() { - if (incremental_mode()) return; + if (incremental_mode()) + return; // remove constraints where indicator literal isn't used. + NOT_IMPLEMENTED_YET(); + // TODO: #6675 + // need to add this inequality to the model reconstruction + // stack in order to produce correct models. for (constraint* cp : m_constraints) { constraint& c = *cp; literal lit = c.lit();