Limits and the category of (co)cones #
This files contains results that stem from the limit API. For the definition and the category
instance of Cone
, please refer to CategoryTheory/Limits/Cones.lean
.
Main results #
- The category of cones on
F : J ⥤ C
is equivalent to the categoryCostructuredArrow (const J) F
. - A cone is limiting iff it is terminal in the category of cones. As a corollary, an equivalence of categories of cones preserves limiting properties.
Given a cone c
over F
, we can interpret the legs of c
as structured arrows
c.pt ⟶ F.obj -
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F
has a limit, then the limit projections can be interpreted as structured arrows
limit F ⟶ F.obj -
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Cone.toStructuredArrow
can be expressed in terms of Functor.toStructuredArrow
.
Equations
- c.toStructuredArrowIsoToStructuredArrow = CategoryTheory.Iso.refl c.toStructuredArrow
Instances For
Functor.toStructuredArrow
can be expressed in terms of Cone.toStructuredArrow
.
Equations
- G.toStructuredArrowIsoToStructuredArrow X F f h = CategoryTheory.Iso.refl (G.toStructuredArrow X F f ⋯)
Instances For
Interpreting the legs of a cone as a structured arrow and then forgetting the arrow again does nothing.
Equations
- c.toStructuredArrowCompProj = CategoryTheory.Iso.refl (c.toStructuredArrow.comp (CategoryTheory.StructuredArrow.proj c.pt F))
Instances For
Interpreting the legs of a cone as a structured arrow, interpreting this arrow as an arrow over the cone point, and finally forgetting the arrow is the same as just applying the functor the cone was over.
Equations
- c.toStructuredArrowCompToUnderCompForget = CategoryTheory.Iso.refl (c.toStructuredArrow.comp ((CategoryTheory.StructuredArrow.toUnder c.pt F).comp (CategoryTheory.Under.forget c.pt)))
Instances For
A cone c
on F : J ⥤ C
lifts to a cone in Over c.pt
with cone point 𝟙 c.pt
.
Equations
- c.toUnder = { pt := CategoryTheory.Under.mk (CategoryTheory.CategoryStruct.id c.pt), π := { app := fun (j : J) => CategoryTheory.Under.homMk (c.π.app j) ⋯, naturality := ⋯ } }
Instances For
The limit cone for F : J ⥤ C
lifts to a cocone in Under (limit F)
with cone point
𝟙 (limit F)
. This is automatically also a limit cone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
c.toUnder
is a lift of c
under the forgetful functor.
Equations
- c.mapConeToUnder = CategoryTheory.Iso.refl ((CategoryTheory.Under.forget c.pt).mapCone c.toUnder)
Instances For
Given a diagram of StructuredArrow X F
s, we may obtain a cone with cone point X
.
Equations
- CategoryTheory.Limits.Cone.fromStructuredArrow F G = { pt := X, π := { app := fun (j : J) => (G.obj j).hom, naturality := ⋯ } }
Instances For
Given a cone c : Cone K
and a map f : X ⟶ F.obj c.X
, we can construct a cone of structured
arrows over X
with f
as the cone point.
Equations
- c.toStructuredArrowCone F f = { pt := CategoryTheory.StructuredArrow.mk f, π := { app := fun (j : J) => CategoryTheory.StructuredArrow.homMk (c.π.app j) ⋯, naturality := ⋯ } }
Instances For
Construct an object of the category (Δ ↓ F)
from a cone on F
. This is part of an
equivalence, see Cone.equivCostructuredArrow
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a cone on F
from an object of the category (Δ ↓ F)
. This is part of an
equivalence, see Cone.equivCostructuredArrow
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The category of cones on F
is just the comma category (Δ ↓ F)
, where Δ
is the constant
functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A cone is a limit cone iff it is terminal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If G : Cone F ⥤ Cone F'
preserves terminal objects, it preserves limit cones.
Equations
- CategoryTheory.Limits.IsLimit.ofPreservesConeTerminal G hc = (G.obj c).isLimitEquivIsTerminal.symm (CategoryTheory.Limits.IsTerminal.isTerminalObj G c (c.isLimitEquivIsTerminal hc))
Instances For
If G : Cone F ⥤ Cone F'
reflects terminal objects, it reflects limit cones.
Equations
- CategoryTheory.Limits.IsLimit.ofReflectsConeTerminal G hc = c.isLimitEquivIsTerminal.symm (CategoryTheory.Limits.IsTerminal.isTerminalOfObj G c ((G.obj c).isLimitEquivIsTerminal hc))
Instances For
Given a cocone c
over F
, we can interpret the legs of c
as costructured arrows
F.obj - ⟶ c.pt
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F
has a colimit, then the colimit inclusions can be interpreted as costructured arrows
F.obj - ⟶ colimit F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Cocone.toCostructuredArrow
can be expressed in terms of Functor.toCostructuredArrow
.
Equations
- c.toCostructuredArrowIsoToCostructuredArrow = CategoryTheory.Iso.refl c.toCostructuredArrow
Instances For
Functor.toCostructuredArrow
can be expressed in terms of Cocone.toCostructuredArrow
.
Equations
- G.toCostructuredArrowIsoToCostructuredArrow F X f h = CategoryTheory.Iso.refl (G.toCostructuredArrow F X f ⋯)
Instances For
Interpreting the legs of a cocone as a costructured arrow and then forgetting the arrow again does nothing.
Equations
- c.toCostructuredArrowCompProj = CategoryTheory.Iso.refl (c.toCostructuredArrow.comp (CategoryTheory.CostructuredArrow.proj F c.pt))
Instances For
Interpreting the legs of a cocone as a costructured arrow, interpreting this arrow as an arrow over the cocone point, and finally forgetting the arrow is the same as just applying the functor the cocone was over.
Equations
- c.toCostructuredArrowCompToOverCompForget = CategoryTheory.Iso.refl (c.toCostructuredArrow.comp ((CategoryTheory.CostructuredArrow.toOver F c.pt).comp (CategoryTheory.Over.forget c.pt)))
Instances For
A cocone c
on F : J ⥤ C
lifts to a cocone in Over c.pt
with cone point 𝟙 c.pt
.
Equations
- c.toOver = { pt := CategoryTheory.Over.mk (CategoryTheory.CategoryStruct.id c.pt), ι := { app := fun (j : J) => CategoryTheory.Over.homMk (c.ι.app j) ⋯, naturality := ⋯ } }
Instances For
The colimit cocone for F : J ⥤ C
lifts to a cocone in Over (colimit F)
with cone point
𝟙 (colimit F)
. This is automatically also a colimit cocone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
c.toOver
is a lift of c
under the forgetful functor.
Equations
- c.mapCoconeToOver = CategoryTheory.Iso.refl ((CategoryTheory.Over.forget c.pt).mapCocone c.toOver)
Instances For
Given a diagram CostructuredArrow F X
s, we may obtain a cocone with cone point X
.
Equations
- CategoryTheory.Limits.Cocone.fromCostructuredArrow F G = { pt := X, ι := { app := fun (j : J) => (G.obj j).hom, naturality := ⋯ } }
Instances For
Given a cocone c : Cocone K
and a map f : F.obj c.X ⟶ X
, we can construct a cocone of
costructured arrows over X
with f
as the cone point.
Equations
- c.toCostructuredArrowCocone F f = { pt := CategoryTheory.CostructuredArrow.mk f, ι := { app := fun (j : J) => CategoryTheory.CostructuredArrow.homMk (c.ι.app j) ⋯, naturality := ⋯ } }
Instances For
Construct an object of the category (F ↓ Δ)
from a cocone on F
. This is part of an
equivalence, see Cocone.equivStructuredArrow
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a cocone on F
from an object of the category (F ↓ Δ)
. This is part of an
equivalence, see Cocone.equivStructuredArrow
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The category of cocones on F
is just the comma category (F ↓ Δ)
, where Δ
is the constant
functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A cocone is a colimit cocone iff it is initial.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If G : Cocone F ⥤ Cocone F'
preserves initial objects, it preserves colimit cocones.
Equations
- CategoryTheory.Limits.IsColimit.ofPreservesCoconeInitial G hc = (G.obj c).isColimitEquivIsInitial.symm (CategoryTheory.Limits.IsInitial.isInitialObj G c (c.isColimitEquivIsInitial hc))
Instances For
If G : Cocone F ⥤ Cocone F'
reflects initial objects, it reflects colimit cocones.
Equations
- CategoryTheory.Limits.IsColimit.ofReflectsCoconeInitial G hc = c.isColimitEquivIsInitial.symm (CategoryTheory.Limits.IsInitial.isInitialOfObj G c ((G.obj c).isColimitEquivIsInitial hc))