Nivel 4 · Curry–Howard
El isomorfismo
Establecido el formalismo intuicionista (Definición 9.19), puede revelarse la correspondencia exacta entre sistemas de prueba y lenguajes de programación tipados. La correspondencia (o isomorfismo) de Curry–Howard dota de contenido computacional a la «construcción» de la interpretación BHK (Definición 9.17): una prueba de es un método que transforma pruebas, y el cálculo lambda simplemente tipado (), el del nivel 1, es el lenguaje preciso para describir tales métodos. No es una analogía, sino una identidad estructural: la lógica proposicional intuicionista (IPC) y son dos notaciones para una misma estructura. La presentación combina a Sørensen y Urzyczyn (2006) y a Wadler (2015) .
El enunciado
Los dos lados del espejo ya están construidos. Del lado lógico, los secuentes de la deducción natural intuicionista NJ; del lado computacional, los juicios de tipado (Definición 7.51), donde el contexto declara los tipos de las variables libres de . El teorema afirma que, en el fragmento donde ambos lenguajes coinciden, cada estructura es traducción de la otra.
Las derivaciones del fragmento implicacional de IPC (denotado IPC(), con como único conectivo) y los juicios de tipado en se corresponden en ambos sentidos:
- si es derivable en , entonces es demostrable en IPC(), donde es el conjunto de tipos de ;
- si es demostrable en IPC(), existe un término tal que es derivable, con .
La demostración se encuentra en Sørensen y Urzyczyn (2006) . La correspondencia es biyectiva cuando las derivaciones registran qué hipótesis descarga cada regla; con contextos como conjuntos, cada dirección preserva la estructura pero un mismo secuente puede corresponder a varios términos, como muestra el ejemplo siguiente. Para los demás conectivos (, , ) el enunciado se extiende ampliando el cálculo con los tipos correspondientes, según se ve en la página que sigue.
El cálculo tipado es, en cierto sentido, más fino que la deducción natural. La fórmula tiene una sola prueba aparente, pero dos términos distintos la habitan:
dos programas que devuelven, respectivamente, el primer o el segundo argumento. El secuente demostrado es el mismo; los términos recuerdan cuál de las dos hipótesis se usó.
La misma estructura, vista dos veces
El espejo siguiente muestra, para la fórmula , la derivación en NJ a la izquierda y la derivación de tipado del término a la derecha. El término resultante es , el combinador del nivel 1. Al pasar el cursor por un juicio se resalta su contraparte: cada nodo lógico corresponde exactamente a un nodo de tipado. La regla I se convierte en una abstracción ; el axioma, en el uso de una variable del contexto.
El espejo de Curry–Howard
Prueba (NJ)
Programa (λ→)
Cada regla lógica es un constructor de términos: →I es una abstracción λ; la hipótesis es una variable.
El Teorema 9.20 cubre solo la implicación. La página siguiente extiende la correspondencia a la conjunción y la disyunción, y la última la lleva a su nivel más profundo: la dinámica, donde normalizar una prueba y evaluar un programa resultan ser la misma operación.