O que torna a inferência de tipo para tipos dependentes indecidível?

42

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 é?

Vencedor
fonte
Não tenho certeza, mas meu palpite é que você poderia usar a inferência para determinar se um cálculo foi interrompido ou não.
jmite
isso está relacionado à conversão de tipo em linguagens de programação? seu um problema em aberto lá- conversão de tipo em linguagens de programação indecidibilidade aberto
vzn
Outro motivo é que tipos dependentes não admitem tipos principais. Qual é o tipo de ? λa.a
jmite

Respostas:

36

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.

cody
fonte
Link de tipos líquidos quebrado
michaelsnowden
@michaelsnowden fixed!
Cody