Tudo bem, eu vou dar uma olhada nisso: em geral, para um determinado sistema de tipo , o seguinte é verdadeiro:T
Se todos os termos do tipo bem no cálculo estiverem normalizando, será consistente quando visto como uma lógica.TT
A prova geralmente prossegue assumindo que você tenha um termo do tipo , usando a redução de assunto para obter uma forma normal e, em seguida, prosseguindo por indução na estrutura desse termo para obter uma contradição.absurdFalse
É natural se perguntar se o inverso vale, ou seja,
Para qualquer sistema de tipos , se for logicamente consistente , todos os termos bem digitados em estão normalizando.TTT
O problema disso é que não existe uma noção mais geral real de "sistema de tipos" e ainda menos concordância sobre o significado de consistência lógica para esses sistemas. No entanto, podemos empiricamente verificar se
Para os sistemas de tipos mais conhecidos que têm uma interpretação lógica, o inverso é realmente válido.
Como isso se vincula à Completude de Turing? Bem, por um lado, se a verificação de tipo for decidível , o argumento de Andrej mostra que um dos seguintes itens deve ser válido:
- O conjunto de todos os programas bem digitados não é o Turing Complete.
- Existe um programa bem digitado e sem terminação.
Isso tende a sugerir que:
Os sistemas de tipos que têm uma interpretação lógica e são consistentes e são recursivamente enumeráveis não são Turing Complete.
Dar um teorema real, em vez de uma sugestão, exige que a noção de sistemas de tipos e interpretações lógicas seja matematicamente precisa.
Agora, dois comentários vêm à mente:
Existe um sistema de tipos indecidíveis , o sistema de tipos de interseção que tem uma interpretação lógica e pode representar todos os normalização . Como você observa, isso não é o mesmo que ser Turing Complete, pois o tipo de uma função total pode precisar ser atualizado (refinado, de fato) antes de aplicá-lo ao argumento desejado. O cálculo é um cálculo "estilo curry" e é igual a STLC +
Γ ⊢ M : τλ
e
y⊢H:τ∩σ
Γ⊢M:τΓ⊢M:σΓ⊢M:τ∩σ
É claro que a "interpretação"∩=∧leva a uma interpretação lógica consistente.Γ⊢M:τ∩σΓ⊢M:τΓ⊢M:τ∩σΓ⊢M:σ
∩=∧
Existe uma classe de sistemas de tipos, os Pure Type Systems , nos quais essa pergunta pode ser precisa. Nesse contexto, no entanto, a interpretação lógica é menos clara. Pode-se ficar tentado a dizer: "um PTS é consistente se tiver um tipo desabitado". Mas isso não funciona, pois os tipos podem viver em diferentes "universos", onde alguns podem ser consistentes e outros não.
Coquand e Herbelin definem uma noção de Logical Pure Type Systems , na qual a questão faz sentido, e mostram
Todo LPTS inconsistente e não dependente possui um combinador de loop (e Turing Complete)
O que responde à pergunta em uma direção (inconsistente TC) neste caso. Até onde eu sei, a pergunta para o LPTS geral ainda é aberta e bastante difícil.⇒
Edit: O inverso do resultado Coquand-Herbelin não é tão fácil quanto eu pensava! Aqui está o que eu vim até agora.
Um lógico puro tipo de sistema é um PTS com (pelo menos) do tipo e T y p e , (pelo menos) o axioma P r o p : T y p e e (pelo menos) a regra ( P r o p , P r o p , P r o p ) , com o requisito adicional de que não existem tipos de tipo P r o p .PropTypeProp:Type(Prop,Prop,Prop)Prop
Agora eu vou assumir uma declaração particular de Turing Integralidade: corrigir um LPTS e deixá Γ ser o contextoLΓ
Γ=nat:Prop, 0:nat, S:nat→nat
éTuring completasse para cada total de função calculável f : N → N existe um termo T f tais que
y ⊢ t f : n um t → n um T
e para cada n ∈ N t f ( S n 0 ) → * β S f ( n ) 0Lf:N→Ntf
Γ⊢tf:nat→nat
n∈N
tf (Sn 0)→∗βSf(n) 0
Agora, o argumento de diagonalização de Andrej mostra que existem não termináveis do tipo n a t .tnat
Agora parece que estamos no meio do caminho! Dado um termo não terminação , queremos substituir ocorrências de n um t por algum tipo genérico A e se livrar de 0 e S em Γ , e teremos a nossa inconsistência ( A é habitada no contexto A : P r o p )!Γ⊢loop:natnatA0SΓAA:Prop
Infelizmente, é aqui que eu fico preso, pois é fácil substituir pela identidade, mas o 0 é muito mais difícil de se livrar. Idealmente, gostaríamos de usar algum teorema da recursão Kleene, mas ainda não o descobri.S0