我想证明
4*n^3*m+4*n*m^3 <= n^4+6*n^2*m^2+m^4
适用于所有n
,m
个实际值;在线使用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"
。
答案 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确实使用默认的求解器确定了不等式。