3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-13 12:28:44 +00:00

fix #3731 - abuse of parameter combinations, trying to use qsat on arrays, but disabling array equality expansion during model evaluation

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-04-04 17:06:43 -07:00
parent 8faf35e2e0
commit fadc3761bd
2 changed files with 5 additions and 1 deletions

View file

@ -65,7 +65,7 @@ namespace qe {
DEBUG_CODE(expr_ref val(m);
eval(lit, val);
CTRACE("qe", !m.is_true(val), tout << mk_pp(lit, m) << " := " << val << "\n";);
SASSERT(m.limit().get_cancel_flag() || m.is_true(val)););
SASSERT(m.limit().get_cancel_flag() || !m.is_false(val)););
if (!m.inc())
return false;

View file

@ -29,6 +29,7 @@ Notes:
#include "ast/rewriter/expr_replacer.h"
#include "model/model_v2_pp.h"
#include "model/model_evaluator.h"
#include "model/model_evaluator_params.hpp"
#include "smt/smt_kernel.h"
#include "smt/params/smt_params.h"
#include "smt/smt_solver.h"
@ -1254,6 +1255,9 @@ namespace qe {
void operator()(/* in */ goal_ref const & in,
/* out */ goal_ref_buffer & result) override {
tactic_report report("qsat-tactic", *in);
model_evaluator_params mp(m_params);
if (!mp.array_equalities())
throw tactic_exception("array equalities cannot be disabled for qsat");
ptr_vector<expr> fmls;
expr_ref_vector defs(m);
expr_ref fml(m);