如何在 LEAN theorem prover 中证明数学归纳公式?

How to prove mathematical induction formulae in LEAN theorem prover?

谁能帮我理解如何写一个可以很容易通过归纳得到的简单结果的证明,例如前n个自然数之和的公式:1+2+...+n = n(n+1)/2 , 使用 LEAN 定理证明器?

这是我的证明。您需要 mathlib 才能正常工作。

import algebra.big_operators tactic.ring

open finset

example (n : ℕ) : 2 * (range (n + 1)).sum id = n * (n + 1) :=
begin
  induction n with n ih,
  { refl },
  { rw [sum_range_succ, mul_add, ih, id.def, nat.succ_eq_add_one],
    ring }
end

range (n + 1)是小于n + 1的自然数集合,即0到n。

我使用了finset.sum函数。如果 s 是一个鳍集并且 f 是一个函数,那么 s.sum f 是 $\sum_{x \in s} f(x)$.

induction 策略进行归纳。那么有两种情况。 n = 0 的情况可以用 refl 来完成,因为这只不过是一个计算。

归纳步骤可以用rw完成。使用 VSCode,您可以在我的证明中的每个逗号后单击以查看每个 rw 的作用。这使其成为 ring 策略将解决的形式。