用Z3检查溢出

用Z3检查溢出,z3,z3py,Z3,Z3py,我是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] 我做错了什么?我不认为你做错了什么,看起来BV2Int有问题: x = BitVec('x',

我是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]


我做错了什么?

我不认为你做错了什么,看起来
BV2Int
有问题:

 x = BitVec('x', 3)
 prove(x <= 3)
 prove(BV2Int(x) <= 3)
x=BitVec('x',3)

证明(x对于其他关注这个问题的人来说,这个问题似乎在某个时候得到了解决。我刚刚用最新版本的z3(在最初发布几年后)重新运行了这个示例,它确实返回了7,7