Я новичок в Z3 и проверял онлайн-учебник по Python.
Затем я подумал, что могу проверить поведение переполнения в BitVecs.
Я написал этот код:
x = BitVec('x', 3)
y = Int('y')
solve(BV2Int(x) == y, Not(BV2Int(x + 1) == (y + 1)))
и я ожидал [y = 7, x = 7] (т.е. когда значения равны, но преемники не равны, потому что x + 1 будет 0, а y + 1 будет 8)
Но Z3 отвечает [y = 0, x = 0].
Что я делаю неправильно?