Deducción Natural y Lambda Cálculo
En la deducción natural, probamos enunciados sobre proposiciones usando árboles de prueba construidos a partir de reglas. Estas reglas se dividen en dos tipos: las reglas de introducción nos dicen cómo probar algo, y las reglas de eliminación nos dicen cómo usar algo.
Lógica proposicional
Reglas para la conjunción
Dadas proposiciones y , la conjunción se gobierna por las siguientes reglas:
Introducción (-intro): Si tenemos y , entonces tenemos .
Eliminación izquierda (-elim-l): Si tenemos , entonces tenemos .
Eliminación derecha (-elim-r): Si tenemos , entonces tenemos .
Reglas para la implicación
Introducción (-intro): Si, asumiendo , podemos probar , entonces tenemos . La hipótesis queda descargada.
Eliminación (-elim, modus ponens): Si tenemos y , entonces tenemos .
Para cualesquiera proposiciones : de se deduce .
Luego .
Lambda cálculo simplemente tipado
Si hacemos la deducción natural proof-relevant (es decir, que registremos la forma de la prueba), obtenemos el lambda cálculo simplemente tipado (STLC).
En la deducción natural escribimos "" para decir " vale". En el STLC, escribimos "" para decir que " es una prueba/testigo de ", o equivalentemente, " habita ".
Llamamos a una prueba, testigo, término o elemento de , y a una proposición o tipo.
Reglas tipadas para
Formación:
Introducción: Si y , entonces .
Eliminación: Si , entonces y .
Computación (): y .
Unicidad (): .
Reglas tipadas para
Formación:
Introducción: Si , entonces .
Eliminación: Si y , entonces .
Computación (): (sustitución).
Unicidad (): .
Si pensamos en los tipos como conjuntos y los términos como elementos, se comporta como el producto de conjuntos.
Existe una interpretación del STLC en , la categoría de conjuntos. De hecho, hay una equivalencia entre el STLC y las categorías cartesianas cerradas (CCC).
Interpretaciones del tipo función
Bajo la interpretación de Howard (lógica), corresponde a la implicación. Bajo la interpretación de Lambek (conjuntos), corresponde a funciones. También podemos interpretar los tipos como especificaciones de programas: un tipo especifica un programa que toma una entrada de tipo y retorna una salida de tipo .
Los árboles de prueba de la deducción natural están en correspondencia biyectiva con los términos del STLC.
Teoría de tipos dependientes
En la deducción natural no hay términos. En el STLC, los términos pueden depender de otros términos (ej. ). En la teoría de tipos dependientes, no solo los términos, sino también los tipos pueden depender de términos.
Por ejemplo:
- (vectores de longitud )
- (testigo de que es par)
Si interpretamos los tipos dependientes como:
- Proposiciones: los tipos dependientes son predicados.
- Conjuntos: los tipos dependientes son familias indexadas de conjuntos.
- Programas: los tipos dependientes son especificaciones parametrizadas.
Funciones dependientes y -tipos
Una función dependiente asigna a cada un vector de longitud . A veces se escribe .
La regla de eliminación nos da para cualquier .
Formación: Si , entonces .
Introducción: Si , entonces .
Eliminación: Si y , entonces .
Computación (): .
Unicidad (): .
Observaciones sobre los -tipos:
- es un caso especial de : cuando no depende de , es simplemente .
- es un caso especial de : si tenemos (el tipo con 2 elementos), entonces es lo mismo que .
- En la interpretación lógica, corresponde al cuantificador universal .