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:UNEB : A → T y p e
- UNE est défini comme un type inductif.
- B est défini par récurrence sur .UNE
- Fondamentalement, la définition de peut utiliser .UNEB
Sans la troisième condition, nous pourrions d' abord définir puis séparément .UNEB
Voici un exemple de bébé. Définissez inductive pour avoir les constructeurs suivants:UNE
- a : A
- ℓ : ( ∑x : AB ( x ) ) → A
La famille de types est définie parB
- B ( a ) = b o o l
- B ( ℓ ( x , f) ) = n a t .
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 depuis
UNEun : A .
B ( a )b o o lℓ ( a , f a l s e )
ℓ(a,true)
AB(ℓ(a,false))=B(ℓ(a,true))=natn: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 :UNEB : A → T y p e
- UNE est défini par induction
- BA est défini par induction, et il peut faire référence àUNE
- Crucialement, peut se référer à .UNEB
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 .BB ( c ( … ) ) = ⋯
c (…)UNEBB
Reformulons notre exemple précédent en induction-induction. Nous avons d'abord le tpye inductif :UNE
- a : A
- ℓ : ( ∑x : AB ( x ) ) → A
La famille de types est définie par les constructeurs suivants:B
- T r u : B ( a )
- F a l : B ( a )
- si et alorsx : Ay: B ( x )Z e r :B(ℓ(x,y) )
- si et et alors .x : Ay: B ( x )z:B(ℓ(x,y))Suc(z):B(ℓ(x,y))
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 .BB(a)B(ℓ(x,y))