# Théorie des catégories

La théorie des catégories est l'étude des structures mathématiques et de leurs relations. Ce domaine rend compte de l'abondance de caractéristiques partagées par diverses classes liées à des structures mathématiques. Les catégories sont utilisées dans plusieurs branches des mathématiques et dans certains secteurs de l'informatique théorique et de la physique théorique. Elles forment une notion unificatrice. « La théorie des catégories commence avec l'observation que de nombreuses propriétés des systèmes mathématiques peuvent être unifiées et simplifiées par des dessins avec des flèches. »

## Histoire

Cette théorie a été mise en place par Samuel Eilenberg et Saunders Mac Lane en 1942-1945, en lien avec la topologie algébrique, et propagée dans les années 1960-1970 en France par Alexandre Grothendieck, qui en a fait une étude systématique. À la suite des travaux de William Lawvere, la théorie des catégories est utilisée depuis 1969 pour définir la logique et la théorie des ensembles ; la théorie des catégories peut donc, comme la théorie des ensembles ou la théorie des types, avec laquelle elle a des similarités, être considérée comme fondement des mathématiques.

## Éléments de base
### Morphismes

Voici un exemple. La classe Grp des groupes comprend tous les objets ayant une « structure de groupe ». Plus précisément, Grp comprend tous les ensembles G munis d'une opération interne qui satisfait les axiomes d'associativité, inversibilité et de l'élément neutre. Des théorèmes peuvent ainsi être prouvés en effectuant des déductions logiques à partir de ces axiomes. Par exemple, ils apportent la preuve directe que l'élément neutre d'un groupe est unique.
Au lieu d'étudier les objets (par exemple les groupes) qui possèdent une structure donnée, comme les théories mathématiques l'ont toujours fait, la théorie des catégories met l'accent sur les morphismes et les processus qui préservent la structure entre deux objets. Il apparaît qu'en étudiant ces morphismes, l'on est capable d'en apprendre plus sur la structure des objets.
Dans notre exemple, les morphismes étudiés sont les morphismes de groupes, à savoir toute application $f$ d'un groupe $(G,\bullet )$ dans un groupe $(G',\star )$ vérifiant : $\forall x,y\in G,f(x\bullet y)=f(x)\star f(y)$. L'étude des morphismes de groupes fournit un outil pour étudier les propriétés générales des groupes et les conséquences des axiomes relatifs aux groupes.
Il en est de même dans de nombreuses théories mathématiques, où l'on peut définir une classe d'objets ainsi que des applications particulières entre ces objets vérifiant certaines propriétés. Un autre exemple de catégorie est donnée par la classe des espaces vectoriels, les morphismes étant les applications linéaires. Un dernier exemple est donné par la classe des espaces topologiques, les morphismes étant les applications continues. Ainsi, une catégorie est une formulation axiomatique qui relie des structures mathématiques aux fonctions qui les préservent. Une étude systématique des catégories permet de prouver des résultats généraux à partir des axiomes d'une catégorie.

### Foncteurs

Une catégorie est elle-même un type de structure mathématique. Si l'on dispose de deux catégories ${\mathcal {C}}$ et ${\mathcal {D}}$, il est parfois possible de définir une correspondance entre la première catégorie et la deuxième, associant à chaque objet (respectivement chaque morphisme) de la première catégorie un objet (respectivement un morphisme) de la deuxième, tout en préservant la structure de catégorie. De telles correspondances sont appelées foncteurs.
Si l'on se restreint aux petites catégories (c'est-à-dire aux catégories dont les classes d'objets et de morphismes sont des ensembles), on définit ainsi la catégorie des petites catégories Cat : ses objets sont les petites catégories, et ses morphismes sont les foncteurs.
Cette idée fondamentale de relier une classe d'objets à une autre apparut d'abord en topologie algébrique : certains problèmes topologiques complexes peuvent être traduits en questions algébriques, qui sont souvent plus faciles à résoudre. Ainsi, on peut définir un foncteur de la catégorie des espaces topologiques dans la catégorie des groupes, qui, à un espace topologique, associe son groupe fondamental. Toute propriété topologique de la première catégorie pourra se traduire par une propriété algébrique dans la deuxième catégorie et inversement.

### Transformations naturelles

Par un nouvel effort d'abstraction, les foncteurs sont souvent « reliés naturellement ». C'est pourquoi l'on définit le concept de transformation naturelle, qui est une manière d'envoyer un foncteur sur un foncteur. Alors que le foncteur est un morphisme de catégories, la transformation naturelle est un morphisme de foncteurs (i.e. un morphisme dans une catégorie de foncteurs). On peut ainsi étudier de nombreuses constructions mathématiques. La « naturalité » est un principe plus profond qu'il n'en a l'air au premier regard. Saunders Mac Lane, coinventeur de la théorie des catégories, a ainsi déclaré : « je n'ai pas inventé les catégories pour étudier les foncteurs ; je les ai inventées pour étudier les transformations naturelles ».
Par exemple, il existe un isomorphisme entre un espace vectoriel de dimension finie et son espace dual, mais cet isomorphisme n'est pas « naturel », dans le sens où sa définition requiert d'avoir choisi une base, dont elle dépend étroitement. En revanche, il existe un isomorphisme naturel entre un espace vectoriel de dimension finie et son espace bidual (le dual de son dual), c'est-à-dire en l'occurrence indépendant de la base choisie. Cet exemple est, historiquement, le premier formulé dans l'article fondateur de Samuel Eilenberg et Saunders Mac Lane en 1945.
Autre exemple : il existe plusieurs manières de relier par divers foncteurs les espaces topologiques à la théorie des groupes : homologie, cohomologie, homotopie… L'étude des transformations naturelles permet d'examiner comment ces foncteurs sont eux-mêmes reliés les uns aux autres.

## Définitions
### Catégorie

Une catégorie ${\mathcal {C}}$, dans le langage de la théorie des classes, est la donnée de six éléments :
* une classe $\mathrm {ob} ({\mathcal {C}})$ dont les éléments sont appelés objets (les objets de la catégorie) ;
* une classe $\mathrm {mor} ({\mathcal {C}})$ dont les éléments sont appelés morphismes ou flèches (les morphismes ou les flèches de la catégorie) ;
* deux « applications » de $\mathrm {mor} ({\mathcal {C}})$ dans $\mathrm {ob} ({\mathcal {C}})$ (au sens de la théorie des classes, c'est-à-dire que leurs « graphes » peuvent être des classes propres), appelées source et but ; f : A → B signifie que f est un morphisme « de A dans B » (c'est-à-dire de source A et de but B) et la classe de tous ces morphismes f est notée $\mathrm {Hom} (A,B)$ ;
* un morphisme $\mathrm {id} _{A}:A\rightarrow A$, pour chaque objet $A$, appelé identité de $A$ ou flèche unité ou flèche neutre;
* une composition $\circ$ qui, à tout couple de morphismes $f:A\rightarrow B$ et $g:B\rightarrow C$, associe un morphisme $g\circ f:A\rightarrow C$ appelé composée de $f$ et $g$, et telle que :
** la composition est associative : pour tous morphismes $f:A\to B$, $g:B\to C$ et $h:C\to D$,$(h\circ g)\circ f=h\circ (g\circ f)$ ;
** les identités sont des éléments neutres de la composition : pour tout morphisme $f:A\rightarrow B$,$\mathrm {id} _{B}\circ f=f=f\circ \mathrm {id} _{A}$.
Lorsqu'une catégorie est courante, certains lui donnent comme nom l'abréviation du nom de ses objets ; nous suivrons ici cette convention.
Certains auteurs comme D. E. Rydeheard et Burstall définissent une catégorie comme un graphe orienté (plus précisément un multigraphe). Les sommets du graphe sont les objets, et les flèches sont les morphismes. De même, il arrive parfois que l'on oublie complètement les objets d'une catégorie et que l'on ne s'intéresse plus qu'aux flèches, en identifiant les objets à leurs flèches identités.

### Quelques propriétés

Une catégorie ${\mathcal {C}}$ est dite localement petite si, pour tous objets A, B de ${\mathcal {C}}$, la classe des morphismes de A dans B, i.e. $\mathrm {Hom} {\bigA,B{\big )}$ est un ensemble. Une catégorie ${\mathcal {C}}$ est petite si la classe de tous les morphismes de ${\mathcal {C}}$, i.e. $\mathrm {mor} ({\mathcal {C}})$, est un ensemble. La plupart des catégories usuelles — cf. exemples ci-dessous — sont seulement localement petites.
Une sous-catégorie de ${\mathcal {C}}$ est une catégorie dont les objets sont des objets de ${\mathcal {C}}$ et dont les flèches sont des flèches (mais pas nécessairement toutes les flèches) de ${\mathcal {C}}$ entre deux objets de la sous-catégorie. Lorsqu'une sous-catégorie ${\mathcal {S}}$ de ${\mathcal {C}}$ est telle que toutes les flèches de ${\mathcal {C}}$ entre deux objets de ${\mathcal {S}}$ sont des flèches de ${\mathcal {S}}$, cette sous-catégorie est dite pleine. Par exemple, Ab est une sous-catégorie pleine de Gr. La catégorie de tous les espaces métriques avec les isométries n'est pas une sous-catégorie pleine de Top mais celle des espaces séparés en est une.

### Catégorie duale

Étant donné une catégorie ${\mathcal {C}}$, on définit la catégorie opposée ou duale, en prenant les mêmes objets et les mêmes flèches, mais en inversant les fonctions source et but et en remplaçant la composition par son "symétrique". On la note ${\mathcal {C}}^{\rm {op}}$ (ou ${\mathcal {C}}^{\rm {o}}$). Plus précisément : Hom$_{Cop}$(A, B) = Hom$_C$(B, A), et la composition opposée de deux flèches est le "symétrique" de leur composition : f∘$^{op}$g = g∘f. Il est clair que la catégorie duale de la catégorie duale est la catégorie de départ : $({\mathcal {C}}^{\rm {op}})^{\rm {op}}={\mathcal {C}}$. Cette dualisation permet de symétriser la plupart des énoncés.

## Exemples

Intuitivement, les objets d'une catégorie sont souvent des ensembles avec une structure, et les flèches sont souvent des applications entre les ensembles qui en préservent la structure. La table suivante donne des exemples de catégories qui illustrent cette intuition.
| Catégorie | Objets | Flèches |
| catégorie Ens ou Set | ensembles | applications |
| catégorie Top | espaces topologiques | applications continues |
| catégorie Met | espaces métriques | applications uniformément continues |
| catégorie Mon | monoïdes | morphismes de monoïdes |
| catégorie Grp | groupes | morphismes de groupes |
| catégorie Ab | groupes abéliens | morphismes de groupes |
| catégorie ACU | anneaux commutatifs unitaires | morphismes d'anneaux |
| catégorie Ord | ensembles ordonnés | applications croissantes |
On définit également la catégorie des modules à gauche sur un anneau, la catégorie des espaces vectoriels sur un corps donné, la catégorie des ensembles munis d'une tribu, la catégorie des espaces mesurés, etc.
Les exemples de la table sont des catégories concrètes, c'est-à-dire des catégories munies d'un foncteur fidèle vers la catégorie des ensembles (dans les cas présents, il s'agit du foncteur d'oubli, qui fait abstraction des structures considérées pour ne retenir que leur ensemble de base ; par exemple, appliquer le foncteur d'oubli au groupe (ℤ, +) donne l'ensemble ℤ). Toute petite catégorie est concrète, comme les deux suivantes :
* On se donne un monoïde M, et on définit la catégorie associée ainsi :
** objets : un seul
** flèches : les éléments du monoïde, elles partent toute de l'unique objet pour y revenir ;
** composition : donnée par la loi du monoïde (l'identité est donc la flèche associée au neutre de M).
* On se donne un ensemble E muni d'une relation réflexive et transitive R (autrement dit, R est une relation de préordre) et on définit la catégorie associée, notée ${\bar {E}}$, ainsi :
** objets : les éléments de l'ensemble ;
** flèches : pour tous objets e et f, il existe une flèche de e vers f si et seulement si eRf (et pas de flèche sinon) ;
** composition : la composée de deux flèches est la seule flèche qui réunit les deux extrémités (la relation est transitive) ; l'identité est la seule flèche qui relie un objet à lui-même (la relation est réflexive).
    Cet exemple est particulièrement intéressant dans le cas suivant : l'ensemble est l'ensemble des ouverts d'un espace topologique, et la relation est l'inclusion ; cela permet de définir les notions de préfaisceau et de faisceau, via les foncteurs.
    Il permet aussi de considérer tout ensemble ordonné comme une catégorie, et tout système inductif (resp. projectif) comme un foncteur covariant (resp. contravariant) sur cette catégorie.
* Un exemple de catégorie non concrète : la catégorie homotopique (en) hTop, dont les objets sont les espaces topologiques et dont les morphismes sont les classes d'homotopie d'applications continues.
* Étant donné deux catégories ${\mathcal {C}}$ et ${\mathcal {D}}$, on peut définir la catégorie produit ${\mathcal {C}}\times {\mathcal {D}}$ de la façon suivante : les objets de la catégorie produit sont les couples (A, B) formés d'un objet A de ${\mathcal {C}}$ et d'un objet B de ${\mathcal {D}}$ ; les morphismes sont les couples (f,g) formés d'un morphisme f de ${\mathcal {C}}$ et d'un morphisme g de ${\mathcal {D}}$. La composition de ces couples se fait composante par composante.
* Une catégorie est dite discrète si elle n'a pas d'autres flèches que les flèches neutres, ie si pour tout objet $A{\text{ de }}{\mathcal {C}}{\text{, on a }}Hom(A,A)=\{1_{A}\}$ et si pour tout couple $(A,B)$ d'objets distincts on a $Hom(A,B)=\varnothing$. Il est bien évident que toute collection d'objets peut être considérée comme une catégorie discrète.
* Un doublet est une catégorie ayant deux objets, notés par exemple 0 et 1, et seulement deux flèches non neutres, toutes deux de source 0 et de but 1. Un doublet n'a ni objet initial ni objet final.

### Exemple en informatique

Benjamin C. Pierce , p. 8 dans Basic Category Theory for Computer Scientists, considère un langage de programmation fonctionnelle où les types sont Bool (pour les booléens, c.-à-d. pour les valeurs de vérité), Int (pour les nombres entiers), Real (pour les nombres réels) et Unit (un type avec un seul élément). Les opérations sont iszero : Int → Bool (qui teste si un nombre entier vaut zero), not : Bool → Bool (négation), succInt : Int → Int (qui renvoie le successeur d'un nombre entier), succReal : Real → Real, (qui renvoie le successeur d'un nombre réel), toReal : Int → Real (qui réalise la conversion d'un nombre entier en un nombre réel). Les constantes de ce langage sont zero : Int, true : Bool, false : Bool, unit : Unit. Pierce donne alors l'exemple de la catégorie où les objets sont Bool, Int, Real et Unit, et les flèches sont true, false, succInt, succReal, unit, iszero, not, toReal.
Les constantes sont des flèches, chacune d'entre elles associant l'unique élément de Unit à la valeur qu'elle représente.

## Monomorphismes, épimorphismes et isomorphismes
### Définitions

Une flèche $f:A\rightarrow \;B$ est dite un monomorphisme lorsqu'elle vérifie la propriété suivante : pour tout couple $g,h$ de flèches $E\rightarrow \;A$ (et donc aussi pour tout $E$), si $f\circ g=f\circ h$, alors $g=h$.
Une flèche $f:A\rightarrow \;B$ est dite un épimorphisme lorsqu'elle vérifie la propriété suivante : pour tout couple $g,h$ de flèches $B\rightarrow \;E$ (et donc aussi pour tout $E$), si $g\circ f=h\circ f$, alors $g=h$.
Les notions de monomorphisme et d'épimorphisme sont duales l'une de l'autre : une flèche est un monomorphisme si et seulement si elle est un épimorphisme dans la catégorie duale.
Une flèche $f:A\rightarrow \;B$ est dite un isomorphisme s'il existe une flèche $g:B\rightarrow \;A$ telle que $g\circ f=I_{A}$ et $f\circ g=I_{B}$. Cette notion est autoduale.

### Exemples et contre-exemples

* Dans la catégorie des ensembles, les monomorphismes sont les injections, les épimorphismes sont les surjections et les isomorphismes sont les bijections.
* Un contre-exemple important en théorie des catégories : un morphisme peut à la fois être un monomorphisme et un épimorphisme, sans être pour autant un isomorphisme ; pour voir ce contre-exemple, il suffit de se placer dans la catégorie des anneaux commutatifs unitaires, et considérer la flèche (unique) $\mathbb {Z} \rightarrow \mathbb {Q}$ : elle est un monomorphisme car provient d'une application injective, un épimorphisme par localisation, mais n'est clairement pas un isomorphisme.
* On trouve aussi de tels épimorphisme-monomorphisme non isomorphiques dans la catégorie des espaces topologiques : toute injection y est un monomorphisme, toute surjection est un épimorphisme, les isomorphismes sont les homéomorphismes, mais il y a des fonctions continues à la fois injectives et surjectives qui ne sont pas des homéomorphismes : par exemple l'identité sur un ensemble muni de deux topologies différentes, l'une plus grossière que l'autre.
* Les isomorphismes dans la catégorie des ensembles ordonnés sont les bijections croissantes dont la bijection réciproque est croissante (cette condition sur la bijection réciproque est automatiquement vérifiée dans le cas des ensembles totalement ordonnés, mais pas dans le cas général).

## Somme et produit d'une famille d'objets en théorie des catégories

La somme d'une famille $(X_{i})_{i\in I}$ est la donnée d'un objet $X$ de ${\mathcal {C}}$ et pour tout $i$ d'une flèche $\phi _{i}:X_{i}\rightarrow X$ vérifiant la propriété universelle :
    quels que soient l'objet $Y$ et les flèches $f_{i}:X_{i}\rightarrow Y$ de ${\mathcal {C}}$ il existe une unique flèche $f:X\rightarrow Y$ telle que pour tout $i$ le diagramme :
soit commutatif, c'est-à-dire que $f_{i}=f\circ \phi _{i}$.
Le produit d'une famille $(X_{i})_{i\in I}$ est la donnée d'un objet $X$ de ${\mathcal {C}}$ et pour tout $i$ d'une flèche $\pi _{i}:X\rightarrow X_{i}$ vérifiant la propriété universelle :
    quels que soient l'objet $Y$ et les flèches $f_{i}:Y\rightarrow X_{i}$ de ${\mathcal {C}}$ il existe une unique flèche $f:Y\rightarrow X$ telle que pour tout $i$ le diagramme :
soit commutatif, c'est-à-dire que $f_{i}=\pi _{i}\circ f$.
S'ils existent, les sommes et les produits sont uniques aux isomorphismes près.
On permute ces définitions en inversant les flèches des diagrammes : une somme (respectivement un produit) dans ${\mathcal {C}}$ est un produit (respectivement une somme) dans sa duale.
Une catégorie cartésienne est une catégorie munie d'un objet final et du produit binaire. Une catégorie cartésienne fermée est une catégorie cartésienne munie de l'exponentiation.

## En tant que fondement des mathématiques

William Lawvere est le premier à avoir considéré la théorie des catégories comme potentiel fondement des mathématiques. En 1964, il propose une axiomatisation de la théorie des ensembles dans le langage des catégories$^,$. En 1966, il publie une théorie de la catégorie des catégories dans laquelle tous les objets mathématiques peuvent être exprimés et leurs propriétés démontrées. La première version de cette catégorie des catégories avait été développée dans sa thèse de doctorat de 1963.
La théorie des catégories a donc été proposée comme fondement des mathématiques en au moins deux sens distincts. En un premier sens, elle fournirait une axiomatisation alternative au concept d’ensembles. En comparaison avec l'axiomatisation de ZF, cette formulation ne place pas au premier plan la notion d’être « élément de » (x ∊ X). C’est plutôt la notion de fonction, exprimée par les morphismes de la catégorie, qui est fondamentale. La catégorie des ensembles s’est avérée être un exemple particulier de topos élémentaire, un type de catégorie inspiré des topos de Grothendieck.
Le second type de proposition consiste plutôt à dire que tous les concepts mathématiques importants peuvent être exprimés dans le langage des catégories. Alors que le premier type de fondement est logique et propose un système axiomatique, ce second type de fondement est plutôt méthodologique et offre une manière de comparer entre eux différents domaines des mathématiques à l’aide d’un langage commun. Ces deux propositions ne sont pas nécessairement incompatibles, la question des fondements de mathématiques pouvant prendre plusieurs sens$^,$.
Cependant, toutes ces propositions concernant les fondements qui font appel aux catégories ont un point en commun. Elles s’inscrivent dans une perspective structuraliste des mathématiques. On entend par cette expression que les propriétés importantes des objets mathématiques sont les relations qui existent entre eux et non pas des propriétés intrinsèques aux objets eux-mêmes. Pour les structuralistes, un objet mathématique se définit donc entièrement par la place qu’il occupe dans une structure mathématique. Par exemple, le fait que le nombre 3 s’écrit avec le symbole “3” n’est pas une propriété structurelle, mais le fait d’être entre 2 et 4 dans l’ordre des nombres naturels est une telle propriété$^,$. La théorie des catégories est particulièrement adéquate afin d’exprimer une telle fondation, puisque les objets d’une catégorie ne sont définis qu’à isomorphisme près. Cela signifie que deux objets isomorphes et qui possèdent donc la même structure ne peuvent être distingués l’un de l’autre au sein d'une catégorie. Le langage des catégories exprime donc uniquement les propriétés structurelles de ces objets.
Tous les structuralistes ne sont cependant pas partisans de la théorie des catégories comme fondement$^,$.