module Cat.Functor.Kan.Global
{o β o' β' o'' β''} {C : Precategory o β} {C' : Precategory o' β'} {D : Precategory o'' β''} (p : Functor C C') where
Global Kan extensionsπ
Recall that a left Kan extension of along is a universal solution to extending to a functor In particularly happy cases (e.g.Β when is small and is cocomplete), the left Kan extension along exists for any When this happens, the assignment extends to a functor, which we call a global Kan extension.
module _ (has-lan : (G : Functor C D) β Lan p G) where Lan-functor : Functor Cat[ C , D ] Cat[ C' , D ] Lan-functor .Fβ G = has-lan G .Ext Lan-functor .Fβ {x} {y} ΞΈ = has-lan x .Ο (has-lan y .eta βnt ΞΈ) Lan-functor .F-id {x} = has-lan x .Ο-uniq (ext Ξ» _ β D.id-comm) Lan-functor .F-β {x} {y} {z} f g = has-lan x .Ο-uniq $ ext Ξ» a β sym $ D.pullr (has-lan x .Ο-comm Ξ·β a) β D.extendl (has-lan y .Ο-comm Ξ·β a)
Functoriality follows, essentially, from the fact that left Kan extensions are universal: we can map between them in a functorial way using only the defining natural transformations in the diagram, without appealing to the details of a particular computation. Moreover, the left Kan extension functor itself has a universal property: it is a left adjoint to the precomposition functor
Lanβ£precompose : Lan-functor β£ precompose p Lanβ£precompose = hom-isoβadjoints f (is-isoβis-equiv eqv) natural where f : β {x : Functor C D} {y : Functor C' D} β has-lan x .Ext => y β x => y Fβ p f {x} {y} ΞΈ = (ΞΈ β p) βnt has-lan x .eta open is-iso eqv : β {x} {y} β is-iso (f {x} {y}) eqv {x} {y} .inv ΞΈ = has-lan _ .Ο ΞΈ eqv {x} {y} .rinv ΞΈ = has-lan x .Ο-comm eqv {x} {y} .linv ΞΈ = has-lan _ .Ο-uniq refl natural : hom-iso-natural {L = Lan-functor} {precompose p} f natural {b = b} g h x = ext Ξ» a β D.pullr (D.pullr (has-lan _ .Ο-comm Ξ·β a)) β apβ D._β_ refl (D.pushr refl)
And, since adjoints are unique, if has any left adjoint, then its values generate Kan extensions:
adjoint-precomposeβLan : (F : Functor Cat[ C , D ] Cat[ C' , D ]) β (adj : F β£ precompose p) β (G : Functor C D) β is-lan p G (F .Fβ G) (adj ._β£_.unit .Ξ· G) adjoint-precomposeβLan F adj G = extn where open Lan open is-lan module adj = _β£_ adj extn : is-lan p G _ _ extn .Ο Ξ± = R-adjunct adj Ξ± extn .Ο-comm {M = M} {Ξ± = Ξ±} = ext Ξ» a β D.pullr (sym (adj.unit .is-natural _ _ _) Ξ·β a) β D.cancell (adj.zag Ξ·β a) extn .Ο-uniq x = Equiv.injective (_ , L-adjunct-is-equiv adj) (L-R-adjunct adj _ β x)
This in turn implies that adjoints are Kan extensions.