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); }