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 ⥤ Cis 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 Fs, 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 Xs, 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))