Creating (co)limits #
We say that F
creates limits of K
if, given any limit cone c
for K ⋙ F
(i.e. below) we can lift it to a cone "above", and further that F
reflects
limits for K
.
Define the lift of a cone: For a cone c
for K ⋙ F
, give a cone for K
which is a lift of c
, i.e. the image of it under F
is (iso) to c
.
We will then use this as part of the definition of creation of limits: every limit cone has a lift.
Note this definition is really only useful when c
is a limit already.
- liftedCone : CategoryTheory.Limits.Cone K
a cone in the source category of the functor
- validLift : F.mapCone self.liftedCone ≅ c
the isomorphism expressing that
liftedCone
lifts the given cone
Instances For
Define the lift of a cocone: For a cocone c
for K ⋙ F
, give a cocone for
K
which is a lift of c
, i.e. the image of it under F
is (iso) to c
.
We will then use this as part of the definition of creation of colimits: every limit cocone has a lift.
Note this definition is really only useful when c
is a colimit already.
- liftedCocone : CategoryTheory.Limits.Cocone K
a cocone in the source category of the functor
- validLift : F.mapCocone self.liftedCocone ≅ c
the isomorphism expressing that
liftedCocone
lifts the given cocone
Instances For
Definition 3.3.1 of [Riehl].
We say that F
creates limits of K
if, given any limit cone c
for K ⋙ F
(i.e. below) we can lift it to a cone "above", and further that F
reflects
limits for K
.
If F
reflects isomorphisms, it suffices to show only that the lifted cone is
a limit - see createsLimitOfReflectsIso
.
- reflects : {c : CategoryTheory.Limits.Cone K} → CategoryTheory.Limits.IsLimit (F.mapCone c) → CategoryTheory.Limits.IsLimit c
- lifts : (c : CategoryTheory.Limits.Cone (K.comp F)) → CategoryTheory.Limits.IsLimit c → CategoryTheory.LiftableCone K F c
any limit cone can be lifted to a cone above
Instances
F
creates limits of shape J
if F
creates the limit of any diagram
K : J ⥤ C
.
- CreatesLimit : {K : CategoryTheory.Functor J C} → CategoryTheory.CreatesLimit K F
Instances
F
creates limits if it creates limits of shape J
for any J
.
- CreatesLimitsOfShape : {J : Type w} → [inst : CategoryTheory.Category.{w', w} J] → CategoryTheory.CreatesLimitsOfShape J F
Instances
F
creates small limits if it creates limits of shape J
for any small J
.
Equations
Instances For
Dual of definition 3.3.1 of [Riehl].
We say that F
creates colimits of K
if, given any limit cocone c
for
K ⋙ F
(i.e. below) we can lift it to a cocone "above", and further that F
reflects limits for K
.
If F
reflects isomorphisms, it suffices to show only that the lifted cocone is
a limit - see createsColimitOfReflectsIso
.
- reflects : {c : CategoryTheory.Limits.Cocone K} → CategoryTheory.Limits.IsColimit (F.mapCocone c) → CategoryTheory.Limits.IsColimit c
- lifts : (c : CategoryTheory.Limits.Cocone (K.comp F)) → CategoryTheory.Limits.IsColimit c → CategoryTheory.LiftableCocone K F c
any limit cocone can be lifted to a cocone above
Instances
F
creates colimits of shape J
if F
creates the colimit of any diagram
K : J ⥤ C
.
- CreatesColimit : {K : CategoryTheory.Functor J C} → CategoryTheory.CreatesColimit K F
Instances
F
creates colimits if it creates colimits of shape J
for any small J
.
- CreatesColimitsOfShape : {J : Type w} → [inst : CategoryTheory.Category.{w', w} J] → CategoryTheory.CreatesColimitsOfShape J F
Instances
F
creates small colimits if it creates colimits of shape J
for any small J
.
Equations
Instances For
liftLimit t
is the cone for K
given by lifting the limit t
for K ⋙ F
.
Equations
- CategoryTheory.liftLimit t = (CategoryTheory.CreatesLimit.lifts c t).liftedCone
Instances For
The lifted cone has an image isomorphic to the original cone.
Equations
- CategoryTheory.liftedLimitMapsToOriginal t = (CategoryTheory.CreatesLimit.lifts c t).validLift
Instances For
The lifted cone is a limit.
Equations
Instances For
If F
creates the limit of K
and K ⋙ F
has a limit, then K
has a limit.
If F
creates limits of shape J
, and D
has limits of shape J
, then
C
has limits of shape J
.
If F
creates limits, and D
has all limits, then C
has all limits.
liftColimit t
is the cocone for K
given by lifting the colimit t
for K ⋙ F
.
Equations
- CategoryTheory.liftColimit t = (CategoryTheory.CreatesColimit.lifts c t).liftedCocone
Instances For
The lifted cocone has an image isomorphic to the original cocone.
Equations
- CategoryTheory.liftedColimitMapsToOriginal t = (CategoryTheory.CreatesColimit.lifts c t).validLift
Instances For
The lifted cocone is a colimit.
Equations
Instances For
If F
creates the limit of K
and K ⋙ F
has a limit, then K
has a limit.
If F
creates colimits of shape J
, and D
has colimits of shape J
, then
C
has colimits of shape J
.
If F
creates colimits, and D
has all colimits, then C
has all colimits.
Equations
- CategoryTheory.reflectsLimitsOfShapeOfCreatesLimitsOfShape F = { reflectsLimit := fun {K : CategoryTheory.Functor J C} => inferInstance }
Equations
- CategoryTheory.reflectsLimitsOfCreatesLimits F = { reflectsLimitsOfShape := fun {J : Type w'} [CategoryTheory.Category.{w, w'} J] => inferInstance }
Equations
- CategoryTheory.reflectsColimitsOfShapeOfCreatesColimitsOfShape F = { reflectsColimit := fun {K : CategoryTheory.Functor J C} => inferInstance }
Equations
- CategoryTheory.reflectsColimitsOfCreatesColimits F = { reflectsColimitsOfShape := fun {J : Type w'} [CategoryTheory.Category.{w, w'} J] => inferInstance }
A helper to show a functor creates limits. In particular, if we can show
that for any limit cone c
for K ⋙ F
, there is a lift of it which is
a limit and F
reflects isomorphisms, then F
creates limits.
Usually, F
creating limits says that any lift of c
is a limit, but
here we only need to show that our particular lift of c
is a limit.
- liftedCone : CategoryTheory.Limits.Cone K
- validLift : F.mapCone self.liftedCone ≅ c
- makesLimit : CategoryTheory.Limits.IsLimit self.liftedCone
the lifted cone is limit
Instances For
A helper to show a functor creates colimits. In particular, if we can show
that for any limit cocone c
for K ⋙ F
, there is a lift of it which is
a limit and F
reflects isomorphisms, then F
creates colimits.
Usually, F
creating colimits says that any lift of c
is a colimit, but
here we only need to show that our particular lift of c
is a colimit.
- liftedCocone : CategoryTheory.Limits.Cocone K
- validLift : F.mapCocone self.liftedCocone ≅ c
- makesColimit : CategoryTheory.Limits.IsColimit self.liftedCocone
the lifted cocone is colimit
Instances For
If F
reflects isomorphisms and we can lift any limit cone to a limit cone,
then F
creates limits.
In particular here we don't need to assume that F reflects limits.
Equations
- CategoryTheory.createsLimitOfReflectsIso h = CategoryTheory.CreatesLimit.mk fun (c : CategoryTheory.Limits.Cone (K.comp F)) (t : CategoryTheory.Limits.IsLimit c) => (h c t).toLiftableCone
Instances For
If F
reflects isomorphisms and we can lift a single limit cone to a limit cone, then F
creates limits. Note that unlike createsLimitOfReflectsIso
, to apply this result it is
necessary to know that K ⋙ F
actually has a limit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F
is fully faithful, to show that F
creates the limit for K
it suffices to exhibit a lift
of a limit cone for K ⋙ F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F
is fully faithful, and HasLimit (K ⋙ F)
, to show that F
creates the limit for K
it suffices to exhibit a lift of the chosen limit cone for K ⋙ F
.
Equations
Instances For
When F
is fully faithful, to show that F
creates the limit for K
it suffices to show that a
limit point is in the essential image of F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F
is fully faithful, and HasLimit (K ⋙ F)
, to show that F
creates the limit for K
it suffices to show that the chosen limit point is in the essential image of F
.
Equations
Instances For
A fully faithful functor that preserves a limit that exists also creates the limit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
F
preserves the limit of K
if it creates the limit and K ⋙ F
has the limit.
Equations
- One or more equations did not get rendered due to their size.
F
preserves the limit of shape J
if it creates these limits and D
has them.
Equations
- CategoryTheory.preservesLimitOfShapeOfCreatesLimitsOfShapeAndHasLimitsOfShape F = { preservesLimit := fun {K : CategoryTheory.Functor J C} => inferInstance }
F
preserves limits if it creates limits and D
has limits.
Equations
- CategoryTheory.preservesLimitsOfCreatesLimitsAndHasLimits F = { preservesLimitsOfShape := fun {J : Type w'} [CategoryTheory.Category.{w, w'} J] => inferInstance }
If F
reflects isomorphisms and we can lift any colimit cocone to a colimit cocone,
then F
creates colimits.
In particular here we don't need to assume that F reflects colimits.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F
reflects isomorphisms and we can lift a single colimit cocone to a colimit cocone, then
F
creates limits. Note that unlike createsColimitOfReflectsIso
, to apply this result it is
necessary to know that K ⋙ F
actually has a colimit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F
is fully faithful, to show that F
creates the colimit for K
it suffices to exhibit a
lift of a colimit cocone for K ⋙ F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F
is fully faithful, and HasColimit (K ⋙ F)
, to show that F
creates the colimit for K
it suffices to exhibit a lift of the chosen colimit cocone for K ⋙ F
.
Equations
Instances For
A fully faithful functor that preserves a colimit that exists also creates the colimit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F
is fully faithful, to show that F
creates the colimit for K
it suffices to show that
a colimit point is in the essential image of F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When F
is fully faithful, and HasColimit (K ⋙ F)
, to show that F
creates the colimit for K
it suffices to show that the chosen colimit point is in the essential image of F
.
Equations
Instances For
F
preserves the colimit of K
if it creates the colimit and K ⋙ F
has the colimit.
Equations
- One or more equations did not get rendered due to their size.
F
preserves the colimit of shape J
if it creates these colimits and D
has them.
Equations
- CategoryTheory.preservesColimitOfShapeOfCreatesColimitsOfShapeAndHasColimitsOfShape F = { preservesColimit := fun {K : CategoryTheory.Functor J C} => inferInstance }
F
preserves limits if it creates limits and D
has limits.
Equations
- CategoryTheory.preservesColimitsOfCreatesColimitsAndHasColimits F = { preservesColimitsOfShape := fun {J : Type w'} [CategoryTheory.Category.{w, w'} J] => inferInstance }
Transfer creation of limits along a natural isomorphism in the diagram.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F
creates the limit of K
and F ≅ G
, then G
creates the limit of K
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F
creates limits of shape J
and F ≅ G
, then G
creates limits of shape J
.
Equations
- CategoryTheory.createsLimitsOfShapeOfNatIso h = { CreatesLimit := fun {K : CategoryTheory.Functor J C} => CategoryTheory.createsLimitOfNatIso h }
Instances For
If F
creates limits and F ≅ G
, then G
creates limits.
Equations
- CategoryTheory.createsLimitsOfNatIso h = { CreatesLimitsOfShape := fun {J : Type w'} [CategoryTheory.Category.{w, w'} J] => CategoryTheory.createsLimitsOfShapeOfNatIso h }
Instances For
Transfer creation of colimits along a natural isomorphism in the diagram.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F
creates the colimit of K
and F ≅ G
, then G
creates the colimit of K
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F
creates colimits of shape J
and F ≅ G
, then G
creates colimits of shape J
.
Equations
- CategoryTheory.createsColimitsOfShapeOfNatIso h = { CreatesColimit := fun {K : CategoryTheory.Functor J C} => CategoryTheory.createsColimitOfNatIso h }
Instances For
If F
creates colimits and F ≅ G
, then G
creates colimits.
Equations
- CategoryTheory.createsColimitsOfNatIso h = { CreatesColimitsOfShape := fun {J : Type w'} [CategoryTheory.Category.{w, w'} J] => CategoryTheory.createsColimitsOfShapeOfNatIso h }
Instances For
If F creates the limit of K, any cone lifts to a limit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F creates the colimit of K, any cocone lifts to a colimit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Any cone lifts through the identity functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The identity functor creates all limits.
Equations
- One or more equations did not get rendered due to their size.
Any cocone lifts through the identity functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The identity functor creates all colimits.
Equations
- One or more equations did not get rendered due to their size.
Satisfy the inhabited linter
Equations
- CategoryTheory.inhabitedLiftableCone c = { default := CategoryTheory.idLiftsCone c }
Equations
- CategoryTheory.inhabitedLiftableCocone c = { default := CategoryTheory.idLiftsCocone c }
Satisfy the inhabited linter
Equations
- CategoryTheory.inhabitedLiftsToLimit K F c t = { default := CategoryTheory.liftsToLimitOfCreates K F c t }
Equations
- CategoryTheory.inhabitedLiftsToColimit K F c t = { default := CategoryTheory.liftsToColimitOfCreates K F c t }
Equations
- One or more equations did not get rendered due to their size.
Equations
- CategoryTheory.compCreatesLimitsOfShape F G = { CreatesLimit := fun {K : CategoryTheory.Functor J C} => inferInstance }
Equations
- CategoryTheory.compCreatesLimits F G = { CreatesLimitsOfShape := fun {J : Type w'} [CategoryTheory.Category.{w, w'} J] => inferInstance }
Equations
- One or more equations did not get rendered due to their size.
Equations
- CategoryTheory.compCreatesColimitsOfShape F G = { CreatesColimit := fun {K : CategoryTheory.Functor J C} => inferInstance }
Equations
- CategoryTheory.compCreatesColimits F G = { CreatesColimitsOfShape := fun {J : Type w'} [CategoryTheory.Category.{w, w'} J] => inferInstance }