mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +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:
parent
8faf35e2e0
commit
fadc3761bd
|
@ -65,7 +65,7 @@ namespace qe {
|
||||||
DEBUG_CODE(expr_ref val(m);
|
DEBUG_CODE(expr_ref val(m);
|
||||||
eval(lit, val);
|
eval(lit, val);
|
||||||
CTRACE("qe", !m.is_true(val), tout << mk_pp(lit, m) << " := " << val << "\n";);
|
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())
|
if (!m.inc())
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -29,6 +29,7 @@ Notes:
|
||||||
#include "ast/rewriter/expr_replacer.h"
|
#include "ast/rewriter/expr_replacer.h"
|
||||||
#include "model/model_v2_pp.h"
|
#include "model/model_v2_pp.h"
|
||||||
#include "model/model_evaluator.h"
|
#include "model/model_evaluator.h"
|
||||||
|
#include "model/model_evaluator_params.hpp"
|
||||||
#include "smt/smt_kernel.h"
|
#include "smt/smt_kernel.h"
|
||||||
#include "smt/params/smt_params.h"
|
#include "smt/params/smt_params.h"
|
||||||
#include "smt/smt_solver.h"
|
#include "smt/smt_solver.h"
|
||||||
|
@ -1254,6 +1255,9 @@ namespace qe {
|
||||||
void operator()(/* in */ goal_ref const & in,
|
void operator()(/* in */ goal_ref const & in,
|
||||||
/* out */ goal_ref_buffer & result) override {
|
/* out */ goal_ref_buffer & result) override {
|
||||||
tactic_report report("qsat-tactic", *in);
|
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;
|
ptr_vector<expr> fmls;
|
||||||
expr_ref_vector defs(m);
|
expr_ref_vector defs(m);
|
||||||
expr_ref fml(m);
|
expr_ref fml(m);
|
||||||
|
|
Loading…
Reference in a new issue