Documentation

Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks

Preserving pullbacks #

Constructions to relate the notions of preserving pullbacks and reflecting pullbacks to concrete pullback cones.

In particular, we show that pullbackComparison G f g is an isomorphism iff G preserves the pullback of f and g.

The dual is also given.

TODO #

@[reducible, inline]
abbrev CategoryTheory.Limits.PullbackCone.map {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} (c : PullbackCone f g) (G : Functor C D) :
PullbackCone (G.map f) (G.map g)

The image of a pullback cone by a functor.

Equations
    Instances For
      def CategoryTheory.Limits.PullbackCone.isLimitMapConeEquiv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} (c : PullbackCone f g) (G : Functor C D) :

      The map (as a cone) of a pullback cone is limit iff the map (as a pullback cone) is limit.

      Equations
        Instances For
          def CategoryTheory.Limits.isLimitMapConePullbackConeEquiv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} {h : W ⟶ X} {k : W ⟶ Y} (comm : CategoryStruct.comp h f = CategoryStruct.comp k g) :
          IsLimit (G.mapCone (PullbackCone.mk h k comm)) ā‰ƒ IsLimit (PullbackCone.mk (G.map h) (G.map k) ⋯)

          The map of a pullback cone is a limit iff the fork consisting of the mapped morphisms is a limit. This essentially lets us commute PullbackCone.mk with Functor.mapCone.

          Equations
            Instances For
              def CategoryTheory.Limits.isLimitPullbackConeMapOfIsLimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} {h : W ⟶ X} {k : W ⟶ Y} (comm : CategoryStruct.comp h f = CategoryStruct.comp k g) [PreservesLimit (cospan f g) G] (l : IsLimit (PullbackCone.mk h k comm)) :
              have this := ⋯; IsLimit (PullbackCone.mk (G.map h) (G.map k) this)

              The property of preserving pullbacks expressed in terms of binary fans.

              Equations
                Instances For
                  def CategoryTheory.Limits.isLimitOfIsLimitPullbackConeMap {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} {h : W ⟶ X} {k : W ⟶ Y} (comm : CategoryStruct.comp h f = CategoryStruct.comp k g) [ReflectsLimit (cospan f g) G] (l : IsLimit (PullbackCone.mk (G.map h) (G.map k) ⋯)) :

                  The property of reflecting pullbacks expressed in terms of binary fans.

                  Equations
                    Instances For
                      def CategoryTheory.Limits.isLimitOfHasPullbackOfPreservesLimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] [HasPullback f g] :
                      have this := ⋯; IsLimit (PullbackCone.mk (G.map (pullback.fst f g)) (G.map (pullback.snd f g)) this)

                      If G preserves pullbacks and C has them, then the pullback cone constructed of the mapped morphisms of the pullback cone is a limit.

                      Equations
                        Instances For
                          theorem CategoryTheory.Limits.preservesPullback_symmetry {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] :

                          If F preserves the pullback of f, g, it also preserves the pullback of g, f.

                          def CategoryTheory.Limits.PreservesPullback.iso {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] [HasPullback f g] [HasPullback (G.map f) (G.map g)] :
                          G.obj (pullback f g) ≅ pullback (G.map f) (G.map g)

                          If G preserves the pullback of (f,g), then the pullback comparison map for G at (f,g) is an isomorphism.

                          Equations
                            Instances For
                              @[simp]
                              theorem CategoryTheory.Limits.PreservesPullback.iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] [HasPullback f g] [HasPullback (G.map f) (G.map g)] :
                              (iso G f g).hom = pullbackComparison G f g
                              theorem CategoryTheory.Limits.PreservesPullback.iso_hom_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] [HasPullback f g] [HasPullback (G.map f) (G.map g)] {Zāœ : D} (h : G.obj X ⟶ Zāœ) :
                              theorem CategoryTheory.Limits.PreservesPullback.iso_hom_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] [HasPullback f g] [HasPullback (G.map f) (G.map g)] {Zāœ : D} (h : G.obj Y ⟶ Zāœ) :
                              @[simp]
                              theorem CategoryTheory.Limits.PreservesPullback.iso_inv_fst {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] [HasPullback f g] [HasPullback (G.map f) (G.map g)] :
                              @[simp]
                              theorem CategoryTheory.Limits.PreservesPullback.iso_inv_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] [HasPullback f g] [HasPullback (G.map f) (G.map g)] {Zāœ : D} (h : G.obj X ⟶ Zāœ) :
                              @[simp]
                              theorem CategoryTheory.Limits.PreservesPullback.iso_inv_snd {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] [HasPullback f g] [HasPullback (G.map f) (G.map g)] :
                              @[simp]
                              theorem CategoryTheory.Limits.PreservesPullback.iso_inv_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [PreservesLimit (cospan f g) G] [HasPullback f g] [HasPullback (G.map f) (G.map g)] {Zāœ : D} (h : G.obj Y ⟶ Zāœ) :
                              def CategoryTheory.Limits.PullbackCone.isLimitCoyonedaEquiv {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (c : PullbackCone f g) :
                              IsLimit c ā‰ƒ ((X_1 : Cįµ’įµ–) → IsLimit (c.map (coyoneda.obj X_1)))

                              A pullback cone in C is a limit iff it is so after the application of coyoneda.obj X for all X : Cįµ’įµ–.

                              Equations
                                Instances For
                                  @[reducible, inline]
                                  abbrev CategoryTheory.Limits.PushoutCocone.map {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] {W X Y : C} {f : W ⟶ X} {g : W ⟶ Y} (c : PushoutCocone f g) (G : Functor C D) :
                                  PushoutCocone (G.map f) (G.map g)

                                  The image of a pullback cone by a functor.

                                  Equations
                                    Instances For

                                      The map (as a cocone) of a pushout cocone is colimit iff the map (as a pushout cocone) is limit.

                                      Equations
                                        Instances For
                                          def CategoryTheory.Limits.isColimitMapCoconePushoutCoconeEquiv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y Z : C} {h : X ⟶ Z} {k : Y ⟶ Z} {f : W ⟶ X} {g : W ⟶ Y} (comm : CategoryStruct.comp f h = CategoryStruct.comp g k) :

                                          The map of a pushout cocone is a colimit iff the cofork consisting of the mapped morphisms is a colimit. This essentially lets us commute PushoutCocone.mk with Functor.mapCocone.

                                          Equations
                                            Instances For
                                              def CategoryTheory.Limits.isColimitPushoutCoconeMapOfIsColimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y Z : C} {h : X ⟶ Z} {k : Y ⟶ Z} {f : W ⟶ X} {g : W ⟶ Y} (comm : CategoryStruct.comp f h = CategoryStruct.comp g k) [PreservesColimit (span f g) G] (l : IsColimit (PushoutCocone.mk h k comm)) :
                                              IsColimit (PushoutCocone.mk (G.map h) (G.map k) ⋯)

                                              The property of preserving pushouts expressed in terms of binary cofans.

                                              Equations
                                                Instances For
                                                  def CategoryTheory.Limits.isColimitOfIsColimitPushoutCoconeMap {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y Z : C} {h : X ⟶ Z} {k : Y ⟶ Z} {f : W ⟶ X} {g : W ⟶ Y} (comm : CategoryStruct.comp f h = CategoryStruct.comp g k) [ReflectsColimit (span f g) G] (l : IsColimit (PushoutCocone.mk (G.map h) (G.map k) ⋯)) :

                                                  The property of reflecting pushouts expressed in terms of binary cofans.

                                                  Equations
                                                    Instances For

                                                      If G preserves pushouts and C has them, then the pushout cocone constructed of the mapped morphisms of the pushout cocone is a colimit.

                                                      Equations
                                                        Instances For
                                                          theorem CategoryTheory.Limits.preservesPushout_symmetry {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y : C} (f : W ⟶ X) (g : W ⟶ Y) [PreservesColimit (span f g) G] :

                                                          If F preserves the pushout of f, g, it also preserves the pushout of g, f.

                                                          def CategoryTheory.Limits.PreservesPushout.iso {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y : C} (f : W ⟶ X) (g : W ⟶ Y) [PreservesColimit (span f g) G] [HasPushout f g] [HasPushout (G.map f) (G.map g)] :
                                                          pushout (G.map f) (G.map g) ≅ G.obj (pushout f g)

                                                          If G preserves the pushout of (f,g), then the pushout comparison map for G at (f,g) is an isomorphism.

                                                          Equations
                                                            Instances For
                                                              @[simp]
                                                              theorem CategoryTheory.Limits.PreservesPushout.iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y : C} (f : W ⟶ X) (g : W ⟶ Y) [PreservesColimit (span f g) G] [HasPushout f g] [HasPushout (G.map f) (G.map g)] :
                                                              (iso G f g).hom = pushoutComparison G f g
                                                              @[simp]
                                                              theorem CategoryTheory.Limits.PreservesPushout.inl_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y : C} (f : W ⟶ X) (g : W ⟶ Y) [PreservesColimit (span f g) G] [HasPushout f g] [HasPushout (G.map f) (G.map g)] :
                                                              CategoryStruct.comp (G.map (pushout.inl f g)) (iso G f g).inv = pushout.inl (G.map f) (G.map g)
                                                              @[simp]
                                                              theorem CategoryTheory.Limits.PreservesPushout.inl_iso_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y : C} (f : W ⟶ X) (g : W ⟶ Y) [PreservesColimit (span f g) G] [HasPushout f g] [HasPushout (G.map f) (G.map g)] {Z : D} (h : pushout (G.map f) (G.map g) ⟶ Z) :
                                                              @[simp]
                                                              theorem CategoryTheory.Limits.PreservesPushout.inr_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y : C} (f : W ⟶ X) (g : W ⟶ Y) [PreservesColimit (span f g) G] [HasPushout f g] [HasPushout (G.map f) (G.map g)] :
                                                              CategoryStruct.comp (G.map (pushout.inr f g)) (iso G f g).inv = pushout.inr (G.map f) (G.map g)
                                                              @[simp]
                                                              theorem CategoryTheory.Limits.PreservesPushout.inr_iso_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {W X Y : C} (f : W ⟶ X) (g : W ⟶ Y) [PreservesColimit (span f g) G] [HasPushout f g] [HasPushout (G.map f) (G.map g)] {Z : D} (h : pushout (G.map f) (G.map g) ⟶ Z) :
                                                              theorem CategoryTheory.Limits.PreservesPullback.of_iso_comparison {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [HasPullback f g] [HasPullback (G.map f) (G.map g)] [i : IsIso (pullbackComparison G f g)] :

                                                              If the pullback comparison map for G at (f,g) is an isomorphism, then G preserves the pullback of (f,g).

                                                              theorem CategoryTheory.Limits.PreservesPushout.of_iso_comparison {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uā‚‚} [Category.{vā‚‚, uā‚‚} D] (G : Functor C D) {X Y Z : C} {f : X ⟶ Y} {g : X ⟶ Z} [HasPushout f g] [HasPushout (G.map f) (G.map g)] [i : IsIso (pushoutComparison G f g)] :

                                                              If the pushout comparison map for G at (f,g) is an isomorphism, then G preserves the pushout of (f,g).

                                                              def CategoryTheory.Limits.PushoutCocone.isColimitYonedaEquiv {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} {f : X ⟶ Y} {g : X ⟶ Z} (c : PushoutCocone f g) :
                                                              IsColimit c ā‰ƒ ((X_1 : C) → IsLimit (c.op.map (yoneda.obj X_1)))

                                                              A pushout cocone in C is colimit iff it becomes limit after the application of yoneda.obj X for all X : C.

                                                              Equations
                                                                Instances For