Я пытаюсь использовать z3 для подтверждения следующей личности:
х+у == х^у + 2*(х&у)
То есть мы можем заменить любое дополнение смесью логических и арифметических инструкций (пример взят из главы 2.2, Hacker's Delight). а>).
Я использую следующий фрагмент z3 python:
from z3 import *
x = BitVec("x", 32)
y = BitVec("y", 32)
lhs = x ^ y + (2*(x&y))
rhs = x + y
s = Solver()
s.add(lhs != rhs)
print s.check()
print s.model()
Однако z3 дает мне это:
Суббота
[y = 1509949440, x = 1040187384]
Так что я полагаю, что я как-то неправильно использую API. Есть идеи, в чем моя ошибка?