Saltar al contenido

Beta reducción

Avanzado Lógica Computación

Aquí está el motor entero del cálculo λ y, por tanto — en un sentido muy real — el motor entero de la computación.

La regla

(λx.M) N → M[x := N] «toma el cuerpo M y dondequiera que aparezca x libre en él, pon N»

Un término de la forma (λx.M) N se llama un redex — una expresión reducible. Encontrar uno y reescribirlo es un paso β. Sigue hasta que no quede ningún redex y tienes una forma normal: una respuesta.

Cámara lenta

(λx.x x) (λy.y) → (λy.y) (λy.y) x sustituida por (λy.y), dos veces → (λy.y) la identidad de fuera se dispara

Nada se «computó» en el sentido aritmético — la máquina simplemente reescribió símbolos y la respuesta cayó sola. Míralo ocurrir en directo:

¿Qué redex primero? El orden importa — más o menos

Los términos grandes pueden contener varios redex a la vez. Dos estrategias clásicas:

(λx.y) ((λz.z z) (λz.z z)) ¡el argumento diverge! orden normal: → y argumento desechado sin usar orden aplicativo: → gira para siempre, nunca llega a y

El teorema de Church–Rosser garantiza la parte tranquilizadora: si dos estrategias terminan, coinciden en la respuesta. Solo está en juego si terminas.

La trampa: la captura

La sustitución tiene un modo de fallo sutil. Mira:

(λx.λy.x) y ingenuo: → λy.y MAL — la y libre quedó capturada por λy correcto: → λy'.y renombra primero la y ligada, luego sustituye

La y entrante era libre — pertenecía a quien escribiera el término. Dejarla caer bajo una λy la secuestra como variable ligada. La solución es el α-renombrado: las variables ligadas son ficticias y pueden renombrarse libremente — λy.x y λw.x son la misma función — así que renombramos antes de sustituir.

Honestidad formal Dos términos que solo difieren en los nombres de las variables ligadas se llaman α-equivalentes y cuentan como idénticos: λx.x ≡ λy.y. También hay una tercera regla, la η-conversión: λx.f x ≡ f — una función que simplemente reenvía su argumento es la función. No la necesitarás mucho, pero la conocerás.

Tu turno a los mandos

Escribe cualquier término λ (usa λ o \), o pulsa un preajuste:

Práctica

(λx.λy.x) y se reduce a ___ (α-renombrado permitido)

Un término sin redexes está en…

¿Qué orden reduce el redex más externo y más a la izquierda?

(λx.λy.y) a b → ___