Documentation

Mathlib.CategoryTheory.Limits.Creates

Creating (co)limits #

We say that F creates limits of K if, given any limit cone c for K ⋙ F (i.e. below) we can lift it to a cone "above", and further that F reflects limits for K.

structure CategoryTheory.LiftableCone {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 : Limits.Cone (K.comp F)) :
Type (max (max (max u₁ v₁) v₂) w)

Define the lift of a cone: For a cone c for K ⋙ F, give a cone for K which is a lift of c, i.e. the image of it under F is (iso) to c.

We will then use this as part of the definition of creation of limits: every limit cone has a lift.

Note this definition is really only useful when c is a limit already.

  • liftedCone : Limits.Cone K

    a cone in the source category of the functor

  • validLift : F.mapCone self.liftedCone c

    the isomorphism expressing that liftedCone lifts the given cone

Instances For
    structure CategoryTheory.LiftableCocone {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 : Limits.Cocone (K.comp F)) :
    Type (max (max (max u₁ v₁) v₂) w)

    Define the lift of a cocone: For a cocone c for K ⋙ F, give a cocone for K which is a lift of c, i.e. the image of it under F is (iso) to c.

    We will then use this as part of the definition of creation of colimits: every limit cocone has a lift.

    Note this definition is really only useful when c is a colimit already.

    • liftedCocone : Limits.Cocone K

      a cocone in the source category of the functor

    • validLift : F.mapCocone self.liftedCocone c

      the isomorphism expressing that liftedCocone lifts the given cocone

    Instances For
      class CategoryTheory.CreatesLimit {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) extends CategoryTheory.Limits.ReflectsLimit K F :
      Type (max (max (max (max u₁ u₂) v₁) v₂) w)

      Definition 3.3.1 of [Riehl]. We say that F creates limits of K if, given any limit cone c for K ⋙ F (i.e. below) we can lift it to a cone "above", and further that F reflects limits for K.

      If F reflects isomorphisms, it suffices to show only that the lifted cone is a limit - see createsLimitOfReflectsIso.

      Instances
        class CategoryTheory.CreatesLimitsOfShape {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (J : Type w) [Category.{w', w} J] (F : Functor C D) :
        Type (max (max (max (max (max u₁ u₂) v₁) v₂) w) w')

        F creates limits of shape J if F creates the limit of any diagram K : J ⥤ C.

        Instances
          class CategoryTheory.CreatesLimitsOfSize {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) :
          Type (max (max (max (max (max u₁ u₂) v₁) v₂) (w + 1)) (w' + 1))

          F creates limits if it creates limits of shape J for any J.

          Instances
            @[reducible, inline]
            abbrev CategoryTheory.CreatesLimits {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) :
            Type (max (max (max (max u₁ u₂) v₁) v₂) (v₂ + 1))

            F creates small limits if it creates limits of shape J for any small J.

            Equations
            Instances For
              class CategoryTheory.CreatesColimit {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) extends CategoryTheory.Limits.ReflectsColimit K F :
              Type (max (max (max (max u₁ u₂) v₁) v₂) w)

              Dual of definition 3.3.1 of [Riehl]. We say that F creates colimits of K if, given any limit cocone c for K ⋙ F (i.e. below) we can lift it to a cocone "above", and further that F reflects limits for K.

              If F reflects isomorphisms, it suffices to show only that the lifted cocone is a limit - see createsColimitOfReflectsIso.

              Instances
                class CategoryTheory.CreatesColimitsOfShape {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (J : Type w) [Category.{w', w} J] (F : Functor C D) :
                Type (max (max (max (max (max u₁ u₂) v₁) v₂) w) w')

                F creates colimits of shape J if F creates the colimit of any diagram K : J ⥤ C.

                Instances
                  class CategoryTheory.CreatesColimitsOfSize {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) :
                  Type (max (max (max (max (max u₁ u₂) v₁) v₂) (w + 1)) (w' + 1))

                  F creates colimits if it creates colimits of shape J for any small J.

                  Instances
                    @[reducible, inline]
                    abbrev CategoryTheory.CreatesColimits {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) :
                    Type (max (max (max (max u₁ u₂) v₁) v₂) (v₂ + 1))

                    F creates small colimits if it creates colimits of shape J for any small J.

                    Equations
                    Instances For
                      def CategoryTheory.liftLimit {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} [CreatesLimit K F] {c : Limits.Cone (K.comp F)} (t : Limits.IsLimit c) :

                      liftLimit t is the cone for K given by lifting the limit t for K ⋙ F.

                      Equations
                      Instances For
                        def CategoryTheory.liftedLimitMapsToOriginal {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} [CreatesLimit K F] {c : Limits.Cone (K.comp F)} (t : Limits.IsLimit c) :
                        F.mapCone (liftLimit t) c

                        The lifted cone has an image isomorphic to the original cone.

                        Equations
                        Instances For
                          theorem CategoryTheory.liftedLimitMapsToOriginal_inv_map_π {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} [CreatesLimit K F] {c : Limits.Cone (K.comp F)} (t : Limits.IsLimit c) (j : J) :
                          CategoryStruct.comp (liftedLimitMapsToOriginal t).inv.hom (F.map ((liftLimit t).app j)) = c.app j

                          If F creates the limit of K and K ⋙ F has a limit, then K has a limit.

                          If F creates limits of shape J, and D has limits of shape J, then C has limits of shape J.

                          def CategoryTheory.liftColimit {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} [CreatesColimit K F] {c : Limits.Cocone (K.comp F)} (t : Limits.IsColimit c) :

                          liftColimit t is the cocone for K given by lifting the colimit t for K ⋙ F.

                          Equations
                          Instances For
                            def CategoryTheory.liftedColimitMapsToOriginal {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} [CreatesColimit K F] {c : Limits.Cocone (K.comp F)} (t : Limits.IsColimit c) :
                            F.mapCocone (liftColimit t) c

                            The lifted cocone has an image isomorphic to the original cocone.

                            Equations
                            Instances For

                              If F creates the limit of K and K ⋙ F has a limit, then K has a limit.

                              If F creates colimits of shape J, and D has colimits of shape J, then C has colimits of shape J.

                              structure CategoryTheory.LiftsToLimit {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 : Limits.Cone (K.comp F)) (t : Limits.IsLimit c) extends CategoryTheory.LiftableCone K F c :
                              Type (max (max (max u₁ v₁) v₂) w)

                              A helper to show a functor creates limits. In particular, if we can show that for any limit cone c for K ⋙ F, there is a lift of it which is a limit and F reflects isomorphisms, then F creates limits. Usually, F creating limits says that any lift of c is a limit, but here we only need to show that our particular lift of c is a limit.

                              Instances For
                                structure CategoryTheory.LiftsToColimit {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 : Limits.Cocone (K.comp F)) (t : Limits.IsColimit c) extends CategoryTheory.LiftableCocone K F c :
                                Type (max (max (max u₁ v₁) v₂) w)

                                A helper to show a functor creates colimits. In particular, if we can show that for any limit cocone c for K ⋙ F, there is a lift of it which is a limit and F reflects isomorphisms, then F creates colimits. Usually, F creating colimits says that any lift of c is a colimit, but here we only need to show that our particular lift of c is a colimit.

                                Instances For
                                  def CategoryTheory.createsLimitOfReflectsIso {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} [F.ReflectsIsomorphisms] (h : (c : Limits.Cone (K.comp F)) → (t : Limits.IsLimit c) → LiftsToLimit K F c t) :

                                  If F reflects isomorphisms and we can lift any limit cone to a limit cone, then F creates limits. In particular here we don't need to assume that F reflects limits.

                                  Equations
                                  Instances For
                                    def CategoryTheory.createsLimitOfReflectsIso' {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} [F.ReflectsIsomorphisms] {c : Limits.Cone (K.comp F)} (hc : Limits.IsLimit c) (h : LiftsToLimit K F c hc) :

                                    If F reflects isomorphisms and we can lift a single limit cone to a limit cone, then F creates limits. Note that unlike createsLimitOfReflectsIso, to apply this result it is necessary to know that K ⋙ F actually has a limit.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      def CategoryTheory.createsLimitOfFullyFaithfulOfLift' {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} [F.Full] [F.Faithful] {l : Limits.Cone (K.comp F)} (hl : Limits.IsLimit l) (c : Limits.Cone K) (i : F.mapCone c l) :

                                      When F is fully faithful, to show that F creates the limit for K it suffices to exhibit a lift of a limit cone for K ⋙ F.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        def CategoryTheory.createsLimitOfFullyFaithfulOfLift {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} [F.Full] [F.Faithful] [Limits.HasLimit (K.comp F)] (c : Limits.Cone K) (i : F.mapCone c Limits.limit.cone (K.comp F)) :

                                        When F is fully faithful, and HasLimit (K ⋙ F), to show that F creates the limit for K it suffices to exhibit a lift of the chosen limit cone for K ⋙ F.

                                        Equations
                                        Instances For
                                          def CategoryTheory.createsLimitOfFullyFaithfulOfIso' {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} [F.Full] [F.Faithful] {l : Limits.Cone (K.comp F)} (hl : Limits.IsLimit l) (X : C) (i : F.obj X l.pt) :

                                          When F is fully faithful, to show that F creates the limit for K it suffices to show that a limit point is in the essential image of F.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            def CategoryTheory.createsLimitOfFullyFaithfulOfIso {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} [F.Full] [F.Faithful] [Limits.HasLimit (K.comp F)] (X : C) (i : F.obj X Limits.limit (K.comp F)) :

                                            When F is fully faithful, and HasLimit (K ⋙ F), to show that F creates the limit for K it suffices to show that the chosen limit point is in the essential image of F.

                                            Equations
                                            Instances For

                                              A fully faithful functor that preserves a limit that exists also creates the limit.

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                @[instance 100]

                                                F preserves the limit of K if it creates the limit and K ⋙ F has the limit.

                                                @[deprecated "No deprecation message was provided." (since := "2024-11-19")]
                                                @[instance 100]

                                                F preserves the limit of shape J if it creates these limits and D has them.

                                                @[deprecated "No deprecation message was provided." (since := "2024-11-19")]
                                                def CategoryTheory.createsColimitOfReflectsIso {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} [F.ReflectsIsomorphisms] (h : (c : Limits.Cocone (K.comp F)) → (t : Limits.IsColimit c) → LiftsToColimit K F c t) :

                                                If F reflects isomorphisms and we can lift any colimit cocone to a colimit cocone, then F creates colimits. In particular here we don't need to assume that F reflects colimits.

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  def CategoryTheory.createsColimitOfReflectsIso' {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} [F.ReflectsIsomorphisms] {c : Limits.Cocone (K.comp F)} (hc : Limits.IsColimit c) (h : LiftsToColimit K F c hc) :

                                                  If F reflects isomorphisms and we can lift a single colimit cocone to a colimit cocone, then F creates limits. Note that unlike createsColimitOfReflectsIso, to apply this result it is necessary to know that K ⋙ F actually has a colimit.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    def CategoryTheory.createsColimitOfFullyFaithfulOfLift' {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} [F.Full] [F.Faithful] {l : Limits.Cocone (K.comp F)} (hl : Limits.IsColimit l) (c : Limits.Cocone K) (i : F.mapCocone c l) :

                                                    When F is fully faithful, to show that F creates the colimit for K it suffices to exhibit a lift of a colimit cocone for K ⋙ F.

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      def CategoryTheory.createsColimitOfFullyFaithfulOfLift {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} [F.Full] [F.Faithful] [Limits.HasColimit (K.comp F)] (c : Limits.Cocone K) (i : F.mapCocone c Limits.colimit.cocone (K.comp F)) :

                                                      When F is fully faithful, and HasColimit (K ⋙ F), to show that F creates the colimit for K it suffices to exhibit a lift of the chosen colimit cocone for K ⋙ F.

                                                      Equations
                                                      Instances For

                                                        A fully faithful functor that preserves a colimit that exists also creates the colimit.

                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        Instances For
                                                          def CategoryTheory.createsColimitOfFullyFaithfulOfIso' {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} [F.Full] [F.Faithful] {l : Limits.Cocone (K.comp F)} (hl : Limits.IsColimit l) (X : C) (i : F.obj X l.pt) :

                                                          When F is fully faithful, to show that F creates the colimit for K it suffices to show that a colimit point is in the essential image of F.

                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          Instances For
                                                            def CategoryTheory.createsColimitOfFullyFaithfulOfIso {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} [F.Full] [F.Faithful] [Limits.HasColimit (K.comp F)] (X : C) (i : F.obj X Limits.colimit (K.comp F)) :

                                                            When F is fully faithful, and HasColimit (K ⋙ F), to show that F creates the colimit for K it suffices to show that the chosen colimit point is in the essential image of F.

                                                            Equations
                                                            Instances For
                                                              @[instance 100]

                                                              F preserves the colimit of K if it creates the colimit and K ⋙ F has the colimit.

                                                              @[deprecated "No deprecation message was provided." (since := "2024-11-19")]
                                                              @[instance 100]

                                                              F preserves the colimit of shape J if it creates these colimits and D has them.

                                                              @[deprecated "No deprecation message was provided." (since := "2024-11-19")]
                                                              def CategoryTheory.createsLimitOfIsoDiagram {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₂) [CreatesLimit K₁ F] :

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

                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                def CategoryTheory.createsLimitOfNatIso {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) [CreatesLimit K F] :

                                                                If F creates the limit of K and F ≅ G, then G creates the limit of K.

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

                                                                  If F creates limits of shape J and F ≅ G, then G creates limits of shape J.

                                                                  Equations
                                                                  Instances For
                                                                    def CategoryTheory.createsColimitOfIsoDiagram {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₂) [CreatesColimit K₁ F] :

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

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

                                                                      If F creates the colimit of K and F ≅ G, then G creates the colimit of K.

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

                                                                        If F creates colimits of shape J and F ≅ G, then G creates colimits of shape J.

                                                                        Equations
                                                                        Instances For
                                                                          def CategoryTheory.liftsToLimitOfCreates {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) [CreatesLimit K F] (c : Limits.Cone (K.comp F)) (t : Limits.IsLimit c) :
                                                                          LiftsToLimit K F c t

                                                                          If F creates the limit of K, any cone lifts to a limit.

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

                                                                            If F creates the colimit of K, any cocone lifts to a colimit.

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

                                                                              Any cone lifts through the identity functor.

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

                                                                                The identity functor creates all limits.

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

                                                                                Any cocone lifts through the identity functor.

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

                                                                                  The identity functor creates all colimits.

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

                                                                                  Satisfy the inhabited linter

                                                                                  Equations
                                                                                  instance CategoryTheory.inhabitedLiftsToLimit {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) [CreatesLimit K F] (c : Limits.Cone (K.comp F)) (t : Limits.IsLimit c) :

                                                                                  Satisfy the inhabited linter

                                                                                  Equations
                                                                                  instance CategoryTheory.compCreatesLimit {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) [CreatesLimit K F] [CreatesLimit (K.comp F) G] :
                                                                                  CreatesLimit K (F.comp G)
                                                                                  Equations
                                                                                  • One or more equations did not get rendered due to their size.
                                                                                  instance CategoryTheory.compCreatesColimit {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) [CreatesColimit K F] [CreatesColimit (K.comp F) G] :
                                                                                  CreatesColimit K (F.comp G)
                                                                                  Equations
                                                                                  • One or more equations did not get rendered due to their size.