Documentation

Analysis.Section_3_1

Аналіз I, Розділ 3.1: Основи теорії множин #

У цій главі ми пропонуємо версію теорії множин Цермело-Франкеля (з атомами), яка намагається максимально точно наслідувати оригінальний тексту Аналізу I, Розділ 3.1. Вся нумерація посилається на оригінальний текст.

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

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

Інші аксіоми теорії множин Цермело-Френкеля обговорюються в наступних розділах.

Деякі технічні зауваження:

Підказки від попередніх користувачів #

Користувачі супровідного матеріалу, які виконали вправи в цьому розділі, можуть надсилати свої поради майбутнім користувачам цього розділу як PRи.

class Chapter3.SetTheory :
Type (max (u + 1) (v + 1))

Аксиоми теорії Zermelo-Frankel з атомами.

Instances

    Визначення 3.1.1 (об'єкти можуть бути елементами множин)

    Equations

    Аксіома 3.1 (Множини це об'єкти)

    Equations

    Аксіома 3.1 (Множини це об'єкти)

    @[simp]

    Аксіома 3.1 (Множини це об'єкти)

    theorem Chapter3.SetTheory.Set.ext [SetTheory] {X Y : Set} (h : ∀ (x : Object), x ∈ X ↔ x ∈ Y) :
    X = Y

    Аксіома 3.2 (Рівність множин). [ext] тег дозволяє тактиці ext працювати для множин.

    theorem Chapter3.SetTheory.Set.ext_iff [SetTheory] {X Y : Set} :
    X = Y ↔ ∀ (x : Object), x ∈ X ↔ x ∈ Y
    @[simp]

    Axiom 3.3 (порожня множина). Примітка: у деяких випадках використання доведеться явно перетворити ∅ на Set через існуючу нотацію теорії множин Mathlib.

    Порожня множина не має елементів

    Порожня множина унікальна

    theorem Chapter3.SetTheory.Set.nonempty_def [SetTheory] {X : Set} (h : X ≠ ∅) :
    ∃ (x : Object), x ∈ X

    Лема 3.1.5 (Одиничний вибір)

    @[simp]

    Аксіома 3.3(a) (сінглтон). Зверніть увагу, що у деяких випадках використання, доведеться явно перетворити {a} на Set через існуючу нотацію теорії множин Mathlib.

    @[simp]
    theorem Chapter3.SetTheory.Set.mem_union [SetTheory] (x : Object) (X Y : Set) :
    x ∈ X ∪ Y ↔ x ∈ X ∨ x ∈ Y

    Аксіома 3.4 (Попарне об'єднання)

    @[simp]
    theorem Chapter3.SetTheory.Set.mem_insert [SetTheory] (a b : Object) (X : Set) :
    a ∈ insert b X ↔ a = b ∨ a ∈ X

    Аксіома 3.3(b) (пара). Зверніть увагу, що у деяких випадках використання доводиться перетворювати {a,b} на Set

    @[simp]
    theorem Chapter3.SetTheory.Set.mem_pair [SetTheory] (x a b : Object) :
    x ∈ {a, b} ↔ x = a ∨ x = b

    Аксіома 3.3(b) (пара). Зверніть увагу, що у деяких випадках використання доводиться перетворювати {a,b} на Set

    @[simp]
    theorem Chapter3.SetTheory.Set.mem_triple [SetTheory] (x a b c : Object) :
    x ∈ {a, b, c} ↔ x = a ∨ x = b ∨ x = c

    Зауваження 3.1.9

    theorem Chapter3.SetTheory.Set.pair_uniq [SetTheory] (a b : Object) :
    ∃! X : Set, ∀ (x : Object), x ∈ X ↔ x = a ∨ x = b

    Зауваження 3.1.9

    Зауваження 3.1.9

    @[simp]

    Зауваження 3.1.9

    theorem Chapter3.SetTheory.Set.pair_eq_pair [SetTheory] {a b c d : Object} (h : {a, b} = {c, d}) :
    a = c ∧ b = d ∨ a = d ∧ b = c

    Вправа 3.1.1

    @[reducible, inline]
    Equations
    Instances For
      theorem Chapter3.SetTheory.Set.union_congr_left [SetTheory] (A A' B : Set) (h : A = A') :
      A ∪ B = A' ∪ B

      Ремарка 3.1.11. (Ці результати можна довести або прямим переписуванням, або за допомогою екстенсіональності.)

      theorem Chapter3.SetTheory.Set.union_congr_right [SetTheory] (A B B' : Set) (h : B = B') :
      A ∪ B = A ∪ B'

      Ремарка 3.1.11. (Ці результати можна довести або прямим переписуванням, або за допомогою екстенсіональності.)

      Лема 3.1.12 (Основні властивості об'єднань) / Вправа 3.1.3

      Лема 3.1.12 (Основні властивості об'єднань) / Вправа 3.1.3

      theorem Chapter3.SetTheory.Set.union_assoc [SetTheory] (A B C : Set) :
      A ∪ B ∪ C = A ∪ (B ∪ C)

      Лема 3.1.12 (Основні властивості об'єднань) / Вправа 3.1.3

      @[simp]

      Твердження 3.1.27(c)

      @[simp]

      Твердження 3.1.27(a)

      @[simp]

      Твердження 3.1.27(a)

      Приклад 3.1.10

      Визначення 3.1.14.

      Equations

      Визначення 3.1.14. Зверніть увагу, що операція строгої підмножини в Mathlib позначається ⊂, а не ⊊.

      Equations
      theorem Chapter3.SetTheory.Set.subset_def [SetTheory] (X Y : Set) :
      X ⊆ Y ↔ ∀ x ∈ X, x ∈ Y

      Визначення 3.1.14.

      Визначення 3.1.14. Зверніть увагу, що операція строгої підмножини в Mathlib позначається ⊂, а не ⊊.

      theorem Chapter3.SetTheory.Set.subset_congr_left [SetTheory] {A A' B : Set} (hAA' : A = A') (hAB : A ⊆ B) :
      A' ⊆ B

      Зауваження 3.1.15

      @[simp]

      Приклади 3.1.16

      @[simp]

      Приклади 3.1.16

      theorem Chapter3.SetTheory.Set.subset_trans [SetTheory] {A B C : Set} (hAB : A ⊆ B) (hBC : B ⊆ C) :
      A ⊆ C

      Твердження 3.1.17 (Часткове впорядкування через підмножини)

      theorem Chapter3.SetTheory.Set.subset_antisymm [SetTheory] (A B : Set) (hAB : A ⊆ B) (hBA : B ⊆ A) :
      A = B

      Твердження 3.1.17 (Часткове впорядкування через підмножини)

      theorem Chapter3.SetTheory.Set.ssubset_trans [SetTheory] (A B C : Set) (hAB : A ⊂ B) (hBC : B ⊂ C) :
      A ⊂ C

      Твердження 3.1.17 (Часткове впорядкування через підмножини)

      @[reducible, inline]

      Це визначає підтип A.toSubtype для будь-якого A : Set. Зауважте, що A.toSubtype задає тип, подібно до того, як Object або Set є типами. Значення x' типу A.toSubtype поєднує деякий x : Object із доведенням hx : x ∈ A.

      Щоб створити елемент x' цього підтипу, використовуйте ⟨ x, hx ⟩, де x : Object, а hx : x ∈ A. Об’єкт x, пов’язаний з елементом підтипу x', відновлюється як x'.val, а властивість hx, що x належить A, відновлюється як x'.property.

      Equations
      Instances For

        Елементи множини (неявно приведені до підтипу) також є елементами множини (щодо операції належності теорії множин).

        theorem Chapter3.SetTheory.Set.coe_inj [SetTheory] (A : Set) (x y : A.toSubtype) :
        ↑x = ↑y ↔ x = y

        Якщо є доказ hx для x ∈ A, тоді A.subtype_mk hx зробить елемент A (розглядаємий як підтип) відповідним x.

        Equations
        Instances For
          @[simp]
          theorem Chapter3.SetTheory.Set.subtype_mk_coe [SetTheory] {A : Set} {x : Object} (hx : x ∈ A) :
          ↑(A.subtype_mk hx) = x
          @[reducible, inline]
          Equations
          Instances For
            theorem Chapter3.SetTheory.Set.specification_axiom [SetTheory] {A : Set} {P : A.toSubtype → Prop} {x : Object} (h : x ∈ A.specify P) :
            x ∈ A

            Аксіома 3.6 (аксіома виділення)

            Аксіома 3.6 (аксіома виділення)

            @[simp]
            theorem Chapter3.SetTheory.Set.specification_axiom'' [SetTheory] {A : Set} (P : A.toSubtype → Prop) (x : Object) :
            x ∈ A.specify P ↔ ∃ (h : x ∈ A), P ⟨x, h⟩

            Аксіома 3.6 (аксіома виділення)

            theorem Chapter3.SetTheory.Set.specify_congr [SetTheory] {A A' : Set} (hAA' : A = A') {P : A.toSubtype → Prop} {P' : A'.toSubtype → Prop} (hPP' : ∀ (x : Object) (h : x ∈ A) (h' : x ∈ A'), P ⟨x, h⟩ ↔ P' ⟨x, h'⟩) :
            A.specify P = A'.specify P'

            Ця вправа може вимагати певного розуміння того, як підтипи реалізовані в Lean.

            @[simp]
            theorem Chapter3.SetTheory.Set.mem_inter [SetTheory] (x : Object) (X Y : Set) :
            x ∈ X ∩ Y ↔ x ∈ X ∧ x ∈ Y

            Визначення 3.1.22 (Перетин)

            Equations
            @[simp]
            theorem Chapter3.SetTheory.Set.mem_sdiff [SetTheory] (x : Object) (X Y : Set) :
            x ∈ X \ Y ↔ x ∈ X ∧ x ∉ Y

            Визначення 3.1.26 (Різниця множин)

            Твердження 3.1.27(d) / Вправа 3.1.6

            theorem Chapter3.SetTheory.Set.subset_union [SetTheory] {A X : Set} (hAX : A ⊆ X) :
            A ∪ X = X

            Твердження 3.1.27(b)

            theorem Chapter3.SetTheory.Set.union_subset [SetTheory] {A X : Set} (hAX : A ⊆ X) :
            X ∪ A = X

            Твердження 3.1.27(b)

            @[simp]

            Твердження 3.1.27(c)

            theorem Chapter3.SetTheory.Set.inter_assoc [SetTheory] (A B C : Set) :
            A ∩ B ∩ C = A ∩ (B ∩ C)

            Твердження 3.1.27(e)

            Твердження 3.1.27(f)

            Твердження 3.1.27(f)

            theorem Chapter3.SetTheory.Set.union_compl [SetTheory] {A X : Set} (hAX : A ⊆ X) :
            A ∪ X \ A = X

            Твердження 3.1.27(f)

            Твердження 3.1.27(f)

            theorem Chapter3.SetTheory.Set.compl_union [SetTheory] {A B X : Set} :
            X \ (A ∪ B) = X \ A ∩ (X \ B)

            Твердження 3.1.27(g)

            theorem Chapter3.SetTheory.Set.compl_inter [SetTheory] {A B X : Set} :
            X \ (A ∩ B) = X \ A ∪ X \ B

            Твердження 3.1.27(g)

            Не з підручника: множини утворюють дистрибутивну решітку.

            Equations
            • One or more equations did not get rendered due to their size.

            Множини мають мінімальний елемент.

            Equations

            Визначення неперетинності (з використанням попередніх прикладів)

            @[reducible, inline]
            abbrev Chapter3.SetTheory.Set.replace [SetTheory] (A : Set) {P : A.toSubtype → Object → Prop} (hP : ∀ (x : A.toSubtype) (y y' : Object), P x y ∧ P x y' → y = y') :
            Equations
            Instances For
              @[simp]
              theorem Chapter3.SetTheory.Set.replacement_axiom [SetTheory] {A : Set} {P : A.toSubtype → Object → Prop} (hP : ∀ (x : A.toSubtype) (y y' : Object), P x y ∧ P x y' → y = y') (y : Object) :
              y ∈ A.replace hP ↔ ∃ (x : A.toSubtype), P x y

              Аксіома 3.7 (Аксіомна схема підстановки)

              @[reducible, inline]
              Equations
              Instances For

                Аксіома 3.8 (Аксіома нескінченності)

                Equations
                Instances For
                  @[simp]
                  theorem Chapter3.SetTheory.Object.ofnat_eq [SetTheory] {n : ℕ} :
                  ↑↑n = ↑n
                  @[simp]
                  theorem Chapter3.SetTheory.Set.nat_equiv_inj [SetTheory] (n m : ℕ) :
                  ↑n = ↑m ↔ n = m
                  @[simp]
                  theorem Chapter3.SetTheory.Object.natCast_inj [SetTheory] (n m : ℕ) :
                  ↑n = ↑m ↔ n = m

                  Вправа 3.1.5. Тут можна використовувати тактики tfae_have та tfae_finish.

                  Вправа 3.1.7

                  Вправа 3.1.7

                  @[simp]

                  Вправа 3.1.7

                  Вправа 3.1.7

                  Вправа 3.1.7

                  @[simp]

                  Вправа 3.1.7

                  @[simp]

                  Вправа 3.1.8

                  @[simp]

                  Вправа 3.1.8

                  theorem Chapter3.SetTheory.Set.partition_left [SetTheory] {A B X : Set} (h_union : A ∪ B = X) (h_inter : A ∩ B = ∅) :
                  A = X \ B

                  Вправа 3.1.9

                  theorem Chapter3.SetTheory.Set.partition_right [SetTheory] {A B X : Set} (h_union : A ∪ B = X) (h_inter : A ∩ B = ∅) :
                  B = X \ A

                  Вправа 3.1.9

                  Вправа 3.1.10. Вам можуть стати в пригоді Function.onFun_apply та тактика fin_cases.

                  Вправа 3.1.10

                  theorem Chapter3.SetTheory.Set.specification_from_replacement [SetTheory] {A : Set} {P : A.toSubtype → Prop} :
                  ∃ B ⊆ A, ∀ (x : A.toSubtype), ↑x ∈ B ↔ P x

                  Вправа 3.1.11. Завдання полягає в тому, щоб довести це без використання Set.specify, Set.specification_axiom або Set.specification_axiom, або будь-чого, побудованого із них (наприклад, різниці та перетини)..

                  theorem Chapter3.SetTheory.Set.subset_union_subset [SetTheory] {A B A' B' : Set} (hA'A : A' ⊆ A) (hB'B : B' ⊆ B) :
                  A' ∪ B' ⊆ A ∪ B

                  Вправа 3.1.12.

                  theorem Chapter3.SetTheory.Set.subset_inter_subset [SetTheory] {A B A' B' : Set} (hA'A : A' ⊆ A) (hB'B : B' ⊆ B) :
                  A' ∩ B' ⊆ A ∩ B

                  Вправа 3.1.12.

                  theorem Chapter3.SetTheory.Set.subset_diff_subset_counter [SetTheory] :
                  ∃ (A : Set) (B : Set) (A' : Set) (B' : Set), A' ⊆ A ∧ B' ⊆ B ∧ ¬A' \ B' ⊆ A \ B

                  Вправа 3.1.12.

                  theorem Chapter3.SetTheory.Set.singleton_iff [SetTheory] (A : Set) (hA : A ≠ ∅) :
                  (¬∃ B ⊂ A, B ≠ ∅) ↔ ∃ (x : Object), A = {x}

                  Вправа 3.1.13

                  @[simp]

                  Ін'єктивність перетворення. Зауважте, однак, що ми НЕ стверджуємо, що перетворення є сюръєктивним (і насправді парадокс Рассела цьому перешкоджає).

                  Сумісність операції належності ∈

                  Сумісність порожньої множини

                  Сумісність підмножини

                  Сумісність синглтона

                  Сумісність об'еднання

                  Сумісність пари

                  Сумісність підтипу

                  Сумісність перетину

                  Сумісність різниці множин

                  Сумісність неперетинності