mirror of
https://github.com/Z3Prover/z3
synced 2025-06-05 21:53:23 +00:00
debug model evaluator
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e94b97376c
commit
a51d6cbcbc
4 changed files with 27 additions and 20 deletions
|
@ -290,6 +290,7 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
|||
|
||||
|
||||
br_status mk_array_eq(expr* a, expr* b, expr_ref& result) {
|
||||
TRACE("model_evaluator", tout << "mk_array_eq " << m_array_equalities << "\n";);
|
||||
if (a == b) {
|
||||
result = m.mk_true();
|
||||
return BR_DONE;
|
||||
|
@ -315,6 +316,7 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
|||
conj.push_back(m.mk_eq(else1, else2));
|
||||
}
|
||||
if (args_are_unique1 && args_are_unique2 && !stores1.empty()) {
|
||||
TRACE("model_evalator", tout << "argss are unique";);
|
||||
return mk_array_eq_core(stores1, else1, stores2, else2, conj, result);
|
||||
}
|
||||
|
||||
|
@ -329,7 +331,10 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
|||
expr_ref s2(m_ar.mk_select(args2.size(), args2.c_ptr()), m);
|
||||
conj.push_back(m.mk_eq(s1, s2));
|
||||
}
|
||||
result = m.mk_and(conj.size(), conj.c_ptr());
|
||||
result = mk_and(conj);
|
||||
TRACE("model_evaluator", tout << mk_pp(a, m) << " == " << mk_pp(b, m) << " -> " << conj << "\n";
|
||||
for (auto& s : stores1) tout << "store: " << s << "\n";
|
||||
);
|
||||
return BR_REWRITE_FULL;
|
||||
}
|
||||
return BR_FAILED;
|
||||
|
|
|
@ -327,7 +327,7 @@ namespace datalog {
|
|||
unsigned m_offset; //!< in bits
|
||||
unsigned m_length; //!< in bits
|
||||
|
||||
column_info(unsigned offset, unsigned length) \
|
||||
column_info(unsigned offset, unsigned length)
|
||||
: m_big_offset(offset / 8),
|
||||
m_small_offset(offset % 8),
|
||||
m_mask( length == 64 ? ULLONG_MAX : (static_cast<uint64_t>(1)<<length)-1 ),
|
||||
|
|
|
@ -438,7 +438,7 @@ namespace smt {
|
|||
}
|
||||
else if (!check(q)) {
|
||||
if (m_params.m_mbqi_trace || get_verbosity_level() >= 5) {
|
||||
verbose_stream() << "(smt.mbqi :failed " << q->get_qid() << ")\n";
|
||||
IF_VERBOSE(0, verbose_stream() << "(smt.mbqi :failed " << q->get_qid() << ")\n");
|
||||
}
|
||||
TRACE("model_checker", tout << "checking quantifier " << mk_pp(q, m) << " failed\n";);
|
||||
num_failures++;
|
||||
|
|
|
@ -193,8 +193,10 @@ bool is_threaded();
|
|||
|
||||
#ifdef _MSC_VER
|
||||
#define DO_PRAGMA(x) __pragma(x)
|
||||
#define PRAGMA_LOCK __pragma(omp critical (verbose_lock))
|
||||
#else
|
||||
#define DO_PRAGMA(x) _Pragma(#x)
|
||||
#define PRAGMA_LOCK _Pragma("omp critical (verbose_lock){)
|
||||
#endif
|
||||
|
||||
#ifdef _NO_OMP_
|
||||
|
@ -202,7 +204,7 @@ bool is_threaded();
|
|||
#else
|
||||
#define LOCK_CODE(CODE) \
|
||||
{ \
|
||||
DO_PRAGMA(omp critical (verbose_lock)) \
|
||||
PRAGMA_LOCK \
|
||||
{ \
|
||||
CODE; \
|
||||
} \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue