Z3(Python)中真实闭合字段中的量词消除

时间:2014-09-18 20:43:20

标签: z3 z3py

Z3现在具有基于圆柱代数分解的非线性实数算法的可满足性引擎。

有没有办法获得量词消除的结果,而不仅仅是可满足性测试?

以下不起作用:

from z3 import *
b,c,x = Reals('b c x')
f = Exists(x, b*x+c==0);
print Tactic('qe')(f).as_expr();

我想得到类似Or的东西(b!= 0,And(b == 0,c == 0))。

感谢。

1 个答案:

答案 0 :(得分:0)

Z3还没有完整的非线性QE。 存在非常部分的非线性QE,其在低阶多项式上使用虚拟替换。 您可以在此示例中使用它:

from z3 import *
b,c,x = Reals('b c x')
f = Exists(x, b*x+c==0);
tac = Tactic('qe')
tac = With(tac, qe_nonlinear=True)
print tac.param_descrs() 
print tac(f).as_expr();