Che cos'è l'induzione-induzione?


11

Che cos'è l' induzione-induzione ?

Le risorse che ho trovato sono:

I primi due riferimenti sono troppo brevi per me e gli ultimi due sono troppo tecnici. Qualcuno può spiegarlo in parole povere? Sarebbe meglio se c'è il codice Agda.


C'è il codice Agda nella tua quarta citazione.
— Gilles 'SO- smetti di essere malvagio' il

Certo, ma sarebbe molto difficile leggere quell'enorme quantità di codice. E (immagino) super facile solo vedendo 1 o 2 esempi.
— 盛安安

Risposte:


13

03-10-2016 supplementare: ho confuso induzione-induzione e induzione-ricorsione (non la prima volta che l'ho fatto!). Mi scuso per il casino. Ho aggiornato la risposta per coprire entrambi.

Trovo illuminanti le spiegazioni nel documento di Forsberg & Setzer Un'assiomatizzazione finita delle definizioni induttive-induttive .

Induzione-ricorsione

Una definizione induttiva-ricorsiva è una definizione in cui definiamo un tipo A e una famiglia di tipi B:A→Type contemporaneamente in un modo speciale:

  1. A è definito come un tipo induttivo.
  2. B è definito da ricorsioneA .
  3. Fondamentalmente, la definizione di A può utilizzare B .

Senza il terzo requisito, potremmo definire prima A e poi separatamente B .

Ecco un piccolo esempio. Definire A induttivamente per avere i seguenti costruttori:

  • a:A
  • ℓ:(∑x:AB(x))→A

La famiglia di tipi B è definita da

  • B(a)=bool
  • B(ℓ(x,f))=nat

A

a: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

Induzione induzione

AB:A→Type

  1. A
  2. BA
  3. AB

B

B(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))


perché diavolo qualcuno dovrebbe definire tali tipi di dati D:
— 盛安安

7
Per insegnare cos'è un tipo induttivo-induttivo. Potrei darti un esempio reale, vale a dire un universo di tipo, ma sarebbe confuso.
— Andrej Bauer,

3
@AndrejBauer Mi sembra più una ricorsione a induzione. L'induzione-induzione è quando la famiglia di tipi è definita come un tipo induttivo .
— gallais,

2
Oops, hai assolutamente ragione. Lo aggiusterò.
— Andrej Bauer,

ℓ
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.