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.

@[simp]
theorem CategoryTheory.op_mono_iff {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X ⟢ Y) :
@[simp]
theorem CategoryTheory.op_epi_iff {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X ⟢ Y) :
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) :

    f composed with retraction is the identity

    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) :

            section_ composed with f is the identity

            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

                      The retraction of a split monomorphism has an obvious section.

                      Equations
                        Instances For

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

                          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) :

                              The section of a split epimorphism has an obvious retraction.

                              Equations
                                Instances For

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

                                  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.

                                  @[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.

                                  @[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.

                                  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.

                                        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.

                                          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.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.

                                                  def CategoryTheory.SplitMono.op {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X ⟢ Y} (h : SplitMono f) :

                                                  The opposite of a split mono is a split epi.

                                                  Equations
                                                    Instances For
                                                      def CategoryTheory.SplitEpi.op {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X ⟢ Y} (h : SplitEpi f) :

                                                      The opposite of a split epi is a split mono.

                                                      Equations
                                                        Instances For