Z3 Python乘以两个位向量

时间:2016-06-22 21:14:24

标签: z3 z3py

我正在尝试使用Python + Z3位向量进行一些计算,我在multiply操作时遇到了一些问题。

例如:

a = BitVecVal(3, 2)
b = BitVecVal(3, 2)
c = a * b
print c.size()   <----- output is 2; but can I have a vector of length 2 + 2 = 4??

print simplify(c)  <---- of course, the output is 1, not 9

上面的例子应该非常明确。我真的很感激,如果有人能够教育我如何在没有削减一些最高位的情况下在比特矢量上进行乘法运算。

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试在乘法之前扩展位向量的长度:

  from z3 import *

  a = BitVecVal(3, 2)
  b = BitVecVal(3, 2)
  c = ZeroExt(2, a) * ZeroExt(2, b)
  print c.size()

  print simplify(c)