Lean4:加法交换律、蕴含式和归纳法的简单证明
import Mathlib
import Mathlib.Tactic
--加法交换律
theorem my_add_comm : 1 + 2 = 2 + 1 := by rfl
--蕴含式的证明
example (P Q : Prop) (hP : P) (hQ : Q) : P ∧ Q := by
constructor
· exact hP
· exact hQ
--注意: . 不是英文半角点,而是 \.
--解释: (P Q:Prop)表示P Q为命题, hP:P 解释为假设 P成立,hQ同理
-- P ∧ Q 为证明目标
-- constuctor 将 P Q分成两个子目标,
-- . exact hP 用假设 hP直接证明第一个子目标,hQ同理。
example (P : Prop) : P → P := by
intro hP
exact hP
--解释: intro 表示引入, exact 表示直接证明的意思
--用归纳法证明自然数的交换律
theorem my_nat_comm (m n : ℕ) : m + n = n + m := by
induction m with
| zero =>
simp
| succ m ih =>
rw [Nat.succ_add, Nat.add_succ, ih]
--注意: => 不能写成 ⇒
--解释: induction m with 这个语法是归纳法的语法
-- zero 是当m=0的情况,直接用simp化简即可
-- succ m ih 是归纳步骤,ih是归纳假设(m+n=n+m)
-- rw 策略是用已知等式重写目标
--这是不用归纳法直接用mathlib的 ring的性质证明
example (m n : ℕ) : m + n = n + m := by
ring