Skip to content

Commit 229ea56

Browse files
1 parent 97115e5 commit 229ea56

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

src/sat/smt/array_model.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ namespace array {
3131
std::for_each(m_selects_range.begin(), m_selects_range.end(), delete_proc<select_set>());
3232
}
3333

34-
bool solver::add_dep(euf::enode* n, top_sort<euf::enode>& dep) {
34+
bool solver::add_dep(euf::enode* n, top_sort<euf::enode>& dep) {
3535
if (!a.is_array(n->get_expr())) {
3636
dep.insert(n, nullptr);
3737
return true;
38-
}
38+
}
3939
for (euf::enode* p : euf::enode_parents(n->get_root())) {
4040
if (a.is_default(p->get_expr())) {
4141
dep.add(n, p);
@@ -47,6 +47,13 @@ namespace array {
4747
for (unsigned i = 1; i < p->num_args(); ++i)
4848
dep.add(n, p->get_arg(i));
4949
}
50+
if (a.is_array(n->get_expr())) {
51+
for (euf::enode* p : *get_select_set(n)) {
52+
dep.add(n, p);
53+
for (unsigned i = 1; i < p->num_args(); ++i)
54+
dep.add(n, p->get_arg(i));
55+
}
56+
}
5057
for (euf::enode* k : euf::enode_class(n))
5158
if (a.is_const(k->get_expr()))
5259
dep.add(n, k->get_arg(0));

0 commit comments

Comments
 (0)