Documentation

Analysis.Section_2_epilogue

Аналіз I, Розділ 2, Епілог #

У цьому (технічному) епілозі ми показуємо, що натуральні числа Chapter2.Nat з "Розділу 2" ізоморфні стандартним натуральним числам у різних типових сенсах.

З цього моменту Chapter2.Nat буде застарілим типом, і замість нього ми використовуватимемо стандартні натуральні числа . Зокрема, для всіх наступних розділів слід використовувати повний API Mathlib для замість API Chapter2.Nat.

Для заповнення цих вибачень потрібні як Chapter2.Nat API, так і Mathlib API для стандартних натуральних чисел . Таким чином, вони є чудовими вправами для підготовки до вищезгаданого переходу.

У другій половині цього розділу ми також наводимо повністю аксіоматичне трактування натуральних чисел за допомогою аксіом Пеано. Розгляд у попередніх трьох розділах був лише частково аксіоматичним, оскільки ми використовували специфічну конструкцію Chapter2.Nat натуральних чисел, яка була індуктивного типу, і використовували цей індуктивний тип для побудови рекурсора. Тут ми наводимо кілька вправ, щоб показати, як можна виконати ті ж завдання безпосередньо з аксіом Пеано, не знаючи конкретної реалізації натуральних чисел.

@[reducible, inline]
abbrev Chapter2.Nat.toNat (n : Nat) :
Equations
Instances For
    @[reducible, inline]
    Equations
    Instances For
      @[reducible, inline]
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem Chapter2.Nat.pow_eq_pow (n m : Nat) :
        n.toNat ^ m.toNat = n ^ m
        class PeanoAxioms :

        Аксіоми Пеано для абстрактного типу Nat

        Instances
          theorem PeanoAxioms.ext {x y : PeanoAxioms} (Nat : Nat = Nat) (zero : HEq zero zero) (succ : HEq succ succ) :
          x = y

          Натуральні числа розділу 2 дотримуються аксіом Пеано.

          Equations
          Instances For

            Натуральні числа Mathlib дотримуються аксіом Пеано.

            Equations
            Instances For
              @[reducible, inline]

              Ви можете співставити натуральні числа Mathlib у іншу струкруту яка дотримується аксіом Пеано.

              Equations
              Instances For

                Поняття еквівалентності між двома структурами, що дотримуються аксіом Пеано

                Instances
                  @[reducible, inline]
                  abbrev PeanoAxioms.Equiv.symm {P Q : PeanoAxioms} (equiv : P.Equiv Q) :
                  Q.Equiv P
                  Equations
                  Instances For
                    @[reducible, inline]
                    abbrev PeanoAxioms.Equiv.trans {P Q R : PeanoAxioms} (equiv1 : P.Equiv Q) (equiv2 : Q.Equiv R) :
                    P.Equiv R
                    Equations
                    Instances For
                      @[reducible, inline]

                      Примітка: Я підозрюю, що ця конструкція не є обчислювальною та вимагає класичної логіки.

                      Equations
                      Instances For
                        @[reducible, inline]
                        noncomputable abbrev PeanoAxioms.Equiv.mk' (P Q : PeanoAxioms) :
                        P.Equiv Q
                        Equations
                        Instances For
                          theorem PeanoAxioms.Equiv.uniq {P Q : PeanoAxioms} (equiv1 equiv2 : P.Equiv Q) :
                          equiv1 = equiv2
                          theorem PeanoAxioms.Nat.recurse_uniq {P : PeanoAxioms} (f : NatNatNat) (c : Nat) :
                          ∃! a : NatNat, a zero = c ∀ (n : Nat), a (succ n) = f n (a n)

                          Приклад результату: рекурсія коректно визначена на будь-якій структурі, що підпорядковується аксіомам Пеано.