Kan extensions #
The basic definitions for Kan extensions of functors is introduced in this file. Part of API
is parallel to the definitions for bicategories (see CategoryTheory.Bicategory.Kan.IsKan
).
(The bicategory API cannot be used directly here because it would not allow the universe
polymorphism which is necessary for some applications.)
Given a natural transformation α : L ⋙ F' ⟶ F
, we define the property
F'.IsRightKanExtension α
which expresses that (F', α)
is a right Kan
extension of F
along L
, i.e. that it is a terminal object in a
category RightExtension L F
of costructured arrows. The condition
F'.IsLeftKanExtension α
for α : F ⟶ L ⋙ F'
is defined similarly.
We also introduce typeclasses HasRightKanExtension L F
and HasLeftKanExtension L F
which assert the existence of a right or left Kan extension, and chosen Kan extensions
are obtained as leftKanExtension L F
and rightKanExtension L F
.
References #
- https://ncatlab.org/nlab/show/Kan+extension
Given two functors L : C ⥤ D
and F : C ⥤ H
, this is the category of functors
F' : H ⥤ D
equipped with a natural transformation L ⋙ F' ⟶ F
.
Equations
- L.RightExtension F = CategoryTheory.CostructuredArrow ((CategoryTheory.whiskeringLeft C D H).obj L) F
Given two functors L : C ⥤ D
and F : C ⥤ H
, this is the category of functors
F' : H ⥤ D
equipped with a natural transformation F ⟶ L ⋙ F'
.
Equations
- L.LeftExtension F = CategoryTheory.StructuredArrow F ((CategoryTheory.whiskeringLeft C D H).obj L)
Constructor for objects of the category Functor.RightExtension L F
.
Constructor for objects of the category Functor.LeftExtension L F
.
Given α : L ⋙ F' ⟶ F
, the property F'.IsRightKanExtension α
asserts that
(F', α)
is a terminal object in the category RightExtension L F
, i.e. that (F', α)
is a right Kan extension of F
along L
.
- nonempty_isUniversal : Nonempty (CostructuredArrow.IsUniversal (RightExtension.mk F' α))
Instances
- CategoryTheory.Functor.instIsRightKanExtensionObjRanAppRanCounit
- CategoryTheory.Functor.instIsRightKanExtensionPointwiseRightKanExtensionPointwiseRightKanExtensionCounit
- CategoryTheory.Functor.instIsRightKanExtensionRightKanExtensionRightKanExtensionCounit
- CategoryTheory.SimplicialObject.instIsRightKanExtensionOppositeTruncatedSimplexCategoryObjCoskAppTruncatedCounitCoskAdjTruncation
If (F', α)
is a right Kan extension of F
along L
, then (F', α)
is a terminal object
in the category RightExtension L F
.
Equations
If (F', α)
is a right Kan extension of F
along L
and β : L ⋙ G ⟶ F
is
a natural transformation, this is the induced morphism G ⟶ F'
.
Equations
- F'.liftOfIsRightKanExtension α G β = (F'.isUniversalOfIsRightKanExtension α).lift (CategoryTheory.Functor.RightExtension.mk G β)
If (F', α)
is a right Kan extension of F
along L
, then this
is the induced bijection (G ⟶ F') ≃ (L ⋙ G ⟶ F)
for all G
.
Equations
- One or more equations did not get rendered due to their size.
Right Kan extensions of isomorphic functors are isomorphic.
Equations
- One or more equations did not get rendered due to their size.
Two right Kan extensions are (canonically) isomorphic.
Equations
- F'.rightKanExtensionUnique α F'' α' = F'.rightKanExtensionUniqueOfIso α (CategoryTheory.Iso.refl F) F'' α'
Given α : F ⟶ L ⋙ F'
, the property F'.IsLeftKanExtension α
asserts that
(F', α)
is an initial object in the category LeftExtension L F
, i.e. that (F', α)
is a left Kan extension of F
along L
.
- nonempty_isUniversal : Nonempty (StructuredArrow.IsUniversal (LeftExtension.mk F' α))
Instances
- CategoryTheory.Functor.instIsLeftKanExtensionLeftKanExtensionLeftKanExtensionUnit
- CategoryTheory.Functor.instIsLeftKanExtensionObjLanAppLanUnit
- CategoryTheory.Functor.instIsLeftKanExtensionPointwiseLeftKanExtensionPointwiseLeftKanExtensionUnit
- CategoryTheory.SimplicialObject.instIsLeftKanExtensionOppositeTruncatedSimplexCategoryObjSkAppTruncatedUnitSkAdjTruncation
If (F', α)
is a left Kan extension of F
along L
, then (F', α)
is an initial object
in the category LeftExtension L F
.
Equations
- F'.isUniversalOfIsLeftKanExtension α = ⋯.some
If (F', α)
is a left Kan extension of F
along L
and β : F ⟶ L ⋙ G
is
a natural transformation, this is the induced morphism F' ⟶ G
.
Equations
- F'.descOfIsLeftKanExtension α G β = (F'.isUniversalOfIsLeftKanExtension α).desc (CategoryTheory.Functor.LeftExtension.mk G β)
If (F', α)
is a left Kan extension of F
along L
, then this
is the induced bijection (F' ⟶ G) ≃ (F ⟶ L ⋙ G)
for all G
.
Equations
- One or more equations did not get rendered due to their size.
Left Kan extensions of isomorphic functors are isomorphic.
Equations
- One or more equations did not get rendered due to their size.
Two left Kan extensions are (canonically) isomorphic.
Equations
- F'.leftKanExtensionUnique α F'' α' = F'.leftKanExtensionUniqueOfIso α (CategoryTheory.Iso.refl F) F'' α'
This property HasRightKanExtension L F
holds when the functor F
has a right
Kan extension along L
.
Equations
This property HasLeftKanExtension L F
holds when the functor F
has a left
Kan extension along L
.
Equations
A chosen right Kan extension when [HasRightKanExtension L F]
holds.
Equations
- L.rightKanExtension F = (⊤_ L.RightExtension F).left
The counit of the chosen right Kan extension rightKanExtension L F
.
Equations
- L.rightKanExtensionCounit F = (⊤_ L.RightExtension F).hom
A chosen left Kan extension when [HasLeftKanExtension L F]
holds.
Equations
- L.leftKanExtension F = (⊥_ L.LeftExtension F).right
The unit of the chosen left Kan extension leftKanExtension L F
.
Equations
- L.leftKanExtensionUnit F = (⊥_ L.LeftExtension F).hom
The functor LeftExtension L' F ⥤ LeftExtension L F
induced by a natural transformation L' ⟶ L ⋙ G'
.
Equations
The functor RightExtension L' F ⥤ RightExtension L F
induced by a natural transformation L ⋙ G ⟶ L'
.
Equations
- One or more equations did not get rendered due to their size.
Given an isomorphism e : L ⋙ G ≅ L'
, a left extension of F
along L'
is universal
iff the corresponding left extension of L
along L
is.
Given an isomorphism e : L ⋙ G ≅ L'
, a right extension of F
along L'
is universal
iff the corresponding right extension of L
along L
is.
The functor LeftExtension L F ⥤ LeftExtension (G ⋙ L) (G ⋙ F)
obtained by precomposition.
Equations
- One or more equations did not get rendered due to their size.
The functor RightExtension L F ⥤ RightExtension (G ⋙ L) (G ⋙ F)
obtained by precomposition.
Equations
- One or more equations did not get rendered due to their size.
If G
is an equivalence, then a left extension of F
along L
is universal iff
the corresponding left extension of G ⋙ F
along G ⋙ L
is.
If G
is an equivalence, then a right extension of F
along L
is universal iff
the corresponding left extension of G ⋙ F
along G ⋙ L
is.
The equivalence RightExtension L F ≌ RightExtension L' F
induced by
a natural isomorphism L ≅ L'
.
Equations
The equivalence LeftExtension L F ≌ LeftExtension L' F
induced by
a natural isomorphism L ≅ L'
.
Equations
The equivalence RightExtension L F ≌ RightExtension L F'
induced by
a natural isomorphism F ≅ F'
.
Equations
The equivalence LeftExtension L F ≌ LeftExtension L F'
induced by
a natural isomorphism F ≅ F'
.
Equations
When two left extensions α₁ : LeftExtension L F₁
and α₂ : LeftExtension L F₂
are essentially the same via an isomorphism of functors F₁ ≅ F₂
,
then α₁
is universal iff α₂
is.
Equations
- One or more equations did not get rendered due to their size.
When two right extensions α₁ : RightExtension L F₁
and α₂ : RightExtension L F₂
are essentially the same via an isomorphism of functors F₁ ≅ F₂
,
then α₁
is universal iff α₂
is.
Equations
- One or more equations did not get rendered due to their size.
Construct a cocone for a left Kan extension F' : D ⥤ H
of F : C ⥤ H
along a functor
L : C ⥤ D
given a cocone for F
.
Equations
- F'.coconeOfIsLeftKanExtension α c = { pt := c.pt, ι := F'.descOfIsLeftKanExtension α ((CategoryTheory.Functor.const D).obj c.pt) c.ι }
If c
is a colimit cocone for a functor F : C ⥤ H
and α : F ⟶ L ⋙ F'
is the unit of any
left Kan extension F' : D ⥤ H
of F
along L : C ⥤ D
, then coconeOfIsLeftKanExtension α c
is
a colimit cocone, too.
Equations
- One or more equations did not get rendered due to their size.
If F' : D ⥤ H
is a left Kan extension of F : C ⥤ H
along L : C ⥤ D
, the colimit over F'
is isomorphic to the colimit over F
.
Equations
- One or more equations did not get rendered due to their size.
Construct a cone for a right Kan extension F' : D ⥤ H
of F : C ⥤ H
along a functor
L : C ⥤ D
given a cone for F
.
Equations
- F'.coneOfIsRightKanExtension α c = { pt := c.pt, π := F'.liftOfIsRightKanExtension α ((CategoryTheory.Functor.const D).obj c.pt) c.π }
If c
is a limit cone for a functor F : C ⥤ H
and α : L ⋙ F' ⟶ F
is the counit of any
right Kan extension F' : D ⥤ H
of F
along L : C ⥤ D
, then coneOfIsRightKanExtension α c
is
a limit cone, too.
Equations
- One or more equations did not get rendered due to their size.
If F' : D ⥤ H
is a right Kan extension of F : C ⥤ H
along L : C ⥤ D
, the limit over F'
is isomorphic to the limit over F
.