Nivel 4 · Curry–Howard
Normalización = evaluación
El nivel más profundo del isomorfismo está en la dinámica. Una prueba con un desvío contiene una regla de introducción seguida inmediatamente de su eliminación: se construye algo solo para deshacerlo. Eliminar el desvío es la normalización de la prueba. En el cálculo lambda , ese desvío es un redex (Definición 7.25) y su simplificación es la evaluación. La presentación sigue a Sørensen y Urzyczyn (2006) y a Wadler (2015) .
El desvío de implicación
Del lado lógico: una I que descarga la hipótesis , seguida de una E contra una prueba de . El desvío se elimina insertando la prueba de en cada lugar donde la hipótesis se usaba:
Del lado computacional, el mismo dibujo con los términos restaurados:
La reducción del desvío corresponde exactamente a la β-reducción (Definición 7.24): la prueba de sustituye cada suposición de dentro de la prueba de , tal como sustituye cada ocurrencia de en .
El desvío de conjunción
Construir un par para luego seleccionar un componente se simplifica a ese componente:
La normalización del desvío de conjunción corresponde a la proyección. Las reglas completas, una por conectivo, son:
Véalo en el espejo
En el widget siguiente, selecciónese el preset «Un desvío» y púlsese el botón «normalizar = β-reducir». A la izquierda desaparece el rodeo lógico (una I seguida de su E); a la derecha, el redex se contrae a . Son el mismo gesto: no hay una operación sobre pruebas y otra sobre programas, sino una sola.
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.
La tabla completa
El isomorfismo se resume así:
| Lógica intuicionista (IPC) | Cálculo lambda () |
|---|---|
| Proposición (fórmula) | Tipo |
| Prueba (construcción) | Programa (término) |
| Demostrabilidad | Habitabilidad del tipo |
| Hipótesis | Variable de término |
| Conectivo (, , ) | Constructor de tipo (, , ) |
| Prueba con desvío | Redex (término reducible) |
| Normalización de una prueba | Evaluación (β-reducción) |
| Prueba normalizada | Valor ( forma normal ) |
Una prueba es un término
La consecuencia decisiva es la primera línea de la tabla: una prueba es un término. Esto es exactamente lo que Lean industrializa: en un asistente de pruebas basado en teoría de tipos , demostrar un teorema es construir un término cuyo tipo es el enunciado, y verificar la prueba es comprobar el tipado del término. En la formalización del teorema de completitud (nivel 7, próximamente), una derivación de deducción natural no se describe ni se importa: se construye como un término tipado cuya corrección verifica el núcleo del sistema.
Entre este punto y Lean quedan dos escalas por subir. El nivel 5 recorre el cubo lambda:
los sistemas de tipos cada vez más expresivos que llevan de al Cálculo de
Construcciones. El nivel 6 añade la pieza que falta para la matemática real, los
tipos inductivos del
CIC , donde el tipo vacío
pendiente de la página anterior encuentra su lugar como el False de Lean. Probar y programar
serán, literalmente, lo mismo.