Kan extensions #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines the right and left Kan extensions of a functor. They exist under the assumption that the target category has enough limits resp. colimits.
The main definitions are Ran ι
and Lan ι
, where ι : S ⥤ L
is a functor.
Namely, Ran ι
is the right Kan extension, while Lan ι
is the left Kan extension,
both as functors (S ⥤ D) ⥤ (L ⥤ D)
.
To access the right resp. left adjunction associated to these, use Ran.adjunction
resp. Lan.adjunction
.
Projects #
A lot of boilerplate could be generalized by defining and working with pseudofunctors.
The diagram indexed by Ran.index ι x
used to define Ran
.
A cone over Ran.diagram ι F x
used to define Ran
.
Equations
- category_theory.Ran.cone x f = {X := G.obj x, π := {app := λ (i : category_theory.structured_arrow x ι), G.map i.hom ≫ f.app i.right, naturality' := _}}
An auxiliary definition used to define Ran
.
Equations
- category_theory.Ran.loc ι F = {obj := λ (x : L), category_theory.limits.limit (category_theory.Ran.diagram ι F x), map := λ (x y : L) (f : x ⟶ y), category_theory.limits.limit.pre (category_theory.Ran.diagram ι F x) (category_theory.structured_arrow.map f), map_id' := _, map_comp' := _}
An auxiliary definition used to define Ran
and Ran.adjunction
.
Equations
- category_theory.Ran.equiv ι F G = {to_fun := λ (f : G ⟶ category_theory.Ran.loc ι F), {app := λ (x : S), f.app (ι.obj x) ≫ category_theory.limits.limit.π (category_theory.Ran.diagram ι F (ι.obj x)) (category_theory.structured_arrow.mk (𝟙 (ι.obj x))), naturality' := _}, inv_fun := λ (f : ((category_theory.whiskering_left S L D).obj ι).obj G ⟶ F), {app := λ (x : L), category_theory.limits.limit.lift (category_theory.Ran.diagram ι F x) (category_theory.Ran.cone x f), naturality' := _}, left_inv := _, right_inv := _}
The right Kan extension of a functor.
Equations
- category_theory.Ran ι = category_theory.adjunction.right_adjoint_of_equiv (λ (F : L ⥤ D) (G : S ⥤ D), (category_theory.Ran.equiv ι G F).symm) _
The adjunction associated to Ran
.
Equations
- category_theory.Ran.adjunction D ι = category_theory.adjunction.adjunction_of_equiv_right (λ (F : L ⥤ D) (G : S ⥤ D), (category_theory.Ran.equiv ι G F).symm) _
The diagram indexed by Ran.index ι x
used to define Ran
.
A cocone over Lan.diagram ι F x
used to define Lan
.
Equations
- category_theory.Lan.cocone x f = {X := G.obj x, ι := {app := λ (i : category_theory.costructured_arrow ι x), f.app i.left ≫ G.map i.hom, naturality' := _}}
An auxiliary definition used to define Lan
.
Equations
- category_theory.Lan.loc ι F = {obj := λ (x : L), category_theory.limits.colimit (category_theory.Lan.diagram ι F x), map := λ (x y : L) (f : x ⟶ y), category_theory.limits.colimit.pre (category_theory.Lan.diagram ι F y) (category_theory.costructured_arrow.map f), map_id' := _, map_comp' := _}
An auxiliary definition used to define Lan
and Lan.adjunction
.
Equations
- category_theory.Lan.equiv ι F G = {to_fun := λ (f : category_theory.Lan.loc ι F ⟶ G), {app := λ (x : S), category_theory.limits.colimit.ι (category_theory.Lan.diagram ι F (ι.obj x)) (category_theory.costructured_arrow.mk (𝟙 (ι.obj x))) ≫ f.app (ι.obj x), naturality' := _}, inv_fun := λ (f : F ⟶ ((category_theory.whiskering_left S L D).obj ι).obj G), {app := λ (x : L), category_theory.limits.colimit.desc (category_theory.Lan.diagram ι F x) (category_theory.Lan.cocone x f), naturality' := _}, left_inv := _, right_inv := _}
The left Kan extension of a functor.
Equations
- category_theory.Lan ι = category_theory.adjunction.left_adjoint_of_equiv (λ (F : S ⥤ D) (G : L ⥤ D), category_theory.Lan.equiv ι F G) _
The adjunction associated to Lan
.
Equations
- category_theory.Lan.adjunction D ι = category_theory.adjunction.adjunction_of_equiv_left (λ (F : S ⥤ D) (G : L ⥤ D), category_theory.Lan.equiv ι F G) _