带存在量词的Z3查询返回错误结果

带存在量词的Z3查询返回错误结果,z3,z3py,Z3,Z3py,我构建了以下内容 s=Solver() s.add(ForAll([n],Implies(n>=0,x(n + 1) == If((x(n)==0),0,1)))) s.add(x(0) == 0) s.add(Not(Exists([n],Implies(n>=1,(x(n)!=0))))) 上述查询返回的unsat似乎不正确 同样地 s=Solver() s.add(ForAll([n],Implies(n>=0,x(n + 1) == If((x(n)==0),1,1)

我构建了以下内容

s=Solver()
s.add(ForAll([n],Implies(n>=0,x(n + 1) == If((x(n)==0),0,1))))
s.add(x(0) == 0)
s.add(Not(Exists([n],Implies(n>=1,(x(n)!=0)))))
上述查询返回的
unsat
似乎不正确

同样地

s=Solver()
s.add(ForAll([n],Implies(n>=0,x(n + 1) == If((x(n)==0),1,1))))
s.add(x(0) == 0)
s.add(Not(Exists([n],Implies(n>=1,(x(n)!=0)))))
上述查询返回的
unsat
似乎不正确


请帮助我理解上述查询中的错误是什么?

您的存在式本身已经无法满足要求,如果您用if-then-else替换其含义,这一点可能会更加明显:

not exists n :: 1 <= n ? x(n) != 0 : true

这显然不是真的。

你的存在论本身已经无法令人满意,如果你用if-then-else来代替它,这一点可能会更加明显:

not exists n :: 1 <= n ? x(n) != 0 : true
这显然不是真的