Documentation

Mathlib.CategoryTheory.Limits.WeakLimits.Basic

Weak limits #

If F : J ⥤ C is a functor and c : Cone F, we say that c is a weak limit of F if every cone over F admits a (not necessarily unique) morphism to c. In other words, a weak limit satisfies the same "versal property" as a limit, without the uniqueness condition. In particular, weak limits are not unique, and they are not functorial.

We set up some API for weak limits, mostly copied from that for limits, prove that any limit cone is a weak limit cone, and that, if a limit exists, then it is a retract of any weak limit (see IsWeakLimit.retractOfIsLimit).

In the files WeakEqualizers.lean, WeakKernels.lean and WeakPullbacks.lean, we specialize to weak equalizers, weak kernels and weak pullbacks, and give some API for those shapes, again inspired from the non-weak case. We prove that a category with weak equalizers and pullbacks has weak pullbacks, and that a preadditive category has weak equalizers if and only if it has weak kernels.

References #

structure CategoryTheory.Limits.IsWeakLimit {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] {F : Functor J C} (t : Cone F) :
Type (max (max u_1 u_3) v_3)

A cone t over F is a weak limit cone if each cone over F admits a cone morphism to t.

Instances For
    @[simp]
    theorem CategoryTheory.Limits.IsWeakLimit.fac_assoc {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] {F : Functor J C} {t : Cone F} (self : IsWeakLimit t) (s : Cone F) (j : J) {Z : C} (h : F.obj j Z) :

    The map makes the triangle with the two natural transformations commute

    If F has a limit, then it is a retract of any weak limit of F.

    Equations
    Instances For

      If c : Cone F is a limit, then it is a weak limit.

      Equations
      Instances For
        structure CategoryTheory.Limits.WeakLimitCone {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] (F : Functor J C) :
        Type (max (max u_1 u_3) v_3)

        WeakLimitCone F contains a cone over F together with the information that it is a weak limit.

        • cone : Cone F

          The cone itself

        • isWeakLimit : IsWeakLimit self.cone

          The proof that is the weak limit cone

        Instances For

          Any limit cone defines a weak limit cone with the same underlying cone over F and the same lifts.

          Equations
          Instances For

            HasWeakLimit F represents the mere existence of a weak limit for F.

            Instances

              If F has a limit, then it has a weak limit.

              Use the axiom of choice to extract explicit WeakLimitCone F from HasWeakLimit F.

              Equations
              Instances For

                C has weak limits of shape J if there exists a weak limit for every functor F : J ⥤ C.

                • hasWeakLimit (F : Functor J C) : HasWeakLimit F

                  All functors F : J ⥤ C from J have weak limits

                Instances
                  noncomputable def CategoryTheory.Limits.weakLimit.cone {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] (F : Functor J C) [HasWeakLimit F] :

                  An arbitrary choice of weak limit cone for a functor.

                  Equations
                  Instances For
                    noncomputable def CategoryTheory.Limits.weakLimit {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] (F : Functor J C) [HasWeakLimit F] :
                    C

                    An arbitrary choice of weak limit object of a functor.

                    Equations
                    Instances For
                      noncomputable def CategoryTheory.Limits.weakLimit.π {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] (F : Functor J C) [HasWeakLimit F] (j : J) :

                      The projection from the weak limit object to a value of the functor.

                      Equations
                      Instances For
                        theorem CategoryTheory.Limits.weakLimit.π_comp_eqToHom {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] (F : Functor J C) [HasWeakLimit F] {j j' : J} (hj : j = j') :
                        CategoryStruct.comp (π F j) (eqToHom ) = π F j'
                        theorem CategoryTheory.Limits.weakLimit.π_comp_eqToHom_assoc {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] (F : Functor J C) [HasWeakLimit F] {j j' : J} (hj : j = j') {Z : C} (h : F.obj j' Z) :
                        @[simp]
                        theorem CategoryTheory.Limits.weakLimit.w {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] (F : Functor J C) [HasWeakLimit F] {j j' : J} (f : j j') :
                        CategoryStruct.comp (π F j) (F.map f) = π F j'
                        @[simp]
                        theorem CategoryTheory.Limits.weakLimit.w_assoc {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] (F : Functor J C) [HasWeakLimit F] {j j' : J} (f : j j') {Z : C} (h : F.obj j' Z) :

                        Evidence that the arbitrary choice of cone provided by weakLimit.cone F is a weak limit cone.

                        Equations
                        Instances For
                          noncomputable def CategoryTheory.Limits.weakLimit.lift {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] (F : Functor J C) [HasWeakLimit F] (c : Cone F) :

                          A morphism from the cone point of any other cone to the weak limit object.

                          Equations
                          Instances For
                            @[simp]
                            theorem CategoryTheory.Limits.weakLimit.lift_π {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] {F : Functor J C} [HasWeakLimit F] (c : Cone F) (j : J) :
                            CategoryStruct.comp (lift F c) (π F j) = c.π.app j
                            @[simp]
                            theorem CategoryTheory.Limits.weakLimit.lift_π_assoc {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] {F : Functor J C} [HasWeakLimit F] (c : Cone F) (j : J) {Z : C} (h : F.obj j Z) :

                            Transport evidence that a cone is a weak limit cone across an isomorphism of cones.

                            Equations
                            Instances For
                              @[simp]

                              Isomorphism of cones preserves whether or not they are weak limit cones.

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

                                The versal morphism from any other cone to a weak limit cone.

                                Equations
                                Instances For
                                  def CategoryTheory.Limits.IsWeakLimit.mkOfConeMorphism {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] {F : Functor J C} {t : Cone F} (lift : (s : Cone F) → s t) :

                                  Alternative constructor for isWeakLimit, providing a morphism of cones rather than a morphism between the cone points and separately the factorisation condition.

                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem CategoryTheory.Limits.IsWeakLimit.mkOfConeMorphism_lift {J : Type u_1} [Category.{v_1, u_1} J] {C : Type u_3} [Category.{v_3, u_3} C] {F : Functor J C} {t : Cone F} (lift : (s : Cone F) → s t) (s : Cone F) :
                                    (mkOfConeMorphism lift).lift s = (lift s).hom
                                    def CategoryTheory.Limits.IsWeakLimit.ofRightAdjoint {J : Type u_1} [Category.{v_1, u_1} J] {K : Type u_2} [Category.{v_2, u_2} K] {C : Type u_3} [Category.{v_3, u_3} C] {F : Functor J C} {D : Type u_4} [Category.{v_4, u_4} D] {G : Functor K D} {left : Functor (Cone F) (Cone G)} {right : Functor (Cone G) (Cone F)} (adj : left right) {c : Cone G} (t : IsWeakLimit c) :
                                    IsWeakLimit (right.obj c)

                                    Given a right adjoint functor between categories of cones, the image of a weak limit cone is a weak limit cone.

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

                                      Given two functors which have equivalent categories of cones, we can transport evidence of a weak limit cone across the equivalence.

                                      A cone postcomposed with a natural isomorphism is a weak limit cone if and only if the original cone is.

                                      A cone postcomposed with the inverse of a natural isomorphism is a weak limit cone if and only if the original cone is.

                                      Constructing an equivalence between Nonempty (IsWeakLimit c) and Nonempty (IsWeakLimit d) from a natural isomorphism between the underlying functors, and then an isomorphism between c transported along this and d.

                                      If a functor F has a weak limit, so does any naturally isomorphic functor.