Termos do Lambda-Calculus que se reduzem a si mesmos

13

Na minha busca contínua para tentar aprender o cálculo lambda, "Lambda-Calculus and Combinators an Introduction" de Hindley & Seldin menciona o seguinte artigo (por Bruce Lercher) que prova que a única expressão redutível que é a mesma (conversão de módulo alfa) para si mesma é: (λx.xx)(λx.xx) .

Embora eu acredite no resultado, não sigo o argumento.

É bastante curto (menos de um parágrafo). Quaisquer explicações serão bem-vindas.

Obrigado,

Charlie

Charles Reich
fonte

Respostas:

16

Primeiro, observe que o resultado afirma que o único redex beta em que o lado direito é igual (conversão alfa do módulo) ao lado esquerdo é . Existem outros termos que se reduzem, tendo esse redex em um contexto.(λx.xx)(λx.xx)

Eu posso ver como a maioria das provas de Lercher funciona, embora haja pontos em que eu não posso passar sem modificar um pouco a prova. Suponha que (eu uso(λx.UMA)B=[B/x]UMA para alfa equivalência), e de acordo com a convenção variável supor que x não ocorre livre em B .=xB

Conte o número de 's no lado esquerdo e no lado direito. A redução remove um do REDEX, mais aqueles de B , e adiciona tantos como existem em B vezes o número de ocorrências de x em A . Em outras palavras, se L ( M ) é o número de λ 's em M e # x ( M ) é o número de ocorrências livres de x em M, então 1 + L ( B ) = # x (λBBxUMAeu(M)λM#x(M)xM . A única solução para essa equação diofantina é # x ( A ) = 2 (e L ( B ) = 1, mas não usaremos esse fato).1+eu(B)=#x(UMA)×eu(B)#x(UMA)=2eu(B)=1

Não entendo o argumento de Lercher para o parágrafo acima. Ele conta o número de 's e termos atômicos; vamos escrever este # ( M ) . A equação é # ( B ) + 1 = # x ( A ) × ( # ( B ) - 1 ) , que tem duas soluções: # x ( A ) = 2 , # ( B ) = 3 e # x ( Aλ#(M)#(B)+1=#x(UMA)×(#(B)-1)#x(UMA)=2,#(B)=3 . Não vejo uma maneira óbvia de eliminar a segunda possibilidade.#x(UMA)=3,#(B)=2

Vamos agora aplicar o mesmo raciocínio ao número de subtermos igual a em ambos os lados. A redução remove um próximo ao topo e adiciona quantas ocorrências substituídas de x em A , ou seja, 2. Portanto, mais uma ocorrência de B deve desaparecer; Como os que estão em A permanecem (porque B não contém x livre ), a ocorrência extra de B no lado esquerdo deve serBxUMABUMABxB .λx.UMA

Eu não entendo como Lercher deduz isso não possui B como subtermo, mas isso não é de fato relevante para a prova.UMAB

A partir da hipótese inicial, é uma aplicação. Não pode ser esse o caso se A = x , portanto, A é uma aplicação M N , com λ x . M N = [ ( λ x . M N ) / x ] M = [ ( λ x . M N ) / x ] N[(λx.UMA)/x]UMAUMA=xUMAMNλx.MN=[(λx.MN)/x]M=[(λx.MN)/x]N Como não pode se apresentar como um subtermo,M não pode ter a forma λ x . P , então M = xMλx.PM=x . Da mesma forma, .N=x


Prefiro uma prova sem argumentos de contagem. Suponha que .(λx.UMA)B=[B/x]UMA

Se , temos ( λ x . A ) B = B , o que não é possível, pois B não pode ser um subtermo de si mesmo. Assim, como o lado direito da hipótese é igual a um aplicativo, A deve ser um aplicativo A 1 A 2 e λ x . A = [ B / x ] A 1 e B = [ B /UMA=x(λx.UMA)B=BBUMAUMA1UMA2λx.UMA=[B/x]UMA1 .B=[B/x]UMA2

A partir da igualdade anterior, ou A 1 = λ x . [ B / X ] Uma . No segundo caso, um 1 = λ x . ( λ x . A 1UMA1=xUMA1=λx.[B/x]UMA , o que não é possível, pois $ A_1 não pode ser um subtermo em si.UMA1=λx.(λx.UMA1UMA2)B

A partir da igualdade último, quer ou um 2 não tem livres x (de outro modo B seria um subtermo de si mesmo). No último caso,UMA2=xUMA2xB .UMA2=B

Mostramos que . O lado direito da hipótese inicial é, portanto, B B , e B = λ x . A = λ x . xUMA=xxBBB=λx.UMA .λx.xx

Gilles 'SO- parar de ser mau'
fonte