[英]How can I know if one Array isEmpty in Z3py?
我开始使用 Z3py,我很难理解它的功能。 我必须知道数组是否为空,但我不知道如何在“x”和“数组”之间创建引用
def isEmpty():
x = Int('x')
y = Int('y')
array = Array('array', IntSort(), IntSort())
empty = Bool('isEmpty')
s = Solver()
#s.add(x==0)
dato = Implies(x>0,empty == False),Or(Implies(x<=0,empty == True))
s.add(dato)
if s.check() == sat:
#print("0")
#print(s.model())
return s.model()
if __name__ == '__main__':
isEmpty()
正如 Christoph 在您之前的问题中回答的那样( 我如何知道 z3 中有多少个数组? ),z3 中的数组的大小是无限的。 从这个意义上说,它们更像是函数。 对于每个整数x
, (select A x)
是一个有意义的表达式。
请查看 SMTLib 文档 ( http://smtlib.cs.uiowa.edu/theories-ArraysEx.shtml ) 中的数组逻辑。 因此,询问数组是否为空是没有意义的。 如果要将大小与数组相关联,则必须单独管理它,也许使用序列逻辑( https://rise4fun.com/Z3/tutorial/sequences ),您可以在其中讨论有限长度的列表; 更类似于 C 或 Java 等编程语言中的数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.