Algoritmo para determinar a igualdade de funções no cálculo lambda simplesmente digitado?


10

Sabemos que a igualdade beta de termos lambda simplesmente digitados é decidível. Dado M, N: σ → τ, é decidível se para todos os X: σ, MX β NX?


Simplesmente datilografado Lambda Calculus / STLC wikipedia. uma vez que não está completo de Turing, existe algum outro modelo básico de computação que seja equivalente? também pode ser útil estudar o algoritmo de detecção de parada, que de acordo com a wikipedia é decidível para STLC ...
vzn 18-14:

3
@Marzio: Na verdade, acho que o problema aqui está na maneira como a pergunta é formulada, o que é bastante impreciso. Uma vez formulada adequadamente, essa é uma pergunta no nível da pesquisa. Uma formulação melhor seria: sabemos que a igualdade beta de termos lambda simplesmente digitados é decidível. Dado M,N:στ , é decidível se para todos os X:σ , MXβNX ? A resposta é negativa em geral (portanto, não existe um algoritmo como o buscado por Viclib). Embora talvez seja esperado, isso não é óbvio a priori e é uma conseqüência de alguns artigos dos anos 90.
Damiano Mazza

@DamianoMazza: ok, na verdade não votei para fechá-lo ... vou excluir meu comentário, deixar o seu e aguardar o comentário / edição do OP.
Marzio De Biasi

@DamianoMazza e Marzio, não sei o suficiente para fazer uma pergunta tão formal. Eu gostaria de ter, no entanto, mas isso não é algo que eu aprendo na minha escola. De fato, mesmo pesquisando sobre "igualdade beta", algo que realmente tentei antes de fazer a pergunta, me dá tão poucos resultados que é quase como se esse termo nem existisse. Então, eu nem tenho uma idéia de onde você aprende e lê sobre tudo isso. Vocês poderiam me indicar o lugar certo para começar a estudar o assunto? Pergunta atualizada.
perfil completo de MaiaVictor

11
@Viclib: equivalência beta é uma noção técnica, evitei mencioná-la na minha resposta. Aproximadamente, dois termos são equivalentes a beta quando produzem o mesmo resultado. Dizer para todos os significa que e calculam a mesma função. Com relação aos indicadores para aprender sobre o cálculo lambda (digitado ou não digitado), acho que as anotações de Peter Selinger e as notas de Sørensen e Urzyczyn Lecture Notes sobre Curry-Howard são excelentes pontos de partida. X H NMXβNXXMN
Damiano Mazza

Respostas:


13

Como eu disse no meu comentário, a resposta em geral é não.

O ponto importante a entender (digo isso para Viclib, que parece estar aprendendo sobre essas coisas) é que ter uma linguagem de programação / conjunto de máquinas em que todos os programas / computações terminam de forma alguma implica na igualdade de funções (ou seja, se dois programas / máquinas calculam a mesma função) é decidível. Um exemplo fácil: pegue o conjunto de máquinas de Turing com clock polinomial. Por definição, todas essas máquinas terminam em todas as entradas. Agora, dada qualquer máquina de Turing qualquer que seja , existe uma máquina de Turing que, dada na entrada da string , simulaetapas da computação de em uma entrada fixa (digamos, a sequência vazia) e aceita se termina no máximoM 0 x | x | M M | x | N M 0 N M 0 N MMM0x|x|MM|x|etapas ou rejeita o contrário. Se é uma máquina de Turing que sempre rejeita imediatamente, e são ambos (obviamente) com clock polinomialmente, e, no entanto, se pudéssemos decidir se e calculam a mesma função (ou, nesse caso, decidem o mesmo idioma), poderíamos decidir se (que, lembre-se, é uma máquina de Turing arbitrária) termina na string vazia.NM0NM0NM

No caso do -calculus simplesmente digitado (STLC), um argumento semelhante funciona, exceto que medir o poder expressivo do STLC não é tão trivial quanto no caso acima. Quando escrevi meu comentário, tinha em mente alguns artigos de Hillebrand, Kanellakis e Mairson, do início dos anos 90, que mostram que, usando tipos mais complexos que o tipo usual de número inteiro da Igreja, pode-se codificar no STLC suficientemente complexo cálculos para o argumento acima funcionar. Na verdade, vejo agora que o material necessário já está na prova simplificada de Mairson do teorema de Statman:λ

Harry G. Mairson, Uma simples prova de um teorema de Statman. Teórico Computer Science, 103 (2): 387-394, 1992. (Disponível online aqui ).

Nesse papel, Mairson mostra que, dado qualquer máquina de Turing , existe um tipo simples e um -termo que codifica a função de transição . (Isso não é óbvio a priori, se alguém tiver em mente o poder expressivo extremamente pobre do STLC sobre os inteiros da Igreja. De fato, a codificação de Mairson não é imediata). A partir disso, não é difícil construir um termoσ λ δ M : σ σ MMσλδM:σσM

tM:nat[σ]bool

(onde é a instanciação em do tipo de número inteiro da Igreja) de forma que reduza para se terminar em etapas no máximo quando alimentou a string vazia ou reduz para caso contrário. Como acima, se pudéssemos decidir que a função representada por é a função constante , teríamos decidido o término de na string vazia.σ t Mnat[σ]σ1 _ Mn 0 _ t M 0 _ MtMn_1_Mn0_tM0_M


Provavelmente também é possível usar a codificação de funções polinomiais multivariadas no STLC e depois apelar para o teorema de Matiyasevich .
Cody

Portanto, o STLC não está completo, mas é poderoso o suficiente para codificar a função de transição de uma máquina de Turing !? Então uma máquina de Turing poderia ser definida como uma fita e um programa STLC operando nela?
MaiaVictor

2
@Viclib: Pense bem: simular uma etapa de uma máquina de Turing arbitrária não requer muito poder computacional. Basicamente, você só precisa de tipos de dados finitos (com if-then-else), listas (com as operações básicas: contras, cauda, ​​etc.) e pares ordenados. (De fato, a Tese Estendida de Church-Turing afirma que essa baixa complexidade é comum a todo modelo razoável de máquina). O que o STLC está faltando é a capacidade de executar transições de TM "ad libitum", independentemente da entrada: ele pode iterá-las apenas um número de vezes igual a uma torre de exponenciais no tamanho da entrada (consulte o artigo de Mairson).
Damiano Mazza

11
@ cody: Obrigado, eu não conhecia esse papel. Acho que você está certo.
Damiano Mazza
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.