Eu já mencionei que os sistemas do tipo dependente não são inferíveis, mas são verificáveis. Fiquei me perguntando se existe uma explicação simples de por que isso é assim e se existe ou não um limite de "dependência" onde os tipos podem ser indexados por valores, abaixo de qual inferência de tipo é possível e acima de que não é?
42
Respostas:
Para uma versão bastante simples da teoria dos tipos dependentes, Gilles Dowek deu uma prova da indecidibilidade da tipabilidade em um contexto não vazio:
Gilles Dowek, A indecisão de typability na -calculusλΠ
O que pode ser encontrado aqui .
Primeiro, deixe-me esclarecer o que é comprovado nesse artigo: ele mostra que, em um cálculo dependente, sem anotações nas abstrações, é indecidível mostrar a tipabilidade de um termo em um contexto não vazio . Ambas as hipóteses são necessárias: no contexto vazio, a tipibilidade se reduz à do -calculus simplesmente digitado (decidível por Hindley-Milner) e com as anotações nas abstrações, aplica-se o algoritmo direcionado ao tipo usual.λ
A idéia é codificar um problema de pós-correspondência como um problema de conversão de tipo e depois construir cuidadosamente um termo que seja tipificável se os dois tipos específicos forem conversíveis. Isso utiliza o conhecimento da forma das formas normais, que sempre existem neste cálculo. O artigo é curto e bem escrito, então não vou entrar em mais detalhes aqui.
Agora, em cálculos polimórficos como o sistema-F, seria bom poder inferir as abstrações e aplicações de tipos e omitir as anotações em s como acima. Isso também é indecidível, mas a prova é muito mais difícil e a questão ficou em aberto por algum tempo. O assunto foi resolvido por Wells:λ
JB Wells, Tipibilidade e verificação de tipo no Sistema F são equivalentes e indecidíveis .
Isso pode ser encontrado aqui . Tudo o que sei é que reduz o problema da semi-unificação (que é a instanciação do módulo de unificação dos quantificadores universais e é indecidível) para digitar a verificação no Sistema F.
Finalmente, é bastante fácil mostrar que a habitação de famílias dependentes é indecidível: simplesmente codifique um problema Pós nos índices do construtor. Aqui estão alguns slides de Nicolas Oury que esboçam o argumento.
Quanto à existência de um "limite", depende muito do que você está tentando fazer com os tipos dependentes, e há muitas aproximações que tentam ser decidíveis ou pelo menos próximas o suficiente para serem utilizáveis. Essas questões ainda fazem parte da pesquisa ativa.
Uma via possível é o campo de "tipos de refinamento", onde o idioma de expressão das dependências de tipo é restrito para permitir uma verificação decidida, por exemplo, Tipos de Líquidos . É raro que a inferência de tipo completo seja decidível mesmo nesses sistemas.
fonte