mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
expose bounds as vector expressions instead of containing ad-hoc expressions. Issue #911
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e02160c674
commit
183ee7e37d
|
@ -229,26 +229,8 @@ public:
|
||||||
pr = m_ctx->get_proof();
|
pr = m_ctx->get_proof();
|
||||||
if (in->unsat_core_enabled()) {
|
if (in->unsat_core_enabled()) {
|
||||||
unsigned sz = m_ctx->get_unsat_core_size();
|
unsigned sz = m_ctx->get_unsat_core_size();
|
||||||
expr_ref_vector _core(m);
|
|
||||||
for (unsigned i = 0; i < sz; ++i) {
|
|
||||||
_core.push_back(m_ctx->get_unsat_core_expr(i));
|
|
||||||
}
|
|
||||||
if (sz > 0 && smt_params_helper(m_params_ref).core_minimize()) {
|
|
||||||
std::cout << "size1 " << sz << " " << clauses << "\n";
|
|
||||||
ref<solver> slv = mk_smt_solver(m, m_params_ref, m_logic);
|
|
||||||
slv->assert_expr(clauses);
|
|
||||||
mus mus(*slv.get());
|
|
||||||
mus.add_soft(_core.size(), _core.c_ptr());
|
|
||||||
lbool got_core = mus.get_mus(_core);
|
|
||||||
sz = _core.size();
|
|
||||||
std::cout << "size2 " << sz << "\n";
|
|
||||||
if (got_core != l_true) {
|
|
||||||
r = l_undef;
|
|
||||||
goto undef_case;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (unsigned i = 0; i < sz; i++) {
|
for (unsigned i = 0; i < sz; i++) {
|
||||||
expr * b = _core[i].get();
|
expr * b = m_ctx->get_unsat_core_expr(i);
|
||||||
SASSERT(is_uninterp_const(b) && m.is_bool(b));
|
SASSERT(is_uninterp_const(b) && m.is_bool(b));
|
||||||
expr * d = bool2dep.find(b);
|
expr * d = bool2dep.find(b);
|
||||||
lcore = m.mk_join(lcore, m.mk_leaf(d));
|
lcore = m.mk_join(lcore, m.mk_leaf(d));
|
||||||
|
|
Loading…
Reference in a new issue