我正在尝试使用以下代码获取无量词的公式:
S, E, I, R = Reals('S E I R')
b, n, s, g, m = Reals('b n s g m')
SS = Then('qe', 'smt').solver()
SS.add(Exists([S,E,I,R], And(m+g*R-m*S-b*I*S == 0,
b*I*S-(m+s)*E==0, s*E-(n+m)*I==0, n*I-(m+g)*R==0,
S > 0, I > 0, E > 0, R >0)))
SS.add(b > 0, n > 0, s >0 , g >0, m>0)
print SS
print SS.check()
但我正在获得输出:
unknown
请告诉我我的代码会怎么样?非常感谢。
答案 0 :(得分:1)
量词消除只适用于加法算术。它不会从变量与其他变量相乘的公式中消除量词。这就是为什么量词消除不能为您的问题产生减少的公式。
但请注意,公式存在x。 phi [x]对于形式的公式是完全可满足的 phi [x],所以不应该要求在你的公式上加上一个存在量词。 nlsat策略通过乘法处理实数上的无量词公式。