Аналіз I, Глава 2.2 #
Цей файл є перекладом Глави 2.2 Аналізу I до Lean 4. Вся нумерація посилається на оригінальний текст.
Я (пр.перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним рішенням Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підбуцнути", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.
Основні конструкції та результати цього розділу:
- Визначення додавання та порядку для натуральних чисел "Розділу 2",
Chapter2.Nat
- Встановлення основних властивостей додавання та порядку
Примітка: наприкінці цього розділу клас Chapter2.Nat
буде замінено на користь стандартного
класу Mathlib _root_.Nat
, або ℕ
. Однак, ми пропрацюємо властивості
Chapter2.Nat
"вручну" в наступних кількох розділах для педагогічних цілей.
Визначення 2.2.1. (Додавання натуральних чисел.
Порівняйте із Mathlib-овським Nat.add
Equations
- n.add m = Chapter2.Nat.recurse (fun (x sum : Chapter2.Nat) => sum++) m n
Instances For
Цей екземпляр дозволить нотації +
використовуватися для додавання натуральних чисел.
Equations
- Chapter2.Nat.instAdd = { add := Chapter2.Nat.add }
Порівняйте із Mathlib-овським Nat.zero_add
Порівняйте із Mathlib-овським Nat.succ_add
Лема 2.2.2 (n + 0 = n). Порівняйте із Mathlib-овським Nat.add_zero
Лема 2.2.3 (n+(m++) = (n+m)++). Порівняйте із Mathlib-овським Nat.add_succ
n++ = n + 1 (Чому?). Порівняйте із Mathlib-овським Nat.succ_eq_add_one
Твердження 2.2.4 (Додавання комутативне). Порівняйте із Mathlib-овським Nat.add_comm
Твердження 2.2.5 (Додавання асоціативне) / Вправа 2.2.1
Порівняйте із Mathlib-овським Nat.add_assoc
Твердження 2.2.6 (Властивість скорочення)
Порівняйте із Mathlib-овським Nat.add_left_cancel
(Не із книги) Типу Nat можна дати структуру комутативного адітивного моноїда.
Equations
- One or more equations did not get rendered due to their size.
Твердження 2.2.8 (Додатне плюс натуральне число буде додатним).
Порівняйте із Mathlib-овським Nat.add_pos_left
Порівняйте із Mathlib-овським Nat.add_pos_right
Наслідок 2.2.9 (якщо сума дорівнює нулю, тоді доданки дорівнюють нулю).
Порівняйте із Mathlib-овським Nat.add_eq_zero
Визначення 2.2.11 (Порядок натуральних чисел)
Це визначає операцію ≤
на натуральних числах.
Equations
- Chapter2.Nat.instLE = { le := fun (n m : Chapter2.Nat) => ∃ (a : Chapter2.Nat), m = n + a }
Визначення 2.2.11 (Порядок натуральних чисел)
Це визначає операцію <
на натуральних числах.
Equations
- Chapter2.Nat.instLT = { lt := fun (n m : Chapter2.Nat) => n ≤ m ∧ n ≠ m }
Порівняйте із Mathlib-овським Nat.le_of_lt
Порівняйте із Mathlib-овським Nat.le_iff_lt_or_eq
Порівняйте із Mathlib-овським Nat.lt_succ_self
Твердження 2.2.12 (Базові властивості порядку для натуральних чисел) / Вправа 2.2.3
(a) (Порядок рефлексівен). Порівняйте із Mathlib-овським Nat.le_refl
(b) (Порядок транзітивен). Тут буде корисною тактика obtain
.
Порівняйте із Mathlib-овським Nat.le_trans
(c) (Порядок антисіметричен). Порівняйте із Mathlib-овським Nat.le_antisymm
(d) (Додавання зберігає порядок). Порівняйте із Mathlib-овським Nat.add_le_add_right
(d) (Додавання зберігає порядок). Порівняйте із Mathlib-овським Nat.add_le_add_left
(d) (Додавання зберігає порядок). Порівняйте із Mathlib-овським Nat.add_le_add_right
(d) (Додавання зберігає порядок). Порівняйте із Mathlib-овським Nat.add_le_add_left
(e) a < b iff a++ ≤ b. Порівняйте із Mathlib-овським Nat.succ_le_iff
Твердження 2.2.13 (Тріхотомія порядку для натуральних чисел) / Вправа 2.2.4
Порівняйте із Mathlib-овським trichotomous
(Не із книги) Встановіть алгоритмічну розв'язність для цього порядку обчислювальним шляхом.
Частина доказу, що стосується розв'язності, наведена; решта sorry
стосуються тверджень
про натуральні числа. Цей результат також можна було б встановити за допомогою тактики classical
з подальшим використанням exact Classical.decRel _
, але це зробило б це визначення
(а також деякі приклади нижче) необчислювальним.
Порівняйте із Mathlib-овським Nat.decLe
Equations
- One or more equations did not get rendered due to their size.
- Chapter2.Nat.zero.decLe x✝ = isTrue ⋯
Instances For
Equations
(Не із книги) Nat має структуру лінійне впорядкування.
Equations
- One or more equations did not get rendered due to their size.
(Не із книги) Nat має структуру впорядкованого моноїда.
Вправа 2.2.6 (індукція у зворотньому напрямку)
Порівняйте із Mathlib-овським Nat.decreasingInduction
Вправа 2.2.7 (індукція із початкової точки)
Порівняйте із Mathlib-овським Nat.le_induction