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?

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 .TT≃P(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=idmapf∘mapg=map(f∘g

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


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
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.