Livre e vinculado no cálculo Lambda

7

Aqui está algo da "Sintaxe e semântica das linguagens de programação" de Slonneger:

Uma variável pode ocorrer tanto vinculada como livre na mesma expressão lambda: por exemplo, em λx.yλy.yx, a primeira ocorrência de y é livre e as outras duas são ligadas.

Presumo que a variável livre seja y logo após o λx. e os ys limitados são λy.y que eu posso entender intuitivamente. Então ((λx.yλy.yx) a) b) reduziria a (yλy.ya) b) então a bba? Alguém pode explicar como isso aconteceu? No final, é a expressão b duas vezes. Alguém pode talvez fornecer mais exemplos de variáveis ​​vinculadas e livres?


fonte
Eu acho que Slonneger não usou um bom exemplo lá, porque pode ser facilmente interpretado como , que geralmente é a abreviação de . Eu daria um exemplo diferente: em , a última ocorrência deλx.yλxyλx.λy(λx.λy.xyx)xxé gratuito e os outros estão vinculados.
Jay

Respostas:

11

Adicionei colchetes para desambiguar

λx.(y(λy.(yx)))
o vermelho yé livre e o azul é limitado pela abstração verde. Eu não acho que faz sentido dizer que o verdey está ligado, mas junto com o lambda é um aglutinante.

Podemos beta reduzir o termo uma vez

λx.(y(λy.(yx)))abβ(y(λy.(ya)))b

mas não mais, pois não há redexes restantes restantes.


fonte