module Cat.Functor.Kan.Duality where
Duality 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)
{G = G} {eta = eta} is-lan = ran where
is-co-lan'āis-ran module lan = is-lan is-lan
: is-ran p F (Functor.op G) (co-unitācounit eta)
ran .Ļ {M = M} Ī± = op (lan.Ļ Ī±') where
ran unquoteDecl Ī±' = dualise-into Ī±'
(Functor.op F => Functor.op M Fā Functor.op p)
Ī±
.Ļ-comm = ext (lan.Ļ-comm Ī·ā_)
ran .Ļ-uniq {M = M} {Ļ' = Ļ'} p = ext Ī» x ā
ran .Ļ-uniq {Ļ' = dualise! Ļ'} (reext! p) Ī·ā x lan