繁体   English   中英

如何在Z3py中定义二维数组变量

[英]How to define two dimensional array variable in Z3py

我想在 Z3py 中定义一个二维布尔数组。 实际上,我想使用其他整数变量访问数组索引,例如,A[x][3],其中 x 是一个整数变量,其值由 SMT 求解器在运行时决定。

如果我定义二维数组如下: A = [ [ Bool("a_%s_%s" % (i, j)) for j in range(5) ] for i in range(5) ] 那么,我在添加约束(A[x][3]==True)时得到“TypeError:对象不能被解释为索引”。

我检查了定义为 A = Array('A',IntSort(),IntSort()) 的 z3 数组,我可以使用其他整数变量(例如 A[x])访问数组索引。 现在,我想要同样的二维数组。

请在这方面帮助我。 提前致谢。

您可以像这样对嵌套数组进行建模:

A  = Array('A', IntSort(), ArraySort(IntSort(), BoolSort()))

也就是说,第一个索引是一个整数,它索引到另一个从整数到布尔值的数组中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM