使用以下代码:证明是n^5 <= 5^N对于n> = 5
n = Int('n')
s = Solver()
s.add(n >= 5)
s.add(Not(n**5 <= 5**n))
print s
print s.check()
我们得到以下输出:
[n ≥ 5, ¬(n^5 ≤ 5^n)]
unknown
这是说Z3Py无法提供直接证据。
现在使用的代码
n = Int('n')
prove(Implies(n >= 5, n**5 <= 5**n))
Z3Py也会失败。
甲更多钞票间接证明如下:
n = Int('n')
e, f = Ints('e f')
t = simplify(-(5 + f + 1)**5 + ((5 + f)**5 + e)*5, som=True)
prove(Implies(And(e >=0, f >= 0), t >= 0))
并且输出是:定理和算法:
proved
使用伊莎贝尔+枫树一个证明在给予Isabelle和之间的界面枫。 Clemens Ballarin。卡斯滕霍曼。雅克·卡尔梅特。使用Z3Py
其他可能间接证明如下:
n = Int('n')
e, f = Ints('e f')
t = simplify(-(5 + f + 1)**5 + ((5 + f)**5 + e)*5, som=True)
s = Solver()
s.add(e >= 0, f >= 0)
s.add(Not(t >= 0))
print s
print s.check()
,输出是:
[e ≥ 0,
f ≥ 0,
¬(7849 +
9145·f +
4090·f·f +
890·f·f·f +
95·f·f·f·f +
4·f·f·f·f·f +
5·e ≥
0)]
unsat
请让我知道,如果有可能有使用Z3Py更直接的证据。非常感谢。
Z3没有关于整数算术的判定程序,或者关于这个问题的权力。您对简化的使用看起来非常整齐,以结合可用的功能。 – 2013-04-29 03:07:49