繁体   English   中英

如何知道 Z3py 中的一个数组是否为空?

[英]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.

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