¿Qué es la inducción-inducción?

11

¿Qué es la inducción-inducción ?

Los recursos que encontré son:

Las dos primeras referencias son demasiado breves para mí, y las dos últimas son demasiado técnicas. ¿Alguien puede explicarlo en términos simples? Sería mejor si hay código Agda.

盛安安
fuente
Hay código Agda en su cuarta cita.
Gilles 'SO- deja de ser malvado'
Claro, pero sería muy difícil leer esa gran cantidad de código. Y (supongo) súper fácil con solo ver 1 o 2 ejemplos.
盛安安

Respuestas:

13

Suplemento 2016-10-03: Mezclé inducción-inducción e inducción-recursión (¡no la primera vez que hice eso!). Mis disculpas por el desastre. Actualicé la respuesta para cubrir ambos.

Encuentro las explicaciones en el artículo de Forsberg & Setzer Una axiomatización finita de definiciones inductivo-inductivas esclarecedoras.

Inducción-recursión

Una definición inductiva-recursiva es aquella en la que definimos un tipo A y una familia de tipos B:AType simultáneamente de una manera especial:

  1. A se define como un tipo inductivo.
  2. B se define por la recursividad enA .
  3. Fundamentalmente, la definición de A puede utilizar B .

Sin el tercer requisito, primero podríamos definir A y luego B separado .

Aquí hay un ejemplo de bebé. Defina A inductivamente para tener los siguientes constructores:

  • a:A
  • :(x:AB(x))A

El tipo de familia B se define por

  • 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

Inducción-inducción

AB:AType

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

Andrej Bauer
fuente
¿Por qué demonios alguien definiría tales tipos de datos D:
盛安安
77
Para enseñar qué es un tipo inductivo-inductivo. Podría darte un ejemplo real, a saber, un universo tipo, pero eso sería confuso.
Andrej Bauer el
3
@AndrejBauer Esto se parece más a la inducción-recursión para mí. Inducción-inducción es cuando la familia de tipos se define como un tipo inductivo .
gallais
2
Vaya, tienes toda la razón. Lo arreglaré.
Andrej Bauer el