From c1b355f34269581963d7003b709512d8fedc71c8 Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner <nbjorner@microsoft.com> Date: Thu, 20 Oct 2022 17:48:17 -0700 Subject: [PATCH] #6364 throttle on upwards propagation of default was too restrictive --- src/sat/smt/array_axioms.cpp | 4 ++++ src/sat/smt/array_solver.cpp | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/sat/smt/array_axioms.cpp b/src/sat/smt/array_axioms.cpp index 2c08b3e69..901344293 100644 --- a/src/sat/smt/array_axioms.cpp +++ b/src/sat/smt/array_axioms.cpp @@ -625,6 +625,10 @@ namespace array { return change; } + /** + * For every occurrence of as-array(f) and every occurrence of f(t) + * add equality select(as-array(f), t) = f(t) + */ bool solver::add_as_array_eqs(euf::enode* n) { func_decl* f = nullptr; bool change = false; diff --git a/src/sat/smt/array_solver.cpp b/src/sat/smt/array_solver.cpp index f66c2a183..2d3d13d3a 100644 --- a/src/sat/smt/array_solver.cpp +++ b/src/sat/smt/array_solver.cpp @@ -216,8 +216,7 @@ namespace array { d.m_has_default = true; for (euf::enode* lambda : d.m_lambdas) push_axiom(default_axiom(lambda)); - if (should_prop_upward(d)) - propagate_parent_default(v); + propagate_parent_default(v); } void solver::propagate_select_axioms(var_data const& d, euf::enode* lambda) { @@ -255,7 +254,7 @@ namespace array { return; ctx.push(reset_flag_trail(d.m_prop_upward)); d.m_prop_upward = true; - if (should_prop_upward(d)) + if (should_prop_upward(d)) propagate_parent_select_axioms(v); set_prop_upward(d); }