diff --git a/src/smt/smt_model_checker.cpp b/src/smt/smt_model_checker.cpp index 255254fe41..72dc51f8f0 100644 --- a/src/smt/smt_model_checker.cpp +++ b/src/smt/smt_model_checker.cpp @@ -346,7 +346,8 @@ namespace smt { return false; TRACE(model_checker, tout << "skolems:\n" << sks << "\n";); - flet l(m_aux_context->get_fparams().m_array_fake_support, true); + flet l1(m_aux_context->get_fparams().m_array_fake_support, true); + flet l2(m_aux_context->get_fparams().m_preprocess, true); lbool r = m_aux_context->check(); TRACE(model_checker, tout << "[complete] model-checker result: " << to_sat_str(r) << "\n";); @@ -363,7 +364,8 @@ namespace smt { unsigned num_new_instances = 0; while (true) { - flet l(m_aux_context->get_fparams().m_array_fake_support, true); + flet l1(m_aux_context->get_fparams().m_array_fake_support, true); + flet l2(m_aux_context->get_fparams().m_preprocess, true); lbool r = m_aux_context->check(); TRACE(model_checker, tout << "[restricted] model-checker (" << (num_new_instances+1) << ") result: " << to_sat_str(r) << "\n";); if (r != l_true) diff --git a/src/smt/theory_array_full.cpp b/src/smt/theory_array_full.cpp index e00f4cff93..4ead9d3cf9 100644 --- a/src/smt/theory_array_full.cpp +++ b/src/smt/theory_array_full.cpp @@ -847,14 +847,14 @@ namespace smt { bool theory_array_full::has_non_beta_as_array() { for (enode* n : m_as_array) { for (enode* p : n->get_parents()) - if (ctx.is_relevant(p) && !ctx.is_beta_redex(p, n)) { + if (ctx.is_relevant(p) && !m.is_eq(p->get_expr()) && !ctx.is_beta_redex(p, n)) { TRACE(array, tout << "not a beta redex " << enode_pp(p, ctx) << "\n"); return true; } } for (enode* n : m_lambdas) for (enode* p : n->get_parents()) - if (ctx.is_relevant(p) && !is_default(p) && !ctx.is_beta_redex(p, n)) { + if (ctx.is_relevant(p) && !is_default(p) && !m.is_eq(p->get_expr()) && !ctx.is_beta_redex(p, n)) { TRACE(array, tout << "lambda is not a beta redex " << enode_pp(p, ctx) << "\n"); return true; }