3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-19 10:52:02 +00:00

array solver fixes

This commit is contained in:
Nikolaj Bjorner 2021-03-13 06:19:26 -08:00
parent 78f4513441
commit 9a975a4523
10 changed files with 227 additions and 98 deletions

View file

@ -236,13 +236,16 @@ namespace euf {
expr* e = n->get_expr();
if (!m.is_bool(e))
continue;
unsigned id = n->get_root_id();
if (!m_values.get(id))
if (!is_relevant(n))
continue;
bool tt = m.is_true(m_values.get(id));
if (mdl.is_true(e) != tt) {
IF_VERBOSE(0, verbose_stream() << "Failed to evaluate " << id << " " << mk_bounded_pp(e, m) << " " << mdl(e) << " " << mk_bounded_pp(m_values.get(id), m) << "\n");
bool tt = l_true == s().value(n->bool_var());
if (tt && mdl.is_false(e)) {
IF_VERBOSE(0, verbose_stream() << "Failed to validate " << bpp(n) << " " << mdl(e) << "\n");
for (auto* arg : euf::enode_args(n))
IF_VERBOSE(0, verbose_stream() << bpp(arg) << "\n" << mdl(arg->get_expr()) << "\n");
}
if (!tt && mdl.is_true(e))
IF_VERBOSE(0, verbose_stream() << "Failed to validate " << bpp(n) << " " << mdl(e) << "\n");
}
}