Skip to content

Commit a4a84ed

Browse files
arrays are not necessarily unary
1 parent a5e5a35 commit a4a84ed

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/qe/mbp/mbp_arrays_tg.cpp

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -378,24 +378,26 @@ struct mbp_array_tg::impl {
378378
mark_seen(term);
379379
}
380380
}
381-
if (!m_use_mdl) return progress;
382-
expr *e1, *e2, *a1, *a2, *i1, *i2;
381+
if (!m_use_mdl)
382+
return progress;
383383
for (unsigned i = 0; i < rdTerms.size(); i++) {
384-
e1 = rdTerms.get(i);
385-
a1 = to_app(e1)->get_arg(0);
386-
i1 = to_app(e1)->get_arg(1);
384+
app* e1 = to_app(rdTerms.get(i));
385+
expr* a1 = e1->get_arg(0);
387386
for (unsigned j = i + 1; j < rdTerms.size(); j++) {
388-
e2 = rdTerms.get(j);
389-
a2 = to_app(e2)->get_arg(0);
390-
i2 = to_app(e2)->get_arg(1);
391-
if (!is_seen(e1, e2) && a1->get_id() == a2->get_id()) {
387+
app* e2 = to_app(rdTerms.get(j));
388+
expr* a2 = e2->get_arg(0);
389+
if (!is_seen(e1, e2) && a1 == e2) {
392390
mark_seen(e1, e2);
393391
progress = true;
394-
if (m_mdl.are_equal(i1, i2)) {
395-
m_tg.add_eq(i1, i2);
396-
} else {
397-
SASSERT(!m_mdl.are_equal(i1, i2));
398-
m_tg.add_deq(i1, i2);
392+
for (unsigned k = 1; k < e1->get_num_args(); ++k) {
393+
expr* i1 = e1->get_arg(k);
394+
expr* i2 = e2->get_arg(k);
395+
if (m_mdl.are_equal(i1, i2))
396+
m_tg.add_eq(i1, i2);
397+
else {
398+
SASSERT(!m_mdl.are_equal(i1, i2));
399+
m_tg.add_deq(i1, i2);
400+
}
399401
}
400402
continue;
401403
}

0 commit comments

Comments
 (0)