Limits and colimits in comma categories #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We build limits in the comma category comma L R
provided that the two source categories have
limits and R
preserves them.
This is used to construct limits in the arrow category, structured arrow category and under
category, and show that the appropriate forgetful functors create limits.
The duals of all the above are also given.
(Implementation). An auxiliary cone which is useful in order to construct limits in the comma category.
Equations
If R
preserves the appropriate limit, then given a cone for F ⋙ fst L R : J ⥤ L
and a
limit cone for F ⋙ snd L R : J ⥤ R
we can build a cone for F
which will turn out to be a limit
cone.
Equations
Provided that R
preserves the appropriate limit, then the cone in cone_of_preserves
is a
limit.
Equations
- category_theory.comma.cone_of_preserves_is_limit F t₁ t₂ = {lift := λ (s : category_theory.limits.cone F), {left := t₁.lift ((category_theory.comma.fst L R).map_cone s), right := t₂.lift ((category_theory.comma.snd L R).map_cone s), w' := _}, fac' := _, uniq' := _}
(Implementation). An auxiliary cocone which is useful in order to construct colimits in the comma category.
Equations
If L
preserves the appropriate colimit, then given a colimit cocone for F ⋙ fst L R : J ⥤ L
and
a cocone for F ⋙ snd L R : J ⥤ R
we can build a cocone for F
which will turn out to be a
colimit cocone.
Equations
- category_theory.comma.cocone_of_preserves F t₁ c₂ = {X := {left := c₁.X, right := c₂.X, hom := (category_theory.limits.is_colimit_of_preserves L t₁).desc (category_theory.comma.colimit_auxiliary_cocone F c₂)}, ι := {app := λ (j : J), {left := c₁.ι.app j, right := c₂.ι.app j, w' := _}, naturality' := _}}
Provided that L
preserves the appropriate colimit, then the cocone in cocone_of_preserves
is
a colimit.
Equations
- category_theory.comma.cocone_of_preserves_is_colimit F t₁ t₂ = {desc := λ (s : category_theory.limits.cocone F), {left := t₁.desc ((category_theory.comma.fst L R).map_cocone s), right := t₂.desc ((category_theory.comma.snd L R).map_cocone s), w' := _}, fac' := _, uniq' := _}
Equations
- category_theory.structured_arrow.creates_limit F = category_theory.creates_limit_of_reflects_iso (λ (c : category_theory.limits.cone (F ⋙ category_theory.structured_arrow.proj X G)) (t : category_theory.limits.is_limit c), {to_liftable_cone := {lifted_cone := category_theory.comma.cone_of_preserves F category_theory.limits.punit_cone t, valid_lift := category_theory.limits.cones.ext (category_theory.iso.refl ((category_theory.structured_arrow.proj X G).map_cone (category_theory.comma.cone_of_preserves F category_theory.limits.punit_cone t)).X) _}, makes_limit := category_theory.comma.cone_of_preserves_is_limit F category_theory.limits.punit_cone_is_limit t})
Equations
Equations
- category_theory.costructured_arrow.creates_colimit F = category_theory.creates_colimit_of_reflects_iso (λ (c : category_theory.limits.cocone (F ⋙ category_theory.costructured_arrow.proj G X)) (t : category_theory.limits.is_colimit c), {to_liftable_cocone := {lifted_cocone := category_theory.comma.cocone_of_preserves F t category_theory.limits.punit_cocone, valid_lift := category_theory.limits.cocones.ext (category_theory.iso.refl ((category_theory.costructured_arrow.proj G X).map_cocone (category_theory.comma.cocone_of_preserves F t category_theory.limits.punit_cocone)).X) _}, makes_colimit := category_theory.comma.cocone_of_preserves_is_colimit F t category_theory.limits.punit_cocone_is_colimit})