我构造了以下
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
似乎不正确?
请帮助我了解上述查询中有什么问题吗?
答案 0 :(得分:2)
仅您的存在性就已无法满足,如果用if-then-else代替含义,则可能更明显:
not exists n :: 1 <= n ? x(n) != 0 : true
因此,对于任何n < 1
,您都认为
not exists n :: true
那显然不是真的。