-- 類型檢查
def f (x :ℕ) := x + 3
#check f -- 類型檢查,結果是ℕ→ℕ
#check 2 + 2 = 4 -- 類型檢查,結果是Prop,即命題
def FermatLastTheorem := ∀ x y z n : ℕ, n > 2 ∧ x * y * z ≠ 0 → x ^ n + y ^ n ≠ z ^ n
#check FermatLastTheorem --類型檢查,結果是Prop,即命題
theorem easy : 2 + 2 = 4 := rfl
#check easy -- 類型檢查,結果是2+2=4,即命題2+2=4的證明
theorem hard : FermatLastTheorem := sorry -- sorry表示暫時跳過證明
#check hard -- 類型檢查,結果是FermatLastTheorem,即命題FermatLastTheorem的證明
-- 定理證明
import Mathlib.Data.Real.Basic-- An example.
example (a b c : ℝ) : a * b * c = b * (a * c) := by
rw [mul_comm a b] -- 用乘法交換律,把a * b改寫為b*a
rw [mul_assoc b a c] -- 用乘法結合律,把(b * a) * c改寫為b * (a * c)
-- rw即「重寫」,是一種證明策略,把一個表達式替換為相等的表達式