Documentation

Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono

Pullbacks and monomorphisms #

This file provides some results about interactions between pullbacks and monomorphisms, as well as the dual statements between pushouts and epimorphisms.

Main results #

The dual notions for pushouts are also available.

Monomorphisms are stable under pullback in the first argument.

Monomorphisms are stable under pullback in the second argument.

The pullback cone (𝟙 X, 𝟙 X) for the pair (f, f) is a limit if f is a mono. The converse is shown in mono_of_pullback_is_id.

Equations
Instances For

    f is a mono if the pullback cone (𝟙 X, 𝟙 X) is a limit for the pair (f, f). The converse is given in PullbackCone.is_id_of_mono.

    Suppose f and g are two morphisms with a common codomain and s is a limit cone over the diagram formed by f and g. Suppose f and g both factor through a monomorphism h via x and y, respectively. Then s is also a limit cone over the diagram formed by x and y.

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

      If W is the pullback of f, g, it is also the pullback of f ≫ i, g ≫ i for any mono i.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        instance CategoryTheory.Limits.pullback.fst_of_mono {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f : X Z} {g : Y Z} [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Mono g] :
        CategoryTheory.Mono CategoryTheory.Limits.pullback.fst

        The pullback of a monomorphism is a monomorphism

        Equations
        • =
        instance CategoryTheory.Limits.pullback.snd_of_mono {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f : X Z} {g : Y Z} [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Mono f] :
        CategoryTheory.Mono CategoryTheory.Limits.pullback.snd

        The pullback of a monomorphism is a monomorphism

        Equations
        • =
        instance CategoryTheory.Limits.mono_pullback_to_prod {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] {X : C} {Y : C} {Z : C} (f : X Z) (g : Y Z) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasBinaryProduct X Y] :
        CategoryTheory.Mono (CategoryTheory.Limits.prod.lift CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.pullback.snd)

        The map X ×[Z] Y ⟶ X × Y is mono.

        Equations
        • =
        noncomputable def CategoryTheory.Limits.pullbackIsPullbackOfCompMono {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Y : C} {Z : C} (f : X W) (g : Y W) (i : W Z) [CategoryTheory.Mono i] [CategoryTheory.Limits.HasPullback f g] :
        CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.PullbackCone.mk CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.pullback.snd )

        The pullback of f, g is also the pullback of f ≫ i, g ≫ i for any mono i.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          instance CategoryTheory.Limits.pullback_snd_iso_of_right_factors_mono {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Z : C} (f : X Z) (i : Z W) [CategoryTheory.Mono i] :
          CategoryTheory.IsIso CategoryTheory.Limits.pullback.snd
          Equations
          • =
          instance CategoryTheory.Limits.pullback_snd_iso_of_left_factors_mono {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Z : C} (f : X Z) (i : Z W) [CategoryTheory.Mono i] :
          CategoryTheory.IsIso CategoryTheory.Limits.pullback.fst
          Equations
          • =
          theorem CategoryTheory.Limits.fst_eq_snd_of_mono_eq {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} (f : X Y) [CategoryTheory.Mono f] :
          CategoryTheory.Limits.pullback.fst = CategoryTheory.Limits.pullback.snd
          instance CategoryTheory.Limits.fst_iso_of_mono_eq {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} (f : X Y) [CategoryTheory.Mono f] :
          CategoryTheory.IsIso CategoryTheory.Limits.pullback.fst
          Equations
          • =
          instance CategoryTheory.Limits.snd_iso_of_mono_eq {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} (f : X Y) [CategoryTheory.Mono f] :
          CategoryTheory.IsIso CategoryTheory.Limits.pullback.snd
          Equations
          • =

          The pushout cocone (𝟙 X, 𝟙 X) for the pair (f, f) is a colimit if f is an epi. The converse is shown in epi_of_isColimit_mk_id_id.

          Equations
          Instances For

            f is an epi if the pushout cocone (𝟙 X, 𝟙 X) is a colimit for the pair (f, f). The converse is given in PushoutCocone.isColimitMkIdId.

            def CategoryTheory.Limits.PushoutCocone.isColimitOfFactors {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Y : C} {Z : C} (f : X Y) (g : X Z) (h : X W) [CategoryTheory.Epi h] (x : W Y) (y : W Z) (hhx : CategoryTheory.CategoryStruct.comp h x = f) (hhy : CategoryTheory.CategoryStruct.comp h y = g) (s : CategoryTheory.Limits.PushoutCocone f g) (hs : CategoryTheory.Limits.IsColimit s) :
            let_fun reassoc₁ := ; let_fun reassoc₂ := ; CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.PushoutCocone.mk s.inl s.inr )

            Suppose f and g are two morphisms with a common domain and s is a colimit cocone over the diagram formed by f and g. Suppose f and g both factor through an epimorphism h via x and y, respectively. Then s is also a colimit cocone over the diagram formed by x and y.

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

              If W is the pushout of f, g, it is also the pushout of h ≫ f, h ≫ g for any epi h.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                instance CategoryTheory.Limits.pushout.inl_of_epi {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f : X Y} {g : X Z} [CategoryTheory.Limits.HasPushout f g] [CategoryTheory.Epi g] :
                CategoryTheory.Epi CategoryTheory.Limits.pushout.inl

                The pushout of an epimorphism is an epimorphism

                Equations
                • =
                instance CategoryTheory.Limits.pushout.inr_of_epi {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f : X Y} {g : X Z} [CategoryTheory.Limits.HasPushout f g] [CategoryTheory.Epi f] :
                CategoryTheory.Epi CategoryTheory.Limits.pushout.inr

                The pushout of an epimorphism is an epimorphism

                Equations
                • =
                instance CategoryTheory.Limits.epi_coprod_to_pushout {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] {X : C} {Y : C} {Z : C} (f : X Y) (g : X Z) [CategoryTheory.Limits.HasPushout f g] [CategoryTheory.Limits.HasBinaryCoproduct Y Z] :
                CategoryTheory.Epi (CategoryTheory.Limits.coprod.desc CategoryTheory.Limits.pushout.inl CategoryTheory.Limits.pushout.inr)

                The map X ⨿ Y ⟶ X ⨿[Z] Y is epi.

                Equations
                • =
                noncomputable def CategoryTheory.Limits.pushoutIsPushoutOfEpiComp {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Y : C} {Z : C} (f : X Y) (g : X Z) (h : W X) [CategoryTheory.Epi h] [CategoryTheory.Limits.HasPushout f g] :
                CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.PushoutCocone.mk CategoryTheory.Limits.pushout.inl CategoryTheory.Limits.pushout.inr )

                The pushout of f, g is also the pullback of h ≫ f, h ≫ g for any epi h.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  instance CategoryTheory.Limits.pushout_inr_iso_of_right_factors_epi {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Z : C} (f : X Z) (h : W X) [CategoryTheory.Epi h] :
                  CategoryTheory.IsIso CategoryTheory.Limits.pushout.inr
                  Equations
                  • =
                  instance CategoryTheory.Limits.pushout_inl_iso_of_left_factors_epi {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Y : C} (h : W X) [CategoryTheory.Epi h] (f : X Y) :
                  CategoryTheory.IsIso CategoryTheory.Limits.pushout.inl
                  Equations
                  • =
                  theorem CategoryTheory.Limits.inl_eq_inr_of_epi_eq {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} (f : X Y) [CategoryTheory.Epi f] :
                  CategoryTheory.Limits.pushout.inl = CategoryTheory.Limits.pushout.inr
                  instance CategoryTheory.Limits.inl_iso_of_epi_eq {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} (f : X Y) [CategoryTheory.Epi f] :
                  CategoryTheory.IsIso CategoryTheory.Limits.pushout.inl
                  Equations
                  • =
                  instance CategoryTheory.Limits.inr_iso_of_epi_eq {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} (f : X Y) [CategoryTheory.Epi f] :
                  CategoryTheory.IsIso CategoryTheory.Limits.pushout.inr
                  Equations
                  • =