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 φ hφ).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 φ hφ).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 φ hφ).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 φ hφ).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 φ hφ).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 φ hφ).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 φ hφ).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 φ hφ).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 φ hφ).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 φ hφ).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