Final and initial functors #
A functor F : C ⥤ D is final if for every d : D,
the comma category of morphisms d ⟶ F.obj c is connected.
Dually, a functor F : C ⥤ D is initial if for every d : D,
the comma category of morphisms F.obj c ⟶ d is connected.
We show that right adjoints are examples of final functors, while left adjoints are examples of initial functors.
For final functors, we prove that the following three statements are equivalent:
F : C ⥤ Dis final.- Every functor
G : D ⥤ Ehas a colimit if and only ifF ⋙ Gdoes, and these colimits are isomorphic viacolimit.pre G F. colimit (F ⋙ coyoneda.obj (op d)) ≅ PUnit.
Starting at 1. we show (in coconesEquiv) that
the categories of cocones over G : D ⥤ E and over F ⋙ G are equivalent.
(In fact, via an equivalence which does not change the cocone point.)
This readily implies 2., as comp_hasColimit, hasColimit_of_comp, and colimitIso.
From 2. we can specialize to G = coyoneda.obj (op d) to obtain 3., as colimitCompCoyonedaIso.
From 3., we prove 1. directly in final_of_colimit_comp_coyoneda_iso_pUnit.
Dually, we prove that if a functor F : C ⥤ D is initial, then any functor G : D ⥤ E has a
limit if and only if F ⋙ G does, and these limits are isomorphic via limit.pre G F.
In the end of the file, we characterize the finality of some important induced functors on the
(co)structured arrow category (StructuredArrow.pre and CostructuredArrow.pre) and on the
Grothendieck construction (Grothendieck.pre and Grothendieck.map).
Naming #
There is some discrepancy in the literature about naming; some say 'cofinal' instead of 'final'. The explanation for this is that the 'co' prefix here is not the usual category-theoretic one indicating duality, but rather indicating the sense of "along with".
See also #
In CategoryTheory.Filtered.Final we give additional equivalent conditions in the case that
C is filtered.
Future work #
Dualise condition 3 above and the implications 2 ⇒ 3 and 3 ⇒ 1 to initial functors.
References #
- https://stacks.math.columbia.edu/tag/09WN
- https://ncatlab.org/nlab/show/final+functor
- Borceux, Handbook of Categorical Algebra I, Section 2.11. (Note he reverses the roles of definition and main result relative to here!)
A functor F : C ⥤ D is final if for every d : D, the comma category of morphisms d ⟶ F.obj c
is connected.
- out (d : D) : IsConnected (StructuredArrow d F)
Instances
A functor F : C ⥤ D is initial if for every d : D, the comma category of morphisms
F.obj c ⟶ d is connected.
- out (d : D) : IsConnected (CostructuredArrow F d)
Instances
If a functor R : D ⥤ C is a right adjoint, it is final.
If a functor L : C ⥤ D is a left adjoint, it is initial.
When F : C ⥤ D is final, we denote by lift F d an arbitrary choice of object in C such that
there exists a morphism d ⟶ F.obj (lift F d).
Equations
Instances For
When F : C ⥤ D is final, we denote by homToLift an arbitrary choice of morphism
d ⟶ F.obj (lift F d).
Equations
Instances For
We provide an induction principle for reasoning about lift and homToLift.
We want to perform some construction (usually just a proof) about
the particular choices lift F d and homToLift F d,
it suffices to perform that construction for some other pair of choices
(denoted X₀ : C and k₀ : d ⟶ F.obj X₀ below),
and to show how to transport such a construction
both directions along a morphism between such choices.
Equations
- CategoryTheory.Functor.Final.induction F Z h₁ h₂ z = ⋯.some
Instances For
Given a cocone over F ⋙ G, we can construct a Cocone G with the same cocone point.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alternative equational lemma for (extendCocone c).ι.app in case a lift of the object
is given explicitly.
If F is final,
the category of cocones on F ⋙ G is equivalent to the category of cocones on G,
for any G : D ⥤ E.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F : C ⥤ D is final, and t : Cocone G for some G : D ⥤ E,
t.whisker F is a colimit cocone exactly when t is.
Equations
Instances For
When F is final, and t : Cocone (F ⋙ G),
extendCocone.obj t is a colimit cocone exactly when t is.
Equations
Instances For
Given a colimit cocone over G : D ⥤ E we can construct a colimit cocone over F ⋙ G.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
When F : C ⥤ D is final, and G : D ⥤ E has a colimit, then F ⋙ G has a colimit also and
colimit (F ⋙ G) ≅ colimit G.
Equations
Instances For
A pointfree version of colimitIso, stating that whiskering by F followed by taking the
colimit is isomorpic to taking the colimit on the codomain of F.
Equations
Instances For
Given a colimit cocone over F ⋙ G we can construct a colimit cocone over G.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F is final, and F ⋙ G has a colimit, then G has a colimit also.
We can't make this an instance, because F is not determined by the goal.
(Even if this weren't a problem, it would cause a loop with comp_hasColimit.)
If F is final and F ⋙ G creates colimits of H, then so does G.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If H creates colimits of shape C and F : C ⥤ D is final, then H creates colimits of
shape D.
Equations
- CategoryTheory.Functor.Final.createsColimitsOfShapeOfFinal F H = { CreatesColimit := fun {K : CategoryTheory.Functor D E} => CategoryTheory.Functor.Final.createsColimitOfComp F }
Instances For
Alias of CategoryTheory.Functor.Final.zigzag_of_eqvGen_colimitTypeRel.
If colimit (F ⋙ coyoneda.obj (op d)) ≅ PUnit for all d : D, then F is final.
A variant of final_of_colimit_comp_coyoneda_iso_pUnit where we bind the various claims
about colimit (F ⋙ coyoneda.obj (Opposite.op d)) for each d : D into a single claim about
the presheaf colimit (F ⋙ yoneda).
If the universal morphism colimit (F ⋙ coyoneda.obj (op d)) ⟶ colimit (coyoneda.obj (op d))
is an isomorphism (as it always is when F is final),
then colimit (F ⋙ coyoneda.obj (op d)) ≅ PUnit
(simply because colimit (coyoneda.obj (op d)) ≅ PUnit).
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F : C ⥤ D is initial, we denote by lift F d an arbitrary choice of object in C such that
there exists a morphism F.obj (lift F d) ⟶ d.
Equations
Instances For
When F : C ⥤ D is initial, we denote by homToLift an arbitrary choice of morphism
F.obj (lift F d) ⟶ d.
Equations
Instances For
We provide an induction principle for reasoning about lift and homToLift.
We want to perform some construction (usually just a proof) about
the particular choices lift F d and homToLift F d,
it suffices to perform that construction for some other pair of choices
(denoted X₀ : C and k₀ : F.obj X₀ ⟶ d below),
and to show how to transport such a construction
both directions along a morphism between such choices.
Equations
- CategoryTheory.Functor.Initial.induction F Z h₁ h₂ z = ⋯.some
Instances For
Given a cone over F ⋙ G, we can construct a Cone G with the same cocone point.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alternative equational lemma for (extendCone c).π.app in case a lift of the object
is given explicitly.
If F is initial,
the category of cones on F ⋙ G is equivalent to the category of cones on G,
for any G : D ⥤ E.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F : C ⥤ D is initial, and t : Cone G for some G : D ⥤ E,
t.whisker F is a limit cone exactly when t is.
Equations
Instances For
When F is initial, and t : Cone (F ⋙ G),
extendCone.obj t is a limit cone exactly when t is.
Equations
Instances For
Given a limit cone over G : D ⥤ E we can construct a limit cone over F ⋙ G.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
When F : C ⥤ D is initial, and G : D ⥤ E has a limit, then F ⋙ G has a limit also and
limit (F ⋙ G) ≅ limit G.
Equations
Instances For
A pointfree version of limitIso, stating that whiskering by F followed by taking the
limit is isomorpic to taking the limit on the codomain of F.
Equations
- CategoryTheory.Functor.Initial.limIso F = (CategoryTheory.NatIso.ofComponents (fun (G : CategoryTheory.Functor D E) => (CategoryTheory.Functor.Initial.limitIso F G).symm) ⋯).symm
Instances For
Given a limit cone over F ⋙ G we can construct a limit cone over G.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F is initial, and F ⋙ G has a limit, then G has a limit also.
We can't make this an instance, because F is not determined by the goal.
(Even if this weren't a problem, it would cause a loop with comp_hasLimit.)
If F is initial and F ⋙ G creates limits of H, then so does G.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If H creates limits of shape C and F : C ⥤ D is initial, then H creates limits of shape
D.
Equations
- CategoryTheory.Functor.Initial.createsLimitsOfShapeOfInitial F H = { CreatesLimit := fun {K : CategoryTheory.Functor D E} => CategoryTheory.Functor.Initial.createsLimitOfComp F }
Instances For
The hypotheses also imply that G is final, see final_of_comp_full_faithful'.
The hypotheses also imply that G is initial, see initial_of_comp_full_faithful'.
See also the strictly more general final_comp below.
See also the strictly more general initial_comp below.
See also the strictly more general final_comp below.
See also the strictly more general initial_comp below.
See also the strictly more general final_of_final_comp below.
See also the strictly more general initial_of_initial_comp below.
See also the strictly more general final_iff_comp_final_full_faithful below.
See also the strictly more general final_iff_final_comp below.
See also the strictly more general initial_iff_comp_initial_full_faithful below.
See also the strictly more general initial_iff_initial_comp below.
The hypotheses also imply that F is final, see final_of_comp_full_faithful.
The hypotheses also imply that F is initial, see initial_of_comp_full_faithful.
Final functors preserve filteredness.
This can be seen as a generalization of IsFiltered.of_right_adjoint (which states that right
adjoints preserve filteredness), as right adjoints are always final, see final_of_adjunction.
Final functors preserve filteredness.
This can be seen as a generalization of IsFiltered.of_right_adjoint (which states that right
adjoints preserve filteredness), as right adjoints are always final, see final_of_adjunction.
Initial functors preserve cofilteredness.
This can be seen as a generalization of IsCofiltered.of_left_adjoint (which states that left
adjoints preserve cofilteredness), as right adjoints are always initial,
see initial_of_adjunction.
Initial functors preserve cofilteredness.
This can be seen as a generalization of IsCofiltered.of_left_adjoint (which states that left
adjoints preserve cofilteredness), as right adjoints are always initial,
see initial_of_adjunction.
The functor StructuredArrow.pre X T S is final if T is final.
The functor CostructuredArrow.pre X T S is initial if T is initial.
A prefunctor mapping structured arrows on G to structured arrows on pre F G with their
action on fibers being the identity.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A natural transformation α : F ⟶ G between functors F G : C ⥤ Cat which is is final on each
fiber (α.app X) induces an equivalence of fiberwise colimits of map α ⋙ H and H for each
functor H : Grothendieck G ⥤ Type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The functor Grothendieck.map α for a natural transformation α : F ⟶ G, with
F G : C ⥤ Cat, is final if for each X : C, the functor α.app X is final.
For the full subcategory induced by an object property P on C, to show initiality of
the inclusion functor it is enough to consider arrows to objects outside of the subcategory.