Documentation

Mathlib.CategoryTheory.Limits.Preserves.Basic

Preservation and reflection of (co)limits. #

There are various distinct notions of "preserving limits". The one we aim to capture here is: A functor F : C ⥤ D "preserves limits" if it sends every limit cone in C to a limit cone in D. Informally, F preserves all the limits which exist in C.

Note that:

In order to be able to express the property of preserving limits of a certain form, we say that a functor F preserves the limit of a diagram K if F sends every limit cone on K to a limit cone. This is vacuously satisfied when K does not admit a limit, which is consistent with the above definition of "preserves limits".

A functor F preserves limits of K (written as PreservesLimit K F) if F maps any limit cone over K to a limit cone.

Instances

    A functor F preserves colimits of K (written as PreservesColimit K F) if F maps any colimit cocone over K to a colimit cocone.

    Instances

      We say that F preserves limits of shape J if F preserves limits for every diagram K : J ⥤ C, i.e., F maps limit cones over K to limit cones.

      Instances

        We say that F preserves colimits of shape J if F preserves colimits for every diagram K : J ⥤ C, i.e., F maps colimit cocones over K to colimit cocones.

        Instances

          PreservesLimitsOfSize.{v u} F means that F sends all limit cones over any diagram J ⥤ C to limit cones, where J : Type u with [Category.{v} J].

          Instances
            @[reducible, inline]

            We say that F preserves (small) limits if it sends small limit cones over any diagram to limit cones.

            Equations
            Instances For

              PreservesColimitsOfSize.{v u} F means that F sends all colimit cocones over any diagram J ⥤ C to colimit cocones, where J : Type u with [Category.{v} J].

              Instances
                @[reducible, inline]

                We say that F preserves (small) limits if it sends small limit cones over any diagram to limit cones.

                Equations
                Instances For
                  def CategoryTheory.Limits.isLimitOfPreserves {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} (F : Functor C D) {c : Cone K} (t : IsLimit c) [PreservesLimit K F] :
                  IsLimit (F.mapCone c)

                  A convenience function for PreservesLimit, which takes the functor as an explicit argument to guide typeclass resolution.

                  Equations
                  Instances For
                    def CategoryTheory.Limits.isColimitOfPreserves {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} (F : Functor C D) {c : Cocone K} (t : IsColimit c) [PreservesColimit K F] :
                    IsColimit (F.mapCocone c)

                    A convenience function for PreservesColimit, which takes the functor as an explicit argument to guide typeclass resolution.

                    Equations
                    Instances For
                      @[deprecated "use id_preservesLimitsOfSize" (since := "2024-11-19")]
                      @[deprecated "use id_preservesColimitsOfSize" (since := "2024-11-19")]
                      instance CategoryTheory.Limits.comp_preservesLimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [PreservesLimit K F] [PreservesLimit (K.comp F) G] :
                      PreservesLimit K (F.comp G)
                      instance CategoryTheory.Limits.comp_preservesColimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [PreservesColimit K F] [PreservesColimit (K.comp F) G] :
                      PreservesColimit K (F.comp G)
                      @[deprecated "use comp_preservesLimit" (since := "2024-11-19")]
                      theorem CategoryTheory.Limits.compPreservesLimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [PreservesLimit K F] [PreservesLimit (K.comp F) G] :
                      PreservesLimit K (F.comp G)
                      @[deprecated "use comp_preservesLimitsOfShape" (since := "2024-11-19")]
                      @[deprecated "use comp_preservesColimit" (since := "2024-11-19")]
                      theorem CategoryTheory.Limits.compPreservesColimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [PreservesColimit K F] [PreservesColimit (K.comp F) G] :
                      PreservesColimit K (F.comp G)
                      @[deprecated "use comp_preservesColimitsOfShape" (since := "2024-11-19")]
                      theorem CategoryTheory.Limits.preservesLimit_of_preserves_limit_cone {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {F : Functor C D} {t : Cone K} (h : IsLimit t) (hF : IsLimit (F.mapCone t)) :

                      If F preserves one limit cone for the diagram K, then it preserves any limit cone for K.

                      @[deprecated "use preservesLimit_of_preserves_limit_cone" (since := "2024-11-19")]
                      theorem CategoryTheory.Limits.preservesLimitOfPreservesLimitCone {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {F : Functor C D} {t : Cone K} (h : IsLimit t) (hF : IsLimit (F.mapCone t)) :
                      theorem CategoryTheory.Limits.preservesLimit_of_iso_diagram {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K₁ K₂ : Functor J C} (F : Functor C D) (h : K₁ K₂) [PreservesLimit K₁ F] :

                      Transfer preservation of limits along a natural isomorphism in the diagram.

                      @[deprecated "use preservesLimit_of_iso_diagram" (since := "2024-11-19")]
                      theorem CategoryTheory.Limits.preservesLimitOfIsoDiagram {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K₁ K₂ : Functor J C} (F : Functor C D) (h : K₁ K₂) [PreservesLimit K₁ F] :

                      Transfer preservation of a limit along a natural isomorphism in the functor.

                      @[deprecated "use preservesLimit_of_natIso" (since := "2024-11-19")]

                      Transfer preservation of limits of shape along a natural isomorphism in the functor.

                      @[deprecated "use preservesLimitsOfShape_of_natIso" (since := "2024-11-19")]

                      Transfer preservation of limits along a natural isomorphism in the functor.

                      @[deprecated "use preservesLimits_of_natIso" (since := "2024-11-19")]

                      Transfer preservation of limits along an equivalence in the shape.

                      @[deprecated "use preservesLimitsOfShape_of_equiv" (since := "2024-11-19")]

                      If F preserves one colimit cocone for the diagram K, then it preserves any colimit cocone for K.

                      @[deprecated "use preservesColimit_of_preserves_colimit_cocone" (since := "2024-11-19")]
                      theorem CategoryTheory.Limits.preservesColimitOfPreservesColimitCocone {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {F : Functor C D} {t : Cocone K} (h : IsColimit t) (hF : IsColimit (F.mapCocone t)) :
                      theorem CategoryTheory.Limits.preservesColimit_of_iso_diagram {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K₁ K₂ : Functor J C} (F : Functor C D) (h : K₁ K₂) [PreservesColimit K₁ F] :

                      Transfer preservation of colimits along a natural isomorphism in the shape.

                      @[deprecated "use preservesColimit_of_iso_diagram" (since := "2024-11-19")]
                      theorem CategoryTheory.Limits.preservesColimitOfIsoDiagram {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K₁ K₂ : Functor J C} (F : Functor C D) (h : K₁ K₂) [PreservesColimit K₁ F] :

                      Transfer preservation of a colimit along a natural isomorphism in the functor.

                      @[deprecated CategoryTheory.Limits.preservesColimit_of_natIso (since := "2024-11-19")]

                      Transfer preservation of colimits of shape along a natural isomorphism in the functor.

                      @[deprecated "use preservesColimitsOfShape_of_natIso" (since := "2024-11-19")]

                      Transfer preservation of colimits along a natural isomorphism in the functor.

                      Transfer preservation of colimits along an equivalence in the shape.

                      @[deprecated "use preservesColimitsOfShape_of_equiv" (since := "2024-11-19")]

                      A functor F : C ⥤ D reflects limits for K : J ⥤ C if whenever the image of a cone over K under F is a limit cone in D, the cone was already a limit cone in C. Note that we do not assume a priori that D actually has any limits.

                      Instances

                        A functor F : C ⥤ D reflects colimits for K : J ⥤ C if whenever the image of a cocone over K under F is a colimit cocone in D, the cocone was already a colimit cocone in C. Note that we do not assume a priori that D actually has any colimits.

                        Instances

                          A functor F : C ⥤ D reflects limits of shape J if whenever the image of a cone over some K : J ⥤ C under F is a limit cone in D, the cone was already a limit cone in C. Note that we do not assume a priori that D actually has any limits.

                          Instances

                            A functor F : C ⥤ D reflects colimits of shape J if whenever the image of a cocone over some K : J ⥤ C under F is a colimit cocone in D, the cocone was already a colimit cocone in C. Note that we do not assume a priori that D actually has any colimits.

                            Instances

                              A functor F : C ⥤ D reflects limits if whenever the image of a cone over some K : J ⥤ C under F is a limit cone in D, the cone was already a limit cone in C. Note that we do not assume a priori that D actually has any limits.

                              Instances
                                @[reducible, inline]

                                A functor F : C ⥤ D reflects (small) limits if whenever the image of a cone over some K : J ⥤ C under F is a limit cone in D, the cone was already a limit cone in C. Note that we do not assume a priori that D actually has any limits.

                                Equations
                                Instances For

                                  A functor F : C ⥤ D reflects colimits if whenever the image of a cocone over some K : J ⥤ C under F is a colimit cocone in D, the cocone was already a colimit cocone in C. Note that we do not assume a priori that D actually has any colimits.

                                  Instances
                                    @[reducible, inline]

                                    A functor F : C ⥤ D reflects (small) colimits if whenever the image of a cocone over some K : J ⥤ C under F is a colimit cocone in D, the cocone was already a colimit cocone in C. Note that we do not assume a priori that D actually has any colimits.

                                    Equations
                                    Instances For
                                      def CategoryTheory.Limits.isLimitOfReflects {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} (F : Functor C D) {c : Cone K} (t : IsLimit (F.mapCone c)) [ReflectsLimit K F] :

                                      A convenience function for ReflectsLimit, which takes the functor as an explicit argument to guide typeclass resolution.

                                      Equations
                                      Instances For
                                        def CategoryTheory.Limits.isColimitOfReflects {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} (F : Functor C D) {c : Cocone K} (t : IsColimit (F.mapCocone c)) [ReflectsColimit K F] :

                                        A convenience function for ReflectsColimit, which takes the functor as an explicit argument to guide typeclass resolution.

                                        Equations
                                        Instances For
                                          @[deprecated "use id_reflectsLimits" (since := "2024-11-19")]
                                          @[deprecated "use id_reflectsColimits" (since := "2024-11-19")]
                                          instance CategoryTheory.Limits.comp_reflectsLimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [ReflectsLimit K F] [ReflectsLimit (K.comp F) G] :
                                          ReflectsLimit K (F.comp G)
                                          instance CategoryTheory.Limits.comp_reflectsColimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [ReflectsColimit K F] [ReflectsColimit (K.comp F) G] :
                                          ReflectsColimit K (F.comp G)
                                          @[deprecated "use comp_reflectsLimit" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.compReflectsLimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [ReflectsLimit K F] [ReflectsLimit (K.comp F) G] :
                                          ReflectsLimit K (F.comp G)
                                          @[deprecated "use comp_reflectsLimitsOfShape " (since := "2024-11-19")]
                                          @[deprecated "use comp_reflectsColimit" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.compReflectsColimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [ReflectsColimit K F] [ReflectsColimit (K.comp F) G] :
                                          ReflectsColimit K (F.comp G)
                                          @[deprecated "use comp_reflectsColimitsOfShape " (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.preservesLimit_of_reflects_of_preserves {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [PreservesLimit K (F.comp G)] [ReflectsLimit (K.comp F) G] :

                                          If F ⋙ G preserves limits for K, and G reflects limits for K ⋙ F, then F preserves limits for K.

                                          @[deprecated "use preservesLimit_of_reflects_of_preserves" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.preservesLimitOfReflectsOfPreserves {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [PreservesLimit K (F.comp G)] [ReflectsLimit (K.comp F) G] :

                                          If F ⋙ G preserves limits of shape J and G reflects limits of shape J, then F preserves limits of shape J.

                                          @[deprecated "use preservesLimitsOfShape_of_reflects_of_preserves" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.reflectsLimit_of_iso_diagram {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K₁ K₂ : Functor J C} (F : Functor C D) (h : K₁ K₂) [ReflectsLimit K₁ F] :

                                          Transfer reflection of limits along a natural isomorphism in the diagram.

                                          @[deprecated "use reflectsLimit_of_iso_diagram" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.reflectsLimitOfIsoDiagram {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K₁ K₂ : Functor J C} (F : Functor C D) (h : K₁ K₂) [ReflectsLimit K₁ F] :

                                          Transfer reflection of a limit along a natural isomorphism in the functor.

                                          @[deprecated "use reflectsLimit_of_natIso" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.reflectsLimitOfNatIso {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] (K : Functor J C) {F G : Functor C D} (h : F G) [ReflectsLimit K F] :

                                          Transfer reflection of limits of shape along a natural isomorphism in the functor.

                                          @[deprecated "use reflectsLimitsOfShape_of_natIso" (since := "2024-11-19")]

                                          Transfer reflection of limits along a natural isomorphism in the functor.

                                          @[deprecated "use reflectsLimits_of_natIso" (since := "2024-11-19")]

                                          Transfer reflection of limits along an equivalence in the shape.

                                          @[deprecated "use reflectsLimitsOfShape_of_equiv" (since := "2024-11-19")]

                                          reflectsLimitsOfSize_shrink.{w w'} F tries to obtain reflectsLimitsOfSize.{w w'} F from some other reflectsLimitsOfSize F.

                                          theorem CategoryTheory.Limits.reflectsLimit_of_reflectsIsomorphisms {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] (F : Functor J C) (G : Functor C D) [G.ReflectsIsomorphisms] [HasLimit F] [PreservesLimit F G] :

                                          If the limit of F exists and G preserves it, then if G reflects isomorphisms then it reflects the limit of F.

                                          @[deprecated "use reflectsLimit_of_reflectsIsomorphisms" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.reflectsLimitOfReflectsIsomorphisms {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] (F : Functor J C) (G : Functor C D) [G.ReflectsIsomorphisms] [HasLimit F] [PreservesLimit F G] :

                                          If C has limits of shape J and G preserves them, then if G reflects isomorphisms then it reflects limits of shape J.

                                          @[deprecated "use reflectsLimitsOfShape_of_reflectsIsomorphisms" (since := "2024-11-19")]

                                          If C has limits and G preserves limits, then if G reflects isomorphisms then it reflects limits.

                                          @[deprecated "use reflectsLimits_of_reflectsIsomorphisms" (since := "2024-11-19")]

                                          If F ⋙ G preserves colimits for K, and G reflects colimits for K ⋙ F, then F preserves colimits for K.

                                          @[deprecated "use preservesColimit_of_reflects_of_preserves" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.preservesColimitOfReflectsOfPreserves {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K : Functor J C} {E : Type u₃} [ℰ : Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [PreservesColimit K (F.comp G)] [ReflectsColimit (K.comp F) G] :

                                          If F ⋙ G preserves colimits of shape J and G reflects colimits of shape J, then F preserves colimits of shape J.

                                          @[deprecated "use preservesColimitsOfShape_of_reflects_of_preserves" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.reflectsColimit_of_iso_diagram {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K₁ K₂ : Functor J C} (F : Functor C D) (h : K₁ K₂) [ReflectsColimit K₁ F] :

                                          Transfer reflection of colimits along a natural isomorphism in the diagram.

                                          @[deprecated "use reflectsColimit_of_iso_diagram" (since := "2024-11-19")]
                                          theorem CategoryTheory.Limits.reflectsColimitOfIsoDiagram {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {J : Type w} [Category.{w', w} J] {K₁ K₂ : Functor J C} (F : Functor C D) (h : K₁ K₂) [ReflectsColimit K₁ F] :

                                          Transfer reflection of a colimit along a natural isomorphism in the functor.

                                          @[deprecated "use reflectsColimit_of_natIso" (since := "2024-11-19")]

                                          Transfer reflection of colimits of shape along a natural isomorphism in the functor.

                                          @[deprecated "use reflectsColimitsOfShape_of_natIso" (since := "2024-11-19")]

                                          Transfer reflection of colimits along a natural isomorphism in the functor.

                                          Transfer reflection of colimits along an equivalence in the shape.

                                          @[deprecated "use reflectsColimitsOfShape_of_equiv" (since := "2024-11-19")]

                                          reflectsColimitsOfSize_shrink.{w w'} F tries to obtain reflectsColimitsOfSize.{w w'} F from some other reflectsColimitsOfSize F.

                                          If the colimit of F exists and G preserves it, then if G reflects isomorphisms then it reflects the colimit of F.

                                          @[deprecated "use reflectsColimit_of_reflectsIsomorphisms" (since := "2024-11-19")]

                                          If C has colimits of shape J and G preserves them, then if G reflects isomorphisms then it reflects colimits of shape J.

                                          @[deprecated "use reflectsColimitsOfShape_of_reflectsIsomorphisms" (since := "2024-11-19")]

                                          If C has colimits and G preserves colimits, then if G reflects isomorphisms then it reflects colimits.

                                          A fully faithful functor reflects limits.

                                          @[deprecated "use fullyFaithful_reflectsLimits" (since := "2024-11-19")]

                                          A fully faithful functor reflects colimits.

                                          @[deprecated "use fullyFaithful_reflectsColimits" (since := "2024-11-19")]