Evaluación del cálculo lambda

8

Sé que esta es una pregunta simple, pero ¿alguien puede mostrarme cómo (λy.λX.λy.y)(λX.λy.y) reduce a λX.λy.y.

prerm2686
fuente
¿Estás seguro de que has hecho paréntesis correctamente? Debido a la forma en que está escrito, no veo cómo se puede simplificar en absoluto. Si lo fuera (λy.λx.λy.y) (λx.λy.y), se reduciría a λx.λy.y.
sepp2k
Sí, gracias, actualicé mi pregunta. ¿Podría explicar cómo obtuvo λx.λy.y
prerm2686

Respuestas:

10

La razón que (λy.λX.λy.y)(λX.λy.y) reduce a λX.λy.y y no a λX.λy.λX.λy.y es que el y en el cuerpo de λy.λX.λy.y se refiere al argumento de la tercera lambda, no a la primera.

Si cambia el nombre de los argumentos para que tengan nombres distintos, λy.λX.λy.y se escribiría como λy1.λX.λy2.y2. Entonces, si aplica esa función al argumento, eso significa que cada aparición dey1 en λX.λy2.y2debe ser reemplazado con el argumento sin embargoy1 no aparece en absoluto en esa expresión, por lo que el argumento simplemente se ignora y el resultado es simplemente λX.λy2.y2.

sepp2k
fuente
Oh ok, entonces el y2 no está vinculado a y1. Muchas gracias.
prerm2686
77
@ prerm2686 Una variable siempre está unida por la más cercana λ. El subterráneoλy.y es la función de identidad, sin importar dónde la use, incluso si la usa en un contexto que también usa el nombre de la variable y.
Gilles 'SO- deja de ser malvado'
La reducción en wikipedia ofrece un tratamiento más formal de la conversión α y la reducción β. Una referencia que me gusta es el libro de Chris Hankin
Romuald