(Co)limits in functor categories. #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We show that if D
has limits, then the functor category C ⥤ D
also has limits
(category_theory.limits.functor_category_has_limits
),
and the evaluation functors preserve limits
(category_theory.limits.evaluation_preserves_limits
)
(and similarly for colimits).
We also show that F : D ⥤ K ⥤ C
preserves (co)limits if it does so for each k : K
(category_theory.limits.preserves_limits_of_evaluation
and
category_theory.limits.preserves_colimits_of_evaluation
).
The evaluation functors jointly reflect limits: that is, to show a cone is a limit of F
it suffices to show that each evaluation cone is a limit. In other words, to prove a cone is
limiting you can show it's pointwise limiting.
Equations
- category_theory.limits.evaluation_jointly_reflects_limits c t = {lift := λ (s : category_theory.limits.cone F), {app := λ (k : K), (t k).lift {X := s.X.obj k, π := category_theory.whisker_right s.π ((category_theory.evaluation K C).obj k)}, naturality' := _}, fac' := _, uniq' := _}
Given a functor F
and a collection of limit cones for each diagram X ↦ F X k
, we can stitch
them together to give a cone for the diagram F
.
combined_is_limit
shows that the new cone is limiting, and eval_combined
shows it is
(essentially) made up of the original cones.
Equations
- category_theory.limits.combine_cones F c = {X := {obj := λ (k : K), (c k).cone.X, map := λ (k₁ k₂ : K) (f : k₁ ⟶ k₂), (c k₂).is_limit.lift {X := (c k₁).cone.X, π := (c k₁).cone.π ≫ F.flip.map f}, map_id' := _, map_comp' := _}, π := {app := λ (j : J), {app := λ (k : K), (c k).cone.π.app j, naturality' := _}, naturality' := _}}
The stitched together cones each project down to the original given cones (up to iso).
Equations
Stitching together limiting cones gives a limiting cone.
Equations
The evaluation functors jointly reflect colimits: that is, to show a cocone is a colimit of F
it suffices to show that each evaluation cocone is a colimit. In other words, to prove a cocone is
colimiting you can show it's pointwise colimiting.
Equations
- category_theory.limits.evaluation_jointly_reflects_colimits c t = {desc := λ (s : category_theory.limits.cocone F), {app := λ (k : K), (t k).desc {X := s.X.obj k, ι := category_theory.whisker_right s.ι ((category_theory.evaluation K C).obj k)}, naturality' := _}, fac' := _, uniq' := _}
Given a functor F
and a collection of colimit cocones for each diagram X ↦ F X k
, we can stitch
them together to give a cocone for the diagram F
.
combined_is_colimit
shows that the new cocone is colimiting, and eval_combined
shows it is
(essentially) made up of the original cocones.
Equations
- category_theory.limits.combine_cocones F c = {X := {obj := λ (k : K), (c k).cocone.X, map := λ (k₁ k₂ : K) (f : k₁ ⟶ k₂), (c k₁).is_colimit.desc {X := (c k₂).cocone.X, ι := F.flip.map f ≫ (c k₂).cocone.ι}, map_id' := _, map_comp' := _}, ι := {app := λ (j : J), {app := λ (k : K), (c k).cocone.ι.app j, naturality' := _}, naturality' := _}}
The stitched together cocones each project down to the original given cocones (up to iso).
Stitching together colimiting cocones gives a colimiting cocone.
Equations
Equations
- category_theory.limits.evaluation_preserves_limits_of_shape k = {preserves_limit := λ (F : J ⥤ K ⥤ C), category_theory.limits.preserves_limit_of_preserves_limit_cone (category_theory.limits.combined_is_limit F (λ (k : K), category_theory.limits.get_limit_cone (F ⋙ (category_theory.evaluation K C).obj k))) ((category_theory.limits.limit.is_limit (F ⋙ (category_theory.evaluation K C).obj k)).of_iso_limit (category_theory.limits.evaluate_combined_cones F (λ (k : K), category_theory.limits.get_limit_cone (F ⋙ (category_theory.evaluation K C).obj k)) k).symm)}
If F : J ⥤ K ⥤ C
is a functor into a functor category which has a limit,
then the evaluation of that limit at k
is the limit of the evaluations of F.obj j
at k
.
Equations
- category_theory.limits.evaluation_preserves_colimits_of_shape k = {preserves_colimit := λ (F : J ⥤ K ⥤ C), category_theory.limits.preserves_colimit_of_preserves_colimit_cocone (category_theory.limits.combined_is_colimit F (λ (k : K), category_theory.limits.get_colimit_cocone (F ⋙ (category_theory.evaluation K C).obj k))) ((category_theory.limits.colimit.is_colimit (F ⋙ (category_theory.evaluation K C).obj k)).of_iso_colimit (category_theory.limits.evaluate_combined_cocones F (λ (k : K), category_theory.limits.get_colimit_cocone (F ⋙ (category_theory.evaluation K C).obj k)) k).symm)}
If F : J ⥤ K ⥤ C
is a functor into a functor category which has a colimit,
then the evaluation of that colimit at k
is the colimit of the evaluations of F.obj j
at k
.
Equations
F : D ⥤ K ⥤ C
preserves the limit of some G : J ⥤ D
if it does for each k : K
.
Equations
- category_theory.limits.preserves_limit_of_evaluation F G H = {preserves := λ (c : category_theory.limits.cone G) (hc : category_theory.limits.is_limit c), category_theory.limits.evaluation_jointly_reflects_limits (F.map_cone c) (λ (X : K), id (category_theory.limits.preserves_limit.preserves hc))}
F : D ⥤ K ⥤ C
preserves limits of shape J
if it does for each k : K
.
Equations
F : D ⥤ K ⥤ C
preserves all limits if it does for each k : K
.
Equations
The constant functor C ⥤ (D ⥤ C)
preserves limits.
F : D ⥤ K ⥤ C
preserves the colimit of some G : J ⥤ D
if it does for each k : K
.
Equations
- category_theory.limits.preserves_colimit_of_evaluation F G H = {preserves := λ (c : category_theory.limits.cocone G) (hc : category_theory.limits.is_colimit c), category_theory.limits.evaluation_jointly_reflects_colimits (F.map_cocone c) (λ (X : K), id (category_theory.limits.preserves_colimit.preserves hc))}
F : D ⥤ K ⥤ C
preserves all colimits of shape J
if it does for each k : K
.
Equations
F : D ⥤ K ⥤ C
preserves all colimits if it does for each k : K
.
Equations
- category_theory.limits.preserves_colimits_of_evaluation F H = {preserves_colimits_of_shape := λ (L : Type w) (hL : category_theory.category L), category_theory.limits.preserves_colimits_of_shape_of_evaluation F L (λ (k : K), category_theory.limits.preserves_colimits_of_size.preserves_colimits_of_shape)}
The constant functor C ⥤ (D ⥤ C)
preserves colimits.
The limit of a diagram F : J ⥤ K ⥤ C
is isomorphic to the functor given by
the individual limits on objects.
A variant of limit_iso_flip_comp_lim
where the arguemnts of F
are flipped.
For a functor G : J ⥤ K ⥤ C
, its limit K ⥤ C
is given by (G' : K ⥤ J ⥤ C) ⋙ lim
.
Note that this does not require K
to be small.
The colimit of a diagram F : J ⥤ K ⥤ C
is isomorphic to the functor given by
the individual colimits on objects.
A variant of colimit_iso_flip_comp_colim
where the arguemnts of F
are flipped.
For a functor G : J ⥤ K ⥤ C
, its colimit K ⥤ C
is given by (G' : K ⥤ J ⥤ C) ⋙ colim
.
Note that this does not require K
to be small.