Les fonctions

Le but est d'illustrer la différence de manière de travailler, suivant qu'on utilise la théorie des ensembles ou des catégories.

Relations, fonctions

Une relation entre deux ensembles est la description de liens entre les éléments du premier ensemble et ceux du deuxième. Relation entre deux ensembles
Parmi toutes les relations possibles entre A et B, on définit la notion d'application, ou de fonction. Un des deux ensembles est appelé ensemble de départ, l'autre est appelé ensemble d'arrivée.
Une relation est une fonction si un élément de l'ensemble de départ est en relation avec au plus un élément de l'ensemble d'arrivée.
Le schéma précédent ne représente pas une fonction de A vers B, car les relations en rouge ne respectent pas cette condition.

Cette restriction n'est pas gratuite, car elle correspond à nos besoins les plus fréquents, où on est amené à étudier la valeur d'une chose en fonction d'une autre (par exemple la position d'un solide en fonction du temps : ensemble de départ = tous les instants possibles ; ensemble d'arrivée = la position du solide ; à un instant donné, un solide ne peut pas avoir deux positions différentes). Fonction d'un ensemble vers un autre Ce schéma représente bien une fonction.
On dit que y est l'image de x, et que x est l'antécédent de y.
A est appelé l'ensemble de départ de la fonction, B l'ensemble d'arrivée.
L'ensemble en pointillé est son domaine de définition (sous-ensemble de l'ensemble de départ tel que tous ses éléments ont une image).

On parle de relation entre deux ensembles A et B, et d'une fonction d'un ensemble A vers un ensemble B.

Définition d'une fonction

En utilisant la théorie des ensembles, une fonction est définie comme un sous-ensemble du produit cartésien.

Par exemple la fonction isVoyelle(), qui renvoie true si un caractère est une voyelle et false sinon. Produit cartésien pour isVoyelle() Parmi tous les couples du produit cartésien, on en choisit un certain nombre (en vert sur le schéma), ce qui permet de définir la fonction sans ambiguité.

En utilisant les ensembles, une fonction est donc définie en utilisant les éléments des ensembles. Si on se place dans Ens, la catégorie des ensembles, on n'a plus cette possibilité. Dans cette catégorie, un ensemble est un objet, on ne sait rien des éléments qu'il contient. Une fonction est juste représentée par une flèche. On va voir qu'il est malgré tout possible d'étudier les propriétés d'une fonction en étudiant comment elles se composent entre elles.

Bijection, isomorphisme

Les fonctions les plus simples à étudier sont les bijections.
Une application f est bijective si et seulement si tout élément de son ensemble d'arrivée a un et un seul antécédent, c'est-à-dire est image d'exactement un élément du domaine de définition de f.
Cette définition équivaut à dire qu'il existe une application inverse, notée f -1 telle que
Pour tout élément x de l'ensemble de définition, f -1 o f (x) = x
Dans ce cas, on a aussi : pour tout élément y de l'ensemble d'arrivée, f o f -1 (y) = y Exemple de bijection En utilisant les catégories, une fonction ayant cette propriété s'appelle un isomorphisme. s'exprime par :

Une flèche allant de l'objet A vers l'objet B est un isomorphisme s'il existe une flèche g (que l'on aurait aussi pu noter f -1) telle que

g o f = IdA
et f o g = IdB Isomorphisme On voit qu'en utilisant la théorie des ensembles, on utilise les éléments des ensembles pour définir la propriété, alors qu'en utilisant la théorie des catégories, on ne parle que de composition et d'identité.
Cette définition reste valable dans toute catégorie, pas seulement pour la catégorie des ensembles.

Une fonction peut ne pas être bijective pour deux raisons.

Injections, monomorphismes

Raison 1 : si plusieurs éléments du domaine de définition ont la même image. Relations de isVoyelle() Dans ce cas, on a une perte d'information, on ne peut pas reconstituer l'ensemble de définition à partir de l'ensemble d'arrivée.

Une fonction qui n'a pas cette caractéristique est appelée une injection, on dit que la fonction est injective (ce qui n'est donc pas le cas pour isVoyelle()).
Pour caractériser cette propriété en utilisant la théorie des ensembles, on dit qu'une fonction f est injective si :

Pour tout élément x1 et x2 de son domaine de définition, f(x1) = f(x2) entraîne que x1 = x2

La propriété équivalente dans la théorie des catégories se nomme monomorphisme.

Comment exprimer cette propriété sans rien connaître de l'intérieur des ensembles ? En utilisant la composition.

On a une flèche f, qui va d'un objet A vers un objet B, et on cherche à savoir quelle condition elle vérifie pour être un monomorphisme.

On se place dans la catégorie des ensembles ; A et B représentent donc des ensembles, et f est une fonction, et on construit une situation où f n'est pas injective.
On imagine deux fonctions g1 et g2 qui vont d'un autre ensemble C vers A ; on les imagine en tout point égales, sauf en un point z. f, qui n'est pas injective, peut tout à fait envoyer les points x1 et x2 vers le même élément y. Monomorphime Cette situation nous donne la définition d'un monomorphisme :
Une fonction f est un monomorphisme si, pour tout objet C et pour toutes fonctions g1 et g2 allant de C vers A,
f o g2 = f o g1 entraîne g1 = g2

Cette propriété, valable dans toute catégorie, se traduit dans la catégorie des ensemble par l'injectivité.

Surjection, épimorphisme

La deuxième raison pour qu'une application ne soit pas bijective est que l'image de la fonction ne couvre pas tout l'ensemble d'arrivée.
On dit que la fonction est surjective si cela ne peut pas se produire. ; voir un exemple sur Wikipedia.

Cette propriété peut aussi s'exprimer en utilisant uniquement la composition, voir les notes du cours de Bartosz Milewski, paragraphe "Epimorphism".