From 8d7c77c96249f7e7c0f167b9710b59efa5662010 Mon Sep 17 00:00:00 2001
From: "David A. Madore" <david+git@madore.org>
Date: Wed, 30 Nov 2016 20:03:55 +0100
Subject: Using the pumping lemma.

---
 notes-inf105.tex | 177 ++++++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 128 insertions(+), 49 deletions(-)

(limited to 'notes-inf105.tex')

diff --git a/notes-inf105.tex b/notes-inf105.tex
index afcc0cd..7b31806 100644
--- a/notes-inf105.tex
+++ b/notes-inf105.tex
@@ -373,39 +373,39 @@ $dc{*}$).
 
 Voici quelques autres exemples de langages :
 \begin{itemize}
-\item Le langage (fini) $\{foo,bar,baz\}$ formé des seuls trois mots
-  $foo$, $bar$, $baz$ sur l'alphabet $\Sigma = \{a,b,f,o,r,z\}$.
-\item Le langage (fini) formé des mots de longueur exactement $42$ sur
-  l'alphabet $\Sigma = \{p,q,r\}$.  Comme on l'a vu
+\item Le langage (fini) $\{foo,bar,baz\}$ constitué des seuls trois
+  mots $foo$, $bar$, $baz$ sur l'alphabet $\Sigma = \{a,b,f,o,r,z\}$.
+\item Le langage (fini) constitué des mots de longueur exactement $42$
+  sur l'alphabet $\Sigma = \{p,q,r\}$.  Comme on l'a vu
   en \ref{number-of-words-of-length-n}, cet ensemble a pour cardinal
   exactement $3^{42}$.
-\item Le langage (fini) formé du seul mot vide (=mot de longueur
+\item Le langage (fini) constitué du seul mot vide (=mot de longueur
   exactement $0$) sur l'alphabet, disons, $\Sigma = \{p,q,r\}$.  Ce
   langage $\{\varepsilon\}$ a pour cardinal $1$ (ou $3^0$ si on veut).
   Il ne faut pas le confondre avec le suivant :
 \item Le langage vide, qui ne contient aucun mot (sur un alphabet
   quelconque).  Ce langage a pour cardinal $0$.
-\item Le langage formé des mots de une seule lettre sur un alphabet
+\item Le langage constitué des mots de une seule lettre sur un alphabet
   $\Sigma$, qu'on peut identifier à $\Sigma$ lui-même (en identifiant
   un mot de une lettre à la lettre en question).
-\item Le langage sur l'alphabet $\Sigma=\{a,b\}$ formé des mots qui
-  commencent par trois $a$ consécutifs : ou, si on préfère, qui ont le
-  mot $aaa$ comme préfixe.
-\item Le langage sur l'alphabet $\Sigma=\{a,b\}$ formé des mots qui
-  contiennent trois $a$ consécutifs ; ou, si on préfère, qui ont $aaa$
-  comme facteur.
-\item Le langage sur l'alphabet $\Sigma=\{a,b\}$ formé des mots qui
-  contiennent au moins trois $a$, non nécessairement consécutifs ; ou,
-  si on préfère, qui ont $aaa$ comme sous-mot.
-\item Le langage sur l'alphabet $\Sigma=\{a\}$ formé de tous les mots
-  dont la longueur est un nombre premier ($L = \{aa, aaa, a^5, a^7,
-  a^{11},\ldots\}$).  Ce langage est infini.
-\item Le langage sur l'alphabet $\Sigma=\{0,1\}$ formé de tous les
+\item Le langage sur l'alphabet $\Sigma=\{a,b\}$ constitué des mots
+  qui commencent par trois $a$ consécutifs : ou, si on préfère, qui
+  ont le mot $aaa$ comme préfixe.
+\item Le langage sur l'alphabet $\Sigma=\{a,b\}$ constitué des mots
+  qui contiennent trois $a$ consécutifs ; ou, si on préfère, qui ont
+  $aaa$ comme facteur.
+\item Le langage sur l'alphabet $\Sigma=\{a,b\}$ constitué des mots
+  qui contiennent au moins trois $a$, non nécessairement consécutifs ;
+  ou, si on préfère, qui ont $aaa$ comme sous-mot.
+\item Le langage sur l'alphabet $\Sigma=\{a\}$ constitué de tous les
+  mots dont la longueur est un nombre premier ($L = \{aa, aaa, a^5,
+  a^7, a^{11},\ldots\}$).  Ce langage est infini.
+\item Le langage sur l'alphabet $\Sigma=\{0,1\}$ constitué de tous les
   mots commençant par un $1$ et qui, interprétés comme un nombre écrit
   en binaire, désignent un nombre premier ($L = \{10, 11, 101, 111,
   1011, \ldots\}$).
-\item Le langage sur l'alphabet Unicode formé de tous les mots qui
-  constituent un document XML bien-formé d'après la spécification
+\item Le langage sur l'alphabet Unicode constitué de tous les mots qui
+  représentent un document XML bien-formé d'après la spécification
   XML 1.0.
 \end{itemize}
 
@@ -480,7 +480,7 @@ bbcd\}$.
 \thingy Si $L$ est un langage sur l'alphabet $\Sigma$, autrement dit
 $L \subseteq \Sigma^*$, et si $r \in \mathbb{N}$, on peut définir un
 langage $L^r$, par analogie avec \ref{powers-of-a-word}, comme le
-langage $L^r = \{w_1\cdots w_r : w_1,\ldots,w_r \in L\}$ formé des
+langage $L^r = \{w_1\cdots w_r : w_1,\ldots,w_r \in L\}$ constitué des
 concaténation de $r$ mots appartenant à $L$, ou si on préfère, par
 récurrence :
 \begin{itemize}
@@ -492,19 +492,19 @@ récurrence :
 \{a,bb\}$, alors $L^2 = \{aa, abb, bba, bbbb\}$ et $L^3 = \{aaa, aabb,
 abba, abbbb, \penalty-100 bbaa, bbabb, bbbba, bbbbbb\}$.
 
-\emph{Attention}, $L^r$ n'est pas le langage $\{w^r : w\in L\}$ formé
-des répétitions $r$ fois ($w^r$) des mots $w$ de $L$ : c'est le
-langage des concaténations de $r$ mots appartenant à $L$ \emph{mais
+\emph{Attention}, $L^r$ n'est pas le langage $\{w^r : w\in L\}$
+constitué des répétitions $r$ fois ($w^r$) des mots $w$ de $L$ : c'est
+le langage des concaténations de $r$ mots appartenant à $L$ \emph{mais
   ces mots peuvent être différents}.  À titre d'exemple, si $L =
-\{a,b\}$ alors $L^r$ est le langage formé des $2^r$ mots de longueur
-exactement $r$ sur $\{a,b\}$, ce n'est pas l'ensemble à deux éléments
-$\{a^r, b^r\}$ formé des seuls deux mots $a^r = aaa\cdots a$ et $b^r =
-bbb\cdots b$.
+\{a,b\}$ alors $L^r$ est le langage constitué des $2^r$ mots de
+longueur exactement $r$ sur $\{a,b\}$, ce n'est pas l'ensemble à deux
+éléments $\{a^r, b^r\}$ constitué des seuls deux mots $a^r = aaa\cdots
+a$ et $b^r = bbb\cdots b$.
 
 \thingy Si $L$ est un langage sur l'alphabet $\Sigma$, on définit
-enfin l'\textbf{étoile de Kleene} $L^*$ de $L$ comme le langage formé
-des concaténations d'un nombre \emph{quelconque} de mots appartenant
-à $L$, c'est-à-dire
+enfin l'\textbf{étoile de Kleene} $L^*$ de $L$ comme le langage
+constitué des concaténations d'un nombre \emph{quelconque} de mots
+appartenant à $L$, c'est-à-dire
 \[
 \begin{aligned}
 L^* &= \bigcup_{r=0}^{+\infty} L^r = \bigcup_{r\in\mathbb{N}} L^r\\
@@ -514,9 +514,9 @@ L^* &= \bigcup_{r=0}^{+\infty} L^r = \bigcup_{r\in\mathbb{N}} L^r\\
 
 Comme ci-dessus, il faut souligner que les mots $w_1,\ldots,w_r$
 concaténés n'ont pas à être égaux : notamment, $\{a,b\}^*$ est le
-langage formé de tous les mots sur l'alphabet $\{a,b\}$, pas le
-langage $\{a\}^* \cup \{b\}^*$ formé des mots obtenus en répétant la
-lettre $a$ ou en répétant la lettre $b$.
+langage constitué de tous les mots sur l'alphabet $\{a,b\}$, pas le
+langage $\{a\}^* \cup \{b\}^*$ constitué des mots obtenus en répétant
+la lettre $a$ ou en répétant la lettre $b$.
 
 On remarquera que la définition de $L^*$ ci-dessus redonne bien,
 lorsqu'on l'applique à l'alphabet $\Sigma$ lui-même (considéré comme
@@ -550,8 +550,8 @@ c'est-à-dire $L^{\mathsf{R}} = \{w^{\mathsf{R}} : w \in L\}$.
 de base triviaux suivants :
 \begin{itemize}
 \item le langage vide $\varnothing$,
-\item le langage formé du seul mot vide, $\{\varepsilon\}$, et
-\item les langages formés d'un seul mot lui-même formé d'une seule
+\item le langage constitué du seul mot vide, $\{\varepsilon\}$, et
+\item les langages constitué d'un seul mot lui-même formé d'une seule
   lettre, $\{x\}$ pour chaque $x\in\Sigma$,
 \end{itemize}
 et on va les combiner par les opérations dites « rationnelles »
@@ -573,11 +573,11 @@ langage rationnel, sont rationnels, et les langages rationnels sont
 exactement ceux qu'on obtient ainsi à partir des langages de base.
 
 À titre d'exemple, sur l'alphabet $\{a,b,c,d\}$, comme le langage
-$\{c\}$ (formé du seul mot $c$) est rationnel, son étoile de Kleene,
-c'est-à-dire $\{c\}^* = \{\varepsilon, c, cc, ccc, cccc,\ldots\}$, est
-rationnel, et comme $\{d\}$ l'est aussi, la concaténation
-$\{d\}(\{c\}^*) = \{d, dc, dcc, dccc, \ldots\}$ est encore un langage
-rationnel.
+$\{c\}$ (constitué du seul mot $c$) est rationnel, son étoile de
+Kleene, c'est-à-dire $\{c\}^* = \{\varepsilon, c, cc, ccc,
+cccc,\ldots\}$, est rationnel, et comme $\{d\}$ l'est aussi, la
+concaténation $\{d\}(\{c\}^*) = \{d, dc, dcc, dccc, \ldots\}$ est
+encore un langage rationnel.
 
 \thingy Formellement, la définition des langages rationnelles est la
 suivante : un ensemble $\mathscr{C} \subseteq \mathscr{P}(\Sigma^*)$
@@ -597,8 +597,8 @@ propriétés, est la classe $\mathscr{R}$ des langages rationnels.
 
 \emph{Attention !}, le fait que la classe $\mathscr{R}$ des langages
 rationnels soit stable par concaténation signifie que si $L_1$ et
-$L_2$ sont rationnels alors le langage $L_1 L_2$ (formé de tous les
-mots concaténés d'un mot de $L_1$ et d'un mot de $L_2$) est
+$L_2$ sont rationnels alors le langage $L_1 L_2$ (constitué de tous
+les mots concaténés d'un mot de $L_1$ et d'un mot de $L_2$) est
 rationnel ; \emph{cela ne signifie pas} qu'un langage rationnel donné
 soit stable par concaténation (un langage stable $L$ par concaténation
 est un langage tel que si $w_1,w_2\in L$ alors $w_1 w_2 \in L$).
@@ -652,7 +652,8 @@ quelconques de $c$.  Voici quelques autres exemples, toujours sur
 $\Sigma = \{a,b,c,d\}$ :
 \begin{itemize}
 \item l'expression rationnelle $(a|b)$ dénote le langage $\{a\} \cup
-  \{b\} = \{a,b\}$ formé des deux mots d'une seule lettre $a$ et $b$ ;
+  \{b\} = \{a,b\}$ constitué des deux mots d'une seule lettre $a$ et
+  $b$ ;
 \item l'expression rationnelle $(a|b)c$ dénote le langage
   $\{a,b\}\{c\} = \{ac,bc\}$, de même que $(ac|bc)$ ;
 \item l'expression rationnelle $(bc){*}$ dénote le langage $\{bc\}^* =
@@ -683,9 +684,9 @@ L_r$).  Par exemple, $dccc$ vérifie l'expression rationnelle $d(c){*}$.
 \textbf{équivalentes} lorsqu'elles dénotent le même langage.  À titre
 d'exemple, sur l'alphabet $\{a,b\}$, les deux expressions rationnelles
 $(ab){*}a$ et $a(ba){*}$ sont équivalentes (toutes les deux dénotent
-le langage $\{a, aba, ababa, \ldots\}$ formé des mots commençant et
-finissant par un $a$ et dans lesquels chaque paire de $a$ est séparée
-par un unique $b$).
+le langage $\{a, aba, ababa, \ldots\}$ constitué des mots commençant
+et finissant par un $a$ et dans lesquels chaque paire de $a$ est
+séparée par un unique $b$).
 
 \thingy La convention de parenthésage introduite ci-dessus est
 inambiguë mais parfois inutilement lourde : on se permettra parfois de
@@ -2235,7 +2236,17 @@ comme synonymes.)
 
 \subsection{Le lemme de pompage}
 
-\begin{prop}[lemme de pompage pour les langages rationnels]
+\thingy On ne dispose à ce stade-là d'aucun moyen pour montrer qu'un
+langage \emph{n'est pas} rationnel.  La
+proposition \ref{pumping-lemma} qui va suivre, et qui s'appelle
+couramment « lemme de pompage » (une traduction abusive de l'anglais
+« pumping lemma ») constitue le moyen le plus fréquent permettant d'y
+arriver : il énonce une condition \emph{nécessaire} pour qu'un langage
+soit rationnel, si bien qu'on peut arriver à montrer qu'un langage
+n'est pas rationnel en invalidant cette condition (généralement en
+procédant par l'absurde).
+
+\begin{prop}[lemme de pompage pour les langages rationnels]\label{pumping-lemma}
 Soit $L$ un langage rationnel.  Il existe alors un entier $k$ tel que
 tout mot de $t \in L$ de longueur $|t| \geq k$ admette une
 factorisation $t = uvw$ en trois facteurs $u,v,w$ où :
@@ -2287,6 +2298,74 @@ $q_n$ est final, ceci montre que le mot $uv^iw$ est accepté par $A$,
 i.e., $uv^iw \in L$.
 \end{proof}
 
+\thingy On attire l'attention sur l'alternation des quantificateurs.
+Le lemme de pompage énonce le fait que :
+\begin{itemize}
+\item\emph{pour tout} langage rationnel $L$,
+\item\emph{il existe} un entier $k\geq 0$ tel que
+\item\emph{pour tout} mot $t\in L$ de longueur $|t|\geq k$,
+\item\emph{il existe} une factorisation $t=uvw$ vérifiant les
+  propriétés (i) $|v|\geq 1$, (ii) $|uv|\leq k$ et (iii) qui suit :
+\item\emph{pour tout} $i\geq 0$ on a $uv^iw \in L$.
+\end{itemize}
+
+La complexité logique d'un énoncé étant justement mesurée par le
+nombre d'alernations de quantificateurs (passages entre « pour tout »
+et « il existe » ou vice versa), celui-ci mérite une attention
+particulière.  Rappelons donc, du point de vue logique, que, quand on
+veut \emph{appliquer} un résultat de ce genre, on \emph{choisit
+  librement} les objets introduits par un quantificateur universel
+(« pour tout »), mais \emph{on ne choisit pas} ceux qui sont
+introduits par un quantificateur existentiel (« il existe ») (ces
+derniers sont, si on veut, choisis par l'énoncé qu'on applique : on ne
+fait que recevoir leur existence) ; les choses sont inversées quand on
+doit démontrer un tel énoncé, mais la démonstration a été faite
+ci-dessus et il est donc plus fréquent de devoir appliquer le lemme de
+pompage.
+
+Le modèle d'une démonstration par l'absurde pour montrer qu'un langage
+$L$ n'est pas rationnel est donc quelque chose comme ceci :
+\begin{itemize}
+\item on entame un raisonnement par l'absurde en supposant que $L$ est
+  rationnel, et on choisit $L$ pour appliquer le lemme de pompage
+  (parfois on l'applique à autre chose, comme l'intersection de $L$
+  avec un langage connu pour être rationnel, mais en général ce
+  sera $L$),
+\item le lemme de pompage fournit un $k$ (on \emph{ne choisit donc
+  pas} ce $k$, il est donné par le lemme),
+\item on choisit alors un mot $t \in L$ de longueur $\geq k$, et c'est
+  là que réside la difficulté principale de la démonstration,
+\item le lemme de pompage fournit une factorisation $t = uvw$, qu'on
+  \emph{ne choisit pas} non plus mais qu'on peut analyser, souvent en
+  utilisant (i) et (ii),
+\item et on cherche à appliquer la propriété (iii), ce qui implique de
+  choisir un $i$, pour arriver à une contradiction (typiquement : le
+  mot $uv^i w$ n'est pas dans le langage alors qu'il est censé y
+  être).
+\end{itemize}
+
+Donnons maintenant un exemple d'utilisation du lemme :
+
+\begin{prop}
+Soit $\Sigma = \{a,b\}$.  Le langage $L = \{a^n b^n : n\in\mathbb{N}\}
+= \{\varepsilon, ab, aabb, aaabbb,\ldots\}$ constitué des mots formés
+d'un certain nombre ($n$) de $a$ suivis du même nombre de $b$ n'est
+pas rationnel.
+\end{prop}
+\begin{proof}
+Appliquons la proposition \ref{pumping-lemma} au langage $L$
+considéré : appelons $k$ l'entier dont le lemme de pompage garantit
+l'existence.  Considérons le mot $t := a^k b^k$ : il doit alors
+exister une factorisation $t = uvw$ pour laquelle on a (i) $|v|\geq
+1$, (ii) $|uv|\leq k$ et (iii) $uv^iw \in L$ pour tout $i\geq 0$.  La
+propriété (ii) assure que $uv$ est formé d'un certain nombre de
+répétitions de la lettre $a$ : disons $u = a^\ell$ et $v = a^m$, si
+bien que $w = a^{k-\ell-m} b^k$.  La propriété (ii) donne $m\geq 1$.
+Enfin, la propriété (iii) affirme que le mot $uv^iw = a^{k+(i-1)m}
+b^k$ appartient à $L$ ; mais dès que $i\neq 1$, ceci est faux : il
+suffit donc de prendre $i=0$ pour avoir une contradiction.
+\end{proof}
+
 
 %
 %
-- 
cgit v1.2.3

