Documentation

Mathlib.CategoryTheory.Limits.Shapes.Diagonal

The diagonal object of a morphism. #

We provide various API and isomorphisms considering the diagonal object Ī”_{Y/X} := pullback f f of a morphism f : X ⟶ Y.

@[reducible, inline]

The diagonal object of a morphism f : X ⟶ Y is Ī”_{X/Y} := pullback f f.

Equations
    Instances For

      The diagonal morphism X ⟶ Ī”_{X/Y} for a morphism f : X ⟶ Y.

      Equations
        Instances For

          The two projections Ī”_{X/Y} ⟶ X form a kernel pair for f : X ⟶ Y.

          @[reducible, inline]
          abbrev CategoryTheory.Limits.pullbackDiagonalMapIso.hom {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] :
          pullback (pullback.diagonal f) (pullback.map (CategoryStruct.comp i₁ (pullback.snd f i)) (CategoryStruct.comp iā‚‚ (pullback.snd f i)) f f (CategoryStruct.comp i₁ (pullback.fst f i)) (CategoryStruct.comp iā‚‚ (pullback.fst f i)) i ⋯ ⋯) ⟶ pullback i₁ iā‚‚

          The underlying map of pullbackDiagonalIso

          Equations
            Instances For
              @[reducible, inline]
              abbrev CategoryTheory.Limits.pullbackDiagonalMapIso.inv {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] :
              pullback i₁ iā‚‚ ⟶ pullback (pullback.diagonal f) (pullback.map (CategoryStruct.comp i₁ (pullback.snd f i)) (CategoryStruct.comp iā‚‚ (pullback.snd f i)) f f (CategoryStruct.comp i₁ (pullback.fst f i)) (CategoryStruct.comp iā‚‚ (pullback.fst f i)) i ⋯ ⋯)

              The underlying inverse of pullbackDiagonalIso

              Equations
                Instances For
                  def CategoryTheory.Limits.pullbackDiagonalMapIso {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] :
                  pullback (pullback.diagonal f) (pullback.map (CategoryStruct.comp i₁ (pullback.snd f i)) (CategoryStruct.comp iā‚‚ (pullback.snd f i)) f f (CategoryStruct.comp i₁ (pullback.fst f i)) (CategoryStruct.comp iā‚‚ (pullback.fst f i)) i ⋯ ⋯) ≅ pullback i₁ iā‚‚

                  This iso witnesses the fact that given f : X ⟶ Y, i : U ⟶ Y, and i₁ : V₁ ⟶ X Ɨ[Y] U, iā‚‚ : Vā‚‚ ⟶ X Ɨ[Y] U, the diagram

                  V₁ Ɨ[X Ɨ[Y] U] Vā‚‚ ⟶ V₁ Ɨ[U] Vā‚‚
                          |                 |
                          |                 |
                          ↓                 ↓
                          X         ⟶   X Ɨ[Y] X
                  

                  is a pullback square. Also see pullback_fst_map_snd_isPullback.

                  Equations
                    Instances For
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.hom_fst {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] :
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.hom_fst_assoc {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] {Z : C} (h : V₁ ⟶ Z) :
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.hom_snd {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] :
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.hom_snd_assoc {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] {Z : C} (h : Vā‚‚ ⟶ Z) :
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.inv_fst {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] :
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.inv_fst_assoc {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] {Z : C} (h : X ⟶ Z) :
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.inv_snd_fst {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] :
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.inv_snd_fst_assoc {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] {Z : C} (h : V₁ ⟶ Z) :
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.inv_snd_snd {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] :
                      @[simp]
                      theorem CategoryTheory.Limits.pullbackDiagonalMapIso.inv_snd_snd_assoc {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] {Z : C} (h : Vā‚‚ ⟶ Z) :
                      theorem CategoryTheory.Limits.pullback_fst_map_snd_isPullback {C : Type u_1} [Category.{v_1, u_1} C] {X Y : C} [HasPullbacks C] {U V₁ Vā‚‚ : C} (f : X ⟶ Y) (i : U ⟶ Y) (i₁ : V₁ ⟶ pullback f i) (iā‚‚ : Vā‚‚ ⟶ pullback f i) [HasPullback i₁ iā‚‚] :
                      IsPullback (CategoryStruct.comp (pullback.fst i₁ iā‚‚) (CategoryStruct.comp i₁ (pullback.fst f i))) (pullback.map i₁ iā‚‚ (CategoryStruct.comp i₁ (pullback.snd f i)) (CategoryStruct.comp iā‚‚ (pullback.snd f i)) (CategoryStruct.id V₁) (CategoryStruct.id Vā‚‚) (pullback.snd f i) ⋯ ⋯) (pullback.diagonal f) (pullback.map (CategoryStruct.comp i₁ (pullback.snd f i)) (CategoryStruct.comp iā‚‚ (pullback.snd f i)) f f (CategoryStruct.comp i₁ (pullback.fst f i)) (CategoryStruct.comp iā‚‚ (pullback.fst f i)) i ⋯ ⋯)

                      This iso witnesses the fact that given f : X ⟶ T, g : Y ⟶ T, and i : T ⟶ S, the diagram

                      X Ć—ā‚œ Y ⟶ X Ć—ā‚› Y
                        |         |
                        |         |
                        ↓         ↓
                        T    ⟶  T Ć—ā‚› T
                      

                      is a pullback square. Also see pullback_map_diagonal_isPullback.

                      Equations
                        Instances For

                          The diagonal object of X Ɨ[Z] Y ⟶ X is isomorphic to Ī”_{Y/Z} Ɨ[Z] X.

                          Equations
                            Instances For

                              Informally, this is a special case of pullback_map_diagonal_isPullback for T = X.

                              def CategoryTheory.Limits.pullbackFstFstIso {C : Type u_1} [Category.{v_1, u_1} C] [HasPullbacks C] {X Y S X' Y' S' : C} (f : X ⟶ S) (g : Y ⟶ S) (f' : X' ⟶ S') (g' : Y' ⟶ S') (i₁ : X ⟶ X') (iā‚‚ : Y ⟶ Y') (iā‚ƒ : S ⟶ S') (e₁ : CategoryStruct.comp f iā‚ƒ = CategoryStruct.comp i₁ f') (eā‚‚ : CategoryStruct.comp g iā‚ƒ = CategoryStruct.comp iā‚‚ g') [Mono iā‚ƒ] :

                              Given the following diagram with S ⟶ S' a monomorphism,

                                  X ⟶ X'
                                    ā†˜      ā†˜
                                      S ⟶ S'
                                    ↗      ↗
                                  Y ⟶ Y'
                              

                              This iso witnesses the fact that

                                    X Ɨ[S] Y ⟶ (X' Ɨ[S'] Y') Ɨ[Y'] Y
                                        |                  |
                                        |                  |
                                        ↓                  ↓
                              (X' Ɨ[S'] Y') Ɨ[X'] X ⟶ X' Ɨ[S'] Y'
                              

                              is a pullback square. The diagonal map of this square is pullback.map. Also see pullback_lift_map_is_pullback.

                              Equations
                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.Limits.pullbackFstFstIso_inv {C : Type u_1} [Category.{v_1, u_1} C] [HasPullbacks C] {X Y S X' Y' S' : C} (f : X ⟶ S) (g : Y ⟶ S) (f' : X' ⟶ S') (g' : Y' ⟶ S') (i₁ : X ⟶ X') (iā‚‚ : Y ⟶ Y') (iā‚ƒ : S ⟶ S') (e₁ : CategoryStruct.comp f iā‚ƒ = CategoryStruct.comp i₁ f') (eā‚‚ : CategoryStruct.comp g iā‚ƒ = CategoryStruct.comp iā‚‚ g') [Mono iā‚ƒ] :
                                  (pullbackFstFstIso f g f' g' i₁ iā‚‚ iā‚ƒ e₁ eā‚‚).inv = pullback.lift (pullback.lift (pullback.map f g f' g' i₁ iā‚‚ iā‚ƒ e₁ eā‚‚) (pullback.fst f g) ⋯) (pullback.lift (pullback.map f g f' g' i₁ iā‚‚ iā‚ƒ e₁ eā‚‚) (pullback.snd f g) ⋯) ⋯
                                  @[simp]
                                  theorem CategoryTheory.Limits.pullbackFstFstIso_hom {C : Type u_1} [Category.{v_1, u_1} C] [HasPullbacks C] {X Y S X' Y' S' : C} (f : X ⟶ S) (g : Y ⟶ S) (f' : X' ⟶ S') (g' : Y' ⟶ S') (i₁ : X ⟶ X') (iā‚‚ : Y ⟶ Y') (iā‚ƒ : S ⟶ S') (e₁ : CategoryStruct.comp f iā‚ƒ = CategoryStruct.comp i₁ f') (eā‚‚ : CategoryStruct.comp g iā‚ƒ = CategoryStruct.comp iā‚‚ g') [Mono iā‚ƒ] :
                                  (pullbackFstFstIso f g f' g' i₁ iā‚‚ iā‚ƒ e₁ eā‚‚).hom = pullback.lift (CategoryStruct.comp (pullback.fst (pullback.fst (pullback.fst f' g') i₁) (pullback.fst (pullback.snd f' g') iā‚‚)) (pullback.snd (pullback.fst f' g') i₁)) (CategoryStruct.comp (pullback.snd (pullback.fst (pullback.fst f' g') i₁) (pullback.fst (pullback.snd f' g') iā‚‚)) (pullback.snd (pullback.snd f' g') iā‚‚)) ⋯
                                  theorem CategoryTheory.Limits.pullback_map_eq_pullbackFstFstIso_inv {C : Type u_1} [Category.{v_1, u_1} C] [HasPullbacks C] {X Y S X' Y' S' : C} (f : X ⟶ S) (g : Y ⟶ S) (f' : X' ⟶ S') (g' : Y' ⟶ S') (i₁ : X ⟶ X') (iā‚‚ : Y ⟶ Y') (iā‚ƒ : S ⟶ S') (e₁ : CategoryStruct.comp f iā‚ƒ = CategoryStruct.comp i₁ f') (eā‚‚ : CategoryStruct.comp g iā‚ƒ = CategoryStruct.comp iā‚‚ g') [Mono iā‚ƒ] :
                                  pullback.map f g f' g' i₁ iā‚‚ iā‚ƒ e₁ eā‚‚ = CategoryStruct.comp (pullbackFstFstIso f g f' g' i₁ iā‚‚ iā‚ƒ e₁ eā‚‚).inv (CategoryStruct.comp (pullback.snd (pullback.fst (pullback.fst f' g') i₁) (pullback.fst (pullback.snd f' g') iā‚‚)) (pullback.fst (pullback.snd f' g') iā‚‚))
                                  theorem CategoryTheory.Limits.pullback_lift_map_isPullback {C : Type u_1} [Category.{v_1, u_1} C] [HasPullbacks C] {X Y S X' Y' S' : C} (f : X ⟶ S) (g : Y ⟶ S) (f' : X' ⟶ S') (g' : Y' ⟶ S') (i₁ : X ⟶ X') (iā‚‚ : Y ⟶ Y') (iā‚ƒ : S ⟶ S') (e₁ : CategoryStruct.comp f iā‚ƒ = CategoryStruct.comp i₁ f') (eā‚‚ : CategoryStruct.comp g iā‚ƒ = CategoryStruct.comp iā‚‚ g') [Mono iā‚ƒ] :
                                  IsPullback (pullback.lift (pullback.map f g f' g' i₁ iā‚‚ iā‚ƒ e₁ eā‚‚) (pullback.fst f g) ⋯) (pullback.lift (pullback.map f g f' g' i₁ iā‚‚ iā‚ƒ e₁ eā‚‚) (pullback.snd f g) ⋯) (pullback.fst (pullback.fst f' g') i₁) (pullback.fst (pullback.snd f' g') iā‚‚)