Lendo o artigo Uma Introdução ao Cálculo Lambda , me deparei com um parágrafo que eu realmente não entendia, na página 34 (em itálico):
Dentro de cada um dos dois paradigmas, existem várias versões do cálculo lambda digitado. Em muitos sistemas importantes, especialmente nos da Igreja, os termos que possuem um tipo sempre possuem uma forma normal. Pela insolubilidade do problema de parada, isso implica que nem todas as funções computáveis podem ser representadas por um termo digitado, ver Barendregt (1990), Teorema 4.2.15. Isso não é tão ruim quanto parece, porque, para encontrar funções computáveis que não podem ser representadas, é preciso ficar de pé. Por exemplo, em 2, o cálculo lambda digitado de segunda ordem, apenas as funções recursivas parciais não podem ser representadas que são totais, mas não provadamente na análise matemática (aritmética de segunda ordem).
Estou familiarizado com a maioria desses conceitos, mas não com o conceito de função recursiva parcial, nem com o conceito de função comprovadamente total. No entanto, não é isso que estou interessado em aprender.
Estou procurando uma explicação simples sobre por que certas funções computáveis não podem ser representadas por um termo digitado, bem como por que essas funções só podem ser encontradas "estando de pé na cabeça".
fonte
Acho que a resposta de Merijn trata muito bem a primeira parte da sua pergunta. Tentarei responder à segunda parte: por que encontrar funções que são computáveis, mas não representáveis, no processo polimórfico?λ -calculus requer "ficar de pé sobre a cabeça".
Receio que exija alguma explicação dos conceitos nos quais você não está interessado. Uma função recusativa parcial é umaλ termo que representa uma função de N para N ∪{⊥} . UMAλ -prazo t aplicado ao representante de um número natural n é enviado para ⊥ se e apenas se t n se não tem uma forma normal. Se nenhum número for enviado para⊥ dizemos que a função é total . Agora, a ideia é que nenhuma teoria lógicaT pode provar que um termo t representa uma função total para cada função total t , sempre há "pontos cegos" onde t termina em todas as entradas n , mas a declaração
é indecidível emT . Se a declaração acima for comprovável emT , dizemos que a função representada por t é comprovadamente total . Que nem todas as funções totais são comprovadamente totais emT é uma conseqüência (uma variante) do Teorema de Godel Incompleteness T .
Agora, o ponto é que o amplo programa da maioria que desejamos escrever (classificação de listas, passagem de gráficos, sistemas operacionais) não é apenas funções totais, mas é comprovadamente total em sistemas lógicos razoáveis, como o Peano Arithmetic.
Agora, para o polimórficoλ -cálculo. Pode-se mostrar que os termos que se pode digitar neste cálculo são exatamente os termos que representam as funções comprovadamente totais na Aritmética Peano de Segunda Ordem. A Aritmética Peano de Segunda Ordem é muito, muito mais poderosa que a Aritmética Peano comum.
Isso significa pelas explicações acima que existem termos que são totais, mas não comprovadamente totais, mas essas funções são extremamente raras, pois já são raras para a Aritmética Peano (e muito mais raras na teoria de segunda ordem). Daí a afirmação "em pé de cabeça".
fonte
Estou achando um pouco difícil escrever a prova de forma concisa, mas espero que essa explicação forneça intuição suficiente para ver por que termos simples digitados não podem representar todos os termos não digitados.
O cálculo lambda simplesmente digitado está fortemente normalizando. Cadaβ redução nos aproximará da forma normal. Quando a funçãof: : Ct → p→ γ é aplicado a um valor do tipo α será β reduzir a uma função do tipo β→ γ . Dado um número finito de argumentos, é necessário um número finito de etapas de redução para alcançarβ -forma normal, na qual não há mais reduções possíveis.
Para contrastar isso com o cálculo lambda sem tipo. Um dos combinadores UTLC mais famosos é oY -combinador:
Quando tentamos reduzir oY -combinator acontece o seguinte:
Independentemente das funções em que passamos, ficamos presos em uma sequência infinita de reduções! Se tentarmos fixar um tipo STLC no UTLCY -combinator, rapidamente achamos isso impossível, porque o aplicativo de funções não reduz o tipo, conforme é necessário no STLC. oY -combinator é claramente computável (representa, usando a recursão, o conceito de um loop infinito), mas não pode ser representado no STLC, pois todos os termos do STLC estão fortemente normalizando.
fonte