如何在z3的Python API中实现bitvectors数组

时间:2013-02-16 20:12:21

标签: python arrays z3 bitvector

我是z3py的新手,正在经历the Z3 API in Python,但无法弄清楚如何定义一个bitvectors数组。

我想要类似的东西:

DOT__mem[16] = BitVec('DOT__mem[16]', 8)

但是这种语法不起作用,即使在教程中的练习面板上也是如此。

有人可以帮助使用正确的语法吗?

1 个答案:

答案 0 :(得分:6)

以下示例说明如何创建Z3位向量的“向量”(Python列表)。 该示例也可在rise4fun在线获取。

# Create a Bitvector of size 8
a = BitVec('a', 8)

# Create a "vector" (list) with 16 Bit-vectors of size 8
DomVect = [ BitVec('DomVect_%s' % i, 8) for i in range(16) ]
print DomVect
print DomVect[15]

def BitVecVector(prefix, sz, N):
  """Create a vector with N Bit-Vectors of size sz"""
  return [ BitVec('%s__%s' % (prefix, i), sz) for i in range(N) ]

# The function BitVecVector is similar to the functions IntVector and RealVector in Z3Py.

# Create a vector with 32 Bit-vectors of size 8. 
print BitVecVector("A", 8, 32)