Adloun

informatique (MP2I/MPI) · Chapitre 9 · Exercice de TD

Une identité sur les formules

Ordres bien fondés et induction structurelle · niveau 2

Énoncé

Soit l'ensemble inductif des formules propositionnelles engendré par les variables et les règles , , . Notons le nombre d'occurrences de variables et le nombre de connecteurs binaires. Montrer que .

Corrigé

Les deux fonctions, écrites sur les quatre constructeurs :


type formule = Var of string | Non of formule
             | Et of formule * formule | Ou of formule * formule

let rec occ_var = function
  | Var _ -> 1 | Non f -> occ_var f
  | Et (a,b) | Ou (a,b) -> occ_var a + occ_var b

let rec binaires = function
  | Var _ -> 0 | Non f -> binaires f
  | Et (a,b) | Ou (a,b) -> 1 + binaires a + binaires b
Démonstration

Par induction structurelle sur . Quatre constructeurs, donc quatre cas — et le match du code les énumère déjà.

Cas (assertion). , , et .

Cas . La négation n'est pas binaire et n'apporte aucune variable : et . L'hypothèse d'induction sur donne le résultat, inchangé.

Cas . Alors et . Par hypothèse d'induction sur chacun des deux arguments :

Cas . Identique au précédent : seul le nom du constructeur change.

Vérification. Identité testée sur formules tirées au hasard jusqu'à la profondeur : vraie sur toutes. Sur l'exemple , on mesure et .

Ce que l'identité dit vraiment. Une formule est un arbre binaire déguisé (chapitre chap:arbres) : ses feuilles sont les occurrences de variables, ses nœuds à deux fils les connecteurs binaires. L'identité est donc exactement celle du cours, , transportée sur un autre type inductif. On ne l'a pas redémontrée : on a redémontré la même chose. C'est ce qu'annonçait le chapitre — un principe, et des objets qui changent.

Une conséquence pratique. Elle donne une vérification à coût nul pour tout analyseur syntaxique : si l'arbre construit à partir d'un texte ne satisfait pas , l'analyseur est fautif. Un invariant qui se teste en et qui ne peut pas mentir vaut mieux qu'une relecture.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre