用Z3检查溢出
我是Z3新手,我正在查看在线python教程 然后我想我可以检查BitVecs中的溢出行为 我写了这段代码:用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',
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