Documentation

Analysis.Section_2_1

Аналіз I, Глава 2.1 #

Цей файл є перекладом Глави 2.1 Аналізу I до Lean 4. Вся нумерація посилається на оригінальний текст.

Я (пр.перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним рішенням Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підбуцнути", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.

Основні конструкції та результати цього розділу:

Примітка: наприкінці цього розділу клас Chapter2.Nat буде замінено на користь стандартного класу Mathlib _root_.Nat, або . Однак, ми пропрацюємо властивості Chapter2.Nat "вручну" в наступних кількох розділах для педагогічних цілей.

inductive Chapter2.Nat :

Припущення 2.6 (Існування натуральних чисел). Тут ми будемо використовувати явне побудування натуральних чисел (використовуючи індуктивний тип). Для більш аксіоматичного підходу, дивіться епілог до цього розділу

Instances For

    Аксіома 2.1 (0 це натуральне число)

    Equations

    Аксіома 2.2 (Наступник натурального числа також є натуральним числом)

    Equations
    Instances For

      Визначення 2.1.3 (Визначення чисел 0, 1, 2, etc.). Примітка: щоб уникнути неоднозначності, вам може знадобитися явна конвертація як наприклад (0:Nat), (1:Nat), і т.д. щоб посилатися на версію натуральних чисел із цього розділу.

      Equations

      Твердження 2.1.4 (3 є натуральним числом)

      theorem Chapter2.Nat.succ_ne (n : Nat) :
      n++ 0

      Аксіома 2.3 (0 не є наступником ніякого натурального числа). Порівняйте із Mathlib-овським Nat.succ_ne_zero.

      Твердження 2.1.6 (4 не дорівнює нулю)

      theorem Chapter2.Nat.succ_cancel {n m : Nat} (hnm : n++ = m++) :
      n = m

      Аксіома 2.4 (Різні натуральні числа мають різних наступників). Порівняйте із Mathlib-овським Nat.succ_inj.

      theorem Chapter2.Nat.succ_ne_succ (n m : Nat) :
      n mn++ m++

      Аксіома 2.4 (Різні натуральні числа мають різних наступників). Порівняйте із Mathlib-овським Nat.succ_ne_succ.

      Твердження 2.1.8 (6 не дорівнює 2)

      Ви також можете довести такого типу результат використовуючи тактику decide

      theorem Chapter2.Nat.induction (P : NatProp) (hbase : P 0) (hind : ∀ (n : Nat), P nP (n++)) (n : Nat) :
      P n

      Аксіома 2.5 (принцип математичної індукції). Тактика induction (або induction') в Mathlib служить заміною для цієї аксіоми.

      @[reducible, inline]
      abbrev Chapter2.Nat.recurse (f : NatNatNat) (c : Nat) :
      NatNat

      Рекурсія. Аналогічно до вбудованого методу Mathlib Nat.rec ассоційованого із натуральними числами Mathlib

      Equations
      Instances For
        theorem Chapter2.Nat.recurse_zero (f : NatNatNat) (c : Nat) :
        recurse f c 0 = c

        Твердження 2.1.16 (рекурсивне визначення). Порівняйте із Mathlib-овським Nat.rec_zero.

        theorem Chapter2.Nat.recurse_succ (f : NatNatNat) (c n : Nat) :
        recurse f c (n++) = f n (recurse f c n)

        Твердження 2.1.16 (рекурсивне визначення). Порівняйте із Mathlib-овським Nat.rec_add_one.

        theorem Chapter2.Nat.eq_recurse (f : NatNatNat) (c : Nat) (a : NatNat) :
        (a 0 = c ∀ (n : Nat), a (n++) = f n (a n)) a = recurse f c

        Твердження 2.1.16 (рекурсивне визначення).

        theorem Chapter2.Nat.recurse_uniq (f : NatNatNat) (c : Nat) :
        ∃! a : NatNat, a 0 = c ∀ (n : Nat), a (n++) = f n (a n)

        Твердження 2.1.16 (рекурсивне визначення).