Documentation

Analysis.Section_3_5

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

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

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

Визначення 3.5.1 (Впорядкована пара)

Instances For
    theorem Chapter3.OrderedPair.ext_iff {inst✝ : SetTheory} {x y : OrderedPair} :
    x = y x.fst = y.fst x.snd = y.snd
    theorem Chapter3.OrderedPair.ext {inst✝ : SetTheory} {x y : OrderedPair} (fst : x.fst = y.fst) (snd : x.snd = y.snd) :
    x = y
    theorem Chapter3.OrderedPair.eq [SetTheory] (x y x' y' : Object) :
    { fst := x, snd := y } = { fst := x', snd := y' } x = x' y = y'

    Визначення 3.5.1 (Впорядкована пара)

    @[reducible, inline]

    Вправа 3.5.1

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[reducible, inline]

      Технічна операція перетворююча об'єкт x та множину Y на множину {x} × Y, необхідна для визначення повного декартового добутку

      Equations
      Instances For
        theorem Chapter3.SetTheory.Set.mem_slice [SetTheory] (x z : Object) (Y : Set) :
        z slice x Y ∃ (y : Y.toSubtype), z = OrderedPair.toObject { fst := x, snd := y }
        @[reducible, inline]

        Визначення 3.5.2 (Декартовий добуток)

        Equations
        Instances For

          Цей екземпляр дозволяє використовувати позначення ×ˢ для декартового добутку.

          Equations
          theorem Chapter3.SetTheory.Set.mem_cartesian [SetTheory] (z : Object) (X Y : Set) :
          z X ×ˢ Y ∃ (x : X.toSubtype) (y : Y.toSubtype), z = OrderedPair.toObject { fst := x, snd := y }
          @[reducible, inline]
          abbrev Chapter3.SetTheory.Set.curry [SetTheory] {X Y Z : Set} (f : (X ×ˢ Y).toSubtypeZ.toSubtype) :
          Equations
          Instances For
            @[reducible, inline]
            noncomputable abbrev Chapter3.SetTheory.Set.fst [SetTheory] {X Y : Set} (z : (X ×ˢ Y).toSubtype) :
            Equations
            Instances For
              @[reducible, inline]
              noncomputable abbrev Chapter3.SetTheory.Set.snd [SetTheory] {X Y : Set} (z : (X ×ˢ Y).toSubtype) :
              Equations
              Instances For
                theorem Chapter3.SetTheory.Set.pair_eq_fst_snd [SetTheory] {X Y : Set} (z : (X ×ˢ Y).toSubtype) :
                z = OrderedPair.toObject { fst := (fst z), snd := (snd z) }
                @[reducible, inline]
                noncomputable abbrev Chapter3.SetTheory.Set.uncurry [SetTheory] {X Y Z : Set} (f : X.toSubtypeY.toSubtypeZ.toSubtype) :
                Equations
                Instances For
                  @[reducible, inline]
                  Equations
                  • X.prod_commutator Y = { toFun := sorry, invFun := sorry, left_inv := , right_inv := }
                  Instances For
                    @[reducible, inline]
                    noncomputable abbrev Chapter3.SetTheory.Set.prod_associator [SetTheory] (X Y Z : Set) :
                    Equations
                    • X.prod_associator Y Z = { toFun := sorry, invFun := sorry, left_inv := , right_inv := }
                    Instances For
                      @[reducible, inline]
                      noncomputable abbrev Chapter3.SetTheory.Set.prod_equiv_prod [SetTheory] (X Y : Set) :
                      {x : Object | x X ×ˢ Y} ↑({x : Object | x X} ×ˢ {x : Object | x Y})

                      Прив'язка до Mathlib-овського добутку множин

                      Equations
                      • X.prod_equiv_prod Y = { toFun := sorry, invFun := sorry, left_inv := , right_inv := }
                      Instances For
                        @[reducible, inline]
                        abbrev Chapter3.SetTheory.Set.tuple [SetTheory] {I : Set} {X : I.toSubtypeSet} (a : (i : I.toSubtype) → (X i).toSubtype) :

                        Визначення 3.5.7

                        Equations
                        Instances For
                          @[reducible, inline]

                          Визначення 3.5.7

                          Equations
                          Instances For
                            theorem Chapter3.SetTheory.Set.mem_iProd [SetTheory] {I : Set} {X : I.toSubtypeSet} (t : Object) :
                            t iProd X ∃ (a : (i : I.toSubtype) → (X i).toSubtype), t = tuple a

                            Визначення 3.5.7

                            theorem Chapter3.SetTheory.Set.tuple_mem_iProd [SetTheory] {I : Set} {X : I.toSubtypeSet} (a : (i : I.toSubtype) → (X i).toSubtype) :
                            @[simp]
                            theorem Chapter3.SetTheory.Set.tuple_inj [SetTheory] {I : Set} {X : I.toSubtypeSet} (a b : (i : I.toSubtype) → (X i).toSubtype) :
                            tuple a = tuple b a = b
                            @[reducible, inline]

                            Приклад 3.5.11. Я підозрюю, що більшість еквівалентностей вимагатимуть класичних міркувань і будуть визначені лише необчислювально, але був би радий дізнатися про контрприклади.

                            Equations
                            Instances For
                              @[reducible, inline]

                              Приклад 3.5.11

                              Equations
                              Instances For
                                @[reducible, inline]
                                noncomputable abbrev Chapter3.SetTheory.Set.iProd_of_const_equiv [SetTheory] (I X : Set) :
                                (iProd fun (i : I.toSubtype) => X).toSubtype (I.toSubtypeX.toSubtype)

                                Приклад 3.5.11

                                Equations
                                Instances For
                                  @[reducible, inline]
                                  noncomputable abbrev Chapter3.SetTheory.Set.iProd_equiv_prod [SetTheory] (X : {0, 1}.toSubtypeSet) :
                                  (iProd X).toSubtype (X 0, ×ˢ X 1, ).toSubtype
                                  Equations
                                  Instances For
                                    @[reducible, inline]
                                    noncomputable abbrev Chapter3.SetTheory.Set.iProd_equiv_prod_triple [SetTheory] (X : {0, 1, 2}.toSubtypeSet) :
                                    (iProd X).toSubtype (X 0, ×ˢ X 1, ×ˢ X 2, ).toSubtype

                                    Приклад 3.5.9

                                    Equations
                                    Instances For
                                      @[reducible, inline]
                                      noncomputable abbrev Chapter3.SetTheory.Set.iProd_equiv_pi [SetTheory] (I : Set) (X : I.toSubtypeSet) :
                                      (iProd X).toSubtype (Set.univ.pi fun (i : I.toSubtype) => {x : Object | x X i})

                                      Зв'язки із Mathlib-овським Set.pi

                                      Equations
                                      • I.iProd_equiv_pi X = { toFun := sorry, invFun := sorry, left_inv := , right_inv := }
                                      Instances For
                                        @[reducible, inline]

                                        Тут ми створюємо аналог Mathlib-івських типів Fin n в рамках теорії множин з Розділу 3, із рудиментарним API.

                                        Equations
                                        Instances For
                                          theorem Chapter3.SetTheory.Set.mem_Fin [SetTheory] (n : ) (x : Object) :
                                          x Fin n m < n, x = m
                                          @[reducible, inline]
                                          abbrev Chapter3.SetTheory.Set.Fin_mk [SetTheory] (n m : ) (h : m < n) :
                                          Equations
                                          Instances For
                                            theorem Chapter3.SetTheory.Set.mem_Fin' [SetTheory] {n : } (x : (Fin n).toSubtype) :
                                            ∃ (m : ) (h : m < n), x = Fin_mk n m h
                                            @[reducible, inline]
                                            abbrev Chapter3.SetTheory.Set.Fin_embed [SetTheory] (n N : ) (h : n N) (i : (Fin n).toSubtype) :
                                            Equations
                                            Instances For
                                              @[reducible, inline]

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

                                              Equations
                                              Instances For
                                                theorem Chapter3.SetTheory.Set.finite_choice [SetTheory] {n : } {X : (Fin n).toSubtypeSet} (h : ∀ (i : (Fin n).toSubtype), X i ) :

                                                Лема 3.5.12 (зліченний вибір)

                                                @[reducible, inline]

                                                Вправа 3.5.1, друга частина (вимагає аксіоми регулярності)

                                                Equations
                                                Instances For

                                                  Альтернативне визначення кортежу, використане у Вправі 3.5.2

                                                  Instances For
                                                    theorem Chapter3.SetTheory.Set.Tuple.ext {inst✝ : SetTheory} {n : } {x y : Tuple n} (X : x.X = y.X) :
                                                    HEq x.x y.xx = y
                                                    theorem Chapter3.SetTheory.Set.Tuple.ext_iff {inst✝ : SetTheory} {n : } {x y : Tuple n} :
                                                    x = y x.X = y.X HEq x.x y.x
                                                    theorem Chapter3.SetTheory.Set.Tuple.eq [SetTheory] {n : } (t t' : Tuple n) :
                                                    t = t' ∀ (n_1 : (Fin n).toSubtype), (t.x n_1) = (t'.x n_1)

                                                    Вправа 3.5.2

                                                    @[reducible, inline]
                                                    noncomputable abbrev Chapter3.SetTheory.Set.iProd_equiv_tuples [SetTheory] (n : ) (X : (Fin n).toSubtypeSet) :
                                                    (iProd X).toSubtype { t : Tuple n // ∀ (i : (Fin n).toSubtype), (t.x i) X i }
                                                    Equations
                                                    Instances For

                                                      Вправа 3.5.3. Дух завдання полягає в тому, щоб уникнути прямих переписувань (які роблять усі ці твердження тривіальними), а натомість використовувати OrderedPair.eq або SetTheory.Set.tuple_inj

                                                      theorem Chapter3.OrderedPair.trans [SetTheory] {p q r : OrderedPair} (hpq : p = q) (hqr : q = r) :
                                                      p = r
                                                      theorem Chapter3.SetTheory.Set.tuple_refl [SetTheory] {I : Set} {X : I.toSubtypeSet} (a : (i : I.toSubtype) → (X i).toSubtype) :
                                                      theorem Chapter3.SetTheory.Set.tuple_symm [SetTheory] {I : Set} {X : I.toSubtypeSet} (a b : (i : I.toSubtype) → (X i).toSubtype) :
                                                      theorem Chapter3.SetTheory.Set.tuple_trans [SetTheory] {I : Set} {X : I.toSubtypeSet} {a b c : (i : I.toSubtype) → (X i).toSubtype} (hab : tuple a = tuple b) (hbc : tuple b = tuple c) :
                                                      theorem Chapter3.SetTheory.Set.prod_union [SetTheory] (A B C : Set) :
                                                      A ×ˢ (B C) = A ×ˢ B A ×ˢ C

                                                      Вправа 3.5.4

                                                      theorem Chapter3.SetTheory.Set.prod_inter [SetTheory] (A B C : Set) :
                                                      A ×ˢ (B C) = A ×ˢ B A ×ˢ C

                                                      Вправа 3.5.4

                                                      theorem Chapter3.SetTheory.Set.prod_diff [SetTheory] (A B C : Set) :
                                                      A ×ˢ (B \ C) = A ×ˢ B \ A ×ˢ C

                                                      Вправа 3.5.4

                                                      theorem Chapter3.SetTheory.Set.union_prod [SetTheory] (A B C : Set) :
                                                      (A B) ×ˢ C = A ×ˢ C B ×ˢ C

                                                      Вправа 3.5.4

                                                      theorem Chapter3.SetTheory.Set.inter_prod [SetTheory] (A B C : Set) :
                                                      (A B) ×ˢ C = A ×ˢ C B ×ˢ C

                                                      Вправа 3.5.4

                                                      theorem Chapter3.SetTheory.Set.diff_prod [SetTheory] (A B C : Set) :
                                                      (A \ B) ×ˢ C = A ×ˢ C \ A ×ˢ B

                                                      Вправа 3.5.4

                                                      theorem Chapter3.SetTheory.Set.inter_of_prod [SetTheory] (A B C D : Set) :
                                                      A ×ˢ B C ×ˢ D = (A C) ×ˢ (B D)

                                                      Вправа 3.5.5

                                                      def Chapter3.SetTheory.Set.union_of_prod [SetTheory] :
                                                      Decidable (∀ (A B C D : Set), A ×ˢ B C ×ˢ D = (A C) ×ˢ (B D))
                                                      Equations
                                                      Instances For
                                                        def Chapter3.SetTheory.Set.diff_of_prod [SetTheory] :
                                                        Decidable (∀ (A B C D : Set), A ×ˢ B \ C ×ˢ D = (A \ C) ×ˢ (B \ D))
                                                        Equations
                                                        Instances For
                                                          theorem Chapter3.SetTheory.Set.prod_subset_prod [SetTheory] {A B C D : Set} (hA : A ) (hB : B ) (hC : C ) (hD : D ) :
                                                          A ×ˢ B C ×ˢ D A C B D

                                                          Вправа 3.5.6.

                                                          theorem Chapter3.SetTheory.Set.direct_sum [SetTheory] {X Y Z : Set} (f : Z.toSubtypeX.toSubtype) (g : Z.toSubtypeY.toSubtype) :
                                                          ∃! h : Z.toSubtype(X ×ˢ Y).toSubtype, fst h = f snd h = g

                                                          Вправа 3.5.7

                                                          @[simp]
                                                          theorem Chapter3.SetTheory.Set.iProd_empty_iff [SetTheory] {n : } {X : (Fin n).toSubtypeSet} :
                                                          iProd X = ∀ (i : (Fin n).toSubtype), X i =

                                                          Вправа 3.5.8

                                                          theorem Chapter3.SetTheory.Set.iUnion_inter_iUnion [SetTheory] {I J : Set} (A : I.toSubtypeSet) (B : J.toSubtypeSet) :
                                                          I.iUnion A J.iUnion B = (I ×ˢ J).iUnion fun (p : (I ×ˢ J).toSubtype) => A (fst p) B (snd p)

                                                          Вправа 3.5.9

                                                          @[reducible, inline]
                                                          Equations
                                                          Instances For
                                                            theorem Chapter3.SetTheory.Set.graph_inj [SetTheory] {X Y : Set} (f f' : X.toSubtypeY.toSubtype) :
                                                            graph f = graph f' f = f'

                                                            Вправа 3.5.10

                                                            theorem Chapter3.SetTheory.Set.is_graph [SetTheory] {X Y G : Set} (hG : G X ×ˢ Y) (hvert : ∀ (x : X.toSubtype), ∃! y : Y.toSubtype, OrderedPair.toObject { fst := x, snd := y } G) :
                                                            theorem Chapter3.SetTheory.Set.power_set_axiom' [SetTheory] (X Y : Set) :
                                                            ∃! S : Set, ∀ (F : Object), F S ∃ (f : Y.toSubtypeX.toSubtype), object_of f = F

                                                            Вправа 3.5.11. Це тривіально випливає з SetTheory.Set.power_set_axiom', але вправа полягає у виведенні твердження з SetTheory.Set.mem_powerset.

                                                            theorem Chapter3.SetTheory.Set.recursion [SetTheory] (X : Type) (f : nat.toSubtypeXX) (c : X) :
                                                            ∃! a : nat.toSubtypeX, a 0 = c ∀ (n : ), a ↑(n + 1) = f (↑n) (a n)

                                                            Вправа 3.5.12, з включеними помилками з веб-сайту

                                                            theorem Chapter3.SetTheory.Set.nat_unique [SetTheory] (nat' : Set) (zero : nat'.toSubtype) (succ : nat'.toSubtypenat'.toSubtype) (succ_ne : ∀ (n : nat'.toSubtype), succ n zero) (succ_of_ne : ∀ (n m : nat'.toSubtype), n msucc n succ m) (ind : ∀ (P : nat'.toSubtypeProp), P zero(∀ (n : nat'.toSubtype), P nP (succ n))∀ (n : nat'.toSubtype), P n) :
                                                            ∃! f : nat.toSubtypenat'.toSubtype, Function.Bijective f f 0 = zero ∀ (n : nat.toSubtype) (n' : nat'.toSubtype), f n = n' f ↑(nat_equiv.symm n + 1) = succ n'

                                                            Вправа 3.5.13