Z3Py无法做出某些证据?

时间:2013-04-27 19:29:13

标签: z3 z3py

我想证明

4*n^3*m+4*n*m^3 <= n^4+6*n^2*m^2+m^4

适用于所有nm个实际值;在线使用Z3Py。

我正在使用代码:

n, m = Reals('n m')

s = Solver()

s.add(ForAll([n, m], n**4+6*n**2*m**2+m**4 >= 4*n**3*m+4*n*m**3))

print s.check()

,输出为:unknown

请告诉我为什么Z3没有获得"sat"

1 个答案:

答案 0 :(得分:2)

请注意,Z3检查“可满足性”而不是“有效性”。 当且仅当否定不可满足(不满足)时,公式才有效。 因此,为了证明你的不等式的有效性,你可以将它的否定添加到Z3,看看它是否能够推理它。

n, m = Reals('n m')

s = Solver()

s.add(Not(n**4+6*n**2*m**2+m**4 >= 4*n**3*m+4*n*m**3))

print s.check()

事实证明,Z3确实使用默认的求解器确定了不等式。