summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--notes-inf105.tex36
1 files changed, 28 insertions, 8 deletions
diff --git a/notes-inf105.tex b/notes-inf105.tex
index 5ed7719..d1e43da 100644
--- a/notes-inf105.tex
+++ b/notes-inf105.tex
@@ -538,7 +538,7 @@ de base triviaux suivants :
\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
- lettre, $\{a\}$ pour chaque $a\in\Sigma$,
+ lettre, $\{x\}$ pour chaque $x\in\Sigma$,
\end{itemize}
et on va les combiner par les opérations dites « rationnelles »
suivantes :
@@ -552,11 +552,11 @@ On obtient ainsi une certaine famille de langages (cf. ci-dessous pour
une définition plus précise), qu'on appelle \textbf{langages
rationnels} : les langages rationnels sont exactement ceux qui
peuvent s'obtenir à partir des langages de base énumérés ci-dessus par
-application des opérations qu'on vient de dire (i.e., la réunion de
-deux langages rationnels, ou la concaténation de deux langages
-rationnels, ou l'étoile de Kleene d'un langage rationnel, sont
-rationnels, et les langages rationnels sont exactement ceux qu'on
-obtient ainsi).
+application (un nombre fini de fois) des opérations qu'on vient de
+dire (i.e., la réunion de deux langages rationnels, ou la
+concaténation de deux langages rationnels, ou l'étoile de Kleene d'un
+langage rationnel, sont rationnels, et les langages rationnels sont
+exactement ceux qu'on obtient ainsi).
À 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,
@@ -565,12 +565,32 @@ rationnel, et comme $\{d\}$ l'est aussi, la concaténation
$\{d\}(\{c\}^*) = \{d, dc, dcc, dccc, \ldots\}$ est encore un langage
rationnel.
+{\footnotesize\thingy Formellement, la définition des langages
+ rationnelles est la suivante : un ensemble $\mathscr{C} \subseteq
+ \mathscr{P}(\Sigma^*)$ de langages (où $\mathscr{P}(\Sigma^*)$ est
+ l'ensemble des parties de $\Sigma^*$, i.e., l'ensemble de tous les
+ langages sur $\Sigma$) est dit \emph{stable par opérations
+ rationnelles} lorsqu'il est stable par les opérations de réunion,
+ concaténation et étoile de Kleene, i.e., si $L_1,L_2 \in
+ \mathscr{C}$ alors $L_1\cup L_2 \in \mathscr{C}$ et $L_1 L_2 \in
+ \mathscr{C}$, et si $L \in \mathscr{C}$ alors $L^* \in
+ \mathscr{C}$ ; le \emph{plus petit} (pour l'inclusion) ensemble de
+ langages stable par opérations rationnelles et contenant les
+ langages $\varnothing$, $\{\varepsilon\}$ et $\{x\}$ pour $x \in
+ \Sigma$ (i.e. $\varnothing\in\mathscr{C}$, $\{\varepsilon\} \in
+ \mathscr{C}$ et si $x\in\Sigma$ alors $\{x\}\in\mathscr{C}$), ou
+ plus exactement, l'intersection de tous les ensembles $\mathscr{C}$
+ vérifiant tous ces propriétés, est la classe $\mathscr{R}$ des
+ langages rationnels. \par}
+
\thingy Pour décrire la manière dont un langage rationnel est fabriqué
(à partir des langages de base par les opérations rationnelles), comme
il est malcommode d'écrire quelque chose comme $\{d\}(\{c\}^*)$, on
introduit un nouvel objet, les \textbf{expressions rationnelles}
(certains préfèrent le terme d'\textbf{expressions régulières}), qui
-sont des expressions servant à désigner un langage rationnel.
+sont des expressions servant à désigner un langage rationnel. Par
+exemple, plutôt que d'écrire « $\{d\}(\{c\}^*)$ », on parlera du
+langage désigné par l'expression rationnelle $dc*$.
Plus exactement, une expression rationnelle (sur un alphabet $\Sigma$)
est un mot sur l'alphabet $\Sigma \cup \{\bot,
@@ -623,7 +643,7 @@ $\Sigma = \{a,b,c,d\}$ :
bcd, bcbcd, bcbcbcd, \ldots\}$.
\end{itemize}
-Un langage rationnel est par définition la même chose qu'un langage
+Un langage rationnel est par construction la même chose qu'un langage
pour lequel il existe une expression rationnelle qui le désigne.
On dira qu'un mot $w$ \textbf{vérifie} une expression rationnelle $r$