Chap2 Good
Chap2 Good
Chap2 Good
Récursivité et induction
2.1 Motivation
Les définitions récursives sont omniprésentes en informatique. Elles sont présentes
à la fois dans les langages de programmation, mais aussi présentes dans de nombreux
concepts que l’on manipule.
Exemple 2.2 (Arbres ordonnés) Nous avons défini les arbres ordonnés dans le cha-
pitre précédent en passant par la notion de graphe. Une alternative naturelle serait de
présenter les arbres ordonnés par une définition récursive : un arbre ordonné est soit
vide, soit réduit à un sommet (une racine), soit constitué d’un sommet (une racine) et
une liste (ordonnée) d’arbres ordonnés (ses fils).
Dans ce chapitre, nous nous attardons sur les définitions inductives d’ensembles et
de fonctions, qui permettent de donner un sens à des définitions récursives.
Nous discutons, par ailleurs comment il est possible de faire des preuves sur des
structures définies inductivement, en introduisant les preuves par induction structurelle.
1
2 CHAPITRE 2. RÉCURSIVITÉ ET INDUCTION
Lorsque l’on raisonne sur les entiers, le premier principe d’induction aussi appelé
principe de récurrence mathématique est un mode de raisonnement particulièrement
utile.
Théorème 2.1 Soit P (n) un prédicat (une propriété) dépendant de l’entier n. Si les
deux conditions suivantes sont vérifiées :
(B) P (0) est vrai ;
(I) P (n) implique P (n + 1) pour tout n ;
alors pour tout entier n, P (n) est vrai.
Exercice 2.3. Le théorème plus haut est parfois nommé “premier principe d’induc-
tion”. Prouver le “second principe d’induction” : soit P (n) une propriété dépendant
de l’entier n. Si la propriété suivante est vérifiée : si pour tout n ∈ N, si en supposant
pour tout entier k < n la propriété P (k) on déduit P (n), alors pour tout n ∈ N, la
propriété P (n) est vraie.
Exercice 2.4. On fixe un alphabet Σ. On rappelle qu’un langage sur Σ est une partie
de Σ∗ . Si L1 et L2 sont deux langages de Σ∗ , on définit leur concaténation par L1 .L2 =
{u.v|u ∈ L1 , v ∈ L2 }. La concaténation est une opération associative admettant {}
comme élément neutre. On peut alors définir les puissances d’un langage L de la façon
suivante : L0 = {}, et pour un S entiernn > 0, L
n+1
= Ln .L = L.Ln . L’étoile d’un
∗
langage L est défini par L = n∈N L .
Soient L et M deux langages sur Σ, avec 6∈ L. Montrer que dans P(Σ) (les
langages sur Σ), l’équation X = L.X ∪ M admet pour unique solution le langage
L∗ .M .
Remarque 2.1 Cette remarque est pour les puristes. Elle peut être évitée lors de la
première lecture de ce document.
Nous nous restreignons dans ce document au cadre où l’on souhaite définir par
induction des objets qui correspondent à des parties d’un ensemble déjà connu E.
Nous faisons cela pour éviter les subtilités et paradoxes de la théorie des ensembles.
Le lecteur très attentif pourra observer que l’on considérera dans la suite très
souvent l’écriture syntaxique des objets plutôt que les objets eux-mêmes. En effet, en
faisant ainsi, on garantit que l’on se place sur l’ensemble E = Σ∗ pour un certain
alphabet Σ, et on évite de se poser la question de l’existence de l’ensemble E sous-
jacent dans les raisonnements qui suivent.
Par exemple, pour formaliser complètement l’exemple 2.1 plus haut, on chercherait
plutôt à définir une représentation syntaxique des listes plutôt que les listes.
Lorsque l’on veut définir un ensemble, ou une partie d’un ensemble, une façon de
faire est de le définir de façon explicite, c’est-à-dire en décrivant précisément quels sont
ses éléments.
Exemple 2.3 Les entiers pairs peuvent se définir par P = {n|∃k ∈ N n = 2 ∗ k}.
Malheureusement, ce n’est pas toujours aussi facile, et il est souvent beaucoup plus
commode de définir un ensemble par une définition inductive. Un exemple typique de
définition inductive est une définition comme celle-ci :
Exemple 2.4 Les entiers pairs correspondent aussi au plus petit ensemble qui contient
0 et tel que si n est pair, alors n + 2 est pair.
Remarque 2.2 Observons que l’ensemble des entiers N vérifie bien que 0 est un entier,
et que si n est un entier n + 2 aussi. Il y a donc besoin de dire que c’est le plus petit
ensemble avec cette propriété.
Théorème 2.2 (Théorème du point fixe) A une définition inductive correspond un plus
petit ensemble qui vérifie les propriétés suivantes :
(B) il contient B : B ⊂ X ;
(I) il est stable par les règles de R : pour chaque règle ri ∈ R, pour tout x1 , · · · , xni ∈
X, on a ri (x1 , · · · , xni ) ∈ X.
On dit que cet ensemble est alors défini inductivement.
Puisque B est inclus dans chaque Y ∈ F, B est inclus dans X. Donc X vérifie la
condition (B).
L’ensemble obtenu vérifie aussi (I). En effet, considérons une règle ri ∈ R, et des
x1 , · · · , xni ∈ X. On a x1 , · · · , xni ∈ Y pour chaque Y ∈ F. Pour chaque tel Y ,
puisque Y est stable par la règle ri , on doit avoir r(x1 , · · · , xni ) ∈ Y . Puisque cela est
vrai pour tout Y ∈ F, on a aussi r(x1 , · · · , xni ) ∈ X, ce qui prouve que X est stable
par la règle ri .
X est le plus petit ensemble qui vérifie les conditions (B) et (I), car il est par
définition inclus dans tout autre ensemble vérifiant les conditions (B) et (I).
Exemple 2.5 Selon cette convention, la définition inductive des entiers pairs (de l’exemple
2.4) se note
2.4. APPLICATIONS 5
(B) 0 ∈ P ;
(I) n ∈ P ⇒ n + 2 ∈ P.
Notation 2.2 On préfère parfois écrire une définition inductive sous la forme de règles
de déduction :
x 1 ∈ X . . . x ni ∈ X
B⊂X ri (x1 , . . . , xni ) ∈ X
Le principe de cette notation est qu’un trait horizontal signifie une règle de
déduction. Ce qui est écrit au dessus est une hypothèse. Ce qui est écrit en dessous est
une conclusion. Si ce qui est au dessus est vide, alors c’est que la conclusion est valide
sans hypothèse.
2.4 Applications
2.4.1 Quelques exemples
Exemple 2.7 (N) La partie X de N définie inductivement par
n
0 n+1
Exemple 2.9 (Langage {an bcn }) Le langage L sur l’alphabet Σ = {a, b} des mots
de la forme an bcn , n ∈ N, se définit inductivement par
(B) b ∈ L;
(I) w ∈ L ⇒ awc ∈ L.
Exemple 2.10 (Arbres binaires étiquetés) L’ensemble AB des arbres binaires éti-
quetés par l’ensemble A est la partie de Σ∗ , où Σ est l’alphabet Σ = A ∪ {∅, (, ), ,},
définie inductivement par
(B) ∅ ∈ AB ;
(I) g, d ∈ AB ⇒ (g, a, d) ∈ AB, pour chaque a ∈ A.
Remarque 2.3 Dans l’écriture plus haut, (g, a, d) désigne la concaténation du mot de
longueur 1 (, du mot g, du mot , de longueur 1, du mot a, du mot , de longueur 1, du
mot d et du mot ) de longueur 1. Tous ces mots sont bien des mots sur l’alphabet Σ qui
contient tous les symboles nécessaires.
Remarque 2.5 Attention : un arbre binaire n’est pas un arbre ordonné dont tous les
nœuds sont d’arité au plus 2.
ne sont pas les mêmes, car le premier correspond au mot (((∅, 3, ∅), 2, ∅), 1, ∅) et le
second au mot (∅, 1, ((∅, 3, ∅), 2, ∅)). Pourtant si on considère ces arbres comme des
arbres ordonnés, ce sont les mêmes.
Commençons par définir ce qu’est un nombre écrit en base 10. A priori on écrit un
entier en base 10 sans débuter par un 0 (sauf pour 0). Par exemple 000192 n’est pas
autorisé. Par contre 192 est bien une écriture valide.
On obtient la définition inductive suivante.
Exemple 2.12 L’ensemble N des nombres entiers non-nuls écrits en base 10 est la
partie de Σexp ∗ , définie inductivement par
8 CHAPITRE 2. RÉCURSIVITÉ ET INDUCTION
2.4.4 Termes
Les termes sont des arbres ordonnés étiquetés particuliers. Ils jouent un rôle essen-
tiel dans beaucoup de structures en informatique.
Soit F = {f0 , f1 , · · · , fn , · · · } un ensemble de symboles, appelés symboles de
fonctions. A chaque symbole f est associé un entier a(f ) ∈ F , que l’on appelle arité
de f et qui représente le nombre d’arguments du symbole de fonction f . On note Fi
pour le sous-ensemble des symboles de fonctions d’arité i. Les symboles de fonctions
d’arité 0 sont appelés des constantes.
Soit Σ l’alphabet Σ = F ∪ {(, ), , } constitué de F et de la parenthèse ouvrante, de
la parenthèse fermante, et de la virgule.
Définition 2.2 (Termes sur F ) L’ensemble T des termes construit sur F est la partie
de Σ∗ définie inductivement par :
(B) F0 ⊂ T
(c’est-à-dire : les constantes sont des termes)
(I) t1 , t2 , · · · , tn ∈ T ⇒ f (t1 , t2 , · · · , tn ) ∈ T
pour chaque entier n, pour chaque symbole f ∈ Fn d’arité n.
Remarque 2.6 Dans la définition plus haute, on parle bien de mots sur l’alphabet Σ :
f (t1 , t2 , · · · , tn ) désigne le mot dont la première lettre est f , la seconde (, les suivantes
celle de t1 , etc.
Exemple 2.14 Par exemple, on peut fixer F = {0, 1, f, g}, avec 0 et 1 d’arité 0 (ce
sont des constantes), f d’arité 2 et g d’arité 1.
f (0, g(1)) est un terme sur F . f (g(g(0)), f (1, 0)) est un terme sur F . f (1) n’est
pas un terme sur F .
Les termes sur F correspondent à des arbres ordonnés étiquetés particuliers : les
sommets sont étiquetés par les symboles de fonctions de F , et un sommet étiqueté par
un symbole d’arité k possède exactement k fils.
2.5. PREUVES PAR INDUCTION 9
Remarque 2.7 La preuve par induction généralise bien la preuve par récurrence. En
effet, N se définit inductivement comme dans l’exemple 2.7. Une preuve par induction
sur cette définition inductive de N correspond à une preuve par récurrence, c’est-à-dire
aux hypothèses du théorème 2.1.
Exemple 2.15 Pour prouver par induction que tous les mots du langage défini impli-
citement dans l’exemple 2.9 possèdent autant de a que de c, il suffit de constater que
c’est vrai pour le mot réduit à une lettre b, qui possède 0 fois la lettre a et la lettre c, et
que si cela est vrai pour le mot w alors le mot awb possède aussi le même nombre de
fois la lettre a que la lettre c, à savoir exactement une fois de plus que dans w.
Exercice 2.7. On considère le sous-ensemble ABS des arbres binaires stricts défini
comme le sous-ensemble du langage AB (des arbres binaires étiquettés par A) défini
inductivement par :
(B) (∅, a, ∅) ∈ ABS, pour chaque a ∈ A.
(I) g, d ∈ ABS ⇒ (g, a, d) ∈ ABS, pour chaque a ∈ A.
Montrer
– qu’un élément de ABS est toujours non-vide et sans sommet avec un seul fils
non-vide.
– que dans un arbre binaire strict, le nombre de sommets n vérifie n = 2f − 1, où
f est le nombre de feuilles.
10 CHAPITRE 2. RÉCURSIVITÉ ET INDUCTION
Exercice 2.8. Montrer que tout mot du langage de Dyck possède autant de paren-
thèses fermantes qu’ouvrantes.
Exercice 2.9. Montrer que tout expression arithmétique, c’est-à-dire tout mot du
langage Arith, possède autant de parenthèses fermantes qu’ouvrantes.
Exercice 2.10. Un arbre binaire est dit équilibré si pour chaque sommet de l’arbre,
la différence entre la hauteur de son sous-arbre droit et la hauteur de son sous-arbre
gauche vaut soit −1, 0 ou 1 (i.e. au plus un en valeur absolue).
– Donner une définition inductive de l’ensemble AV L des arbres binaires équili-
brés.
– On définit la suite (un )n∈N par u0 = 0, u1 = 1, et pour tout n ≥ 2, un+2 =
un+1 + un + 1.
Montrer que pour tout x ∈ AV L, n ≥ uh+1 où h et n sont respectivement la
hauteur et le nombre de sommets d’un arbre.
2.6 Dérivations
2.6.1 Écriture explicite des éléments : Second théorème du point
fixe
Nous avons vu jusque-là plusieurs exemples d’ensembles X définis inductivement.
L’existence de chaque ensemble X découle du théorème 2.2, et en fait de l’équation
(2.1) utilisée dans la preuve de celui-ci.
On parle de définition de X par le haut, puisque l’équation (2.1) définit X à par-
tir de sur-ensembles de celui-ci. Cela a clairement l’avantage de montrer facilement
l’existence d’ensembles définis inductivement, ce que nous avons abondamment uti-
lisé jusque-là.
Cependant, cela a le défaut de ne pas dire quels sont exactement les éléments des
ensembles X obtenus.
Il est en fait aussi possible de définir chaque ensemble X défini inductivement par
le bas. On obtient alors une définition explicite des éléments de X, avec en prime une
façon de les obtenir explicitement.
C’est ce que dit le résultat suivant :
Théorème 2.4 (Définition explicite d’un ensemble défini implicitement) Chaque en-
semble X défini implicitement à partir de l’ensemble de base B et des règles R s’écrit
aussi [
X= Xn ,
n∈N
Exemple 2.16 Le mot 1+2+3 correspond à une expression arithmétique. En voici une
preuve.
1∈N 2∈N
1 + 2 ∈ Arith 3 ∈ Arith
1 + 2 + 3 ∈ Arith
Ce n’est pas la seule possible. En effet, on peut aussi écrire
2∈N 3∈N
1 ∈ Arith 2 + 3 ∈ Arith
1 + 2 + 3 ∈ Arith
Pour coder chaque trace, la notion naturelle qui apparaît est celle de terme, sur un
ensemble de symboles F bien choisi : on considère que chaque élément b de la base B
est un symbole d’arité 0. A chaque règle ri ∈ R on associe un symbole d’arité ni . Un
terme t sur cet ensemble de symboles est appelé une dérivation.
A chaque dérivation t est associé un élément h(t) comme on s’y attend : si t est
d’arité 0, on lui associe l’élément b de B correspondant. Sinon, t est de la forme
ri (t1 , · · · , tni ), pour une règle ri ∈ R et pour des termes t1 , · · · , tni , et on associe
à t le résultat de la règle ri appliquée aux éléments h(t1 ), · · · , h(tni ).
Exemple 2.17 Pour les expressions arithmétiques, notons par le symbole + d’arité 2,
la règle g, d ∈ Arith ⇒ g + d ∈ Arith ;
12 CHAPITRE 2. RÉCURSIVITÉ ET INDUCTION
Exemple 2.23 La hauteur h d’un arbre binaire étiqueté se définit inductivement par
(B) h(∅) = 0;
(I) h((g, a, d)) = 1 + max(h(g), h(d)).
Remarque 2.8 Pour les expressions arithmétiques, 1+2∗3 ∈ Arith est aussi ambigüe
à priori. Un évaluateur qui prendrait en entrée un mot de Arith devrait aussi gérer
les priorités, et comprendre que 1 + 2 ∗ 3 n’est pas le résultat de la multiplication de
1 + 2 par 3. En utilisant la définition de Arith0 , on évite complétement aussi cette
difficulté, puisque les expressions codent explicitement comment les évaluer, et une
définition inductive devient possible. A priori, la valeur d’une expression de Arith ne
se définit pas aussi simplement inductivement, ne serait-ce qu’en raison du problème
que la valeur de x + y ∗ z ne s’obtient pas directement à partir de celle de x + y et de
z uniquement.
Bibliographie Ce chapitre a été rédigé grâce aux ouvrages [Dowek, 2008] et [Arnold and Guessarian, 2005].
Index
15
16 INDEX
propriété
héréditaire
synonyme : propriété inductive, voir
propriété inductive
inductive, 2
R, voir décidable
racine d’un arbre, 6
RE, voir récursivement énumérable
récusivement énumérable
notation, voir RE
réduction
notation, voir ≤, voir ≤m
règle
de déduction, 5
inductive, 4
relation successeur entre configurations d’une
machine de Turing
notation, voir `
sous-arbre
droit d’un arbre binaire, 6
gauche d’un arbre binaire, 6
symboles
de fonctions, 8
terme, 8
théorème
du point fixe, 4, 10
premier théorème, 4
second théorème, 10
théorie
des ensembles, 3
équilibré, 9
18 INDEX
Bibliographie
19