Sono nuovo di Z3 e stavo controllando il tutorial online su Python.Controlla overflow con Z3
Quindi ho pensato di poter controllare il comportamento di overflow in BitVecs.
Ho scritto questo codice:
x = BitVec('x', 3)
y = Int('y')
solve(BV2Int(x) == y, Not(BV2Int(x + 1) == (y + 1)))
e mi aspettavo [y = 7, x = 7] (cioè quando i valori sono uguali ma successori non sono perché x + 1 sarà 0 e y + 1 sarà 8)
Ma Z3 risponde [y = 0, x = 0].
Cosa sto sbagliando?