-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ULT has SignExt simplification, ULE(Q) does not #7389
Comments
In fact, like |
Everyrhing simplifies to ule. The argumenta are swapped and negation added. |
You are basically aakung for a simplificqtion rule used for x <= k, with k a conatant to apply to k <= x by the equivalence: k<= x iff not(x <= k and x != k). |
Thank you for picking this up. The way you mentioned it is correct. I have indeed just noticed that |
Hello there,
I have noticed that
ULE(a_bv32, SignExt(24, b_bv8))
does not get properly simplified, whileULT(a_bv32, SignExt(24, b_bv8))
is: see the code below. This is not specific to the bitsize of the operands in the example (32).I may be mistaken, but I believe this simplification should be possible considering
ULE(x, y)
is equivalent toOr(ULT(x, y), x == y)
.As for versioning: I'm using the Python package
z3-solver
with version4.13.0.0
Additional substantiation can be found in #7380.
This significantly impacts the performance of my application, so it would be great if this could be looked into. :-)
The text was updated successfully, but these errors were encountered: