Documentation

Mathlib.CategoryTheory.Filtered.Final

Final functors with filtered (co)domain #

If C is a filtered category, then the usual equivalent conditions for a functor F : C ⥤ D to be final can be restated. We show:

Additionally, we show that if D is a filtered category and F : C ⥤ D is fully faithful and satisfies the additional condition that for every d : D there is an object c : D and a morphism d ⟶ F.obj c, then C is filtered and F is final.

References #

If StructuredArrow d F is filtered for any d : D, then F : C ⥤ D is final. This is simply because filtered categories are connected. More profoundly, the converse is also true if C is filtered, see final_iff_isFiltered_structuredArrow.

If CostructuredArrow F d is filtered for any d : D, then F : C ⥤ D is initial. This is simply because cofiltered categories are connectged. More profoundly, the converse is also true if C is cofiltered, see initial_iff_isCofiltered_costructuredArrow.

theorem CategoryTheory.Functor.final_of_exists_of_isFiltered {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (F : CategoryTheory.Functor C D) [CategoryTheory.IsFilteredOrEmpty C] (h₁ : ∀ (d : D), ∃ (c : C), Nonempty (d F.obj c)) (h₂ : ∀ {d : D} {c : C} (s s' : d F.obj c), ∃ (c' : C) (t : c c'), CategoryTheory.CategoryStruct.comp s (F.map t) = CategoryTheory.CategoryStruct.comp s' (F.map t)) :

If C is filtered, then we can give an explicit condition for a functor F : C ⥤ D to be final. The converse is also true, see final_iff_of_isFiltered.

theorem CategoryTheory.Functor.initial_of_exists_of_isCofiltered {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (F : CategoryTheory.Functor C D) [CategoryTheory.IsCofilteredOrEmpty C] (h₁ : ∀ (d : D), ∃ (c : C), Nonempty (F.obj c d)) (h₂ : ∀ {d : D} {c : C} (s s' : F.obj c d), ∃ (c' : C) (t : c' c), CategoryTheory.CategoryStruct.comp (F.map t) s = CategoryTheory.CategoryStruct.comp (F.map t) s') :

If C is cofiltered, then we can give an explicit condition for a functor F : C ⥤ D to be final. The converse is also true, see initial_iff_of_isCofiltered.

theorem CategoryTheory.Functor.final_iff_of_isFiltered {C : Type v₁} [CategoryTheory.Category.{v₁, v₁} C] {D : Type u₂} [CategoryTheory.Category.{v₁, u₂} D] (F : CategoryTheory.Functor C D) [CategoryTheory.IsFilteredOrEmpty C] :
CategoryTheory.Functor.Final F (∀ (d : D), ∃ (c : C), Nonempty (d F.obj c)) ∀ {d : D} {c : C} (s s' : d F.obj c), ∃ (c' : C) (t : c c'), CategoryTheory.CategoryStruct.comp s (F.map t) = CategoryTheory.CategoryStruct.comp s' (F.map t)

If C is filtered, then we can give an explicit condition for a functor F : C ⥤ D to be final.

If C is cofiltered, then we can give an explicit condition for a functor F : C ⥤ D to be initial.