3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-11-08 15:25:07 +00:00

fixup bv operators

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2025-11-03 07:56:42 -08:00
parent 919ac515bc
commit 88269edd4b
3 changed files with 43 additions and 10 deletions

View file

@ -1600,8 +1600,13 @@ br_status arith_rewriter::mk_lshr_core(unsigned sz, expr* arg1, expr* arg2, expr
N = rational::power_of_two(sz);
if (is_num_x)
x = mod(x, N);
if (is_num_y && y >= sz) {
result = m_util.mk_int(0);
return BR_DONE;
}
if (is_num_y)
y = mod(y, N);
if (is_num_x && x == 0) {
result = m_util.mk_int(0);
return BR_DONE;
@ -1619,6 +1624,13 @@ br_status arith_rewriter::mk_lshr_core(unsigned sz, expr* arg1, expr* arg2, expr
}
return BR_DONE;
}
if (is_num_y) {
result = m_util.mk_mod(arg1, m_util.mk_int(N));
//result = arg1; // unsound
result = m_util.mk_idiv(result, m_util.mk_int(rational::power_of_two(y.get_unsigned())));
return BR_DONE;
}
return BR_FAILED;
}