Catégorie de Kleisli

De testwiki
Aller à la navigation Aller à la recherche

Une catégorie de Kleisli est une catégorie associée à une monade. Elle tient son nom du mathématicien suisse Modèle:Lien qui l'a introduite à l'origine pour montrer que toute monade est issue d'une adjonction.

Définition

On considère une monade (T,η,μ) sur une catégorie 𝒞. La catégorie de Kleisli 𝒞T possède les mêmes objets que 𝒞 mais les morphismes sont donnés par

Hom𝒞T(X,Y)=Hom𝒞(X,TY)

L'identité est donnée par η, et la composition fonctionne ainsi : si fHom𝒞T(X,Y) et gHom𝒞T(Y,Z), on a

gf=μZTgf

qui correspond au diagramme :

XfTYTgTTZμZTZ

Les morphismes de 𝒞 de la forme XTY sont parfois appelés morphismes de Kleisli.

Monades et adjonctions

On définit le foncteur F:𝒞𝒞T par :

FX=X
F(f:XY)=ηYf

et un foncteur G:𝒞T𝒞 par :

GY=TY
G(f:XTY)=μYTf

Ce sont bien des foncteurs, et on a l'adjonction FG, la counité de l'adjonction étant εY=1TY.

Enfin, T=GF et μ=GεF : on a donné une décomposition de la monade en termes de l'adjonction (F,G,η,ε).

T-algèbres

Avec les notations précédentes, une T-algèbre (ou T-module) est la donnée d'un objet x de 𝒞 et d'un morphisme h:Txx tels que

hμx=hTh
hηx=1x

Un morphisme (h,x)(h,x) de T-algèbres est une flèche f:xx telle que

hTf=fh.

Les T-algèbres et leurs morphismes forment la catégorie d'Eilenberg-Moore 𝒞T.

Le foncteur d'oubli 𝒞T𝒞 possède un adjoint à gauche 𝒞𝒞T qui envoie tout objet y de 𝒞 sur la T-algèbre libre (Ty,μY). Ces deux foncteurs forment également une décomposition de la monade initiale. Les T-algèbres libres forment une sous-catégorie pleine de 𝒞T qui est équivalente à la catégorie de Kleisli.

Monades et informatique théorique

Modèle:Article détaillé

On peut réinterpréter la catégorie de Kleisli d'un point de vue informatique  :

  • Le foncteur T envoie tout type X sur un nouveau type T(X) ;
  • On dispose d'une règle pour composer deux fonctions f:XT(Y) et g:YT(Z), donnée par la composition dans la catégorie de Kleisli, qui est associative et unitale. On obtient une fonction gf:XT(Z) ;
  • Le rôle de l'unité est joué par l'application pure XT(X).

Référence

Modèle:MacLane1

Modèle:Palette Modèle:Portail