Documentation

Mathlib.CategoryTheory.EpiMono

Facts about epimorphisms and monomorphisms. #

The definitions of Epi and Mono are in CategoryTheory.Category, since they are used by some lemmas for Iso, which is used everywhere.

instance CategoryTheory.unop_mono_of_epi {C : Type u₁} [Category.{v₁, u₁} C] {A B : Cᵒᵖ} (f : A B) [Epi f] :
instance CategoryTheory.unop_epi_of_mono {C : Type u₁} [Category.{v₁, u₁} C] {A B : Cᵒᵖ} (f : A B) [Mono f] :
instance CategoryTheory.op_mono_of_epi {C : Type u₁} [Category.{v₁, u₁} C] {A B : C} (f : A B) [Epi f] :
instance CategoryTheory.op_epi_of_mono {C : Type u₁} [Category.{v₁, u₁} C] {A B : C} (f : A B) [Mono f] :
structure CategoryTheory.SplitMono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) :
Type v₁

A split monomorphism is a morphism f : X ⟶ Y with a given retraction retraction f : Y ⟶ X such that f ≫ retraction f = 𝟙 X.

Every split monomorphism is a monomorphism.

Instances For
    theorem CategoryTheory.SplitMono.ext_iff {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {X Y : C} {f : X Y} {x y : SplitMono f} :
    theorem CategoryTheory.SplitMono.ext {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {X Y : C} {f : X Y} {x y : SplitMono f} (retraction : x.retraction = y.retraction) :
    x = y
    @[simp]
    theorem CategoryTheory.SplitMono.id_assoc {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (self : SplitMono f) {Z : C} (h : X Z) :
    class CategoryTheory.IsSplitMono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) :

    IsSplitMono f is the assertion that f admits a retraction

    Instances
      def CategoryTheory.SplitMono.comp {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} {f : X Y} {g : Y Z} (smf : SplitMono f) (smg : SplitMono g) :

      A composition of SplitMono is a SplitMono.

      Equations
        Instances For
          @[simp]
          theorem CategoryTheory.SplitMono.comp_retraction {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} {f : X Y} {g : Y Z} (smf : SplitMono f) (smg : SplitMono g) :
          theorem CategoryTheory.IsSplitMono.mk' {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (sm : SplitMono f) :

          A constructor for IsSplitMono f taking a SplitMono f as an argument

          structure CategoryTheory.SplitEpi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) :
          Type v₁

          A split epimorphism is a morphism f : X ⟶ Y with a given section section_ f : Y ⟶ X such that section_ f ≫ f = 𝟙 Y. (Note that section is a reserved keyword, so we append an underscore.)

          Every split epimorphism is an epimorphism.

          Instances For
            theorem CategoryTheory.SplitEpi.ext_iff {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {X Y : C} {f : X Y} {x y : SplitEpi f} :
            theorem CategoryTheory.SplitEpi.ext {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {X Y : C} {f : X Y} {x y : SplitEpi f} (section_ : x.section_ = y.section_) :
            x = y
            @[simp]
            theorem CategoryTheory.SplitEpi.id_assoc {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (self : SplitEpi f) {Z : C} (h : Y Z) :
            class CategoryTheory.IsSplitEpi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) :

            IsSplitEpi f is the assertion that f admits a section

            Instances
              def CategoryTheory.SplitEpi.comp {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} {f : X Y} {g : Y Z} (sef : SplitEpi f) (seg : SplitEpi g) :

              A composition of SplitEpi is a split SplitEpi.

              Equations
                Instances For
                  @[simp]
                  theorem CategoryTheory.SplitEpi.comp_section_ {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} {f : X Y} {g : Y Z} (sef : SplitEpi f) (seg : SplitEpi g) :
                  theorem CategoryTheory.IsSplitEpi.mk' {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (se : SplitEpi f) :

                  A constructor for IsSplitEpi f taking a SplitEpi f as an argument

                  noncomputable def CategoryTheory.retraction {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [hf : IsSplitMono f] :
                  Y X

                  The chosen retraction of a split monomorphism.

                  Equations
                    Instances For
                      @[simp]
                      theorem CategoryTheory.IsSplitMono.id_assoc {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [hf : IsSplitMono f] {Z : C} (h : X Z) :

                      The retraction of a split monomorphism has an obvious section.

                      Equations
                        Instances For

                          The retraction of a split monomorphism is itself a split epimorphism.

                          theorem CategoryTheory.isIso_of_epi_of_isSplitMono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsSplitMono f] [Epi f] :

                          A split mono which is epi is an iso.

                          noncomputable def CategoryTheory.section_ {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [hf : IsSplitEpi f] :
                          Y X

                          The chosen section of a split epimorphism. (Note that section is a reserved keyword, so we append an underscore.)

                          Equations
                            Instances For
                              @[simp]
                              theorem CategoryTheory.IsSplitEpi.id_assoc {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [hf : IsSplitEpi f] {Z : C} (h : Y Z) :
                              def CategoryTheory.SplitEpi.splitMono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (se : SplitEpi f) :

                              The section of a split epimorphism has an obvious retraction.

                              Equations
                                Instances For

                                  The section of a split epimorphism is itself a split monomorphism.

                                  theorem CategoryTheory.isIso_of_mono_of_isSplitEpi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [Mono f] [IsSplitEpi f] :

                                  A split epi which is mono is an iso.

                                  @[instance 100]
                                  instance CategoryTheory.IsSplitMono.of_iso {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsIso f] :

                                  Every iso is a split mono.

                                  @[instance 100]
                                  instance CategoryTheory.IsSplitEpi.of_iso {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsIso f] :

                                  Every iso is a split epi.

                                  theorem CategoryTheory.SplitMono.mono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (sm : SplitMono f) :
                                  @[instance 100]
                                  instance CategoryTheory.IsSplitMono.mono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [hf : IsSplitMono f] :

                                  Every split mono is a mono.

                                  theorem CategoryTheory.SplitEpi.epi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (se : SplitEpi f) :
                                  Epi f
                                  @[instance 100]
                                  instance CategoryTheory.IsSplitEpi.epi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [hf : IsSplitEpi f] :
                                  Epi f

                                  Every split epi is an epi.

                                  instance CategoryTheory.instIsSplitMonoComp {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} {f : X Y} {g : Y Z} [hf : IsSplitMono f] [hg : IsSplitMono g] :
                                  instance CategoryTheory.instIsSplitEpiComp {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} {f : X Y} {g : Y Z} [hf : IsSplitEpi f] [hg : IsSplitEpi g] :
                                  theorem CategoryTheory.IsIso.of_mono_retraction' {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (hf : SplitMono f) [Mono hf.retraction] :

                                  Every split mono whose retraction is mono is an iso.

                                  theorem CategoryTheory.IsIso.of_mono_retraction {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [hf : IsSplitMono f] [hf' : Mono (retraction f)] :

                                  Every split mono whose retraction is mono is an iso.

                                  theorem CategoryTheory.IsIso.of_epi_section' {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (hf : SplitEpi f) [Epi hf.section_] :

                                  Every split epi whose section is epi is an iso.

                                  theorem CategoryTheory.IsIso.of_epi_section {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [hf : IsSplitEpi f] [hf' : Epi (section_ f)] :

                                  Every split epi whose section is epi is an iso.

                                  noncomputable def CategoryTheory.Groupoid.ofTruncSplitMono {C : Type u₁} [Category.{v₁, u₁} C] (all_split_mono : ∀ {X Y : C} (f : X Y), Trunc (IsSplitMono f)) :

                                  A category where every morphism has a Trunc retraction is computably a groupoid.

                                  Equations
                                    Instances For

                                      A split mono category is a category in which every monomorphism is split.

                                      Instances

                                        A split epi category is a category in which every epimorphism is split.

                                        • isSplitEpi_of_epi {X Y : C} (f : X Y) [Epi f] : IsSplitEpi f

                                          All epis are split

                                        Instances

                                          In a category in which every monomorphism is split, every monomorphism splits. This is not an instance because it would create an instance loop.

                                          theorem CategoryTheory.isSplitEpi_of_epi {C : Type u₁} [Category.{v₁, u₁} C] [SplitEpiCategory C] {X Y : C} (f : X Y) [Epi f] :

                                          In a category in which every epimorphism is split, every epimorphism splits. This is not an instance because it would create an instance loop.

                                          def CategoryTheory.SplitMono.map {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {X Y : C} {f : X Y} (sm : SplitMono f) (F : Functor C D) :

                                          Split monomorphisms are also absolute monomorphisms.

                                          Equations
                                            Instances For
                                              @[simp]
                                              theorem CategoryTheory.SplitMono.map_retraction {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {X Y : C} {f : X Y} (sm : SplitMono f) (F : Functor C D) :
                                              def CategoryTheory.SplitEpi.map {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {X Y : C} {f : X Y} (se : SplitEpi f) (F : Functor C D) :

                                              Split epimorphisms are also absolute epimorphisms.

                                              Equations
                                                Instances For
                                                  @[simp]
                                                  theorem CategoryTheory.SplitEpi.map_section_ {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {X Y : C} {f : X Y} (se : SplitEpi f) (F : Functor C D) :
                                                  (se.map F).section_ = F.map se.section_
                                                  instance CategoryTheory.instIsSplitMonoMap {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {X Y : C} (f : X Y) [hf : IsSplitMono f] (F : Functor C D) :
                                                  instance CategoryTheory.instIsSplitEpiMap {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {X Y : C} (f : X Y) [hf : IsSplitEpi f] (F : Functor C D) :
                                                  @[simp]
                                                  theorem CategoryTheory.epi_comp_iff_of_epi {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} (f : X Y) [Epi f] (g : Y Z) :

                                                  When f is an epimorphism, f ≫ g is epic iff g is.

                                                  @[simp]
                                                  theorem CategoryTheory.epi_comp_iff_of_isIso {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} (f : X Y) (g : Y Z) [IsIso g] :

                                                  When g is an isomorphism, f ≫ g is epic iff f is.

                                                  @[simp]
                                                  theorem CategoryTheory.mono_comp_iff_of_isIso {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} (f : X Y) [IsIso f] (g : Y Z) :

                                                  When f is an isomorphism, f ≫ g is monic iff g is.

                                                  @[simp]
                                                  theorem CategoryTheory.mono_comp_iff_of_mono {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} (f : X Y) (g : Y Z) [Mono g] :

                                                  When g is a monomorphism, f ≫ g is monic iff f is.