Certaines informations figurant dans cet article ou cette section devraient être mieux reliées aux sources mentionnées dans les sections « Bibliographie », « Sources » ou « Liens externes » ().
L'on peut ainsi définir des nombres, des listes, des arbres, des relations, et plus généralement, toute structure mathématique (langage, système, …). En permettant par le même principe de définir un prédicattotal[pas clair] i.e. qui est défini partout, l'induction structurelle est aussi une méthode de démonstration d'une propriété sur une structure.
Outils mathématiques et informatiques
Les système, langages et logiciels supportant à des degrés divers cette fonctionnalité sont nombreux.
Cette section est vide, insuffisamment détaillée ou incomplète. Votre aide est la bienvenue ! Comment faire ?
Cette section est vide, insuffisamment détaillée ou incomplète. Votre aide est la bienvenue ! Comment faire ?
Caractéristiques
Cette section doit être déjargonisée (août 2023). Le texte doit être remanié en utilisant un vocabulaire plus directement compréhensible. Discutez des points à améliorer en page de discussion.
La définition récursives se distingue de la "macro" et de la définition algébrique en cela qu'elle est la seule créatrice d'objets.
La « macro » n'est qu'un raccourci de langage (i.e., une notation), alors que la définition algébrique « quotiente » ou contraint et restreint un type préexistant ((en) carier) au moyen d'axiomes.
En revanche, la définition inductive engendre ex nihilo ses objets.
Les règles de construction sont donc procréatrice.
Ainsi contrairement à l'axiome, les règles de construction d'une récurrence bien fondée ne peuvent créer l'incohérence.
De plus, tout objet appartient à une génération.
Dans le cas le plus général, cette génération est un entier ou un ordinal.
Le nombre de générations peut donc être , fini … nulle (types vide) ou ne pas être.
La validité de l'induction découle du caractère bijectif du procédé de procréation :
injectivité : à construction différente, objet différent ;
B B pour un arbre non vide ayant pour sous-arbre gauche B et pour sous-arbre droit B.
On peut définir la fonction taille (le nombre de nœuds internes de l'arbre binaire) :
taille() = 0
taille(B B) = taille(B) + taille(B) + 1
Principes
Considérons une structure définie par des constructeurs d'arité . Les constructeurs d'arité0 sont des constantes.
Définition par induction structurelle
La définition par induction structurelle d'une fonction s'écrit pour chaque constructeur
où est une expression qui dépend de i'. On remarque que si est une constante, la définition est celle d'un cas de base:
Raisonnement par induction structurelle
Le schéma de démonstration qu'une propriété P est valide sur toute une structure se présente sous la forme d'une règle d'inférence pour chaque constructeur
Il faut donc faire une démonstration d'« hérédité » pour chaque constructeur.
Le cas des entiers naturels
Le cas des entiers naturels est celui où il y a deux constructeurs: 0 d'arité 0 (donc une constante) et succ (autrement dit +1) d'arité 1. La récurrence traditionnelle se réduit donc à une récurrence structurelle sur ces deux constructeurs.
La coinduction
Grossièrement la coinduction étend l'induction en offrant la possibilité d'omettre les éléments initiaux (le jardin d'éden).
Par exemple, omettre la liste vide, transforme la liste en flux ((en) stream). : Un flux de trucs est un truc qui s'ajoute à flux de trucs.
Bibliographie
(en) John E. Hopcroft, Rajeev Motwani et Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, Reading Mass, Addison-Wesley, , 2nd éd., 521 p. (ISBN0-201-44124-1)