Nivel 4 · Curry–Howard
Conectivos como construcciones
El Teorema 9.20 habla solo del fragmento implicacional, y no por capricho: el cálculo lambda puro solo tiene funciones. Para extender el isomorfismo a los demás conectivos se añaden al cálculo construcciones que actúen como conjunción y disyunción, exactamente las construcciones que la interpretación BHK (Definición 9.17) ya había anunciado: un par y una elección etiquetada. Esta es la correspondencia estática, proposiciones como tipos; la presentación sigue a Sørensen y Urzyczyn (2006) y a Wadler (2015) .
Conjunción como tipo producto
«Tener y » es tener un par: la conjunción corresponde al tipo producto .
- Constructor: agrupa dos términos.
- Destructores: extrae el primer componente y el segundo.
Por ejemplo, y . Las reglas de tipado son:
Disyunción como tipo suma
«Tener o » es tener uno de los dos, con la etiqueta de cuál: la disyunción corresponde al tipo suma .
- Constructores: inyecta por la izquierda y por la derecha.
- Destructor: el análisis por casos examina y ejecuta (con ) o (con ) según el lado.
Por ejemplo, . Las reglas de tipado son:
Para se requiere además un tipo vacío , sin constructores, cuyo
eliminador corresponde a E: de un habitante de (que no puede existir) se
obtiene lo que se quiera. Aquí se omite y se retoma en el nivel 6 con el tipo False de Lean,
donde los tipos vacíos son un caso particular de
tipo inductivo dentro del
CIC .
Borrar los términos: de Church a Gentzen
La identidad formal se aprecia comparando estas reglas de tipado (las reglas «de Church») con las reglas de deducción natural de NJ (las reglas «de Gentzen»,
Definición 9.19y el listado que la sigue). Al borrar los términos a la izquierda de los dos puntos () y sustituir por y por , las reglas de Church se vuelven idénticas a las de Gentzen. La descarga de una suposición en lógica (I) corresponde al enlace de una variable en una abstracción lambda: la hipótesis que la regla descarga es exactamente la variable que la liga.
Considérese la prueba de : un procedimiento que, dada una prueba de , construye una de . La derivación de tipado siguiente es un solo árbol que contiene ambas lecturas a la vez:
Leído a la derecha de los dos puntos, es un programa: el término , una función que recibe un par y devuelve sus componentes intercambiados. Borrando los términos y sustituyendo por , queda la prueba lógica: de la hipótesis (descargada por I) se extraen y por y , se recombinan con I, y se descarga la hipótesis. La prueba y el programa son el mismo árbol.
La correspondencia descrita hasta aquí es un diccionario entre objetos terminados: fórmulas y tipos, derivaciones y términos. La página siguiente muestra que el diccionario también traduce procesos: simplificar una prueba y ejecutar un programa son la misma operación.