Skip to content

Commit f313ab9

Browse files
correct newly introduced rewrite
1 parent ec8866c commit f313ab9

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/ast/rewriter/bv_rewriter.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -510,10 +510,14 @@ br_status bv_rewriter::mk_leq_core(bool is_signed, expr * a, expr * b, expr_ref
510510
return BR_REWRITE2;
511511
}
512512

513-
// (bvule c (+ c a)) -> (bvule a (2^n - c)) (could be generalized)
514-
if (!is_signed && is_num1 && m_util.is_bv_add(b, a1, a2) && is_numeral(a1, r2, sz) && r1 == r2) {
515-
result = m_util.mk_ule(a2, m_util.mk_numeral(-r1, sz));
516-
return BR_REWRITE1;
513+
// (bvule r1 (+ r2 a)) ->
514+
// for r1 = r2, (bvule a (2^n - r2 - 1))
515+
// other cases r1 > r2, r1 < r2 are TBD
516+
if (!is_signed && is_num1 && m_util.is_bv_add(b, a1, a2) && is_numeral(a1, r2, sz)) {
517+
if (r1 == r2) {
518+
result = m_util.mk_ule(a2, m_util.mk_numeral(-r2 - 1, sz));
519+
return BR_REWRITE1;
520+
}
517521
}
518522

519523
if (m_le_extra) {

0 commit comments

Comments
 (0)