Limits and colimits in the category of (co)algebras #
This file shows that the forgetful functor forget T : Algebra T ⥤ C
for a monad T : C ⥤ C
creates limits and creates any colimits which T
preserves.
This is used to show that Algebra T
has any limits which C
has, and any colimits which C
has
and T
preserves.
This is generalised to the case of a monadic functor D ⥤ C
.
Dually, this file shows that the forgetful functor forget T : Coalgebra T ⥤ C
for a
comonad T : C ⥤ C
creates colimits and creates any limits which T
preserves.
This is used to show that Coalgebra T
has any colimits which C
has, and any limits which C
has
and T
preserves.
This is generalised to the case of a comonadic functor D ⥤ C
.
(Impl) The natural transformation used to define the new cone
Equations
- CategoryTheory.Monad.ForgetCreatesLimits.γ D = { app := fun (j : J) => (D.obj j).a, naturality := ⋯ }
Instances For
(Impl) This new cone is used to construct the algebra structure
Equations
- One or more equations did not get rendered due to their size.
Instances For
The algebra structure which will be the apex of the new limit cone for D
.
Equations
- CategoryTheory.Monad.ForgetCreatesLimits.conePoint D c t = { A := c.pt, a := t.lift (CategoryTheory.Monad.ForgetCreatesLimits.newCone D c), unit := ⋯, assoc := ⋯ }
Instances For
(Impl) Construct the lifted cone in Algebra T
which will be limiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
(Impl) Prove that the lifted cone is limiting.
Equations
- CategoryTheory.Monad.ForgetCreatesLimits.liftedConeIsLimit D c t = { lift := fun (s : CategoryTheory.Limits.Cone D) => { f := t.lift (T.forget.mapCone s), h := ⋯ }, fac := ⋯, uniq := ⋯ }
Instances For
The forgetful functor from the Eilenberg-Moore category creates limits.
Equations
- One or more equations did not get rendered due to their size.
D ⋙ forget T
has a limit, then D
has a limit.
(Impl)
The natural transformation given by the algebra structure maps, used to construct a cocone c
with
point colimit (D ⋙ forget T)
.
Equations
- CategoryTheory.Monad.ForgetCreatesColimits.γ = { app := fun (j : J) => (D.obj j).a, naturality := ⋯ }
Instances For
(Impl)
A cocone for the diagram (D ⋙ forget T) ⋙ T
found by composing the natural transformation γ
with the colimiting cocone for D ⋙ forget T
.
Equations
- CategoryTheory.Monad.ForgetCreatesColimits.newCocone c = { pt := c.pt, ι := CategoryTheory.CategoryStruct.comp CategoryTheory.Monad.ForgetCreatesColimits.γ c.ι }
Instances For
(Impl)
Define the map λ : TL ⟶ L
, which will serve as the structure of the coalgebra on L
, and
we will show is the colimiting object. We use the cocone constructed by c
and the fact that
T
preserves colimits to produce this morphism.
Equations
Instances For
(Impl) The key property defining the map λ : TL ⟶ L
.
(Impl)
Construct the colimiting algebra from the map λ : TL ⟶ L
given by lambda
. We are required to
show it satisfies the two algebra laws, which follow from the algebra laws for the image of D
and
our commuting
lemma.
Equations
- CategoryTheory.Monad.ForgetCreatesColimits.coconePoint c t = { A := c.pt, a := CategoryTheory.Monad.ForgetCreatesColimits.lambda c t, unit := ⋯, assoc := ⋯ }
Instances For
(Impl) Construct the lifted cocone in Algebra T
which will be colimiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
(Impl) Prove that the lifted cocone is colimiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The forgetful functor from the Eilenberg-Moore category for a monad creates any colimit which the monad itself preserves.
Equations
- One or more equations did not get rendered due to their size.
Equations
- CategoryTheory.Monad.forgetCreatesColimitsOfShape = { CreatesColimit := fun {K : CategoryTheory.Functor J T.Algebra} => inferInstance }
Equations
- CategoryTheory.Monad.forgetCreatesColimits = { CreatesColimitsOfShape := fun {J : Type ?u.34} [CategoryTheory.Category.{?u.35, ?u.34} J] => inferInstance }
For D : J ⥤ Algebra T
, D ⋙ forget T
has a colimit, then D
has a colimit provided colimits
of shape J
are preserved by T
.
Any monadic functor creates limits.
Equations
Instances For
The forgetful functor from the Eilenberg-Moore category for a monad creates any colimit which the monad itself preserves.
Equations
Instances For
A monadic functor creates any colimits of shapes it preserves.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A monadic functor creates colimits if it preserves colimits.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If C
has limits of shape J
then any reflective subcategory has limits of shape J
.
If C
has limits then any reflective subcategory has limits.
If C
has colimits of shape J
then any reflective subcategory has colimits of shape J
.
If C
has colimits then any reflective subcategory has colimits.
The reflector always preserves terminal objects. Note this in general doesn't apply to any other limit.
(Impl) The natural transformation used to define the new cocone
Equations
- CategoryTheory.Comonad.ForgetCreatesColimits'.γ D = { app := fun (j : J) => (D.obj j).a, naturality := ⋯ }
Instances For
(Impl) This new cocone is used to construct the coalgebra structure
Equations
- One or more equations did not get rendered due to their size.
Instances For
The coalgebra structure which will be the point of the new colimit cone for D
.
Equations
- CategoryTheory.Comonad.ForgetCreatesColimits'.coconePoint D c t = { A := c.pt, a := t.desc (CategoryTheory.Comonad.ForgetCreatesColimits'.newCocone D c), counit := ⋯, coassoc := ⋯ }
Instances For
(Impl) Construct the lifted cocone in Coalgebra T
which will be colimiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
(Impl) Prove that the lifted cocone is colimiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The forgetful functor from the Eilenberg-Moore category creates colimits.
Equations
- One or more equations did not get rendered due to their size.
If D ⋙ forget T
has a colimit, then D
has a colimit.
(Impl)
The natural transformation given by the coalgebra structure maps, used to construct a cone c
with
point limit (D ⋙ forget T)
.
Equations
- CategoryTheory.Comonad.ForgetCreatesLimits'.γ = { app := fun (j : J) => (D.obj j).a, naturality := ⋯ }
Instances For
(Impl)
A cone for the diagram (D ⋙ forget T) ⋙ T
found by composing the natural transformation γ
with the limiting cone for D ⋙ forget T
.
Equations
- CategoryTheory.Comonad.ForgetCreatesLimits'.newCone c = { pt := c.pt, π := CategoryTheory.CategoryStruct.comp c.π CategoryTheory.Comonad.ForgetCreatesLimits'.γ }
Instances For
(Impl)
Define the map λ : L ⟶ TL
, which will serve as the structure of the algebra on L
, and
we will show is the limiting object. We use the cone constructed by c
and the fact that
T
preserves limits to produce this morphism.
Equations
Instances For
(Impl) The key property defining the map λ : L ⟶ TL
.
(Impl)
Construct the limiting coalgebra from the map λ : L ⟶ TL
given by lambda
. We are required to
show it satisfies the two coalgebra laws, which follow from the coalgebra laws for the image of D
and our commuting
lemma.
Equations
- CategoryTheory.Comonad.ForgetCreatesLimits'.conePoint c t = { A := c.pt, a := CategoryTheory.Comonad.ForgetCreatesLimits'.lambda c t, counit := ⋯, coassoc := ⋯ }
Instances For
(Impl) Construct the lifted cone in Coalgebra T
which will be limiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
(Impl) Prove that the lifted cone is limiting.
Equations
- CategoryTheory.Comonad.ForgetCreatesLimits'.liftedConeIsLimit c t = { lift := fun (s : CategoryTheory.Limits.Cone D) => { f := t.lift (T.forget.mapCone s), h := ⋯ }, fac := ⋯, uniq := ⋯ }
Instances For
The forgetful functor from the Eilenberg-Moore category for a comonad creates any limit which the comonad itself preserves.
Equations
- One or more equations did not get rendered due to their size.
Equations
- CategoryTheory.Comonad.forgetCreatesLimitsOfShape = { CreatesLimit := fun {K : CategoryTheory.Functor J T.Coalgebra} => inferInstance }
Equations
- CategoryTheory.Comonad.forgetCreatesLimits = { CreatesLimitsOfShape := fun {J : Type ?u.34} [CategoryTheory.Category.{?u.35, ?u.34} J] => inferInstance }
For D : J ⥤ Coalgebra T
, D ⋙ forget T
has a limit, then D
has a limit provided limits
of shape J
are preserved by T
.
Any comonadic functor creates colimits.
Equations
Instances For
The forgetful functor from the Eilenberg-Moore category for a comonad creates any limit which the comonad itself preserves.
Equations
Instances For
A comonadic functor creates any limits of shapes it preserves.
Equations
- CategoryTheory.comonadicCreatesLimitsOfShapeOfPreservesLimitsOfShape R = { CreatesLimit := fun {K : CategoryTheory.Functor J D} => CategoryTheory.comonadicCreatesLimitOfPreservesLimit R K }
Instances For
A comonadic functor creates limits if it preserves limits.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If C
has colimits of shape J
then any coreflective subcategory has colimits of shape J
.
If C
has colimits then any coreflective subcategory has colimits.
If C
has limits of shape J
then any coreflective subcategory has limits of shape J
.
If C
has limits then any coreflective subcategory has limits.
The coreflector always preserves initial objects. Note this in general doesn't apply to any other colimit.