3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-19 04:13:38 +00:00

fix cubing semantics

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-10-02 08:14:19 -07:00
parent 620c5d1d81
commit 5bf57c2700
2 changed files with 9 additions and 9 deletions

View file

@ -308,9 +308,9 @@ public:
return nullptr; return nullptr;
} }
expr_ref_vector last_cube() { expr_ref_vector last_cube(bool is_sat) {
expr_ref_vector result(m); expr_ref_vector result(m);
result.push_back(m.mk_false()); result.push_back(is_sat ? m.mk_true() : m.mk_false());
return result; return result;
} }
@ -334,16 +334,16 @@ public:
lbool result = m_solver.cube(vars, lits, backtrack_level); lbool result = m_solver.cube(vars, lits, backtrack_level);
switch (result) { switch (result) {
case l_true: case l_true:
return expr_ref_vector(m); return last_cube(true);
case l_false: case l_false:
return last_cube(); return last_cube(false);
default: default:
SASSERT(!lits.empty());
if (lits.empty()) {
IF_VERBOSE(0, verbose_stream() << "empty cube for undef\n";);
}
break; break;
} }
if (lits.empty()) {
set_reason_unknown(m_solver.get_reason_unknown());
return expr_ref_vector(m);
}
expr_ref_vector fmls(m); expr_ref_vector fmls(m);
expr_ref_vector lit2expr(m); expr_ref_vector lit2expr(m);
lit2expr.resize(m_solver.num_vars() * 2); lit2expr.resize(m_solver.num_vars() * 2);
@ -358,7 +358,6 @@ public:
vs.push_back(x); vs.push_back(x);
} }
} }
if (fmls.empty()) { IF_VERBOSE(0, verbose_stream() << "no literals were produced in cube\n"); }
return fmls; return fmls;
} }

View file

@ -79,6 +79,7 @@ public:
expr_ref_vector cube(expr_ref_vector& vars, unsigned ) override { expr_ref_vector cube(expr_ref_vector& vars, unsigned ) override {
set_reason_unknown("cubing is not supported on tactics");
return expr_ref_vector(get_manager()); return expr_ref_vector(get_manager());
} }