Nivel 1 · El cálculo lambda
Formas normales y no terminación
La β-reducción es el motor de todo el sistema: ejecutar un cómputo en el cálculo lambda es reducir redexes. Pero esa idea plantea preguntas fundamentales, las mismas que valen para cualquier programa de software:
- ¿Cuándo termina un cálculo? ¿Existe un estado final donde ya no se puede hacer más trabajo?
- ¿Terminan todos los cálculos? ¿O es posible que algunos entren en bucles infinitos?
- Si un cálculo puede realizarse de diferentes maneras (eligiendo qué parte reducir primero), ¿se llegará siempre al mismo resultado?
Las respuestas se encuentran en la teoría de la normalización y la confluencia, siguiendo a Nederpelt y Geuvers (2014) . Esta página responde las dos primeras preguntas; la tercera es el tema de la página siguiente.
El estado final: forma normal
Considérese:
- Un término está en forma normal β (o es una β-fn) si no contiene ningún redex. Es decir, no se le pueden aplicar más pasos de reducción β.
- Un término tiene una forma normal β (o es β-normalizable) si existe un término en forma normal β tal que . Dicho se denomina una forma normal β de .
Los dos sentidos de la definición no son intercambiables. «Estar en» forma normal es una propiedad sintáctica del término; «tener» forma normal se define mediante la conversión (Definición 7.28), no mediante la reducción . A priori esto es más débil: una cadena de conversión puede zigzaguear, y nada en la definición garantiza que pueda reducirse hasta . Que sí puede (y que la forma normal es única) se demostrará en la página siguiente como consecuencia del Teorema de Church-Rosser (Corolario 7.43 y Corolario 7.44).
Para analizar el proceso de reducción es útil definir formalmente las secuencias de pasos.
Una ruta de reducción (o camino de reducción) a partir de un término es una secuencia (finita o infinita) de términos tal que y para cada par de términos consecutivos de la secuencia (para todo si la secuencia es finita con último término ; para todo si es infinita).
La existencia de múltiples redexes en un término implica que puede haber múltiples rutas de reducción. Esto lleva a dos propiedades de terminación importantes.
Se define:
- Un término es débilmente normalizable si existe al menos una ruta de reducción finita que lleva a una forma normal β.
- Un término es fuertemente normalizable si toda ruta de reducción que comienza en es finita. Esto implica que no existen rutas de reducción infinitas a partir de .
Fuertemente normalizable implica débilmente normalizable, pero el recíproco falla, como muestra el tercer punto del siguiente ejemplo. El protagonista es el término la autoaplicación aplicada a sí misma.
Considérense los siguientes ejemplos, que ilustran los conceptos:
- Término fuertemente normalizable: el término es fuertemente normalizable. Todas las rutas de reducción posibles terminan en la forma normal .
- Término no normalizable: el término no es ni siquiera débilmente normalizable. Su única ruta de reducción es un ciclo infinito:
- Término débilmente pero no fuertemente normalizable: considérese
. Este término tiene dos redexes: el redex externo (el
término completo) y el redex interno ().
- Ruta 1 (finita): si se reduce el redex externo, el cálculo termina inmediatamente: Como existe una ruta que lleva a la forma normal , el término es débilmente normalizable.
- Ruta 2 (infinita): si se elige reducir siempre el redex interno , el cálculo no termina nunca: La existencia de esta ruta infinita significa que el término no es fuertemente normalizable.
Por qué Ω solo se reduce a sí mismo
La afirmación del punto 2 merece verificarse en detalle. Los subtérminos de son , , y el propio ; de ellos, el único con la forma de un redex es completo, con y . Contraerlo aplica la sustitución de la Definición 7.20:
El único paso de reducción disponible desde devuelve exactamente : toda ruta de reducción a partir de es , y como contiene un redex, nunca está en forma normal. Además no tiene forma normal: por la Definición 7.28 esto exigiría un en forma normal con , y el Corolario 7.43 de la página siguiente daría entonces un reducto común de y ; pero el único reducto de es , que no está en forma normal, y el único reducto de es .
El punto 3 del Ejemplo 7.36 enseña algo práctico: ante varios redexes, la elección puede decidir entre terminar o no. Un ejemplo clásico con combinadores: sean e . El término tiene una ruta finita si se contrae primero el redex más externo,
pero también una ruta infinita si se insiste en reducir . La estrategia que contrae siempre el redex más a la izquierda y más externo es normalizante: alcanza la forma normal siempre que exista una. Este resultado (el teorema de normalización) no se demuestra en la tesis; véase Barendregt (1984) .
Queda pendiente la tercera pregunta del inicio: un término puede tener múltiples rutas de reducción, y si dos de ellas terminan, ¿pueden desembocar en resultados distintos e incompatibles? La respuesta, en la página siguiente, es el teorema central del cálculo lambda.