签字部门不在z3py工作
我试着和z3py一起工作。我遇到了一个奇怪的问题。我读到操作签字部门不在z3py工作,z3,z3py,Z3,Z3py,我试着和z3py一起工作。我遇到了一个奇怪的问题。我读到操作/在z3py中被视为位向量的有符号除法。我试图发出以下命令: a=z3.BitVec('a',2) b=z3.BitVec('b',2) solver=z3.solver() 求解器添加((a+b)/2==3) 解算器。检查() z3给出的结果是unsat 在我看来,这是不正确的,因为它有一个解a=2,b=0,a=2在2的补码中意味着a=-2,所以(a+b)/2必须等于-1,即3 有谁能帮我这里出了什么问题吗?我终于自己找到了解决办法
/
在z3py中被视为位向量的有符号除法。我试图发出以下命令:
a=z3.BitVec('a',2)
b=z3.BitVec('b',2)
solver=z3.solver()
求解器添加((a+b)/2==3)
解算器。检查()
z3给出的结果是unsat
在我看来,这是不正确的,因为它有一个解a=2,b=0
,a=2
在2的补码中意味着a=-2
,所以(a+b)/2
必须等于-1
,即3
有谁能帮我这里出了什么问题吗?我终于自己找到了解决办法 问题出在表达式
(a+b)/2
中。这里a
和b
是大小为2的位向量。因此,表达式的分母2
也被z3视为2位位向量。所以分母中的2
实际上是-2
。因此,我试图解决的约束是(a+b)/(-2)=-1
,这实际上是unsat