签字部门不在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一起工作。我遇到了一个奇怪的问题。我读到操作
/
在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