Skip to content

Commit 3c6dcea

Browse files
fix #2717
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent d95b549 commit 3c6dcea

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

src/ast/rewriter/seq_rewriter.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,8 +1704,7 @@ br_status seq_rewriter::mk_re_concat(expr* a, expr* b, expr_ref& result) {
17041704
}
17051705
unsigned lo1, hi1, lo2, hi2;
17061706

1707-
if (m_util.re.is_loop(a, a1, lo1, hi1) && m_util.re.is_loop(b, b1, lo2, hi2) && a1 == b1) {
1708-
SASSERT(lo1 <= hi1 && lo2 <= hi2);
1707+
if (m_util.re.is_loop(a, a1, lo1, hi1) && lo1 <= hi1 && m_util.re.is_loop(b, b1, lo2, hi2) && lo2 <= hi2 && a1 == b1) {
17091708
result = m_util.re.mk_loop(a1, lo1 + lo2, hi1 + hi2);
17101709
return BR_DONE;
17111710
}
@@ -1715,8 +1714,7 @@ br_status seq_rewriter::mk_re_concat(expr* a, expr* b, expr_ref& result) {
17151714
}
17161715
for (unsigned i = 0; i < 2; ++i) {
17171716
// (loop a lo1) + (loop a lo2 hi2) = (loop a lo1 + lo2)
1718-
if (m_util.re.is_loop(a, a1, lo1) && m_util.re.is_loop(b, b1, lo2, hi2) && a1 == b1) {
1719-
SASSERT(lo2 <= hi2);
1717+
if (m_util.re.is_loop(a, a1, lo1) && m_util.re.is_loop(b, b1, lo2, hi2) && lo2 <= hi2 && a1 == b1) {
17201718
result = m_util.re.mk_loop(a1, lo1 + lo2);
17211719
return BR_DONE;
17221720
}
@@ -1731,8 +1729,7 @@ br_status seq_rewriter::mk_re_concat(expr* a, expr* b, expr_ref& result) {
17311729
return BR_DONE;
17321730
}
17331731
// (loop a lo1 hi1) + a = (loop a lo1+1 hi1+1)
1734-
if (m_util.re.is_loop(a, a1, lo1, hi1) && a1 == b) {
1735-
SASSERT(lo1 <= hi1);
1732+
if (m_util.re.is_loop(a, a1, lo1, hi1) && lo1 <= hi1 && a1 == b) {
17361733
result = m_util.re.mk_loop(a1, lo1+1, hi1+1);
17371734
return BR_DONE;
17381735
}
@@ -1848,7 +1845,7 @@ br_status seq_rewriter::mk_re_loop(func_decl* f, unsigned num_args, expr* const*
18481845
lo2 = np > 0 ? f->get_parameter(0).get_int() : 0;
18491846
hi2 = np > 1 ? f->get_parameter(1).get_int() : 0;
18501847
if (np == 2 && lo2 > hi2) {
1851-
result = m_util.re.mk_loop(args[0], hi2, hi2);
1848+
result = m_util.re.mk_loop(args[0], lo2, lo2);
18521849
return BR_REWRITE1;
18531850
}
18541851
// (loop (loop a lo) lo2) = (loop lo*lo2)

src/model/model.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ struct model::top_sort : public ::top_sort<func_decl> {
215215
};
216216

217217
void model::compress() {
218+
SASSERT(false);
218219
if (m_cleaned) return;
219220

220221
// stratify m_finterp and m_decls in a topological sort

0 commit comments

Comments
 (0)