签名部门不在z3py工作

时间:2016-03-05 10:25:46

标签: z3 z3py

我正在尝试使用z3py。我遇到了一个奇怪的问题。我读到操作/被视为z3py中位向量的有符号除法。我试图提供以下命令:

  

a = z3.BitVec('a',2)

     

b = z3.BitVec('b',2)

     

solver = z3.Solver()

     

solver.add((a + b)/ 2 == 3)

     

solver.check()

结果z3给出的是unsat

在我的观看中,这是不正确的,因为它有一个解决方案a = 2, b = 0,{2}补充中的a = 2表示a = -2,因此(a+b)/2必须等于-1 } 3通过签名代表。

有人可以帮我解决这里有什么问题吗?

1 个答案:

答案 0 :(得分:2)

我终于找到了解决方案!

问题在于表达式(a+b)/2。这里ab是大小为2的位向量。因此,表达式的分母2也被z3视为2位位向量。因此分母中的2实际上是-2。因此,我试图解决的约束是(a+b)/(-2) == -1这实际上是unsat