En théorie des langages, le lemme de l'étoile (ou encore lemme d'itération, lemme de pompage, pumping lemma en anglais) décrit une propriété essentielle de tout langage rationnel. Informellement, il établit que tout mot suffisamment long d'un langage rationnel peut être pompé, c'est-à-dire qu'une partie centrale du mot peut être répétée un nombre arbitraire de fois pour produire un nouveau mot qui se trouve encore dans le langage initial.
Le lemme de l'étoile a été imaginé pour la première fois par Y. Bar-Hillel, Micha A. Perles, Eli Shamir en 1961. Il est très pratique pour montrer qu'un langage donné n'est pas rationnel (en raisonnant par l'absurde).
Soit L un langage rationnel sur l'alphabet X.
Alors il existe un entier p tel que :
Voici un automate fini reconnaissant le langage décrit par l'expression rationnelle a(bc)*d.
L'automate fini reconnaît le mot abcbcd. Comme il contient plus de lettres que le nombre d'états de l'automate, tout chemin étiqueté par abcbcd dans l'automate comportera au moins un état répété. Ici, l'état q1 est répété. On comprend ainsi que ad appartient au langage reconnu par l'automate, en empruntant le chemin
On pressent donc que la démonstration reposera sur le nombre d'état d'un automate reconnaissant le langage rationnel en question, et sur la répétition d'états lors de la lecture d'un mot.
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 de longueur suffisante tel que la propriété (4) du lemme n'est pas vérifiée.
Prenons par exemple le langage
On montre de même que
Il faut bien saisir que le lemme ne donne qu'une condition nécessaire. La contraposée de ce lemme nous dit donc qu'un langage ne vérifiant pas les propriétés énoncées n'est pas rationnel, mais en aucun cas on ne peut affirmer qu'un langage non rationnel ne vérifiera pas ces propriétés. Il s'agit d'un problème d'implication logique, entre autres :
Par exemple, notons uR l'image miroir d'un mot quelconque u. uR est donc tel que uuR est un palindrome. Le langage
Prenons p = 4, et w = uuRv de longueur au moins 4. Si u est de longueur 1, alors v est de longueur au moins 2, et on choisit pour y la première lettre de v par exemple. Sinon, u est de longueur au moins 2 et on prend pour y la première lettre de u, z les lettres restantes et x le mot vide : on remarque que pour