伊莎贝尔感应,定制基本案例

Isabelle induction, custom base case

我目前正在尝试证明 isabelle 中的以下引理:

lemma helper:
  fixes n :: nat
  assumes "n ≥ 5"
  shows "(n * n > 2*n + 1)"

proof (induction n)
qed

然而,归纳证明策略迫使我展示以下两种情况:

 1. 2 * 0 + 1 < 0 * 0
 2. ⋀n. 2 * n + 1 < n * n ⟹ 2 * Suc n + 1 < Suc n * Suc n

第一个显然是错误的。然而,由于我的引理指出它假定 n >= 5,我想知道为什么它不开始对基本情况 n = 5 进行归纳?而且由于它不这样做,所以我也会对如何让它在 n = 5 而不是 0 开始归纳感兴趣。

您可以使用 dec_induct 归纳规则如下:

lemma helper:
  fixes n :: nat
  assumes "n ≥ 5"
  shows "(n * n > 2*n + 1)"
  using assms
proof (induction rule: dec_induct)
  case base ― ‹n = 5›
  then show ?case by simp
next
  case (step m) ― ‹5 ≤ m < n›
  then show ?case by simp
qed