Isabelle 归纳数字证明:对于k>;=10的确,2^k>;k^3

Isabelle 归纳数字证明:对于k>;=10的确,2^k>;k^3,isabelle,Isabelle,我试图证明一些我认为相对简单的东西 (k≥10 ⟹ 2^(k::nat) > (k::nat)^3) 然而,我陷入困境,不知道如何进步 lemma "(k≥10 ⟹ 2^(k::nat) > (k::nat)^3)" proof (induction k) case 0 then show ?case by simp next case (Suc k) assume "10 ≤ k ⟹ k ^ 3 < 2 ^ k" assume "10 ≤ Suc k"

我试图证明一些我认为相对简单的东西

(k≥10 ⟹ 2^(k::nat) > (k::nat)^3)
然而,我陷入困境,不知道如何进步

lemma "(k≥10 ⟹ 2^(k::nat) > (k::nat)^3)"
proof (induction k)
  case 0
  then show ?case by simp
next
  case (Suc k)
  assume "10 ≤ k ⟹ k ^ 3 < 2 ^ k"
  assume "10 ≤ Suc k"
  show "(Suc k) ^ 3 < 2 ^( Suc k)"
  apply (simp add: algebra_simps)
  then show ?case sorry
qed
引理”(k≥10⟹ 2^(k::nat)>(k::nat)^3“
证明(归纳法k)
案例0
然后按simp显示
下一个
案例(Suc k)
假设“10≤ K⟹ k^3<2^k”
假设“10≤ Suc k“
显示“(Suc k)^3<2^(Suc k)”
应用(simp添加:代数\u simps)
那就表演?对不起
量化宽松

对于代数证明,诀窍是准确识别简化步骤,然后
找到定理
搜索相关规则。代数simp集合不包含积极的简化规则,可能是因为过度简化可能会使目标无法实现。(有人可以添加更多理由)


在这种特殊情况下,您必须假设
10≤ k
使归纳假设起作用。您可以通过
case_tac“10轻松做到这一点≤ k“
,然后通过
monoid\u mult\u class.power3\u eq\u cube
lesuc\u ex
重写。对于
-10≤ k
,您可以使用
不少于
来证明目标。对于代数证明,诀窍是准确识别简化步骤,然后
查找定理
来搜索相关规则。代数simp集合不包含积极的简化规则,可能是因为过度简化可能会使目标无法实现。(有人可以添加更多理由)


在这种特殊情况下,您必须假设
10≤ k
使归纳假设起作用。您可以通过
case_tac“10轻松做到这一点≤ k“
,然后通过
monoid\u mult\u class.power3\u eq\u cube
lesuc\u ex
重写。对于
-10≤ k
,你可以用
不少于
来证明目标。一个好的归纳规则可以省去很多麻烦。您希望以
10
开始归纳,而不是
0
,那么是否有更好的归纳规则?使用

find_theorems name:ind name:Nat
我找到了这个

 Nat.dec_induct: ?i ≤ ?j ⟹ ?P ?i ⟹ (⋀n. ?i ≤ n ⟹ n < ?j ⟹ ?P n ⟹ ?P (Suc n)) ⟹ ?P ?j
Nat.dec\u导入:?i≤ ?J⟹ ?P?i⟹ (⋀n、 ?我≤ N⟹ n<?j⟹ ?P n⟹ ?P(Suc n))⟹ ?P?j
从现在起,这是简单的等式推理,我能够一步一步地遵循证明:

lemma 
  assumes "k≥10"
  shows "2^(k::nat) > (k::nat)^3"
using assms
proof(induction rule: Nat.dec_induct)
  case base show ?case by simp
next
  case (step n)
    note power2_eq_square[simp] power3_eq_cube[simp] ring_distribs[simp]
    have "Suc n ^ 3 = 1 + 3*n + 3*n^2 + n^3" by simp
    also have "… < 51*n + 3*n + 3*n^2 + n^3" using `n ≥ 10` by simp
    also have "… = 54*n + 3*n^2 + n^3" by simp
    also have "… < 6*n^2 + 3*n^2 + n^3" using `n ≥ 10` by simp
    also have "… = 9*n^2 + n^3" by simp
    also have "… < n^3 + n^3" using `n ≥ 10` by simp
    also have "… = 2 * n^3" by simp
    also have "… < 2 * 2^n" using `n ^ 3 < 2 ^ n` by simp
    also have "… = 2^(Suc n)" by simp
    finally show ?case.
qed
引理
假设“k”≥10"
显示“2^(k::nat)>(k::nat)^3”
使用ASSM
证明(归纳规则:自然归纳)
案例库展示?按simp进行案例展示
下一个
案例(步骤n)
注:power2_eq_square[simp]power3_eq_cube[simp]环分布[simp]
由simp生成“Suc n^3=1+3*n+3*n^2+n^3”
也可以使用'n'使“…<51*n+3*n+3*n^2+n^3”≥ 10 `由simp提供
还有simp的“…=54*n+3*n^2+n^3”
还可以使用'n'使“…<6*n^2+3*n^2+n^3”≥ 10 `由simp提供
还有simp的“…=9*n^2+n^3”
还可以使用'n'使“…
一条好的归纳规则可以省去很多麻烦。您希望以
10
开始归纳,而不是
0
,那么是否有更好的归纳规则?使用

find_theorems name:ind name:Nat
我找到了这个

 Nat.dec_induct: ?i ≤ ?j ⟹ ?P ?i ⟹ (⋀n. ?i ≤ n ⟹ n < ?j ⟹ ?P n ⟹ ?P (Suc n)) ⟹ ?P ?j
Nat.dec\u导入:?i≤ ?J⟹ ?P?i⟹ (⋀n、 ?我≤ N⟹ n<?j⟹ ?P n⟹ ?P(Suc n))⟹ ?P?j
从现在起,这是简单的等式推理,我能够一步一步地遵循证明:

lemma 
  assumes "k≥10"
  shows "2^(k::nat) > (k::nat)^3"
using assms
proof(induction rule: Nat.dec_induct)
  case base show ?case by simp
next
  case (step n)
    note power2_eq_square[simp] power3_eq_cube[simp] ring_distribs[simp]
    have "Suc n ^ 3 = 1 + 3*n + 3*n^2 + n^3" by simp
    also have "… < 51*n + 3*n + 3*n^2 + n^3" using `n ≥ 10` by simp
    also have "… = 54*n + 3*n^2 + n^3" by simp
    also have "… < 6*n^2 + 3*n^2 + n^3" using `n ≥ 10` by simp
    also have "… = 9*n^2 + n^3" by simp
    also have "… < n^3 + n^3" using `n ≥ 10` by simp
    also have "… = 2 * n^3" by simp
    also have "… < 2 * 2^n" using `n ^ 3 < 2 ^ n` by simp
    also have "… = 2^(Suc n)" by simp
    finally show ?case.
qed
引理
假设“k”≥10"
显示“2^(k::nat)>(k::nat)^3”
使用ASSM
证明(归纳规则:自然归纳)
案例库展示?按simp进行案例展示
下一个
案例(步骤n)
注:power2_eq_square[simp]power3_eq_cube[simp]环分布[simp]
由simp生成“Suc n^3=1+3*n+3*n^2+n^3”
也可以使用'n'使“…<51*n+3*n+3*n^2+n^3”≥ 10 `由simp提供
还有simp的“…=54*n+3*n^2+n^3”
还可以使用'n'使“…<6*n^2+3*n^2+n^3”≥ 10 `由simp提供
还有simp的“…=9*n^2+n^3”
还可以使用'n'使“…
Hi Joachim,感谢您描述此过程!嗨,Joachim,谢谢你描述这个过程!