La reducción β es la base de la evaluación de funciones en el
cálculo lambda . Por ejemplo, la expresión
(λx.x)y representa la aplicación de la función identidad λx.x al
argumento y; intuitivamente, la función debería devolver el argumento sin cambios. La reducción
β formaliza ese paso: se toma el cuerpo de la función (en este caso, x) y se sustituye la
variable ligada por el argumento, usando exactamente la
Definición 7.20:
(λx.x)y→βx[x:=y]≡y.
Este mecanismo consiste, esencialmente, en aplicar una función y obtener un resultado. Todo el
material sigue a Nederpelt y Geuvers (2014)
.
Un paso de cómputo
Definición 7.24(β-reducción de un paso, →β)
La relación →β se define por:
Base:(λx.M)N→βM[x:=N].
Compatibilidad: si M→βN, entonces ML→βNL,
LM→βLN y λx.M→βλx.N.
Las cláusulas de compatibilidad son las que permiten reducir dentro de un término: un paso de
reducción puede aplicarse a cualquier subtérmino con la forma adecuada, no solo al término
completo. El siguiente vocabulario da nombre a esas piezas.
Definición 7.25(Redex y contráctum)
Un término (λx.M)N se denomina redex (expresión reducible) y el término
M[x:=N] se llama su contráctum. La reducción β en un paso, denotada →β,
consiste en reemplazar un redex por su contráctum.
Ejemplo 7.26(Un paso, dos rutas y un bucle)
(λx.x(xy))N→βN(Ny).
En el término (λx.(λy.yx)z)v hay dos redexes:
Redex 1: el término completo.
(λx.(λy.yx)z)v→β(λy.yv)z.
Redex 2: el subtérmino (λy.yx)z.
(λx.(λy.yx)z)v→β(λx.zx)v.
Ambos términos resultantes pueden reducirse a un reducto común zv:
(λy.yv)z→βzv,(λx.zx)v→βzv.
(λx.xx)(λx.xx)→β(λx.xx)(λx.xx).
Este es un caso de reducción infinita, donde la sustitución del argumento en el cuerpo del
redex produce el mismo término.
Cero o más pasos
Definición 7.27(Reducción β en cero o más pasos, ↠β)
Sea M↠βN si existen n≥0 y términos M0,M1,…,Mn tales
que
M0≡M,Mn≡N,yMi→βMi+1 para todo 0≤i<n.
Por lo tanto, si M↠βN, existe una cadena de reducciones β de un solo
paso que comienza en M y termina en N:
M≡M0→βM1→β⋯→βMn−1→βMn≡N.
El caso n=0 está permitido: todo término se reduce a sí mismo en cero pasos, de modo que
↠β es reflexiva; concatenando cadenas se comprueba que también es
transitiva.
La igualdad β
La reducción tiene una dirección: va del redex al contráctum. Para hablar de términos que
computan lo mismo se necesita la relación simétrica generada por la reducción.
Definición 7.28(Conversión β, igualdad β; =β)
Dos términos M y N son β-convertibles o β-iguales, denotado M=βN, si existe
una secuencia de términos M0,…,Mn (con n≥0) tal que M0≡M,
Mn≡N y, para todo i con 0≤i<n:
Mi→βMi+1∨Mi+1→βMi,
donde ∨ es la disyunción inclusiva: la condición se satisface si Mi se reduce a
Mi+1, si Mi+1 se reduce a Mi, o si ambas relaciones se cumplen.
Nota 7.29(La abreviatura ↔β)
La condición Mi→βMi+1∨Mi+1→βMi se abrevia con
Mi↔βMi+1. La igualdad =β es entonces la clausura reflexiva y
transitiva de ↔β, que en la literatura se escribe también
↔β∗. En una cadena de conversión los pasos pueden apuntar en direcciones
distintas: =β conecta términos «cuesta arriba» y «cuesta abajo» de la reducción.
Ejemplo 7.30(Dos rutas, una sola meta)
Para demostrar la β-igualdad entre los términos del conjunto
{(λx.(λy.yx)z)v,(λy.yv)z,(λx.zx)v,zv},
basta con mostrar que todos se reducen a la misma
forma normal zv. El término inicial tiene dos caminos
de reducción posibles:
Dado que todos los términos convergen a zv (es decir, M↠βzv para
cada uno), son todos β-iguales entre sí. Por ejemplo,
(λy.yv)z=β(λx.zx)v porque ambos tienen un reducto en
común, aunque ninguno de los dos se reduce al otro.
Pruébalo tú mismo
El reductor ejecuta la Definición 7.24 paso a paso:
resalta cada redex disponible, y al contraerlo aplica la sustitución de la
Definición 7.20.
Escribe el término (\x. (\y. y x) z) v y verifica que las dos rutas del Ejemplo 7.26
desembocan en zv; el preset Ω muestra el bucle infinito del tercer punto.
Reductor β interactivo
La sustitución sigue la Definición del texto: (λy. P)[x := N] ≡ λz. (P^{y→z}[x := N]) con z ∉ FV(N) ∪ {x}; el renombre se muestra cuando ocurre.
Que las dos rutas del ejemplo converjan no es un accidente: es un teorema, y de los importantes.
Antes de llegar a él, la página siguiente estudia qué significa que un cómputo termine, y
muestra que no todos lo hacen.