En un hilo reciente en la lista de correo de Agda, surgió la cuestión de las leyes , en la que Peter Hancock hizo un comentario estimulante .
Tengo entendido que las leyes vienen con tipos negativos, es decir. conectivos cuyas reglas de introducción son invertibles. Para deshabilitar para las funciones, Hank sugiere usar un eliminador personalizado, funsplit , en lugar de la regla de aplicación habitual. Me gustaría entender el comentario de Hank en términos de polaridades.
Por ejemplo, hay dos presentaciones tipos Sigma . Existe el eliminador de división tradicional Martin-Löf , en un estilo positivo:
Y hay una versión negativa:
Esta última presentación facilita la obtención de para pares, es decir. para cualquier par (donde == representa la igualdad de definición). En términos de demostrabilidad, esta diferencia no importa: intuitivamente, puede implementar proyecciones con división, o al revés.
Ahora, los tipos son usualmente (y sin controversia, creo) tomados negativamente:
Lo que nos da para funciones: .
Sin embargo, en ese correo, Hank recuerda el eliminador de funsplit (Programación en teoría del tipo ML, [http://www.cse.chalmers.se/research/group/logic/book/], p.56). Se describe en el marco lógico por:
Curiosamente, Nordstrom et al. Motive esta definición diciendo que "[esta] forma alternativa no canónica se basa en el principio de inducción estructural". Hay un fuerte olor a positividad en esta afirmación: las funciones serían 'definidas' por su constructor, .
Sin embargo, no puedo precisar una presentación satisfactoria de esa regla en la deducción natural (o, mejor aún, el cálculo consecuente). El uso (ab) del marco lógico para introducir parece crucial aquí.
Entonces, ¿es funsplit una presentación positiva de los tipos ? ¿También tenemos algo similar en el cálculo secuencial (no dependiente)? ¿Cómo se vería?
¿Qué tan común / curioso es eso para los teóricos de la prueba en el campo?