3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-09 17:31:57 +00:00

fix #1675, regression in core processing in maxres

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-06-19 23:23:19 -07:00
parent 26e9321517
commit 335d672bf1
43 changed files with 246 additions and 321 deletions

View file

@ -71,10 +71,11 @@ void qe_project(ast_manager& m, app_ref_vector& vars, expr_ref& fml, model_ref&
expr_substitution sub(m);
proof_ref pr(m.mk_asserted(m.mk_true()), m);
expr_ref bval(m);
model::scoped_model_completion _scm(*M, true);
for (unsigned i = 0; i < vars.size(); i++) {
if (m.is_bool(vars.get(i))) {
// obtain the interpretation of the ith var using model completion
VERIFY(M->eval(vars.get(i), bval, true));
bval = (*M)(vars.get(i));
sub.insert(vars.get(i), bval, pr);
} else {
arith_vars.push_back(vars.get(i));
@ -106,7 +107,7 @@ void qe_project(ast_manager& m, app_ref_vector& vars, expr_ref& fml, model_ref&
tout << "Projected arith vars:\n" << mk_pp(fml, m) << "\n";
);
}
SASSERT(M->eval(fml, bval, true) && m.is_true(bval)); // M |= fml
SASSERT(M->is_true(fml));
vars.reset();
vars.append(arith_vars);
}