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.