# Lemme d'Ogden

En informatique théorique, le lemme d'Ogden est un résultat de théorie des langages analogue au lemme de l'étoile. On l'utilise principalement pour démontrer que certains langages ne sont pas algébriques. Il est nommé ainsi d'après William F. Ogden, un informaticien théoricien américain qui l’a publié en 1968.
Le lemme d'Ogden est une version plus élaborée du lemme d'itération pour les langages algébriques, aussi connu sous le nom de lemme de Bar-Hillel, Perles et Shamir.
Il existe des langages qui satisfont le lemme d'Ogden mais qui ne sont pas algébriques. Ce lemme donne une condition nécessaire pour les langages algébriques, mais pas une condition suffisante. Il est très utile, dans sa version grammaticale, pour prouver que certains langages sont inhéremment ambigus.

## Énoncés
### Lemme d'Ogden

É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 ou positions marquées dans $w$ (ceci est la terminologie traditionnelle) 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 d'Ogden — Soit $L$ un langage algébrique. 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=xuyvz$ telle que :
* ($x$ et $u$ et $y$) ou ($y$ et $v$ et $z$) contiennent au moins une position distinguée ;
* $uyv$ contient au plus $N$ positions distinguées ;
* $xu^{n}yv^{n}z\in L$ pour tout $n\geq 0$.
Le plus petit entier $N$ pour lequel l'énoncé est vrai est appelé la constante d'Ogden.

### Variante grammaticale

Il existe une variante grammaticale du lemme d'Ogden : elle dit que la paire itérante $(x,u,y,v,z)$ peut être choisie grammaticale. Cette variante est bien utile dans certains cas, et notamment pour les langages inhéremment ambigus. Voici l'énoncé :
Lemme d'Ogden (variante grammaticale) — Soit $G$ une grammaire algébrique d'axiome $S$. Il existe un entier $N$ tel que pour tout mot $w$ qui dérive de $S$ de longueur $|w|\geq N$, et pour tout choix de au moins $N$ positions distinguées dans $w$, il existe une factorisation $w=xuyvz$ telle que :
* ($x$ et $u$ et $y$) ou ($y$ et $v$ et $z$) contiennent au moins une position distinguée ;
* $uyv$ contient au plus $N$ positions distinguées ;
* Il existe une variable $X$ telle que $S{\stackrel {*}{\to }}xXz,\ X{\stackrel {*}{\to }}uXv,\ X{\stackrel {*}{\to }}y$.
Dans cet énoncé, le mot $w$ peut contenir des variables de la grammaire : il appartient au « langage élargi » constitué par définition de tous les mots dérivant de $S$, qu'ils contiennent ou non des variables.

## Exemples d'application
### Langages non algébriques

* Le langage $L=\{a^{n}b^{n}c^{n}\mid n\geqslant 0\}$ n'est pas algébrique. Pour le voir, on distingue dans le mot $a^{N}b^{N}c^{N}$ les lettres égales à $a$. En appliquant le lemme, on fait varier le nombre de lettres $a$. Il faut distinguer encore le cas où le facteur $v$ est vide ou non, mais comme on itère ce facteur, il ne peut être formé que de lettres de même type, et on ne peut pas compenser l'accroissement de lettres $b$ et $c$ à la fois, d'où la contradiction.
* Le langage $L=\{a^{m}b^{n}c^{m}d^{n}\mid n,m\geq 0\}$ n’est pas algébrique. On applique cette fois la variante grammaticale du lemme au mot $w=a^{N}b^{N}c^{N}d^{N}$, où $N$ est la constante d'Ogden, et où les lettres distinguées sont les lettres $b$. Il existe des dérivations
       $S{\stackrel {*}{\to }}a^{N}b^{k}Xd^{\ell },\ X{\stackrel {*}{\to }}b^{i}Xd^{i},\ X{\stackrel {*}{\to }}b^{\bar {k}}c^{N}d^{\bar {\ell }}$
    avec $N=k+i+{\bar {k}}=\ell +i+{\bar {\ell }}$. On applique le lemme une deuxième fois, au mot $a^{N}b^{k}Xd^{\ell }$, où cette fois-ci ce sont les lettres $a$ qui sont distinguées. On obtient une paire itérante contenant des lettres $a$ itérées, mais aucune lettre $d$, contradiction.

### Langages non algébriques vérifiant le lemme

Le lemme d'Odgen est une condition nécessaire mais pas suffisante pour les langages algébriques.
* Le langage $L=\{a^{n}b^{m}\mid n\neq m\}\cup \{a^{n}b^{n}\mid n{\text{ non premier }}\}$ n’est pas algébrique, car étant un langage borné sur un alphabet à deux lettres, son complément (par rapport à $a^{*}b^{*}$) est $\{a^{n}b^{n}\mid n{\text{ premier }}\}$ qui n’est pas algébrique. Pourtant, le langage vérifie le lemme d'Ogden.
* Le langage $L=b^{*}\cup aaa^{*}b^{*}\cup \{ab^{p}\mid p{\text{ premier }}\}$ n'est pas algébrique, mais le lemme d'Ogden ne permet pas de le prouver parce qu'il n'y a pas moyen d'éviter d'itérer la lettre $a$ initiale.

### Un langage inhéremment ambigu

* Le langage $L=\{a^{n}b^{n}c^{m}\mid n,m\geq 0\}\cup \{a^{m}b^{n}c^{n}\mid n,m\geq 0\}$ est inhéremment ambigu. Un langage est inhéremment ambigu si toutes les grammaires qui l'engendrent sont ambiguës. On applique une première fois la variante du lemme au mot $w=a^{N}b^{N}c^{N+N!}$ où $N$ est la constante d'Ogden, et en distinguant les lettres $b$. Il existe une dérivation $S{\stackrel {*}{\to }}xXz{\stackrel {*}{\to }}xuXvz{\stackrel {*}{\to }}xuyvz$, et les conditions impliquent que $u=a^{i}$ et $v=b^{i}$ pour un entier $0\leq i\leq N$. En itérant $N!/i$ fois la dérivation $X{\stackrel {*}{\to }}uXv$ on obtient un arbre de dérivation pour le mot $a^{N+N!}b^{N+N!}c^{N+N!}$. Cet arbre contient un sous-arbre dont la frontière ne contient que des lettres $a$ et $b$, dont au moins $N!-N$ lettres $b$. En appliquant le même procédé au mot $w=a^{N+N!}b^{N}c^{N}$, on obtient un autre arbre de dérivation pour le même mot $a^{N+N!}b^{N+N!}c^{N+N!}$. Cet arbre contient un sous-arbre dont la frontière ne contient que des lettres $b$ et $c$, dont au moins $N!-N$ lettres $b$. Cet arbre est donc différent du premier arbre.

## Démonstration de la version grammaticale

Soit $G$ une grammaire algébrique de variables $V$ et d'axiome $S$. Soit $w$ un mot qui dérive de $S$.
La démonstration se trouve simplifiée si on ne veut établir que la version langage du lemme d'itération. Dans ce cas on peut choisir une grammaire sous forme normale de Chomsky, et un arbre de dérivation est essentiellement un arbre binaire.

### Un lemme combinatoire

Considérons un arbre dont certaines feuilles sont distinguées. On dit que :
* un nœud est distingué lorsque le sous-arbre dont il est racine contient des feuilles distinguée ;
* un nœud est spécial lorsqu'au moins deux de ses enfants sont distingués.
Le parent d'un nœud distingué est distingué, la racine est distinguée dès que l'une des feuilles est distinguée, un nœud spécial est lui-même distingué.
Un arbre est de degré $m$ si chaque nœud a au plus $m$ enfants.
Lemme — Soit $t$ un arbre de degré $m$ avec $k$ feuilles distinguées. Si chaque branche contient au plus $r$ nœuds spéciaux, alors $k\leq m^{r}$.
Si $r=0$, il n'y a pas de nœud spécial ; il n'y a qu'une seule feuille distinguée, car s'il y en avait deux, leur ancêtre commun serait spécial. Supposons donc $r\geq 1$, et soit $x$ un nœud spécial dont aucun descendant n’est spécial ; chacun des sous-arbres de $x$ contient au plus une feuille distinguée, et comme $x$ a au plus $m$ enfants, l'arbre de racine $x$ contient au plus $m$ feuilles distinguées. On remplace maintenant chaque sous-arbre de cette nature une simple feuille distinguée. Le nombre de nœuds spéciaux diminue de 1 sur chaque branche. L'arbre obtenu a, par récurrence, au plus $m^{r-1}$ feuilles distinguées. Comme chacune des nouvelles feuilles a remplacé un sous-arbre avec au plus $m$ feuilles, ceci prouve le résultat.

### Démonstration

On utilise la contraposée du lemme précédent : si l'arbre a strictement plus de $m^{r}$ feuilles distinguées, alors l'arbre a au moins une branche qui contient au moins $1+r$ nœuds spéciaux.
Soit $m$ la longueur maximale des membres droits des règles. On pose $r=2(|V|+1)$ et $N=1+m^{r}$. Considérons un arbre de dérivation pour le mot $w$. Par définition, l'arbre est de degré $m$ et possède des feuilles distinguées qui sont les positions distinguées de $w$. L'arbre possède une branche ayant au moins $1+r$ nœuds spéciaux, notés $s_{0},\ldots ,s_{r}$. Chacun de ces nœuds a au moins un fils distingué qui n'est pas sur la branche ; le nœud est gauche si ce fils est à gauche de la branche, il est droit sinon. Comme $1+r=2|V|+3$, il y a au moins $|V|+2$ sommets distingués soit tous gauches, soit tous droits. Comme ce nombre est supérieur au nombre de variables, deux sommets $s_{i}$ et $s_{j}$ (notés $b_{1}$ et $b_{2}$ sur la figure), avec $i<j$, sont étiquetés avec la même variable $X$. L'arbre donne alors les dérivations
    $S{\stackrel {*}{\to }}xXz$, $X{\stackrel {*}{\to }}uXv$ et $X{\stackrel {*}{\to }}y$.
Si les nœuds distingués sont gauche, les mots $x,u,y$ contiennent des positions distinguées, sinon c'est le cas des mots $y,v,z$. Enfin, si le mot $y$ contient plus que $N$ positions distinguées, on recommence le découpage à partir de la racine $s_{j}$ de son sous-arbre.