Documentation

Analysis.Section_3_4

Аналіз I, Розділ 3.4: Образи та прообрази #

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

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

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

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

@[reducible, inline]
abbrev Chapter3.SetTheory.Set.image [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (S : Set) :

Визначення 3.4.1. Цікаво, що визначення не вимагає, щоб S було підмножиною X.

Equations
Instances For
    theorem Chapter3.SetTheory.Set.mem_image [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (S : Set) (y : Object) :
    y image f S ∃ (x : X.toSubtype), x S (f x) = y

    Визначення 3.4.1

    theorem Chapter3.SetTheory.Set.image_eq_specify [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (S : Set) :
    image f S = Y.specify fun (y : Y.toSubtype) => ∃ (x : X.toSubtype), x S f x = y

    Альтернативне визначення зображення використовуючи аксіоми специфікації

    theorem Chapter3.SetTheory.Set.image_eq_image [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (S : Set) :
    {x : Object | x image f S} = Subtype.val '' (f '' {x : X.toSubtype | x S})

    Зв'язок з поняттям відображення в Mathlib. Зверніть увагу на необхідність використання приведення Subtype.val для забезпечення узгодженості всіх типів.

    @[reducible, inline]

    Приклад 3.4.2

    Equations
    Instances For
      theorem Chapter3.SetTheory.Set.mem_image_of_eval [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (S : Set) (x : X.toSubtype) :
      x S(f x) image f S
      theorem Chapter3.SetTheory.Set.mem_image_of_eval_counter [SetTheory] :
      ∃ (X : Set) (Y : Set) (f : X.toSubtypeY.toSubtype) (S : Set) (x : X.toSubtype), ¬((f x) image f Sx S)
      @[reducible, inline]

      Визначення 3.4.4 (прообрази). Знову ж таки, не обов'язково, щоб U було підмножиною Y.

      Equations
      Instances For
        @[simp]
        theorem Chapter3.SetTheory.Set.mem_preimage [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (U : Set) (x : X.toSubtype) :
        x preimage f U (f x) U
        theorem Chapter3.SetTheory.Set.mem_preimage' [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (U : Set) (x : Object) :
        x preimage f U ∃ (x' : X.toSubtype), x' = x (f x') U

        Версія mem_preimage, яка не вимагає, щоб x був типу X.

        Звя'зок із Mathlib-овським поняттям прообразу.

        Це приведення має бути CoeOut, а не Coe, оскільки вхідний тип X → Y містить параметри, яких немає у вихідному типі Output.

        Equations
        @[simp]
        theorem Chapter3.SetTheory.Set.coe_of_fun_inj [SetTheory] {X Y : Set} (f g : X.toSubtypeY.toSubtype) :
        f = g f = g
        @[simp]
        theorem Chapter3.SetTheory.Set.powerset_axiom [SetTheory] {X Y : Set} (F : Object) :
        F X ^ Y ∃ (f : Y.toSubtypeX.toSubtype), f = F

        Axiom 3.11 (Аксіома потужності множини) -

        @[reducible, inline]

        Приклад 3.4.9

        Equations
        Instances For
          @[reducible, inline]
          noncomputable abbrev Chapter3.f_3_4_9_b [SetTheory] :
          Equations
          Instances For
            @[reducible, inline]
            noncomputable abbrev Chapter3.f_3_4_9_c [SetTheory] :
            Equations
            Instances For
              @[reducible, inline]
              Equations
              Instances For

                Вправа 3.4.6 (i). Тут потрібно надати відповідне визначення множини потужностей.

                Equations
                Instances For
                  @[simp]

                  Вправа 3.4.6 (i)

                  theorem Chapter3.SetTheory.Set.exists_powerset [SetTheory] (X : Set) :
                  ∃ (Z : Set), ∀ (x : Object), x Z ∃ (Y : Set), x = set_to_object Y Y X

                  Лема 3.4.10

                  Аксіома 3.12 (Об'днання)

                  Зв'язок із Mathlib-овським об'єднанням

                  @[reducible, inline]

                  Індексоване об'єднання

                  Equations
                  Instances For
                    theorem Chapter3.SetTheory.Set.mem_iUnion [SetTheory] {I : Set} (A : I.toSubtypeSet) (x : Object) :
                    x I.iUnion A ∃ (α : I.toSubtype), x A α
                    @[reducible, inline]
                    Equations
                    Instances For
                      theorem Chapter3.SetTheory.Set.iUnion_eq [SetTheory] (I : Set) (A : I.toSubtypeSet) :
                      {x : Object | x I.iUnion A} = ⋃ (α : I.toSubtype), {x : Object | x A α}

                      Зв'язок із Mathlib-овським індексованим об'єднанням

                      @[reducible, inline]
                      noncomputable abbrev Chapter3.SetTheory.Set.nonempty_choose [SetTheory] {I : Set} (hI : I ) :

                      Індексований перетин

                      Equations
                      Instances For
                        @[reducible, inline]
                        Equations
                        Instances For
                          @[reducible, inline]
                          noncomputable abbrev Chapter3.SetTheory.Set.iInter [SetTheory] (I : Set) (hI : I ) (A : I.toSubtypeSet) :
                          Equations
                          Instances For
                            theorem Chapter3.SetTheory.Set.mem_iInter [SetTheory] {I : Set} (hI : I ) (A : I.toSubtypeSet) (x : Object) :
                            x I.iInter hI A ∀ (α : I.toSubtype), x A α
                            theorem Chapter3.SetTheory.Set.preimage_eq_image_of_inv [SetTheory] {X Y V : Set} (f : X.toSubtypeY.toSubtype) (f_inv : Y.toSubtypeX.toSubtype) (hf : Function.LeftInverse f_inv f Function.RightInverse f_inv f) (hV : V Y) :
                            image f_inv V = preimage f V

                            Вправа 3.4.1

                            theorem Chapter3.SetTheory.Set.image_of_inter [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (A B : Set) :
                            image f (A B) image f A image f B

                            Вправа 3.4.3.

                            theorem Chapter3.SetTheory.Set.image_of_diff [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (A B : Set) :
                            image f A \ image f B image f (A \ B)
                            theorem Chapter3.SetTheory.Set.image_of_union [SetTheory] {X Y : Set} (f : X.toSubtypeY.toSubtype) (A B : Set) :
                            image f (A B) = image f A image f B
                            def Chapter3.SetTheory.Set.image_of_inter' [SetTheory] :
                            Decidable (∀ (X Y : Set) (f : X.toSubtypeY.toSubtype) (A B : Set), image f (A B) = image f A image f B)
                            Equations
                            Instances For
                              def Chapter3.SetTheory.Set.image_of_diff' [SetTheory] :
                              Decidable (∀ (X Y : Set) (f : X.toSubtypeY.toSubtype) (A B : Set), image f (A \ B) = image f A \ image f B)
                              Equations
                              Instances For

                                Вправа 3.4.4

                                Вправа 3.4.5

                                Вправа 3.4.5

                                @[simp]

                                Допоміжна лема для Вправи 3.4.7.

                                theorem Chapter3.SetTheory.Set.mem_union_powerset_replace_iff [SetTheory] {S : Set} {P : S.powerset.toSubtypeObjectProp} {hP : ∀ (x : S.powerset.toSubtype) (y y' : Object), P x y P x y'y = y'} {x : Object} :
                                x union (S.powerset.replace hP) ∃ (S' : S.powerset.toSubtype) (U : Set), P S' (set_to_object U) x U

                                Ігша допоміжна лема для Вправи 3.4.7.

                                theorem Chapter3.SetTheory.Set.partial_functions [SetTheory] {X Y : Set} :
                                ∃ (Z : Set), ∀ (F : Object), F Z ∃ (X' : Set) (Y' : Set), X' X Y' Y ∃ (f : X'.toSubtypeY'.toSubtype), F = f

                                Вправа 3.4.7

                                theorem Chapter3.SetTheory.Set.union_pair_exists [SetTheory] (X Y : Set) :
                                ∃ (Z : Set), ∀ (x : Object), x Z x X x Y

                                Вправа 3.4.8. Мета цієї вправи - довести її твердження без використання операції попарного об'єднання .

                                theorem Chapter3.SetTheory.Set.iInter'_insensitive [SetTheory] {I : Set} (β β' : I.toSubtype) (A : I.toSubtypeSet) :
                                I.iInter' β A = I.iInter' β' A

                                Вправа 3.4.9

                                theorem Chapter3.SetTheory.Set.union_iUnion [SetTheory] {I J : Set} (A : (I J).toSubtypeSet) :
                                ((I.iUnion fun (α : I.toSubtype) => A α, ) J.iUnion fun (α : J.toSubtype) => A α, ) = (I J).iUnion A

                                Вправа 3.4.10

                                theorem Chapter3.SetTheory.Set.union_of_nonempty [SetTheory] {I J : Set} (hI : I ) (hJ : J ) :
                                I J

                                Вправа 3.4.10

                                theorem Chapter3.SetTheory.Set.inter_iInter [SetTheory] {I J : Set} (hI : I ) (hJ : J ) (A : (I J).toSubtypeSet) :
                                ((I.iInter hI fun (α : I.toSubtype) => A α, ) J.iInter hJ fun (α : J.toSubtype) => A α, ) = (I J).iInter A

                                Вправа 3.4.10

                                theorem Chapter3.SetTheory.Set.compl_iUnion [SetTheory] {X I : Set} (hI : I ) (A : I.toSubtypeSet) :
                                X \ I.iUnion A = I.iInter hI fun (α : I.toSubtype) => X \ A α

                                Вправа 3.4.11

                                theorem Chapter3.SetTheory.Set.compl_iInter [SetTheory] {X I : Set} (hI : I ) (A : I.toSubtypeSet) :
                                X \ I.iInter hI A = I.iUnion fun (α : I.toSubtype) => X \ A α

                                Вправа 3.4.11