From 5352a0106dfc8a432f1835fc241523879d8cd9d5 Mon Sep 17 00:00:00 2001
From: Nikolaj Bjorner <nbjorner@microsoft.com>
Date: Wed, 26 Oct 2022 12:20:55 -0700
Subject: [PATCH] fix #6426

---
 src/ast/rewriter/bv_rewriter.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/ast/rewriter/bv_rewriter.cpp b/src/ast/rewriter/bv_rewriter.cpp
index 4740a954c..b677b2197 100644
--- a/src/ast/rewriter/bv_rewriter.cpp
+++ b/src/ast/rewriter/bv_rewriter.cpp
@@ -2270,11 +2270,13 @@ br_status bv_rewriter::mk_bv_mul(unsigned num_args, expr * const * args, expr_re
     // ~x = -1 - x
     unsigned sz = m_util.get_bv_size(x);
     if (m_util.is_bv_not(x, z)) {
-        result = m_util.mk_bv_mul(m_util.mk_bv_sub(mk_numeral(-1, sz), z), y);
+        numeral p = rational(2).expt(sz) - 1;
+        result = m_util.mk_bv_mul(m_util.mk_bv_sub(mk_numeral(p, sz), z), y);
         return BR_REWRITE3;
     }
     if (m_util.is_bv_not(y, z)) {
-        result = m_util.mk_bv_mul(m_util.mk_bv_sub(mk_numeral(-1, sz), z), x);
+        numeral p = rational(2).expt(sz) - 1;
+        result = m_util.mk_bv_mul(m_util.mk_bv_sub(mk_numeral(p, sz), z), x);
         return BR_REWRITE3;
     }
     // shl(z, u) * x = shl(x * z, u)