HepLean Documentation

Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting

Pasting lemma #

This file proves the pasting lemma for pullbacks. That is, given the following diagram:

  X₁ - f₁ -> X₂ - f₂ -> X₃
  |          |          |
  i₁         i₂         i₃
  ∨          ∨          ∨
  Y₁ - g₁ -> Y₂ - g₂ -> Y₃

if the right square is a pullback, then the left square is a pullback iff the big square is a pullback.

Main results #

@[reducible, inline]
abbrev CategoryTheory.Limits.PullbackCone.pasteHoriz {C : Type u} [CategoryTheory.Category.{v, u} C] {X₃ Y₁ Y₂ Y₃ : C} {g₁ : Y₁ Y₂} {g₂ : Y₂ Y₃} {i₃ : X₃ Y₃} (t₂ : CategoryTheory.Limits.PullbackCone g₂ i₃) {i₂ : t₂.pt Y₂} (t₁ : CategoryTheory.Limits.PullbackCone g₁ i₂) (hi₂ : i₂ = t₂.fst) :

The PullbackCone obtained by pasting two PullbackCone's horizontally

Equations
Instances For
    def CategoryTheory.Limits.pasteHorizIsPullback {C : Type u} [CategoryTheory.Category.{v, u} C] {X₃ Y₁ Y₂ Y₃ : C} {g₁ : Y₁ Y₂} {g₂ : Y₂ Y₃} {i₃ : X₃ Y₃} {t₂ : CategoryTheory.Limits.PullbackCone g₂ i₃} {i₂ : t₂.pt Y₂} {t₁ : CategoryTheory.Limits.PullbackCone g₁ i₂} (hi₂ : i₂ = t₂.fst) (H : CategoryTheory.Limits.IsLimit t₂) (H' : CategoryTheory.Limits.IsLimit t₁) :
    CategoryTheory.Limits.IsLimit (t₂.pasteHoriz t₁ hi₂)

    Given

    X₁ - f₁ -> X₂ - f₂ -> X₃
    |          |          |
    i₁         i₂         i₃
    ↓          ↓          ↓
    Y₁ - g₁ -> Y₂ - g₂ -> Y₃
    

    Then the big square is a pullback if both the small squares are.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      def CategoryTheory.Limits.leftSquareIsPullback {C : Type u} [CategoryTheory.Category.{v, u} C] {X₃ Y₁ Y₂ Y₃ : C} {g₁ : Y₁ Y₂} {g₂ : Y₂ Y₃} {i₃ : X₃ Y₃} {t₂ : CategoryTheory.Limits.PullbackCone g₂ i₃} {i₂ : t₂.pt Y₂} (t₁ : CategoryTheory.Limits.PullbackCone g₁ i₂) (hi₂ : i₂ = t₂.fst) (H : CategoryTheory.Limits.IsLimit t₂) (H' : CategoryTheory.Limits.IsLimit (t₂.pasteHoriz t₁ hi₂)) :

      Given

      X₁ - f₁ -> X₂ - f₂ -> X₃
      |          |          |
      i₁         i₂         i₃
      ↓          ↓          ↓
      Y₁ - g₁ -> Y₂ - g₂ -> Y₃
      

      Then the left square is a pullback if the right square and the big square are.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        def CategoryTheory.Limits.pasteHorizIsPullbackEquiv {C : Type u} [CategoryTheory.Category.{v, u} C] {X₃ Y₁ Y₂ Y₃ : C} {g₁ : Y₁ Y₂} {g₂ : Y₂ Y₃} {i₃ : X₃ Y₃} {t₂ : CategoryTheory.Limits.PullbackCone g₂ i₃} {i₂ : t₂.pt Y₂} (t₁ : CategoryTheory.Limits.PullbackCone g₁ i₂) (hi₂ : i₂ = t₂.fst) (H : CategoryTheory.Limits.IsLimit t₂) :

        Given that the right square is a pullback, the pasted square is a pullback iff the left square is.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[reducible, inline]
          abbrev CategoryTheory.Limits.PullbackCone.pasteVert {C : Type u} [CategoryTheory.Category.{v, u} C] {X₁ X₂ X₃ Y₁ : C} {f₁ : X₂ X₁} {f₂ : X₃ X₂} {i₁ : Y₁ X₁} (t₁ : CategoryTheory.Limits.PullbackCone i₁ f₁) {i₂ : t₁.pt X₂} (t₂ : CategoryTheory.Limits.PullbackCone i₂ f₂) (hi₂ : i₂ = t₁.snd) :

          The PullbackCone obtained by pasting two PullbackCone's vertically

          Equations
          Instances For
            def CategoryTheory.Limits.PullbackCone.pasteVertFlip {C : Type u} [CategoryTheory.Category.{v, u} C] {X₁ X₂ X₃ Y₁ : C} {f₁ : X₂ X₁} {f₂ : X₃ X₂} {i₁ : Y₁ X₁} (t₁ : CategoryTheory.Limits.PullbackCone i₁ f₁) {i₂ : t₁.pt X₂} (t₂ : CategoryTheory.Limits.PullbackCone i₂ f₂) (hi₂ : i₂ = t₁.snd) :
            (t₁.pasteVert t₂ hi₂).flip t₁.flip.pasteHoriz t₂.flip hi₂

            Pasting two pullback cones vertically is isomorphic to the pullback cone obtained by flipping them, pasting horizontally, and then flipping the result again.

            Equations
            Instances For
              def CategoryTheory.Limits.pasteVertIsPullback {C : Type u} [CategoryTheory.Category.{v, u} C] {X₁ X₂ X₃ Y₁ : C} {f₁ : X₂ X₁} {f₂ : X₃ X₂} {i₁ : Y₁ X₁} {t₁ : CategoryTheory.Limits.PullbackCone i₁ f₁} {i₂ : t₁.pt X₂} {t₂ : CategoryTheory.Limits.PullbackCone i₂ f₂} (hi₂ : i₂ = t₁.snd) (H₁ : CategoryTheory.Limits.IsLimit t₁) (H₂ : CategoryTheory.Limits.IsLimit t₂) :
              CategoryTheory.Limits.IsLimit (t₁.pasteVert t₂ hi₂)

              Given

              Y₃ - i₃ -> X₃
              |          |
              g₂         f₂
              ∨          ∨
              Y₂ - i₂ -> X₂
              |          |
              g₁         f₁
              ∨          ∨
              Y₁ - i₁ -> X₁
              

              The big square is a pullback if both the small squares are.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def CategoryTheory.Limits.topSquareIsPullback {C : Type u} [CategoryTheory.Category.{v, u} C] {X₁ X₂ X₃ Y₁ : C} {f₁ : X₂ X₁} {f₂ : X₃ X₂} {i₁ : Y₁ X₁} {t₁ : CategoryTheory.Limits.PullbackCone i₁ f₁} {i₂ : t₁.pt X₂} (t₂ : CategoryTheory.Limits.PullbackCone i₂ f₂) (hi₂ : i₂ = t₁.snd) (H₁ : CategoryTheory.Limits.IsLimit t₁) (H₂ : CategoryTheory.Limits.IsLimit (t₁.pasteVert t₂ hi₂)) :

                Given

                Y₃ - i₃ -> X₃
                |          |
                g₂         f₂
                ∨          ∨
                Y₂ - i₂ -> X₂
                |          |
                g₁         f₁
                ∨          ∨
                Y₁ - i₁ -> X₁
                

                The top square is a pullback if the bottom square and the big square are.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  def CategoryTheory.Limits.pasteVertIsPullbackEquiv {C : Type u} [CategoryTheory.Category.{v, u} C] {X₁ X₂ X₃ Y₁ : C} {f₁ : X₂ X₁} {f₂ : X₃ X₂} {i₁ : Y₁ X₁} {t₁ : CategoryTheory.Limits.PullbackCone i₁ f₁} {i₂ : t₁.pt X₂} (t₂ : CategoryTheory.Limits.PullbackCone i₂ f₂) (hi₂ : i₂ = t₁.snd) (H : CategoryTheory.Limits.IsLimit t₁) :

                  Given that the bottom square is a pullback, the pasted square is a pullback iff the top square is.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[reducible, inline]
                    abbrev CategoryTheory.Limits.PushoutCocone.pasteHoriz {C : Type u} [CategoryTheory.Category.{v, u} C] {X₁ X₂ X₃ Y₁ : C} {f₁ : X₁ X₂} {f₂ : X₂ X₃} {i₁ : X₁ Y₁} (t₁ : CategoryTheory.Limits.PushoutCocone i₁ f₁) {i₂ : X₂ t₁.pt} (t₂ : CategoryTheory.Limits.PushoutCocone i₂ f₂) (hi₂ : i₂ = t₁.inr) :

                    The pushout cocone obtained by pasting two pushout cocones horizontally.

                    Equations
                    Instances For
                      def CategoryTheory.Limits.pasteHorizIsPushout {C : Type u} [CategoryTheory.Category.{v, u} C] {X₁ X₂ X₃ Y₁ : C} {f₁ : X₁ X₂} {f₂ : X₂ X₃} {i₁ : X₁ Y₁} {t₁ : CategoryTheory.Limits.PushoutCocone i₁ f₁} {i₂ : X₂ t₁.pt} {t₂ : CategoryTheory.Limits.PushoutCocone i₂ f₂} (hi₂ : i₂ = t₁.inr) (H : CategoryTheory.Limits.IsColimit t₁) (H' : CategoryTheory.Limits.IsColimit t₂) :
                      CategoryTheory.Limits.IsColimit (t₁.pasteHoriz t₂ hi₂)

                      Given

                      X₁ - f₁ -> X₂ - f₂ -> X₃
                      |          |          |
                      i₁         i₂         i₃
                      ∨          ∨          ∨
                      Y₁ - g₁ -> Y₂ - g₂ -> Y₃
                      

                      Then the big square is a pushout if both the small squares are.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def CategoryTheory.Limits.rightSquareIsPushout {C : Type u} [CategoryTheory.Category.{v, u} C] {X₁ X₂ X₃ Y₁ : C} {f₁ : X₁ X₂} {f₂ : X₂ X₃} {i₁ : X₁ Y₁} {t₁ : CategoryTheory.Limits.PushoutCocone i₁ f₁} {i₂ : X₂ t₁.pt} (t₂ : CategoryTheory.Limits.PushoutCocone i₂ f₂) (hi₂ : i₂ = t₁.inr) (H : CategoryTheory.Limits.IsColimit t₁) (H' : CategoryTheory.Limits.IsColimit (t₁.pasteHoriz t₂ hi₂)) :

                        Given

                        X₁ - f₁ -> X₂ - f₂ -> X₃ | | | i₁ i₂ i₃ ∨ ∨ ∨ Y₁ - g₁ -> Y₂ - g₂ -> Y₃

                        Then the right square is a pushout if the left square and the big square are.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          def CategoryTheory.Limits.pasteHorizIsPushoutEquiv {C : Type u} [CategoryTheory.Category.{v, u} C] {X₁ X₂ X₃ Y₁ : C} {f₁ : X₁ X₂} {f₂ : X₂ X₃} {i₁ : X₁ Y₁} {t₁ : CategoryTheory.Limits.PushoutCocone i₁ f₁} {i₂ : X₂ t₁.pt} (t₂ : CategoryTheory.Limits.PushoutCocone i₂ f₂) (hi₂ : i₂ = t₁.inr) (H : CategoryTheory.Limits.IsColimit t₁) :

                          Given that the left square is a pushout, the pasted square is a pushout iff the right square is.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[reducible, inline]
                            abbrev CategoryTheory.Limits.PushoutCocone.pasteVert {C : Type u} [CategoryTheory.Category.{v, u} C] {Y₃ Y₂ Y₁ X₃ : C} {g₂ : Y₃ Y₂} {g₁ : Y₂ Y₁} {i₃ : Y₃ X₃} (t₁ : CategoryTheory.Limits.PushoutCocone g₂ i₃) {i₂ : Y₂ t₁.pt} (t₂ : CategoryTheory.Limits.PushoutCocone g₁ i₂) (hi₂ : i₂ = t₁.inl) :

                            The PullbackCone obtained by pasting two PullbackCone's vertically

                            Equations
                            Instances For
                              def CategoryTheory.Limits.PushoutCocone.pasteVertFlip {C : Type u} [CategoryTheory.Category.{v, u} C] {Y₃ Y₂ Y₁ X₃ : C} {g₂ : Y₃ Y₂} {g₁ : Y₂ Y₁} {i₃ : Y₃ X₃} (t₁ : CategoryTheory.Limits.PushoutCocone g₂ i₃) {i₂ : Y₂ t₁.pt} (t₂ : CategoryTheory.Limits.PushoutCocone g₁ i₂) (hi₂ : i₂ = t₁.inl) :
                              (t₁.pasteVert t₂ hi₂).flip t₁.flip.pasteHoriz t₂.flip hi₂

                              Pasting two pushout cocones vertically is isomorphic to the pushout cocone obtained by flipping them, pasting horizontally, and then flipping the result again.

                              Equations
                              Instances For
                                def CategoryTheory.Limits.pasteVertIsPushout {C : Type u} [CategoryTheory.Category.{v, u} C] {Y₃ Y₂ Y₁ X₃ : C} {g₂ : Y₃ Y₂} {g₁ : Y₂ Y₁} {i₃ : Y₃ X₃} {t₁ : CategoryTheory.Limits.PushoutCocone g₂ i₃} {i₂ : Y₂ t₁.pt} {t₂ : CategoryTheory.Limits.PushoutCocone g₁ i₂} (hi₂ : i₂ = t₁.inl) (H₁ : CategoryTheory.Limits.IsColimit t₁) (H₂ : CategoryTheory.Limits.IsColimit t₂) :
                                CategoryTheory.Limits.IsColimit (t₁.pasteVert t₂ hi₂)

                                Given

                                Y₃ - i₃ -> X₃
                                |          |
                                g₂         f₂
                                ∨          ∨
                                Y₂ - i₂ -> X₂
                                |          |
                                g₁         f₁
                                ∨          ∨
                                Y₁ - i₁ -> X₁
                                

                                The big square is a pushout if both the small squares are.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  def CategoryTheory.Limits.botSquareIsPushout {C : Type u} [CategoryTheory.Category.{v, u} C] {Y₃ Y₂ Y₁ X₃ : C} {g₂ : Y₃ Y₂} {g₁ : Y₂ Y₁} {i₃ : Y₃ X₃} {t₁ : CategoryTheory.Limits.PushoutCocone g₂ i₃} {i₂ : Y₂ t₁.pt} (t₂ : CategoryTheory.Limits.PushoutCocone g₁ i₂) (hi₂ : i₂ = t₁.inl) (H₁ : CategoryTheory.Limits.IsColimit t₁) (H₂ : CategoryTheory.Limits.IsColimit (t₁.pasteVert t₂ hi₂)) :

                                  Given

                                  Y₃ - i₃ -> X₃
                                  |          |
                                  g₂         f₂
                                  ∨          ∨
                                  Y₂ - i₂ -> X₂
                                  |          |
                                  g₁         f₁
                                  ∨          ∨
                                  Y₁ - i₁ -> X₁
                                  

                                  The bottom square is a pushout if the top square and the big square are.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    def CategoryTheory.Limits.pasteVertIsPushoutEquiv {C : Type u} [CategoryTheory.Category.{v, u} C] {Y₃ Y₂ Y₁ X₃ : C} {g₂ : Y₃ Y₂} {g₁ : Y₂ Y₁} {i₃ : Y₃ X₃} {t₁ : CategoryTheory.Limits.PushoutCocone g₂ i₃} {i₂ : Y₂ t₁.pt} (t₂ : CategoryTheory.Limits.PushoutCocone g₁ i₂) (hi₂ : i₂ = t₁.inl) (H : CategoryTheory.Limits.IsColimit t₁) :

                                    Given that the top square is a pushout, the pasted square is a pushout iff the bottom square is.

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

                                      The canonical isomorphism W ×[X] (X ×[Z] Y) ≅ W ×[Z] Y

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

                                        The canonical isomorphism (X ×[Z] Y) ×[Y] W ≅ X ×[Z] W

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

                                          The canonical isomorphism (Y ⨿[X] Z) ⨿[Z] W ≅ Y ⨿[X] W

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

                                            The canonical isomorphism W ⨿[Y] (Y ⨿[X] Z) ≅ W ⨿[X] Z

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