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
.
TODO (@joelriou) #
- define a condition expressing that a functor is a pointwise Kan extension
- refactor the file
CategoryTheory.Limits.KanExtension
using this new general API - define left/right derived functors as particular cases of Kan extensions
References #
https://ncatlab.org/nlab/show/Kan+extension
Given two functors L : C ⥤ H
and F : C ⥤ D
, this is the category of functors
F' : H ⥤ D
equipped with a natural transformation L ⋙ F' ⟶ F
.
Equations
- CategoryTheory.Functor.RightExtension L F = CategoryTheory.CostructuredArrow ((CategoryTheory.whiskeringLeft C H D).toPrefunctor.obj L) F
Instances For
Given two functors L : C ⥤ H
and F : C ⥤ D
, this is the category of functors
F' : H ⥤ D
equipped with a natural transformation F ⟶ L ⋙ F'
.
Equations
- CategoryTheory.Functor.LeftExtension L F = CategoryTheory.StructuredArrow F ((CategoryTheory.whiskeringLeft C H D).toPrefunctor.obj L)
Instances For
Constructor for objects of the category Functor.RightExtension L F
.
Instances For
Constructor for objects of the category Functor.LeftExtension L F
.
Instances For
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 (CategoryTheory.CostructuredArrow.IsUniversal (CategoryTheory.Functor.RightExtension.mk F' α))
Instances
If (F', α)
is a right Kan extension of F
along L
, then (F', α)
is a terminal object
in the category RightExtension L F
.
Equations
Instances For
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
- One or more equations did not get rendered due to their size.
Instances For
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 (CategoryTheory.StructuredArrow.IsUniversal (CategoryTheory.Functor.LeftExtension.mk F' α))
Instances
If (F', α)
is a left Kan extension of F
along L
, then (F', α)
is an initial object
in the category LeftExtension L F
.
Equations
Instances For
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
- One or more equations did not get rendered due to their size.
Instances For
This property HasRightKanExtension L F
holds when the functor F
has a right
Kan extension along L
.
Equations
Instances For
This property HasLeftKanExtension L F
holds when the functor F
has a left
Kan extension along L
.
Equations
Instances For
A chosen right Kan extension when [HasRightKanExtension L F]
holds.
Equations
Instances For
The counit of the chosen right Kan extension rightKanExtension L F
.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
A chosen left Kan extension when [HasLeftKanExtension L F]
holds.
Equations
Instances For
The unit of the chosen left Kan extension leftKanExtension L F
.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
The equivalence of categories RightExtension (L ⋙ e.functor) F ≌ RightExtension L F
when e
is an equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence of categories LeftExtension (L ⋙ e.functor) F ≌ LeftExtension L F
when e
is an equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence RightExtension L F ≌ RightExtension L' F
induced by
a natural isomorphism L ≅ L'
.
Equations
- CategoryTheory.Functor.rightExtensionEquivalenceOfIso₁ iso₁ F = CategoryTheory.CostructuredArrow.mapNatIso ((CategoryTheory.whiskeringLeft C H D).mapIso iso₁)
Instances For
The equivalence LeftExtension L F ≌ LeftExtension L' F
induced by
a natural isomorphism L ≅ L'
.
Equations
- CategoryTheory.Functor.leftExtensionEquivalenceOfIso₁ iso₁ F = CategoryTheory.StructuredArrow.mapNatIso ((CategoryTheory.whiskeringLeft C H D).mapIso iso₁)
Instances For
The equivalence RightExtension L F ≌ RightExtension L F'
induced by
a natural isomorphism F ≅ F'
.
Equations
Instances For
The equivalence LeftExtension L F ≌ LeftExtension L F'
induced by
a natural isomorphism F ≅ F'
.