En mathématiques, une algèbre de Kleene (du nom du logicien américain Stephen Cole Kleene) correspond à l'un des deux concepts suivants :
De nombreuses définitions non équivalentes des algèbres de Kleene et des structures liées ont été données dans la littérature. Nous donnerons ici la définition qui semble la plus communément admise aujourd'hui.
Une algèbre de Kleene est un ensemble doté des deux lois de composition interne + : A × A → A et · : A × A → A et de l'opérateur * : A → A. Ces lois et cet opérateur sont notés a + b, ab et a* respectivement. Ces opérations satisfont les axiomes suivants :
Les axiomes ci-dessus définissent un semi-anneau. On ajoute de plus :
Il est dès lors possible de définir un préordre ≤ sur A en postulant a ≤ b si et seulement si a + b = b (ou de manière équivalente, a ≤ b si et seulement il existe c dans A tel que a + c = b). Cette relation d'ordre permet de poser les deux derniers axiomes sur l'opérateur * :
De manière intuitive, on peut penser à a + b comme l'union ou le plus petit majorant de a et b, et à ab comme une multiplication croissante, dans le sens où a ≤ b implique ax ≤ bx. L'idée sousjacente à l'opérateur « étoile » est que a*=1 + a + aa + aaa + ... Du point de vue de la théorie de la programmation, on peut interpréter + comme un opérateur de « choix » non déterministe, · comme la « composition séquentielle » et * comme l'« itération ».
Zéro, noté 0, est le plus petit élément de l'ensemble, autrement dit 0 ≤ a pour tout a dans A.
La somme a + b est le plus petit majorant de a et b : on a a ≤ a + b et b ≤ a + b et si x est un élément de A avec a ≤ x et b ≤ x, alors a + b ≤ x. De manière similaire, a1 + ... + an est le plus petit majorant des éléments a1, ..., an.
La multiplication et l'addition sont monotoniques : si a ≤ b, alors a + x ≤ b + x, ax ≤ bx et xa ≤ xb pour tout x de A.
Considérant l'opération *, nous avons 0* = 1 et 1* = 1, ce * est croissant (a ≤ b implique a* ≤ b*), et que an ≤ a* pour tout entier naturel n. De plus, (a*)(a*) = a*, (a*)* = a*, et a ≤ b* si et seulement si a* ≤ b*.
Les séries formelles forment une algèbre de Kleene à condition de prendre pour f * la série (1 - f )-1.
Si A est une algèbre de Kleene et n un entier naturel, on peut considérer l'ensemble Mn(A) constituées de toutes les matrices n par n avec entrées dans A. En utilisant les notions ordinaires d'additions et de multiplications matricielles, on peut définir une opération * unique telle que Mn(A) devienne une algèbre de Kleene.