se (λ x. xx) tem um tipo, o sistema de tipos é inconsistente?


20

Se um sistema de tipos pode atribuir um tipo a λ x . x xou ao não-terminador (λx . x x) (λ x . x x), esse sistema é inconsistente como consequência? Todo tipo desse sistema é habitado? Você pode provar falso?

Respostas:


29

Certamente, atribuindo um tipo a nãoλx.x x é suficiente para inconsistência: no sistema , podemos derivar λ x . x x : ( X . X ) ( X . X )F

λx.x x:(X.X)(X.X)

de uma maneira bastante direta (este é um bom exercício!). No entanto, não pode ser bem digitado neste sistema, assumindo a consistência da aritmética de 2ª ordem, pois isso implica que todos esses termos bem digitados estão normalizando.(λx.x x)(λx.x x) ω

Além disso, o sistema é consistente. Isso decorre de qualquer normalização, pois é possível mostrar que qualquer termo do tipo não pode ter uma forma normal ou um argumento muito mais simples, no qual cada tipo recebe um conjunto, ou e pode ser mostrado que todos os tipos deriváveis ​​são atribuídos e é atribuído \ varnothing (e, portanto, não é derivável).X . X { } { } X . X FX.X{}{}X.X

O último argumento pode ser realizado em aritmética de primeira ordem. O fato de que λx.x x pode ser bem digitado em um sistema consistente pode ser visto como algo perturbador e é uma conseqüência da impredicatividade do sistema . Não deve surpreender que algumas pessoas questionem a confiabilidade de sistemas impredicativos da lógica. No entanto, nenhuma inconsistência foi encontrada até agora em tais sistemas.

Por outro lado, para poder fazer a afirmação mais geral de que não pode ser bem digitado em um sistema consistente, você precisa ter uma "estrutura lógica" suficiente em seu sistema. sistema de tipos para poder definir claramente a consistência. Então você precisa mostrar que um termo sem a forma normal da cabeça (como a acima) pode ter qualquer tipo, o que também não é óbvio!(λx.x x)(λx.x x)

Mais detalhes podem ser encontrados na minha resposta a uma pergunta relacionada: /cstheory//a/31321/3984


4
Ao ler essas respostas, vejo que obviamente você tem uma grande compreensão do assunto. Gostaria de aprender mais, mas não sei ao certo onde procurar. Eu dei uma olhada no livro da TAPL e ele não menciona nada disso, então não tenho certeza se esse é um assunto da Teoria dos tipos. Você poderia me indicar quais áreas de CS / matemática estão relacionadas a essa pergunta e talvez alguns livros / artigos? Muito obrigado.
MaiaVictor 23/10

2
Não tenho certeza de que essas perguntas sejam uma "área de pesquisa" em si , mais como algumas perguntas divertidas que teriam sido respondidas há muito tempo se houvesse algum esforço sério de especialistas. Definitivamente, é um assunto da teoria dos tipos, e a teoria dos Pure Type Systems tem a vantagem de tornar o problema definido e restrito. Eu provavelmente recomendaria o papel Coquand-Herbelin da outra linha.
Cody

3
Perguntas semelhantes foram feitas, por exemplo, aqui e aqui . Eu adicionaria "lambda calculi with types" de Barendregt à lista.
Cody

1
Qual é a sintaxe aqui? Eu esperava ver por um período de tipo ( X . X ) ( X . X ) . λx:(X.X).ΛY.x[YY](x[Y])(X.X)(X.X)
Andrej Bauer

1
λλx:(X.X).x[(X.X)(X.X)] xse você gostar. A inferência de tipo é indecidível aqui, mas isso é um tanto ortogonal à questão. Obviamente, as coisas não são tão claras quando você tem tipos dependentes, mas existem versões, por exemplo, do CoC com quantificações implícitas (Cálculo de Construções Implícitas de Miquel), portanto a questão permanece relevante.
Cody
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.