Eu estive pensando sobre estas perguntas:
Existe um cálculo lambda digitado que seja consistente e Turing completo?
/cs/65003/if-%CE%BB-xxx-has-a-type-then-is-the-type-system-inconsistent
e já existem algumas questões difíceis de responder relacionadas na configuração sem tipo! Mais especificamente, estou curioso para saber se podemos recuperar a integridade de Turing da não terminação da seguinte maneira:
Pergunta: Dado um (puro) -termo com nenhuma forma normal cabeça fraca, não existe sempre existir um elemento de combinação de ponto fixo de tal forma que
Todas as igualdade são tomadas no módulo .
Na verdade, eu suspeito que esta versão da pergunta seja falsa , para que se possa relaxar a questão para combinadores em loop , em que um combinador em loop é definido como um termo tal que para cada
De maneira mais geral, estou interessado em encontrar maneiras "naturais" de passar de um sem terminação para um combinador de loop, mesmo que a equação acima não seja satisfeita.
Eu também estou interessado em versões mais fracos da pergunta acima, por exemplo, pode ser considerado como sendo uma aplicação a cada na forma normal (embora eu não tenho certeza de que realmente ajuda).
Até agora: a abordagem natural é aplicar "pimenta" de todo o processo, por exemplo
torna-se o habitual
A idéia é reduzir a cabeça de para um aplicativo lambda e substitua-o por , mas o próximo passo não é claro (e eu sou cético quanto a isso poder levar a qualquer coisa).
Não tenho certeza eu entendo o suficiente sobre árvores Böhm para ver se eles têm alguma coisa a dizer, mas eu duvido muito, desde Böhm árvore 's é simplesmente , que parece em nada com a pessoa certa para : uma árvore infinita de abstrações.
Edit : Um amigo meu observou que esta abordagem ingênua não funciona com o termo:
Respostas:
Existem vários aspectos para essa pergunta muito legal, portanto estruturarei esta resposta de acordo.
1. A resposta para a pergunta em caixa é não . Os termo sugerido pelo seu amigo é realmente um contra-exemplo.Ω3=(λx.xxx)(λx.xxx)
Foi observado anteriormente nos comentários que se tem contra-exemplos como o "ogro" , até que a questão seja restrita a termos sem forma normal de cabeça fraca. Tais termos são conhecidos comotermos zero. Estes são termos que nunca se reduzem a um lambda, sob qualquer substituição.K∞=YK
Para qualquer combinador de ponto fixo (fpc) ,Y é o chamadotermomudo(AKA "root-active"): cada redução do mesmo reduz-se ainda mais a um redex.YI
não é mudo; nem é Ω 3 - como é manifestado pela inspeção de seu conjunto de redutos, que é { Ω 3 ( λ x . x x x ) ⋯ ( λ x . x x x ) ⏟ k ∣K∞ Ω3 -
Em vez de apresentar um argumento preciso por que é mudo para todos os fpcs YYEu Y (de fato, para qualquer combinador de loop) que pode ser trabalhoso, mas esperançosamente claro o suficiente - , tratarei a generalização óbvia de sua pergunta, restringindo também os termos mudos.- -
Termos mudos são uma subclasse de termos zero que são uma subclasse de termos insolúveis. Juntas, essas são talvez as escolhas mais populares para o conceito de "sem sentido" ou "indefinido" no cálculo lambda, correspondendo às árvores triviais de Berarducci, Levy-Longo e B \ ohm, respectivamente. A estrutura de noções de termos sem sentido foi analisada em detalhes por Paula Severi e Fer-Jan de Vries. [1] Os termos mudos constituem o elemento inferior dessa treliça, ou seja, a noção mais restritiva de "indefinido".
2. Seja um termo mudo e Y seja um combinador de loop com a propriedade que YM Y .YEu= M
Primeiro, argumentamos que, para uma variável nova , Y z se parece muito com o Y M que você descreveu, obtido por "aspersão zz Yz YM z em torno de" alguns reduct de .M
Por Church-Rosser, e M têm um reduto comum, M ′ . Faça uma redução padrão R : Y I ' s M ' . Todo subtermo de M ′ corresponde a um subtermo único de Y I ≡ Y z [ z : = I ] sob esta redução. Para qualquer subtermo C [ N ] = M ′ , fatores R como N 0 ] ↠ wYEu M M′ R : YEu↠sM′ M′ YEu≡ Yz[ z: = I] C[ N] = M′ R , em que a perna do meio é uma redução de cabeça fraca (e etapa final é interna). Né "guardado" por umzse esta segunda etapa contrair algum redexIP, comIum descendente da substituição[z:=I].YEu↠ C[ N0 0] ↠w hC[ N1] ↠EuC[ N] N z EuP Eu [ z: = I]
Obviamente, tem que guardar alguns subtermos de M , caso contrário seria mudo também. Por outro lado, deve-se ter cuidado para não guardar os subtermos necessários para a não terminação, pois, caso contrário, não poderá desenvolver a árvore B \ "ohm infinita de um combinador em loop.Y M
Assim, basta encontrar um termo mudo no qual todo subtermo, de cada redução, é necessário para a não normalização, no sentido de que colocar uma variável na frente desse subtermo produz um termo normalizador.
Considere , onde W = λ w . w eu w w . É como Ω , mas a cada iteração, verificamos que a ocorrência de W na posição do argumento não é "bloqueada" por uma variável head, alimentando-a com uma identidade. Colocar um z na frente de qualquer subtermo resultará em uma forma normal de forma z P 1 ⋯ P k , onde cada P i é I , W ou a " zΨ = WW W= λ w . w Iw w Ω W z zP1⋯ Pk PEu Eu W z borrão " deles. Então Ψ é um contra-exemplo para a questão generalizada.
TEOREMA. Não existe um combinador de loop tal que Y I =Y .YEu= Ψ
PROVA. O conjunto de todas as redutos de é { W W , W I W W , I I I I W W , I I I W W , I I W W , I W W } . Para ser conversível com Ψ , Y devo reduzir a um deles. O argumento é idêntico em todos os casos; para concreção, suponhamos que Y I ↠ I I W W .Ψ { WW, WEuWW,IIIIWW,IIIWW,IIWW,IWW} Ψ YI YEu↠ euEuWW
Qualquer redução padrão pode ser tomada como Y I ↠ w P N 4 , P ↠ W Q N 3 , Q ↠ w N 1 N 2 , assim Y I ↠ w N 1 N 2 N 3 N 4 N 1 ↠ I , N 2 ↠ I , N 3YEu↠sEuEuWW
Vamos nos referir à redução como R 0 , e as reduções a partir de N i como R iYEu↠WN1N2N3N4 R0 0 NEu REu .
Estas reduções podem ser levantado através da substituição para produzir R z 0 : Y z ↠ z k ( M 1 M 2 M 3 M 4 ) N i ≡ H i [ z : = I ] de modo a que R 0 é a composição Y I R z 0 [ z : = I ] ↠ I[ z: = I]
Ao mesmo tempo, o termoNz1Nz2Nz3Nz4 ainda deve reduzir para produzir a infinita fpc Bohm tree z( z( z( ⋯ ) ) ) . Portanto, deve haver uma "aspersão"zkj em um dos NzEu que chega infinitamente frequentemente à cabeça do termo, mas não bloqueia reduções adicionais dele.
E agora terminamos. Inspecionando cadaNzEu , para i ≤ 4 e cada valor possível de kj , para j ≤ 2 + 7 ⌊ i - 12⌋ , descobrimos que não existe tal aspersão.
Por exemplo, se modificarmos o últimoW dentro EuEuWW Como Wz= λ w . z( W Iw w ) , obtemos a redução de normalização
(Notar queΩ admite tal aspersão precisamente porque um certo subtermo dele pode ser "protegido" sem afetar a não normalização. A variável vem na posição principal, mas redexes suficientes permanecem abaixo.)
3. A "transformação por aspersão" tem outros usos. Por exemplo, colocandoz na frente de cada redex em M , obtemos um termo N= λ z. Mz que é uma forma normal, mas satisfaz a equação NEu= M . Isso foi usado por Statman em [2], por exemplo.
4. Como alternativa, se você relaxar o requisito de queYEu= M , você pode encontrar vários fpcs (fracos) Y que simulam a redução de M , enquanto produz uma cadeia de z s ao longo do caminho. Não tenho certeza se isso responderia à sua pergunta geral, mas certamente há várias transformações (computáveis)M↦ YM que produzem combinadores de loop para cada mudo M , de tal maneira que o gráfico de redução de YM é estruturalmente semelhante ao de M . Por exemplo, pode-se escrever
[1] Severi P., de Vries FJ. (2011) Decompondo a Malha de Conjuntos Sem Significado no Cálculo Infinitário de Lambda. In: Beklemishev LD, de Queiroz R. (eds) Lógica, Linguagem, Informação e Computação. WoLLIC 2011. Notas de aula em Ciência da Computação, vol 6642.
[2] Richard Statman. Não há combinador hiper-recorrente S, K. Relatório de Pesquisa 91–133, Departamento de Matemática, Universidade Carnegie Mellon, Pittsburgh, PA, 1991.
fonte