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 ϕ1ϕ2\phi_1 \to \phi_2 es un método que transforma pruebas, y el cálculo lambda simplemente tipado (λ\lambda_\to), 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 λ\lambda_\to 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 Γϕ\Gamma \vdash \phi de la deducción natural intuicionista NJ; del lado computacional, los juicios de tipado ΓM:ϕ\Gamma \vdash M : \phi (Definición 7.51), donde el contexto Γ\Gamma declara los tipos de las variables libres de MM. El teorema afirma que, en el fragmento donde ambos lenguajes coinciden, cada estructura es traducción de la otra.

Teorema 9.20 (Isomorfismo de Curry–Howard)

Las derivaciones del fragmento implicacional de IPC (denotado IPC(\to), con \to como único conectivo) y los juicios de tipado en λ\lambda_\to se corresponden en ambos sentidos:

  1. si ΓM:ϕ\Gamma \vdash M : \phi es derivable en λ\lambda_\to, entonces Γϕ|\Gamma| \vdash \phi es demostrable en IPC(\to), donde Γ|\Gamma| es el conjunto de tipos de Γ\Gamma;
  2. si Γϕ\Gamma \vdash \phi es demostrable en IPC(\to), existe un término MM tal que ΔM:ϕ\Delta \vdash M : \phi es derivable, con Δ={(xφ:φ)φΓ}\Delta = \{(x_\varphi : \varphi) \mid \varphi \in \Gamma\}.
Nota 9.21 (Sobre la biyectividad)

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 (\land, \lor, \bot) 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 ϕ(ϕϕ)\phi \to (\phi \to \phi) tiene una sola prueba aparente, pero dos términos distintos la habitan:

λx:ϕ.λy:ϕ.xyλx:ϕ.λy:ϕ.y,\lambda x{:}\phi.\, \lambda y{:}\phi.\, x \qquad\text{y}\qquad \lambda x{:}\phi.\, \lambda y{:}\phi.\, y,

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 p(qp)p \to (q \to p), 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 λx:p.λy:q.x\lambda x{:}p.\, \lambda y{:}q.\, x, el combinador KK 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 \toI se convierte en una abstracción λ\lambda; el axioma, en el uso de una variable del contexto.

El espejo de Curry–Howard

Prueba (NJ)

Axp,qpp,\, q \vdash p→Ipqpp \vdash q \to p→Ip(qp)\vdash p \to (q \to p)

Programa (λ→)

variablex:p,y:qx:px{:}p,\, y{:}q \vdash x : pabstracciónx:pλy:q.x  :  qpx{:}p \vdash \lambda y{:}q.\, x \;:\; q \to pabstracciónλx:p.λy:q.x  :  p(qp)\vdash \lambda x{:}p.\, \lambda y{:}q.\, x \;:\; p \to (q \to p)

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.