在使用 Z3Py 时,我定义了一个整数列表,如下所示:
List = Datatype('List')
List.declare('cons', ('head', IntSort()), ('tail', List))
List.declare('nil')
List = List.create()
现在,我在该列表上定义了一些简单的函数,如下所示:
len = Function('len', List, IntSort())
def len_defn():
ls = List('ls')
return And([
len(List.nil) == 0,
ForAll(ls, Implies(List.is_cons(ls), len(ls) == 1+len(List.tail(ls))))
])
不幸的是,这最终失败了,因为ls = List('ls')
抛出了错误:
AttributeError: DatatypeSortRef instance has no __call__ method
尝试使用ls = Var(0, List)
throw:
AttributeError: DatatypeRef instance has no attribute '__len__'
有谁知道通常应该如何处理数据类型的量化?