diff --git a/src/ast/pattern/pattern_inference.cpp b/src/ast/pattern/pattern_inference.cpp index 87f17beb87..a8ad720b07 100644 --- a/src/ast/pattern/pattern_inference.cpp +++ b/src/ast/pattern/pattern_inference.cpp @@ -173,13 +173,9 @@ inline void pattern_inference_cfg::collect::save(expr * n, unsigned delta, info void pattern_inference_cfg::collect::save_candidate(expr * n, unsigned delta) { switch (n->get_kind()) { case AST_VAR: { - unsigned idx = to_var(n)->get_idx(); - if (idx >= m_num_bindings + delta) { - save(n, delta, nullptr); - return; - } uint_set free_vars; - if (delta <= idx) + unsigned idx = to_var(n)->get_idx(); + if (delta <= idx && idx < m_num_bindings + delta) free_vars.insert(idx - delta); info * i = alloc(info, m, n, free_vars, 1); save(n, delta, i); diff --git a/src/smt/smt_quantifier.cpp b/src/smt/smt_quantifier.cpp index f253f24e5d..57702daf32 100644 --- a/src/smt/smt_quantifier.cpp +++ b/src/smt/smt_quantifier.cpp @@ -917,7 +917,6 @@ namespace smt { void propagate() override { if (!m_active) return; - IF_VERBOSE(10, verbose_stream() << "ho_matching: propagate(), mam.has_work=" << m_mam->has_work() << "\n"); m_mam->match(); if (!m_context->relevancy() && use_ematching()) { ptr_vector::const_iterator it = m_context->begin_enodes(); diff --git a/src/smt/theory_array_base.cpp b/src/smt/theory_array_base.cpp index 1d25d4893d..f83f1153f2 100644 --- a/src/smt/theory_array_base.cpp +++ b/src/smt/theory_array_base.cpp @@ -339,6 +339,8 @@ namespace smt { } void theory_array_base::assert_congruent(enode * a1, enode * a2) { + if (ctx.get_fparams().m_array_fake_support) + return; TRACE(array, tout << "congruent: #" << a1->get_owner_id() << " #" << a2->get_owner_id() << "\n";); SASSERT(is_array_sort(a1)); SASSERT(is_array_sort(a2));