Supplemental 2016-10-03: Ich habe Induktion-Induktion und Induktions-Rekursion gemischt (nicht das erste Mal, dass ich das gemacht habe!). Ich entschuldige mich für das Durcheinander. Ich habe die Antwort aktualisiert, um beide abzudecken.
Ich finde die Erklärungen in der Arbeit von Forsberg & Setzer Eine endliche Axiomatisierung induktiv-induktiver Definitionen aufschlussreich.
Induktionsrekursion
Eine induktiv-rekursive Definition ist eine Definition, bei der wir auf besondere Weise gleichzeitig einen Typ EIN und eine Typfamilie B:A→Type :
- A ist als induktiver Typ definiert.
- B wird durch Rekursion aufA .
- Entscheidend ist , dass die Definition von A kann verwendet werden B .
Ohne die dritte Anforderung könnten wir zuerst A und dann separat B .
Hier ist ein Babybeispiel. Definieren Sie A induktiv, um die folgenden Konstruktoren zu haben:
- a:A
- ℓ:(∑x:AB(x))→A
Die Typfamilie B ist definiert durch
- B(a)=bool
- B(ℓ(x,f))=nat .
Aa:A.
B(a)boolℓ(a,false)
ℓ(a,true)
AB(ℓ(a,false))=B(ℓ(a,true))=natn:natℓ(ℓ(a,false),n):A
ℓ(ℓ(a,true),n):A
B(ℓ(ℓ(a,true),n))=nat
m:natℓ(ℓ(ℓ(a,true),n),m):A
ℓ(ℓ(ℓ(a,false),n),m):A
A
Induktion-Induktion
AB:A→Type
- A
- BA
- AB
BB(c(…))=⋯
c(…)ABB
A
- a:A
- ℓ:(∑x:AB(x))→A
B
- Tru:B(a)
- Fal:B(a)
- x:Ay:B(x)Zer:B(ℓ(x,y))
- x:Ay:B(x)z:B(ℓ(x,y))Suc(z):B(ℓ(x,y))
BB(a)B(ℓ(x,y))