Exemplo de onde a violação da condição estrita de positividade em tipos indutivos leva à inconsistência

9

A maioria dos sistemas tipificados dependentes possui condições estritas de positividade para tipos indutivos. Alguém conhece um exemplo em que a violação da condição leva à inconsistência no sistema?

Konstantin Solomatov
fonte

Respostas:

10

Na verdade, é possível relaxar uma estrita positividade e permanecer consistente. Por exemplo, basta ter apenas uma condição de positividade. Ou seja, podemos aceitar definições de tipo como

Tμα.(α2)2

onde variáveis ​​de tipo recursivo ocorrem à esquerda de um número par de setas e mantêm a consistência.

No entanto, as teorias que permitem esse tipo de tipo indutivo não possuem modelos teóricos dos conjuntos - você não pode interpretar tipos como conjuntos e termos como elementos de conjuntos. Nesse caso, estamos dizendo que é isomórfico ao seu conjunto de dupla potência (isto é, ), e isso viola o teorema de Cantor .TTP(P(T))

Como as teorias de tipos dependentes são frequentemente usadas para formalizar a matemática, seus projetistas geralmente hesitam em adicionar princípios que não são compatíveis com uma semântica da teoria dos conjuntos, mesmo que sejam consistentes.

EDIT: Estou adicionando esta edição em resposta à pergunta de Andrej. O tipo é consistente se você o adicionar a (digamos) Agda; não há problemas com isso. Só temos um problema se combinarmos positividade não estrita com meio excluído.T

A intuição do porquê é seguro é (IMO) mais bem vista através das lentes da parametridade. No Sistema F, podemos mostrar usando a parametridade que, para qualquer função definível , o tipo é realmente um tipo indutivo.FμFα.(Fαα)α

Agora, lembre-se de que um functor definível é um operador de tipo , junto com um operador satisfazendo as condições de funcionalidade (por exemplo, e ).FF:

map:α,β.(αβ)FαFβ
mapid=idmapfmapg=map(fg

Agora, podemos definir um operador de tipo para o conjunto de energia duplo

C=λα.(α2)2

e como ocorre apenas positivamente, também podemos definir um operador de mapa para ele:α

mapC=λf:αβ,a:(α2)2,k:β2.a(λa:α.k(fa))

Portanto, sabemos que é um tipo indutivo legítimo.T=μC

Neel Krishnaswami
fonte
Podemos criar um exemplo que crie uma inconsistência por si só? Seu exemplo é inconsistente se também assumirmos (o suficiente) meio excluído.
Andrej Bauer
Outra razão é que podemos adicionar o teorema da FAN ao Agda, após o qual podemos provar que o tipo em questão é (isomórfico para) números naturais.
Andrej Bauer
Eu estou pensando deve ser muito ruim. μα.(α2)α
Andrej Bauer
11
Ah, eu não entendi a pergunta - o ponto é que a estrita positividade é uma condição suficiente, mas não necessária. Seu exemplo (com uma ocorrência negativa real) é inconsistente.
Neel Krishnaswami
Sim, eu acabei de perceber isso. Meu exemplo não retém água.
Andrej Bauer