我想开发一个函数来计算Z3中列表的长度,但我认为我做得不对。我是新使用Z3的,我没有太多的想法。 我做到了:
def length(numbers):
cont = 0
x, length = Ints('x length')
s = Solver()
for x in numbers:
cont +=1
dato = Implies(cont >0 , length == cont), Or(Implies(cont == 0, length == cont))
s.add(dato)
n = Solver()
solve(dato)
if s.check() == unsat:
print(cont)
else:
# print("true")
print(s.model())
if __name__ == '__main__':
my_list = [1, 2,"p", 3,6,503]
length([])
length(my_list)
但是我认为我应该使用Z3的函数,因为如果我想创建更多的方法(isNull,isEmpty…)并同时调用它来生成axioms,但是我现在无法实现
不太清楚您想要实现什么,但看起来您正在将Python列表与Z3序列混为一谈。当你有一个具体的列表时使用前者,当列表本身可以是任意长度时使用后者
对于后者,您还需要使用序列逻辑,它已经定义了函数
length
、isNull
、isEmpty
等,但名称不同。有关详细信息,请参见此处:https://rise4fun.com/z3/tutorialcontent/sequences#h22相关问题 更多 >
编程相关推荐