使用以下代碼:證明是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