Avaliação do cálculo Lambda

8

Eu sei que essa é uma pergunta simples, mas alguém pode me mostrar como reduz a .(λy.λx.λy.y)(λx.λy.y)λx.λy.y

prerm2686
fonte
Tem certeza de que está entre parênteses corretamente? Como está escrito, não vejo como isso possa ser simplificado. Se fosse (λy.λx.λy.y) (λx.λy.y), reduziria para λx.λy.y.
sepp2k
Sim, obrigado. Atualizei minha pergunta. Você poderia explicar como chegou λx.λy.y
prerm2686

Respostas:

10

A razão que (λy.λx.λy.y)(λx.λy.y) reduz a λx.λy.y e não para λx.λy.λx.λy.y é esse o y no corpo de λy.λx.λy.y refere-se ao argumento da terceira lambda, não da primeira.

Se você renomear os argumentos para ter nomes distintos, λy.λx.λy.y seria escrito como λy1.λx.λy2.y2. Portanto, se você aplicar essa função ao argumento, isso significa que toda ocorrência dey1 no λx.λy2.y2deve ser substituído pelo argumento Contudoy1 não aparece nessa expressão; portanto, o argumento é simplesmente ignorado e o resultado é apenas λx.λy2.y2.

sepp2k
fonte
Oh ok, então o y2 não está vinculado ao y1. Muito obrigado.
precisa saber é o seguinte
7
@ prerm2686 Uma variável é sempre vinculada pelo mais próximo λ. O subtermoλy.y é a função de identidade, não importa onde você a use, mesmo que você a utilize em um contexto que também use o nome da variável y.
Gilles 'SO- stop be evil'
A redução na wikipedia oferece um tratamento mais formal da conversão α e redução β. Uma referência que eu gosto é o livro de Chris Hankin
Romuald