# Lemme de l'étoile

En théorie des langages, le lemme de l'étoile ou lemme d'itération pour les langages rationnels (ou encore lemme de gonflement, lemme de pompage, lemme de la pompe, pumping lemma en anglais) énonce une propriété typique de tout langage rationnel. Informellement, il stipule que tout mot suffisamment long d'un langage rationnel peut être pompé, au sens qu'une partie centrale du mot peut être répétée un nombre quelconque de fois, et que chacun des mots produits est encore dans le langage. On peut même supposer que la partie centrale est située suffisamment au début du mot.
Le lemme de l'étoile a été formulé pour la première fois en 1961 par Y. Bar-Hillel, Micha A. Perles, Eli Shamir. Le même article contient un lemme d'itération pour les langages algébriques.
Le lemme de l'étoile est couramment utilisé pour montrer qu'un langage donné n'est pas rationnel (en raisonnant par l'absurde). En revanche, il ne peut être employé pour démontrer qu'un langage est rationnel. En effet, il énonce une condition, nécessaire certes, mais non suffisante, de rationalité.

## Explication informelle

Considérons le langage des mots qui commencent par un certain nombre de $a$, suivi par le même nombre de $b$. Il s'agit du langage composé des mots suivants :
Nous allons montrer que ce langage n'est pas rationnel, i.e. il n'est pas représenté par une expression rationnelle (ou expression régulière). Pour cela, supposons par l'absurde que ce langage est rationnel. On peut alors appliquer le lemme de l'étoile sur un mot suffisamment long du langage. Par exemple :
Le lemme dit que l'on peut effacer ou répéter une partie du mot, qui est suffisamment près du début du mot. Cette partie sera donc composée que de a et est représentée en gras, par exemple :
Le lemme stipule donc que les mots suivants sont aussi dans le langage :
ce qui n'est pas vrai puisque l'on a pas le même nombre de a que de b. Dans la suite, nous allons donner l'énoncé précis et formel du lemme de l'étoile. Puis la démonstration formelle de ce que l'on vient de voir.

## Énoncé formel

Dans l'énoncé suivant $|w|\,$ est positif et dénote la longueur du mot $w$. On écrit $y^{n}$pour dire que l'on a $n$ copies du mot $y$. Pour n = 0, $y^{n}$ est le mot vide.
Théorème — Soit $L$ un langage rationnel. Il existe un entier $N>0$ tel que tout mot $w$ de $L$ de longueur $|w|\geq N$ possède une factorisation $w=xyz$ telle que
* $|y|>0$
* $|xy|\leq N$
* $xy^{n}z\in L$ pour tout entier $n$ $\geq 0$.
Dans l'énoncé, l'entier $N$ ne dépend que de $L$ et non pas du mot $w$ choisi. Il est parfois appelé constante d'itération. Le facteur central $y$ de la factorisation $w=xyz$ est appelé un facteur itérant. Le nom « lemme de l'étoile » provient de la formulation équivalente suivante de la conclusion du lemme, dans laquelle une étoile apparaît :
    $xy^{*}z\subseteq L$.
Parmi les itérés $xy^{n}z$ qui sont dans le langage figure aussi le mot $xz$ obtenu pour $n=0$.
Il existe de nombreuses variantes de ce lemme ; la plus fréquente stipule, au lieu de la condition $|y|\leq N$, la condition $|xy|\leq N$, et donc que le facteur itérant $y$ se situe près du début du mot.

## Exemples d'application du lemme de l'étoile

Le lemme de l'étoile est souvent utilisé pour démontrer qu'un langage donné n'est pas rationnel. La preuve se fait en général par l'absurde, en supposant que le langage est rationnel et en exhibant un mot du langage qui ne vérifie pas la conclusion du lemme.

### Exemple d'une démonstration formelle

Montrons que le langage $L=\{a^{n}b^{n}\mid n\geq 0\}$ sur l'alphabet $A=\{a,b\}$ n'est pas rationnel. Il s'agit du langage composé des mots qui commencent par un certain nombre de $a$, suivi par le même nombre de $b$. Il contient notamment le mot vide, ainsi que les mots $ab$, $aabb$, $aaabbb$, etc.
Supposons par l'absurde que $L$ est rationnel. Le lemme de l'étoile peut alors s'appliquer à ce langage.
Soit $N>0$ une constante d'itération de $L$, et considérons le mot $w=a^{N}b^{N}$. Par le lemme de l'étoile, il existe un mot $w=xyz$ vérifiant les conditions du lemme de l'étoile. En particulier, et en utilisant la variante énoncée, on a $|xy|\leq N$, et donc $x$ et $y$ sont composés uniquement de lettres $a$.
Posons maintenant $k=|y|$, et remarquons que $k>0$ (car $|y|>0$) et $y=a^{k}$. Alors, par le lemme de l'étoile, et pour tout $n\geq 0$, tous les mots $xy^{n}z=a^{N-k+nk}b^{N}$ appartiennent également au langage $L$. Ainsi, on devrait avoir $N-k+nk=N$ pour tout entier $n\geq 0$, et donc $k=|y|=0$, ce qui est en contradiction avec l'hypothèse. Donc $L$ n'est pas rationnel.

### D'autres cas d'applications

On montre de même que
* le langage des palindromes sur $A=\{a,b\}$ n'est pas rationnel,
* le langage $\{w\in X^{*}:|w|_{a}=|w|_{b}\}$ sur $A=\{a,b\}$ (où $|w|_{a}\,$ désigne le nombre d'occurrences de la lettre $a$ dans le mot $w$) est composé des mots qui ont autant de $a$ que de $b$. Il n'est pas rationnel.
Un peu plus compliqué est la preuve que le langage $\{a^{n}b^{m}\mid 0\leq n\leq m\}$ n'est pas rationnel. De même, le langage $\{a^{n}b^{m}\mid n\neq m\}$ n'est pas rationnel. Au lieu de faire une preuve directe, il vaut mieux passer par le langage complément.

## Preuve du lemme de l'étoile

L'argument principal de la preuve est le principe des tiroirs. Il s’emploie, dans le cas présent, sous la forme du constat qu'un chemin assez long dans un graphe fini passe deux fois par le même sommet.
Soit $L$ un langage rationnel, sur un alphabet $A$. Par le théorème de Kleene, il existe un automate fini ${\mathcal {A}}$ qui reconnaît $L$. Soit $N$ le nombre d'états de cet automate. Soit $w$ un mot de $L$ de longueur $|w|\geq N\,$. Comme $w$ est dans $L$, il est reconnu par ${\mathcal {A}}$, et il existe un chemin acceptant $q_{0}{\xrightarrow {w}}t$ de l'état initial noté ici $q_{0}$ vers un état terminal $t$ d'étiquette $w$. Soient $a_{1},a_{2},\ldots ,a_{N}$ les $N$ premières lettres de $w$, posons $w=a_{1}a_{2}\cdots a_{N}w'$, et soient $q_{1},q_{2},\ldots ,q_{N}$ les états successifs atteints après la lecture de ces lettres. On a alors le chemin suivant :
    $q_{0}{\xrightarrow {a_{1}}}q_{1}{\xrightarrow {a_{2}}}q_{2}\cdots q_{N-1}{\xrightarrow {a_{N}}}q_{N}{\xrightarrow {w'}}t.$
Le principe des tiroirs dit que, parmi les $N+1$ états $q_{0},q_{1},\ldots ,q_{N}$, deux d'entre eux sont égaux. Il existe donc deux entiers $k,\ell$ avec $0\leq k<\ell \leq N$ tels que $q_{k}=q_{\ell }$. Posons $q=q_{k}=q_{\ell }$ et
    $x=a_{1}a_{2}\cdots a_{k},\ y=a_{k+1}\cdots a_{\ell },\ z=a_{\ell +1}\cdots a_{N}w'.$
Le chemin d'étiquette $w$ se factorise de la façon suivante :
    $q_{0}{\xrightarrow {x}}q{\xrightarrow {y}}q{\xrightarrow {z}}t.$
Il en résulte que $q{\xrightarrow {y^{n}}}q$ pour tout entier $n\geq 0$, et donc que $xy^{n}z$ est dans $L$ pour tout entier $n\geq 0$. Enfin, on a $|y|=\ell -k$, donc $0<|y|\leq N$. Ceci prouve le lemme.
La preuve montre en fait la variante du lemme énoncée ci-dessus, à savoir que de plus, on a $|xy|\leq N$, puisque $|xy|=\ell$.

## Le lemme est une condition nécessaire mais non suffisante de rationalité

Le lemme ne donne qu'une condition nécessaire pour qu'un langage soit rationnel.

### Un premier exemple

Voici un langage non rationnel qui vérifie le lemme de l'étoile dans la version donnée ci-dessus. Notons $u^{R}$ l'image miroir d'un mot $u$, et soit $L=\{uu^{R}v\mid \ u,v\in \{a,b\}^{+}\}$ l'ensemble des mots qui ont un préfixe qui est un palindrome non vide de longueur paire.
Posons $N=4$, et soit $w=uu^{R}v$ un mot de longueur au moins 4 du langage. Si $u$ est une lettre, la factorisation $w=xyz$ avec $x=uu^{R}$, $y$ la première lettre de $v$ et $z$ le reste du mot convient. Si $u$ est de longueur au moins 2, on choisit pour $x$ le mot vide, pour $y$ la première lettre de $u$, et pour $z$ le $u$ reste du mot. Pour $N\geq 2$, le mot $xy^{N}z$ commence par le palindrome non vide $yy$; pour $N=0$, le mot $xy^{N}z=z$ commence par le palindrome formé de $u$ privé de sa première lettre, suivi de l'image miroir de ce suffixe (lui-même suivi de la première lettre de $u$).

### Un autre exemple

Le langage $L=\left\{a^{m}b^{n}c^{n}\mid m,n\geq 1\right\}\cup \{b^{m}c^{n}\mid m,n\geq 0\}$ n'est pas rationnel mais vérifie les conditions du lemme de l’étoile ; en effet, tout mot $z\in L$ se factorise en $z=uvw$, de manière que $uv^{i}w\in L$ pour $i\geq 0$. Pour cela, on choisit pour $v$ la première lettre : c'est soit la lettre $a$, et le nombre de $a$ est arbitraire, ou c'est un $b$ ou $c$ sans $a$ e tête, et le nombre de $b$ ou $c$ est arbitraire.

## Extensions

Il existe de nombreuses variantes du lemme de l'étoile, plus ou moins sophistiquées, pour prendre en compte des langages plus compliqués.

### Choix du facteur itérant

La première variante énonce que la place du facteur itérant peut être choisie dans n'importe quelle plage du mot de longueur assez grande. Voici l'énoncé :
Lemme de l'étoile (variante) — Soit $L$ un langage rationnel. Il existe un entier $N$ tel que pour tout mot $w$ de $L$, et pour toute factorisation $w=uw'v$, avec $w'$ de longueur $|w'|\geq N$, il existe une factorisation $w'=xyz$ telle que
* $0<|y|\leq N$ et
* $uxy^{*}zv\subset L$.

### Exemple d'utilisation du choix du facteur itérant

Sur l'alphabet $\{a,b\}$, en posant, pour tout mot $u$ sur cet alphabet: $|u|_{a}$ et $|u|_{b}$, respectivement le nombre de $a$ et le nombre de $b$ dans $u$, on a que l'ensemble des mots $u$ tels que $|u|_{a}=|u|_{b}$ vérifie la conclusion du lemme de l'étoile (en prenant $N=2$, il existe, dans tous mots de cet ensemble, un $a$ et un $b$ se suivant; il est possible d'itérer cette partie du mot en restant dans ce langage: par exemple, si le mot est de la forme $vabv'$ (le cas $vbav'$ étant similaire), on a que, pour tout entier naturel n, $v(ab)^{n}v'$ est également dans le langage). Cependant, il ne respecte pas le lemme de l'étoile par blocs: par l'absurde, on suppose disposer d'un tel $N$. On pose alors: $w=a^{N}b^{N}$ et $u=a^{N}$, $w'=b^{N}$ et $v$, le mot vide. On dispose alors d'une factorisation de la forme: $w'=xyz$ respectant la conclusion du choix du facteur itérant. Or: $|uxy^{2}zv|_{b}>|uxyzv|_{b}$ et $|uxy^{2}zv|_{a}=|uxyzv|_{a}$, ce qui est absurde.

### Preuve du lemme avec choix du facteur itérant

Le schéma de la preuve est semblable à celui du premier lemme de l'étoile énoncé. Soit $L$ un langage rationnel, sur un alphabet $A$, soit ${\mathcal {A}}$, un automate fini reconnaissant $L$ et soit $N$ son nombre d'états. Soit $w$ un mot de $L$, et soit $uw'v$, une factorisation de ce mot telle que $|w'|\geq N$. On pose $w'=a_{1}\cdots a_{N}s$ où les $a_{i}$ sont des lettres et où $s$ le suffixe de $w'$ la longueur $|w'|-N$. Il existe une suite $i,q_{0},q_{1},\ldots ,q_{N},q',t$ d'états, où $i$ est initial et $t$ est terminal, tels que
    $i{\stackrel {u}{\longrightarrow }}q_{0}$, $q_{0}{\stackrel {a_{1}}{\longrightarrow }}q_{1}{\stackrel {a_{2}}{\longrightarrow }}q_{2}\cdots q_{N-1}{\stackrel {a_{N}}{\longrightarrow }}q_{N}$ et $q_{N}{\stackrel {s}{\longrightarrow }}q'{\stackrel {v}{\longrightarrow }}t$.
Par le principe des tiroirs, il existe deux entiers $0\leq k<\ell \leq N$ tels que $q_{k}=q_{\ell }$. Posons
    $q=q_{k}=q_{\ell }$, $x=a_{1}\cdots a_{k},y=a_{k+1}\cdots a_{\ell }$, $z=a_{\ell +1}\cdots a_{N}s$.
Alors
    $q_{0}{\stackrel {x}{\longrightarrow }}q{\stackrel {y}{\longrightarrow }}q{\stackrel {z}{\longrightarrow }}q'$ et de plus $q{\stackrel {y^{n}}{\longrightarrow }}q$
pour tout entier naturel $n$. L'automate reconnaît donc tous les mots de la forme $uxy^{n}zv$, et de plus $0<|y|=\ell -k-1\leq N$.

### Lemme de l'étoile par blocs

Dans cette variante, on découpe le mot en blocs, et c'est un groupe de blocs que l'on peut itérer:
Lemme de l'étoile par blocs — Soit $L$ un langage rationnel. Il existe un entier $N$ tel que pour tout mot $w$ de $L$, et pour toute factorisation $w=uw_{1}w_{2}\cdots w_{N}v$, où tous les $w_{i}$ sont non vides, il existe deux entiers $k,\ell$ avec
* $0\leq k<\ell \leq N$ et
* $uw_{1}w_{2}\cdots w_{k}(w_{k+1}\cdots w_{\ell })^{*}w_{\ell +1}\cdots w_{N}v\subset L$.
Dans cet énoncé et les suivants, on convient que $w_{1}w_{2}\cdots w_{k}$ est égal au mot vide si $k=0$, et de même $w_{\ell +1}\cdots w_{N}$ est égal au mot vide si $\ell =N$.

### Preuve du lemme de l'étoile par blocs

Soit $L$ un langage rationnel. Par théorème de Kleene, il existe un automate fini ${\mathcal {A}}$ reconnaissant $L$. Soit $N$ le nombre d'états de ${\mathcal {A}}$ et soit $w=uw_{1}\cdots w_{N}v$ un mot de $L$ Il existe une suite d'états $i,q_{0},q_{1},\ldots ,q_{N},t$ tels que
    $i{\stackrel {u}{\longrightarrow }}q_{0}{\stackrel {w_{1}}{\longrightarrow }}q_{1}\ \cdots \ q_{N-1}{\stackrel {w_{N}}{\longrightarrow }}q_{N}{\stackrel {v}{\longrightarrow }}t$,
où $i$ est initial et $t$ est terminal. Par le principe des tiroirs, il existe deux indice $0\leq k<\ell \leq N$ tels que $q_{k}=q_{\ell }$. On a donc, en notant $q$ cet état et $z=w_{k+1}\cdots w_{\ell }$, que
    $q{\stackrel {z}{\longrightarrow }}q$
dans l'automate. On en déduit le résultat souhaité : pour tout entier naturel $n$, le mot$w=uw_{1}\cdots w_{k}z^{n}w_{\ell +1}\cdots w_{N}v$ est un mot accepté par l'automate et est donc un mot de $L$.

### Contre-exemple à la réciproque du lemme de l'étoile par blocs

La réciproque de ce lemme est fausse (il ne s'agit donc pas d'une condition nécessaire et suffisante). Un exemple est donné ci-dessous.
Soient $A=\{a,b,c\}$ et $B=\{a,b,c,\#\}$ ; soit $K=\{uu\mid \ u\in \ A^{+}\}$ et $K'=\{u\#v\mid \ u,v\in \ A^{*}{\text{ et }}u\neq v\}$. Le langage $L$ défini par:
    $L=K'\cup A^{*}KA^{*}\#A^{*}\cup A^{*}\#A^{*}KA^{*}$
vérifie la conclusion du lemme de l'étoile par blocs. Cependant, il n'est pas rationnel.

### Lemme de l'étoile à la Ogden

Le lemme d'Ogden, initialement conçu pour les langages algébriques, s'applique aussi bien aux langages rationnels. Étant donné un mot $w=a_{1}a_{2}\cdots a_{n}$, où les $a_{i}$ sont des lettres, on appelle position dans $w$ tout entier de l'ensemble $\{1,2,\ldots ,n\}$. Un choix de $N$ positions distinguées dans $w$ (ceci est la terminologie habituelle, un peu alambiquée) est simplement un sous-ensemble $I\subset \{1,2,\ldots ,n\}$ de positions contenant $N$ éléments. Avec ces définitions, le lemme s'énonce comme suit:
Lemme de l'étoile à la Ogden — Soit $L$ un langage rationnel. Il existe un entier $N$ tel que pour tout mot $w$ de $L$ de longueur $|w|\geq N$, et pour tout choix de $N$ positions distinguées dans $w$, il existe une factorisation $w=xyz$ telle que
* $y$ contient au moins une et au plus $N$ positions distinguées
* $xy^{*}z\subset L$.
Si l'on distingue toutes les positions dans $w$, on retrouve le lemme de l'étoile initial. Si l'on considère la factorisation de $w$ obtenue en segmentant le mot après chaque position distinguée, on obtient essentiellement le lemme de l'étoile par blocs. Les preuves de ces énoncés sont très similaires.

## Conditions nécessaires et suffisantes

En exploitant les propriétés de clôture et de finitude associées aux langages rationnels, on peut obtenir, en partant du lemme de l’étoile, une forme du lemme de l’étoile qui est caractéristique des langages rationnels.

### Théorème de Jaffe

Une première caractérisation, qui se fonde sur un renforcement du lemme de l'étoile « faible » est celle de J. Jaffe.
On dit qu'un langage $L$ satisfait la condition $(J_{N})$ pour un certain entier naturel $N$ si pour tout mot $w$ de longueur $N$, il existe une factorisation $w=uvz$ avec $v$ non vide telle que: $\forall t\in A^{*},\forall n\in \mathbb {N} ,wt\in L\iff uv^{n}zt\in L$
On dit qu'un langage $L$ satisfait la condition $(J'_{N})$ pour un certain entier naturel $N$ si pour tout mot $w$ de longueur $N$, il existe une factorisation $w=uvz$ avec $v$ non vide telle que: $\forall t\in A^{*},wt\in L\iff uzt\in L$
On a alors le théorème de Jaffe:
Théorème de Jaffe — Soit $L$ un langage. Les conditions suivantes sont équivalentes :
* $L$ est rationnel ;
* Il existe un entier $N$ tel que $L$ vérifie la condition $(J_{N})$ ;
* Il existe un entier $N$ tel que $L$ vérifie la condition $(J'_{N})$.
Elle est cependant « non-locale » puisque pour chaque mot, il faut trouver une factorisation qui marche uniformément par rapport à tous les quotients à droite de ce mot.

### Théorème d'Ehrenfeucht, Parikh et Rozenberg

Un théorème prouvé par Andrzej Ehrenfeucht, Rohit Jivanlal Parikh et Grzegorz Rozenberg donne une condition, fondée sur un renforcement du lemme de l'étoile par blocs, qui est nécessaire et suffisante pour qu'un langage soit rationnel et qui est « locale » au sens précédent.
On dit qu'un langage $L$ sur l'alphabet $A$ vérifie la condition $(E_{N})$ pour un entier $N$ si pour tout mot $w$, et pour toute factorisation $w=w=uw_{1}w_{2}\cdots w_{N}v$, où les mots $w_{i}$ sont non vides, il existe deux indices $k,\ell$ avec $0\leq k<\ell \leq N$ tels que
    $w\in L\iff uw_{1}w_{2}\cdots w_{k}(w_{k+1}\cdots w_{\ell })^{n}w_{\ell +1}\cdots w_{N}v\in L$ pour tout $n\in \mathbb {N}$.
L'équivalence équivaut à la conjonction des deux implications :
    $w\in L\implies uw_{1}w_{2}\cdots w_{k}(w_{k+1}\cdots w_{\ell })^{*}w_{\ell +1}\cdots w_{N}v\subset L$ et
    $w\in A^{*}\setminus L\implies uw_{1}w_{2}\cdots w_{k}(w_{k+1}\cdots w_{\ell })^{*}w_{\ell +1}\cdots w_{N}v\subset A^{*}\setminus L$.
On dit que $L$ vérifie la condition $(E'_{N})$ si pour tout mot $w$, et pour toute factorisation $w=w=uw_{1}w_{2}\cdots w_{N}v$, où les mots $w_{i}$ sont non vides, il existe deux indices $k,\ell$ avec $0\leq k<\ell \leq N$ tels que
    $w\in L\iff uw_{1}w_{2}\cdots w_{k}w_{\ell +1}\cdots w_{N}v\in L$.
Théorème d'Ehrenfeucht, Parikh et Rozenberg — Soit $L$ un langage. Les conditions suivantes sont équivalentes :
* $L$ est rationnel ;
* il existe un entier $N$ tel que $L$ vérifie la condition $(E_{N})$ ;
* il existe un entier $N$ tel que $L$ vérifie la condition $(E'_{N})$.
Il convient de noter une différence importante avec le théorème de Jaffe énoncée précédemment. Les conditions $(J_{N})$ et $(J'_{N})$ portent sur une factorisation d'un mot et de tous ses quotients à droite tandis que les conditions $(E_{N})$ et $(E'_{N})$ portent sur toutes les factorisations possibles d'un seul mot, ce qui assure leur caractère local.
L'implication difficile est $(3)\implies (1)$. Elle utilise, à la place du principe des tiroirs, le théorème de Ramsey.
$(1)\implies (2)$
Si $L$ est rationnel alors son complémentaire $A^{*}\setminus L$ est aussi rationnel. On applique alors le lemme de l'étoile par blocs à $L$ et à $A^{*}\setminus L$, ce qui fournit deux entiers $N_{1}$ et $N_{2}$ respectivement. On définit $N=max\{N_{1},N_{2}\}$. Soient alors un mot $w$ et une factorisation $w=w=uw_{1}w_{2}\cdots w_{N}v$, où les mots $w_{i}$ sont non vides. Si $w\in L$, alors il existe deux indices $k,\ell$ avec $0\leq k<\ell \leq N_{1}\leq N$ tels que $uw_{1}w_{2}\cdots w_{k}(w_{k+1}\cdots w_{\ell })^{*}w_{\ell +1}\cdots w_{N}v\subset L$. De même, si $w\in A^{*}\setminus L$, alors il existe deux indices $k,\ell$ avec $0\leq k<\ell \leq N_{2}\leq N$ tels que $uw_{1}w_{2}\cdots w_{k}(w_{k+1}\cdots w_{\ell })^{*}w_{\ell +1}\cdots w_{N}v\subset A^{*}\setminus L$. Finalement on obtient bien que $L$ vérifie la condition $(E_{N})$.
$(2)\implies (3)$
Si $L$ vérifie $(E_{N})$ pour un certain entier $N$ alors pour tout mot et toute factorisation, en prenant $n=0$ dans l'équivalence sus-citée attachée à la condition $(E_{N})$, on obtient que $L$ vérifie $(E'_{N})$.
$(3)\implies (1)$
On s'inspire ici de l'exposition donnée dans les livres de Carton et de Sakarovitch. On procède en trois étapes:
* a) On montre que si $L$ vérifie la condition $(E'_{N})$ pour un certain entier naturel $N$ alors ses quotients à gauche aussi.
* b) On montre, grâce au théorème de Ramsey, que pour tout entier naturel $N$, le nombre de langages vérifiant la condition $(E'_{N})$ est fini.
* c) On utilise le théorème de Myhill-Nerode pour conclure : le langage $L$, ayant un nombre fini de quotients à gauche, est reconnaissable par un automate fini, donc rationnel d'après le théorème de Kleene.
Preuve du point a): Soient $N\in \mathbb {N}$ et $L$ vérifiant la condition $(E'_{N})$. Soit $f$ un mot. Soient $w$ un mot et soit $w=w=uw_{1}w_{2}\cdots w_{N}v$ une factorisation, où les mots $w_{i}$ sont non vides. Grâce à la condition $(E'_{N})$, on sait qu'il existe deux indices $k,\ell$ avec $0\leq k<\ell \leq N$ tels que:
    $fw\in L\iff fuw_{1}w_{2}\cdots w_{k}w_{\ell +1}\cdots w_{N}v\in L$.
On a alors:
    ${\begin{aligned}w\in f^{-1}L&\iff fw\in L\iff fuw_{1}w_{2}\cdots w_{k}w_{\ell +1}\cdots w_{N}v\in L\\&\iff uw_{1}w_{2}\cdots w_{k}w_{\ell +1}\cdots w_{N}v\in f^{-1}L\end{aligned}}$
ce qui montre que $f^{-1}L$ vérifie la condition $(E'_{N})$.
Preuve du point b): On utilise le théorème de Ramsey sous la forme suivante, équivalente à celle énoncée pour les graphes dans l'article théorème de Ramsey. Dans cet énoncé, $P_{k}(X)$ dénote l'ensemble des parties à $k$ éléments d'un ensemble $X$.
Théorème de Ramsey pour les ensembles finis — Pour tout triplet $(k,m,r)\in \mathbb {N} ^{3}$, il existe un entier $R=R(k,m,r)$ tel que pour tout ensemble $E$ d'au moins $R$ éléments et pour toute partition de $P_{k}(E)$ en au plus $m$ classes, il existe un sous-ensemble $F$ de $E$ d'au moins $r$ éléments tel que $P_{k}(F)$ est entièrement contenu dans l'une des classes de la partition.
Soient donc $N\in \mathbb {N}$ et $R=R(2,2,N+1)$. Montrons que si deux langages $L$ et $K$ vérifiant la condition $(E'_{N})$ coïncident sur les mots de longueur $\leq R$ alors ils sont égaux. Ceci fournira une injection de l'ensemble des langages vérifiant $(E'_{N})$ vers l'ensemble des parties de l'ensemble des mots de longueur $\leq R$, qui est un ensemble fini, ce qui permettra de conclure.
Pour ce faire, on procède par récurrence forte sur la longueur d'un mot. Si $w$ est un mot de longueur $\leq R$ alors $w\in L\iff w\in K$ par hypothèse. On suppose maintenant que $w$ est de longueur $M>R$ et que $L$ et $K$ coïncident sur les mots de longueur $<M$. On factorise $w$ en $w=w_{0}w_{2}\cdots w_{R}v$ où les $w_{i}$ sont des lettres et $v$ un mot. On considère l'ensemble $E=\{1,\ldots ,R\}$ et la partition $\{X,{\bar {X}}\}$ de $P_{2}(E)$ où
    $X=\{\{i,j\}\in P_{2}(E)\mid i<j\ \ {\text{et}}\ \ w_{0}w_{2}\cdots w_{i}w_{j+1}\cdots w_{N}v\in L\}$
et son complémentaire noté ${\bar {X}}$. Par hypothèse de récurrence, on a aussi
    $X=\{\{i,j\}\in P_{2}(E)\mid i<j\ \ {\text{et}}\ \ w_{0}w_{2}\cdots w_{i}w_{j+1}\cdots w_{N}v\in K\}$.
Par le théorème de Ramsey, on obtient l'existence d'un sous-ensemble $F=\{i_{1}<\cdots <i_{N}\}$ de $E$ tel que $P_{2}(F)\subset X$ ou $P_{2}(F)\subset {\bar {X}}$. On obtient alors une nouvelle factorisation $w=uv_{1}\cdots v_{N}z$ avec
    $u=w_{0}\cdots w_{i_{0}-1}$ , $v_{j}=w_{i_{j-1}}w_{i_{j-1}+1}\cdots w_{i_{j}-1}$ pour $j=1,\ldots ,N$ et $z=w_{i_{N}}\cdots v$.
Puisque $L$ et $K$ vérifient la condition $(E'_{N})$, cette factorisation donne deux paires $(m,n)\in [[0,N]]^{2}$ et $(m',n')\in [[0,N]]^{2}$ respectivement qui délimitent des blocs qu'on peut éliminer dans $w$. Plus précisément :
    ${\begin{aligned}w\in L&\iff w_{0}\cdots w_{i_{m}}w_{i_{n}+1}\cdots w_{N}v\in L\\&\iff w_{0}\cdots w_{i_{m'}}w_{i_{n}'+1}\cdots w_{N}v\in L\\&\iff w_{0}\cdots w_{i_{m'}}w_{i_{n}'+1}\cdots w_{N}v\in K\iff w\in K\end{aligned}}$
par définition de $(m,n)$, $F$ et $(m',n')$ successivement. Ceci fournit l'hérédité de la propriété et permet de conclure la récurrence. On obtient finalement que si les langages $L$ et $K$ coïncident sur les mots de longueur $<R$, ils sont égaux, ce qui achève la preuve du point b).