如何使用Z3 Py进行量词消除?

如何使用Z3 Py进行量词消除?,z3,z3py,Z3,Z3py,我正在尝试使用以下代码获取无量词公式: 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 >

我正在尝试使用以下代码获取无量词公式:

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

你能告诉我我的代码怎么了吗?非常感谢。

量词消除只适用于加法运算。当变量与其他变量相乘时,它不会从公式中删除量词。这就是为什么量词消除不能为你的问题产生一个简化的公式

但是,请注意,存在一个公式x。phi[x]可满足以下形式的公式 phi[x],因此不需要在公式中添加存在量词。 nlsat策略通过乘法处理实数上的无量词公式