Documentation

Mathlib.CategoryTheory.Limits.Constructions.EventuallyConstant

Limits of eventually constant functors #

If F : J ⥤ C is a functor from a cofiltered category, and j : J, we introduce a property F.IsEventuallyConstantTo j which says that for any f : i ⟶ j, the induced morphism F.map f is an isomorphism. Under this assumption, it is shown that F admits F.obj j as a limit (Functor.IsEventuallyConstantTo.isLimitCone).

A typeclass Cofiltered.IsEventuallyConstant is also introduced, and the dual results for filtered categories and colimits are also obtained.

A functor F : J ⥤ C is eventually constant to j : J if for any map f : i ⟶ j, the induced morphism F.map f is an isomorphism. If J is cofiltered, this implies F has a limit.

Equations
Instances For

    A functor F : J ⥤ C is eventually constant from i : J if for any map f : i ⟶ j, the induced morphism F.map f is an isomorphism. If J is filtered, this implies F has a colimit.

    Equations
    Instances For
      theorem CategoryTheory.Functor.IsEventuallyConstantTo.isIso_map {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) {i j : J} (φ : i j) (π : j i₀) :
      theorem CategoryTheory.Functor.IsEventuallyConstantTo.precomp {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) {j : J} (f : j i₀) :
      F.IsEventuallyConstantTo j
      noncomputable def CategoryTheory.Functor.IsEventuallyConstantTo.isoMap {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) {i j : J} (φ : i j) (hφ : Nonempty (j i₀)) :
      F.obj i F.obj j

      The isomorphism F.obj i ≅ F.obj j induced by φ : i ⟶ j, when h : F.IsEventuallyConstantTo i₀ and there exists a map j ⟶ i₀.

      Equations
      Instances For
        @[simp]
        theorem CategoryTheory.Functor.IsEventuallyConstantTo.isoMap_hom {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) {i j : J} (φ : i j) (hφ : Nonempty (j i₀)) :
        (h.isoMap φ ).hom = F.map φ
        @[simp]
        theorem CategoryTheory.Functor.IsEventuallyConstantTo.isoMap_hom_inv_id {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_4, u_1} J] [CategoryTheory.Category.{u_3, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) {i j : J} (φ : i j) (hφ : Nonempty (j i₀)) :
        CategoryTheory.CategoryStruct.comp (F.map φ) (h.isoMap φ ).inv = CategoryTheory.CategoryStruct.id (F.obj i)
        @[simp]
        theorem CategoryTheory.Functor.IsEventuallyConstantTo.isoMap_hom_inv_id_assoc {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_4, u_1} J] [CategoryTheory.Category.{u_3, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) {i j : J} (φ : i j) (hφ : Nonempty (j i₀)) {Z : C} (h✝ : F.obj i Z) :
        CategoryTheory.CategoryStruct.comp (F.map φ) (CategoryTheory.CategoryStruct.comp (h.isoMap φ ).inv h✝) = h✝
        @[simp]
        theorem CategoryTheory.Functor.IsEventuallyConstantTo.isoMap_inv_hom_id {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_4, u_1} J] [CategoryTheory.Category.{u_3, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) {i j : J} (φ : i j) (hφ : Nonempty (j i₀)) :
        CategoryTheory.CategoryStruct.comp (h.isoMap φ ).inv (F.map φ) = CategoryTheory.CategoryStruct.id (F.obj j)
        @[simp]
        theorem CategoryTheory.Functor.IsEventuallyConstantTo.isoMap_inv_hom_id_assoc {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_4, u_1} J] [CategoryTheory.Category.{u_3, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) {i j : J} (φ : i j) (hφ : Nonempty (j i₀)) {Z : C} (h✝ : F.obj j Z) :
        CategoryTheory.CategoryStruct.comp (h.isoMap φ ).inv (CategoryTheory.CategoryStruct.comp (F.map φ) h✝) = h✝
        noncomputable def CategoryTheory.Functor.IsEventuallyConstantTo.coneπApp {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) [CategoryTheory.IsCofiltered J] (j : J) :
        F.obj i₀ F.obj j

        Auxiliary definition for IsEventuallyConstantTo.cone.

        Equations
        Instances For
          theorem CategoryTheory.Functor.IsEventuallyConstantTo.coneπApp_eq {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) [CategoryTheory.IsCofiltered J] (j j' : J) (α : j' i₀) (β : j' j) :
          h.coneπApp j = CategoryTheory.CategoryStruct.comp (h.isoMap α ).inv (F.map β)

          Given h : F.IsEventuallyConstantTo i₀, this is the (limit) cone for F whose point is F.obj i₀.

          Equations
          • h.cone = { pt := F.obj i₀, π := { app := h.coneπApp, naturality := } }
          Instances For
            @[simp]
            theorem CategoryTheory.Functor.IsEventuallyConstantTo.cone_pt {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) [CategoryTheory.IsCofiltered J] :
            h.cone.pt = F.obj i₀
            @[simp]
            theorem CategoryTheory.Functor.IsEventuallyConstantTo.cone_π_app {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantTo i₀) [CategoryTheory.IsCofiltered J] (j : J) :
            h.cone.app j = h.coneπApp j

            When h : F.IsEventuallyConstantTo i₀, the limit of F exists and is F.obj i₀.

            Equations
            Instances For
              theorem CategoryTheory.Functor.IsEventuallyConstantFrom.isIso_map {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) {i j : J} (φ : i j) (ι : i₀ i) :
              theorem CategoryTheory.Functor.IsEventuallyConstantFrom.postcomp {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) {j : J} (f : i₀ j) :
              F.IsEventuallyConstantFrom j
              noncomputable def CategoryTheory.Functor.IsEventuallyConstantFrom.isoMap {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) {i j : J} (φ : i j) (hφ : Nonempty (i₀ i)) :
              F.obj i F.obj j

              The isomorphism F.obj i ≅ F.obj j induced by φ : i ⟶ j, when h : F.IsEventuallyConstantFrom i₀ and there exists a map i₀ ⟶ i.

              Equations
              Instances For
                @[simp]
                theorem CategoryTheory.Functor.IsEventuallyConstantFrom.isoMap_hom {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) {i j : J} (φ : i j) (hφ : Nonempty (i₀ i)) :
                (h.isoMap φ ).hom = F.map φ
                @[simp]
                theorem CategoryTheory.Functor.IsEventuallyConstantFrom.isoMap_hom_inv_id {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_4, u_1} J] [CategoryTheory.Category.{u_3, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) {i j : J} (φ : i j) (hφ : Nonempty (i₀ i)) :
                CategoryTheory.CategoryStruct.comp (F.map φ) (h.isoMap φ ).inv = CategoryTheory.CategoryStruct.id (F.obj i)
                @[simp]
                theorem CategoryTheory.Functor.IsEventuallyConstantFrom.isoMap_hom_inv_id_assoc {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_4, u_1} J] [CategoryTheory.Category.{u_3, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) {i j : J} (φ : i j) (hφ : Nonempty (i₀ i)) {Z : C} (h✝ : F.obj i Z) :
                CategoryTheory.CategoryStruct.comp (F.map φ) (CategoryTheory.CategoryStruct.comp (h.isoMap φ ).inv h✝) = h✝
                @[simp]
                theorem CategoryTheory.Functor.IsEventuallyConstantFrom.isoMap_inv_hom_id {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_4, u_1} J] [CategoryTheory.Category.{u_3, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) {i j : J} (φ : i j) (hφ : Nonempty (i₀ i)) :
                CategoryTheory.CategoryStruct.comp (h.isoMap φ ).inv (F.map φ) = CategoryTheory.CategoryStruct.id (F.obj j)
                @[simp]
                theorem CategoryTheory.Functor.IsEventuallyConstantFrom.isoMap_inv_hom_id_assoc {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_4, u_1} J] [CategoryTheory.Category.{u_3, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) {i j : J} (φ : i j) (hφ : Nonempty (i₀ i)) {Z : C} (h✝ : F.obj j Z) :
                CategoryTheory.CategoryStruct.comp (h.isoMap φ ).inv (CategoryTheory.CategoryStruct.comp (F.map φ) h✝) = h✝
                noncomputable def CategoryTheory.Functor.IsEventuallyConstantFrom.coconeιApp {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) [CategoryTheory.IsFiltered J] (j : J) :
                F.obj j F.obj i₀

                Auxiliary definition for IsEventuallyConstantFrom.cocone.

                Equations
                Instances For
                  theorem CategoryTheory.Functor.IsEventuallyConstantFrom.coconeιApp_eq {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) [CategoryTheory.IsFiltered J] (j j' : J) (α : j j') (β : i₀ j') :
                  h.coconeιApp j = CategoryTheory.CategoryStruct.comp (F.map α) (h.isoMap β ).inv

                  Given h : F.IsEventuallyConstantFrom i₀, this is the (limit) cocone for F whose point is F.obj i₀.

                  Equations
                  • h.cocone = { pt := F.obj i₀, ι := { app := h.coconeιApp, naturality := } }
                  Instances For
                    @[simp]
                    theorem CategoryTheory.Functor.IsEventuallyConstantFrom.cocone_pt {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) [CategoryTheory.IsFiltered J] :
                    h.cocone.pt = F.obj i₀
                    @[simp]
                    theorem CategoryTheory.Functor.IsEventuallyConstantFrom.cocone_ι_app {J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] {F : CategoryTheory.Functor J C} {i₀ : J} (h : F.IsEventuallyConstantFrom i₀) [CategoryTheory.IsFiltered J] (j : J) :
                    h.cocone.app j = h.coconeιApp j

                    When h : F.IsEventuallyConstantFrom i₀, the colimit of F exists and is F.obj i₀.

                    Equations
                    Instances For

                      A functor F : J ⥤ C from a cofiltered category is eventually constant if there exists j : J, such that for any f : i ⟶ j, the induced map F.map f is an isomorphism.

                      • exists_isEventuallyConstantTo : ∃ (j : J), F.IsEventuallyConstantTo j
                      Instances

                        A functor F : J ⥤ C from a filtered category is eventually constant if there exists i : J, such that for any f : i ⟶ j, the induced map F.map f is an isomorphism.

                        • exists_isEventuallyConstantFrom : ∃ (i : J), F.IsEventuallyConstantFrom i
                        Instances