module Cat.Functor.Kan.Duality whereDuality for Kan extensionsš
Left Kan extensions are dual to right Kan extensions. This is straightforward enough to prove, but does involve some bureaucracy involving opposite categories.
is-co-lan'āis-ran
: ā {G : Functor (C' ^op) (D ^op)} {eta : Functor.op F => G Fā Functor.op p}
ā is-lan (Functor.op p) (Functor.op F) G eta
ā is-ran p F (Functor.op G) (co-unitācounit eta)
is-co-lan'āis-ran {G = G} {eta = eta} is-lan = ran where
module lan = is-lan is-lan
ran : is-ran p F (Functor.op G) (co-unitācounit eta)
ran .Ļ {M = M} α = op (lan.Ļ Ī±') where
unquoteDecl α' = dualise-into α'
(Functor.op F => Functor.op M Fā Functor.op p)
α
ran .Ļ-comm = ext (lan.Ļ-comm Ī·ā_)
ran .Ļ-uniq {M = M} {Ļ' = Ļ'} p = ext Ī» x ā
lan.Ļ-uniq {Ļ' = dualise! Ļ'} (reext! p) Ī·ā x