Аналіз I, Розділ 2, Епілог #
У цьому (технічному) епілозі ми показуємо, що натуральні числа Chapter2.Nat
з "Розділу 2"
ізоморфні стандартним натуральним числам ℕ
у різних типових сенсах.
З цього моменту Chapter2.Nat
буде застарілим типом, і замість нього ми використовуватимемо
стандартні натуральні числа ℕ
. Зокрема, для всіх наступних розділів слід використовувати
повний API Mathlib для ℕ
замість API Chapter2.Nat
.
Для заповнення цих вибачень потрібні як Chapter2.Nat API, так і Mathlib API для стандартних
натуральних чисел ℕ
. Таким чином, вони є чудовими вправами для підготовки до вищезгаданого
переходу.
У другій половині цього розділу ми також наводимо повністю аксіоматичне трактування
натуральних чисел за допомогою аксіом Пеано. Розгляд у попередніх трьох розділах
був лише частково аксіоматичним, оскільки ми використовували специфічну конструкцію
Chapter2.Nat
натуральних чисел, яка була індуктивного типу, і використовували цей
індуктивний тип для побудови рекурсора. Тут ми наводимо кілька вправ, щоб показати,
як можна виконати ті ж завдання безпосередньо з аксіом Пеано, не знаючи конкретної
реалізації натуральних чисел.
Equations
- Chapter2.Nat.equivNat = { toFun := Chapter2.Nat.toNat, invFun := fun (n : ℕ) => ↑n, left_inv := Chapter2.Nat.equivNat._proof_2, right_inv := Chapter2.Nat.equivNat._proof_3 }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Натуральні числа розділу 2 дотримуються аксіом Пеано.
Equations
- PeanoAxioms.Chapter2.Nat = { Nat := Chapter2.Nat, zero := Chapter2.Nat.zero, succ := Chapter2.Nat.succ, succ_ne := Chapter2.Nat.succ_ne, succ_cancel := ⋯, induction := Chapter2.Nat.induction }
Instances For
Натуральні числа Mathlib дотримуються аксіом Пеано.
Equations
- PeanoAxioms.Mathlib.Nat = { Nat := ℕ, zero := 0, succ := Nat.succ, succ_ne := Nat.succ_ne_zero, succ_cancel := @PeanoAxioms.Mathlib.Nat._proof_7, induction := ⋯ }
Instances For
Ви можете співставити натуральні числа Mathlib у іншу струкруту яка дотримується аксіом Пеано.
Equations
- P.natCast Nat.zero = PeanoAxioms.zero
- P.natCast n_2.succ = PeanoAxioms.succ (P.natCast n_2)
Instances For
Instances For
Equations
- equiv1.trans equiv2 = { equiv := PeanoAxioms.Equiv.equiv.trans PeanoAxioms.Equiv.equiv, equiv_zero := ⋯, equiv_succ := ⋯ }
Instances For
Примітка: Я підозрюю, що ця конструкція не є обчислювальною та вимагає класичної логіки.