Documentation

Mathlib.CategoryTheory.Limits.Shapes.RegularMono

Definitions and basic properties of regular monomorphisms and epimorphisms. #

A regular monomorphism is a morphism that is the equalizer of some parallel pair.

In this file, we give the following definitions.

and constructions

as well as the dual definitions/constructions for regular epimorphisms.

Additionally, we give the constructions

We also define classes IsRegularMonoCategory and IsRegularEpiCategory for categories in which every monomorphism or epimorphism is regular, and deduce that these categories are StrongMonoCategorys resp. StrongEpiCategorys.

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

A regular monomorphism is a morphism which is the equalizer of some parallel pair.

Instances For
    theorem CategoryTheory.RegularMono.w_assoc {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (self : RegularMono f) {Z : C} (h : self.Z Z) :

    f equalizes the two maps

    theorem CategoryTheory.RegularMono.mono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (h : RegularMono f) :

    Every regular monomorphism is a monomorphism.

    Every isomorphism is a regular monomorphism.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      def CategoryTheory.RegularMono.ofArrowIso {C : Type u₁} [Category.{v₁, u₁} C] {X Y X' Y' : C} {f : X Y} {g : X' Y'} (e : Arrow.mk f Arrow.mk g) (h : RegularMono f) :

      Regular monomorphisms are preserved by isomorphisms in the arrow category.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        class CategoryTheory.IsRegularMono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) :

        IsRegularMono f is the assertion that f is a regular monomorphism.

        Instances

          The MorphismProperty C satisfied by regular monomorphisms in C.

          Equations
          Instances For
            noncomputable def CategoryTheory.IsRegularMono.getStruct {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsRegularMono f] :

            Given IsRegularMono f, a choice of data for RegularMono f.

            Equations
            Instances For
              @[deprecated CategoryTheory.IsRegularMono.getStruct (since := "2025-12-01")]

              Alias of CategoryTheory.IsRegularMono.getStruct.


              Given IsRegularMono f, a choice of data for RegularMono f.

              Equations
              Instances For
                def CategoryTheory.Fork.IsLimit.regularMono {C : Type u₁} [Category.{v₁, u₁} C] {A B : C} {p₁ p₂ : A B} {c : Limits.Fork p₁ p₂} (h : Limits.IsLimit c) :

                An equalizer diagram gives rise to a regular monomorphism.

                Equations
                Instances For

                  Given a regular monomorphism f : X ⟶ Y (i.e. a morphism satisfying the predicate IsRegularMono), this section gives an equalizer diagram

                       X
                      f|
                       v
                       Y
                  left| |right
                      v v
                       Z
                  

                  The names Z, left, and right all being in the IsRegularMono namespace.

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

                  The target of the equalizer diagram for f.

                  Equations
                  Instances For
                    noncomputable def CategoryTheory.IsRegularMono.left {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsRegularMono f] :
                    Y Z f

                    The "left" map Y ⟶ Z.

                    Equations
                    Instances For
                      noncomputable def CategoryTheory.IsRegularMono.right {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsRegularMono f] :
                      Y Z f

                      The "right" map Y ⟶ Z.

                      Equations
                      Instances For

                        The equalizer condition.

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

                        The fork is in fact an equalizer.

                        Equations
                        Instances For
                          noncomputable def CategoryTheory.IsRegularMono.lift {C : Type u₁} [Category.{v₁, u₁} C] {X Y W : C} (f : X Y) [IsRegularMono f] (k : W Y) (h : CategoryStruct.comp k (left f) = CategoryStruct.comp k (right f)) :
                          W X

                          Lift a morphism k : W ⟶ Y, equalized by the two morphisms left and right, along f.

                          Equations
                          Instances For
                            @[simp]
                            theorem CategoryTheory.IsRegularMono.fac {C : Type u₁} [Category.{v₁, u₁} C] {X Y W : C} (f : X Y) [IsRegularMono f] (k : W Y) (h : CategoryStruct.comp k (left f) = CategoryStruct.comp k (right f)) :
                            @[simp]
                            theorem CategoryTheory.IsRegularMono.fac_assoc {C : Type u₁} [Category.{v₁, u₁} C] {X Y W : C} (f : X Y) [IsRegularMono f] (k : W Y) (h : CategoryStruct.comp k (left f) = CategoryStruct.comp k (right f)) {Z : C} (h✝ : Y Z) :
                            theorem CategoryTheory.IsRegularMono.uniq {C : Type u₁} [Category.{v₁, u₁} C] {X Y W : C} (f : X Y) [IsRegularMono f] (k : W Y) (h : CategoryStruct.comp k (left f) = CategoryStruct.comp k (right f)) (m : W X) (hm : CategoryStruct.comp m f = k) :
                            m = lift f k h

                            The chosen equalizer of a parallel pair is a regular monomorphism.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              noncomputable def CategoryTheory.RegularMono.ofIsSplitMono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsSplitMono f] :

                              Every split monomorphism is a regular monomorphism.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                @[instance 100]
                                def CategoryTheory.RegularMono.lift' {C : Type u₁} [Category.{v₁, u₁} C] {X Y W : C} {f : X Y} (hf : RegularMono f) (k : W Y) (h : CategoryStruct.comp k hf.left = CategoryStruct.comp k hf.right) :

                                If f is a regular mono, then any map k : W ⟶ Y equalizing RegularMono.left and RegularMono.right induces a morphism l : W ⟶ X such that l ≫ f = k.

                                Equations
                                Instances For
                                  def CategoryTheory.regularOfIsPullbackSndOfRegular {C : Type u₁} [Category.{v₁, u₁} C] {P Q R S : C} {f : P Q} {g : P R} {h : Q S} {k : R S} (hr : RegularMono h) (comm : CategoryStruct.comp f h = CategoryStruct.comp g k) (t : Limits.IsLimit (Limits.PullbackCone.mk f g comm)) :

                                  The second leg of a pullback cone is a regular monomorphism if the right component is too.

                                  See also Pullback.sndOfMono for the basic monomorphism version, and regularOfIsPullbackFstOfRegular for the flipped version.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    def CategoryTheory.regularOfIsPullbackFstOfRegular {C : Type u₁} [Category.{v₁, u₁} C] {P Q R S : C} {f : P Q} {g : P R} {h : Q S} {k : R S} (hk : RegularMono k) (comm : CategoryStruct.comp f h = CategoryStruct.comp g k) (t : Limits.IsLimit (Limits.PullbackCone.mk f g comm)) :

                                    The first leg of a pullback cone is a regular monomorphism if the left component is too.

                                    See also Pullback.fstOfMono for the basic monomorphism version, and regularOfIsPullbackSndOfRegular for the flipped version.

                                    Equations
                                    Instances For
                                      theorem CategoryTheory.RegularMono.strongMono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (h : RegularMono f) :

                                      Any regular monomorphism is a strong monomorphism.

                                      @[instance 100]
                                      theorem CategoryTheory.isIso_of_regularMono_of_epi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) (h : RegularMono f) [Epi f] :

                                      A regular monomorphism is an isomorphism if it is an epimorphism.

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

                                      • regularMonoOfMono {X Y : C} (f : X Y) [Mono f] : IsRegularMono f

                                        Every monomorphism is a regular monomorphism

                                      Instances
                                        noncomputable def CategoryTheory.regularMonoOfMono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} [IsRegularMonoCategory C] (f : X Y) [Mono f] :

                                        In a category in which every monomorphism is regular, we can express every monomorphism as an equalizer. This is not an instance because it would create an instance loop.

                                        Equations
                                        Instances For
                                          structure CategoryTheory.RegularEpi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) :
                                          Type (max u₁ v₁)

                                          A regular epimorphism is a morphism which is the coequalizer of some parallel pair.

                                          Instances For
                                            theorem CategoryTheory.RegularEpi.w_assoc {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : X Y} (self : RegularEpi f) {Z : C} (h : Y Z) :

                                            f coequalizes the two maps

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

                                            Every regular epimorphism is an epimorphism.

                                            Every isomorphism is a regular epimorphism.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For
                                              def CategoryTheory.RegularEpi.ofArrowIso {C : Type u₁} [Category.{v₁, u₁} C] {X Y X' Y' : C} {f : X Y} {g : X' Y'} (e : Arrow.mk f Arrow.mk g) (h : RegularEpi f) :

                                              Regular epimorphisms are preserved by isomorphisms in the arrow category.

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                class CategoryTheory.IsRegularEpi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) :

                                                IsRegularEpi f is the assertion that f is a regular epimorphism.

                                                Instances

                                                  The MorphismProperty C satisfied by regular epimorphisms in C.

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

                                                    Given IsRegularEpi f, a choice of data for RegularEpi f.

                                                    Equations
                                                    Instances For
                                                      @[deprecated CategoryTheory.IsRegularEpi.getStruct (since := "2025-12-01")]

                                                      Alias of CategoryTheory.IsRegularEpi.getStruct.


                                                      Given IsRegularEpi f, a choice of data for RegularEpi f.

                                                      Equations
                                                      Instances For
                                                        def CategoryTheory.Cofork.IsColimit.regularEpi {C : Type u₁} [Category.{v₁, u₁} C] {A B : C} {p₁ p₂ : A B} {c : Limits.Cofork p₁ p₂} (h : Limits.IsColimit c) :

                                                        A coequalizer diagram gives rise to a regular epimorphism.

                                                        Equations
                                                        Instances For

                                                          Given a regular epimorphism f : X ⟶ Y (i.e. a morphism satisfying the predicate IsRegularEpi), this section gives a coequalizer diagram

                                                               W
                                                          left| |right
                                                              v v
                                                               X
                                                              f|
                                                               v
                                                               Y
                                                          

                                                          The names W, left, and right all being in the IsRegularEpi namespace.

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

                                                          The source of the coequalizer diagram for f.

                                                          Equations
                                                          Instances For
                                                            noncomputable def CategoryTheory.IsRegularEpi.left {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsRegularEpi f] :
                                                            W f X

                                                            The "left" map W ⟶ X.

                                                            Equations
                                                            Instances For
                                                              noncomputable def CategoryTheory.IsRegularEpi.right {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsRegularEpi f] :
                                                              W f X

                                                              The "right" map W ⟶ X.

                                                              Equations
                                                              Instances For

                                                                The coequalizer condition.

                                                                The cofork is in fact a coequalizer.

                                                                Equations
                                                                Instances For
                                                                  noncomputable def CategoryTheory.IsRegularEpi.desc {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} (f : X Y) [IsRegularEpi f] (k : X Z) (h : CategoryStruct.comp (left f) k = CategoryStruct.comp (right f) k) :
                                                                  Y Z

                                                                  Descend a morphism k : X ⟶ Z, coequalized by the two morphisms left and right, along f.

                                                                  Equations
                                                                  Instances For
                                                                    @[simp]
                                                                    theorem CategoryTheory.IsRegularEpi.fac {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} (f : X Y) [IsRegularEpi f] (k : X Z) (h : CategoryStruct.comp (left f) k = CategoryStruct.comp (right f) k) :
                                                                    @[simp]
                                                                    theorem CategoryTheory.IsRegularEpi.fac_assoc {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} (f : X Y) [IsRegularEpi f] (k : X Z) (h : CategoryStruct.comp (left f) k = CategoryStruct.comp (right f) k) {Z✝ : C} (h✝ : Z Z✝) :
                                                                    theorem CategoryTheory.IsRegularEpi.uniq {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} (f : X Y) [IsRegularEpi f] (k : X Z) (h : CategoryStruct.comp (left f) k = CategoryStruct.comp (right f) k) (m : Y Z) (hm : CategoryStruct.comp f m = k) :
                                                                    m = desc f k h

                                                                    The chosen coequalizer of a parallel pair is a regular epimorphism.

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

                                                                      A morphism which is a coequalizer for its kernel pair is a regular epi.

                                                                      Equations
                                                                      • One or more equations did not get rendered due to their size.
                                                                      Instances For
                                                                        theorem CategoryTheory.IsRegularEpi.of_epi_of_exists {C : Type u₁} [Category.{v₁, u₁} C] {X B : C} {f : X B} [Limits.HasPullback f f] [Epi f] (h : ∀ ⦃Z : C⦄ ⦃g : X Z⦄, CategoryStruct.comp (Limits.pullback.fst f f) g = CategoryStruct.comp (Limits.pullback.snd f f) g∃ (u : B Z), CategoryStruct.comp f u = g) :

                                                                        The data of an EffectiveEpi structure on a RegularEpi.

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

                                                                          A morphism which is a coequalizer for its kernel pair is an effective epi.

                                                                          @[deprecated CategoryTheory.effectiveEpi_of_kernelPair (since := "2025-11-20")]

                                                                          Alias of CategoryTheory.effectiveEpi_of_kernelPair.


                                                                          A morphism which is a coequalizer for its kernel pair is an effective epi.

                                                                          Given a kernel pair of an effective epimorphism f : X ⟶ B, the induced cofork is a coequalizer.

                                                                          Equations
                                                                          • One or more equations did not get rendered due to their size.
                                                                          Instances For
                                                                            noncomputable def CategoryTheory.regularEpiOfEffectiveEpi {C : Type u₁} [Category.{v₁, u₁} C] {B X : C} (f : X B) [Limits.HasPullback f f] [EffectiveEpi f] :

                                                                            An effective epi which has a kernel pair is a regular epi.

                                                                            Equations
                                                                            • One or more equations did not get rendered due to their size.
                                                                            Instances For
                                                                              noncomputable def CategoryTheory.EffectiveEpiStruct.isColimitCoforkOfIsPullback {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} {p : Y X} (hp : EffectiveEpiStruct p) {p₁ p₂ : Z Y} (sq : IsPullback p₁ p₂ p p) :

                                                                              Let p : Y ⟶ X be an effective epimorphism, p₁ : Z ⟶ Y and p₂ : Z ⟶ Y two morphisms which make Z the pullback of two copies of Y over X. Then, Y ⟶ X is the coequalizer of p₁ and p₂.

                                                                              Equations
                                                                              Instances For
                                                                                noncomputable def CategoryTheory.RegularEpi.ofSplitEpi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) [IsSplitEpi f] :

                                                                                Every split epimorphism is a regular epimorphism.

                                                                                Equations
                                                                                • One or more equations did not get rendered due to their size.
                                                                                Instances For
                                                                                  @[instance 100]
                                                                                  def CategoryTheory.RegularEpi.desc' {C : Type u₁} [Category.{v₁, u₁} C] {X Y W : C} {f : X Y} (hf : RegularEpi f) (k : X W) (h : CategoryStruct.comp hf.left k = CategoryStruct.comp hf.right k) :

                                                                                  If f is a regular epi, then every morphism k : X ⟶ W coequalizing RegularEpi.left and RegularEpi.right induces l : Y ⟶ W such that f ≫ l = k.

                                                                                  Equations
                                                                                  Instances For
                                                                                    def CategoryTheory.regularOfIsPushoutSndOfRegular {C : Type u₁} [Category.{v₁, u₁} C] {P Q R S : C} {f : P Q} {g : P R} {h : Q S} {k : R S} (gr : RegularEpi g) (comm : CategoryStruct.comp f h = CategoryStruct.comp g k) (t : Limits.IsColimit (Limits.PushoutCocone.mk h k comm)) :

                                                                                    The second leg of a pushout cocone is a regular epimorphism if the right component is too.

                                                                                    See also Pushout.sndOfEpi for the basic epimorphism version, and regularOfIsPushoutFstOfRegular for the flipped version.

                                                                                    Equations
                                                                                    • One or more equations did not get rendered due to their size.
                                                                                    Instances For
                                                                                      def CategoryTheory.regularOfIsPushoutFstOfRegular {C : Type u₁} [Category.{v₁, u₁} C] {P Q R S : C} {f : P Q} {g : P R} {h : Q S} {k : R S} (hf : RegularEpi f) (comm : CategoryStruct.comp f h = CategoryStruct.comp g k) (t : Limits.IsColimit (Limits.PushoutCocone.mk h k comm)) :

                                                                                      The first leg of a pushout cocone is a regular epimorphism if the left component is too.

                                                                                      See also Pushout.fstOfEpi for the basic epimorphism version, and regularOfIsPushoutSndOfRegular for the flipped version.

                                                                                      Equations
                                                                                      Instances For
                                                                                        @[deprecated "No replacement" (since := "2025-11-20")]
                                                                                        theorem CategoryTheory.strongEpi_of_regularEpi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) (h : RegularEpi f) :
                                                                                        theorem CategoryTheory.isIso_of_regularEpi_of_mono {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} (f : X Y) (h : RegularEpi f) [Mono f] :

                                                                                        A regular epimorphism is an isomorphism if it is a monomorphism.

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

                                                                                        A regular monomorphism in C induces a regular epimorphism in Cᵒᵖ.

                                                                                        Equations
                                                                                        Instances For
                                                                                          noncomputable def CategoryTheory.RegularMono.unop {C : Type u₁} [Category.{v₁, u₁} C] {X Y : Cᵒᵖ} {f : X Y} (hf : RegularMono f) :

                                                                                          A regular monomorphism in Cᵒᵖ induces a regular epimorphism in C.

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

                                                                                            A regular epimorphism in C induces a regular monomorphism in Cᵒᵖ.

                                                                                            Equations
                                                                                            Instances For
                                                                                              noncomputable def CategoryTheory.RegularEpi.unop {C : Type u₁} [Category.{v₁, u₁} C] {X Y : Cᵒᵖ} {f : X Y} (hf : RegularEpi f) :

                                                                                              A regular epimorphism in Cᵒᵖ induces a regular monomorphism in C.

                                                                                              Equations
                                                                                              Instances For

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

                                                                                                • regularEpiOfEpi {X Y : C} (f : X Y) [Epi f] : IsRegularEpi f

                                                                                                  Everyone epimorphism is a regular epimorphism

                                                                                                Instances
                                                                                                  noncomputable def CategoryTheory.regularEpiOfEpi {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} [IsRegularEpiCategory C] (f : X Y) [Epi f] :

                                                                                                  In a category in which every epimorphism is regular, we can express every epimorphism as a coequalizer. This is not an instance because it would create an instance loop.

                                                                                                  Equations
                                                                                                  Instances For