Rappel : si L est un langage rationnel, alors il existe un automate fini reconnaissant le langage L.
On considère un langage rationnel L.
Premier cas : si L est fini, alors on choisit p>maxw∈L∣w∣. Alors il n'existe pas de mot w appartenant à L tel que ∣w∣⩾p, donc l'assertion à vérifier est triviale.
Deuxième cas : si L est infini.
Il existe un automate fini A qui reconnaît L. Le nombre d'états de A étant fini, on note p ce nombre augmenté de 1.
Soit maintenant w un mot de L tel que ∣w∣⩾p. w est reconnu par A, donc il existe un chemin q0⟶wqn réussi dans A, étiqueté par w. Autrement dit, q0 est un état initial de A, et en partant de cet état on peut lire l'une après l'autre toutes les lettres de w en terminant la lecture par un état qn acceptant de A. Ceci impose n=∣w∣⩾p, ce qui assure par la définition de p qu'un certain état q=qi, i∈{0..n} intervient au moins deux fois dans le chemin parcouru pour lire w.
On peut choisir i minimal. q est ainsi décrit comme la première occurrence du premier état q répété au cours du chemin q0⟶qn. On note alors y le mot qui est lu entre qi et qj, la deuxième occurrence de q dans le chemin en question (avec donc n⩾j>i). On note x le mot lu entre q0 et qi, et z le mot lu entre qj et qn. Ainsi, w = xyz.
On remarque que x et z peuvent être vides, mais y ne l'est pas. Vu la définition de y, la propriété (4) du lemme est vérifiée. Quant à la propriété (2), elle résulte des choix de i et j.