Qu'est-ce que l' induction-induction ?
Les ressources que j'ai trouvées sont:
- le livre HoTT , à la fin du chapitre 5.7.
- Article de nLab
- un article intitulé Définitions inductives-inductives
- ce billet de blog mentionne également les types inductifs-inductifs
Les deux premières références sont trop brèves pour moi et les deux dernières sont trop techniques. Quelqu'un peut-il l'expliquer en termes simples? Ce serait mieux s'il y avait du code Agda.
Réponses:
Supplément 2016-10-03: J'ai mélangé induction-induction et induction-récursion (pas la première fois que je fais ça!). Mes excuses pour le désordre. J'ai mis à jour la réponse pour couvrir les deux.
Je trouve les explications dans l'article de Forsberg & Setzer Une axiomatisation finie des définitions inductives-inductives éclairantes.
Induction-récursivité
Une définition inductive-récursive est une définition dans laquelle nous définissons simultanément un type et une famille de types de manière spéciale:UNE B : A → T y p e
Sans la troisième condition, nous pourrions d' abord définir puis séparément .UNE B
Voici un exemple de bébé. Définissez inductive pour avoir les constructeurs suivants:UNE
La famille de types est définie parB
Alors, qu'est-ce que dans ? Tout d'abord, nous avons un élément À cause de cela, il existe un type qui est défini comme étant . Par conséquent, nous pouvons former deux nouveaux éléments et dans . Nous avons maintenant , nous pouvons donc également former pour chaque les éléments et On peut continuer comme ça . La prochaine étape sera que depuisUNE un : A . B ( a ) b o o l ℓ ( a , f a l s e ) ℓ(a,true) A B(ℓ(a,false))=B(ℓ(a,true))=nat n:nat ℓ(ℓ(a,false),n):A ℓ(ℓ(a,true),n):A B(ℓ(ℓ(a,true),n))=nat
il y a pour chaque l'élément
et l'élément
Nous pouvons continuer. Un peu de réflexion révèle que est plus ou moins deux copies de listes de nombres naturels, partageant une liste vide commune. Je vais le laisser comme un exercice pour comprendre pourquoi.m:nat ℓ(ℓ(ℓ(a,true),n),m):A ℓ ( ℓ ( ℓ ( a , f a l s e ) , n ) , m ) : A UNE
Induction-induction
Une définition inductive-inductive définit également un type et simultanément une famille de types :UNE B : A → T y p e
Il est important de comprendre la différence entre l'induction-récurrence et l'induction-induction. Dans induction récursion nous définissons en fournissant des équations de la forme où est un constructeur pour . Dans une définition inductif-inductif nous définissons en fournissant des constructeurs pour former les éléments de .B B ( c ( … ) ) = ⋯ c (…) UNE B B
Reformulons notre exemple précédent en induction-induction. Nous avons d'abord le tpye inductif :UNE
La famille de types est définie par les constructeurs suivants:B
Comme vous pouvez le voir, nous avons donné des règles pour générer les éléments de qui reviennent à dire que est (isomophique pour) les booléens, et est (isomorphe pour) les nombres naturels .B B(a) B(ℓ(x,y))
la source