Ejemplo de donde la violación de la condición estricta de positividad en los tipos inductivos conduce a una inconsistencia

9

Los sistemas tipificados más dependientes tienen unas condiciones de positividad estrictas para los tipos inductivos. ¿Alguien sabe un ejemplo donde la violación de la condición conduce a la inconsistencia en el sistema?

Konstantin Solomatov
fuente

Respuestas:

10

En realidad, es posible relajar la estricta positividad y permanecer constante. Por ejemplo, es suficiente tener solo una condición de positividad. Es decir, podemos aceptar definiciones de tipo como

Tμα.(α2)2

donde las variables de tipo recursivo ocurren a la izquierda de un número par de flechas y retienen la consistencia.

Sin embargo, las teorías que permiten este tipo de tipo inductivo no tienen modelos teóricos de conjuntos: no puede interpretar los tipos como conjuntos y los términos como elementos de conjuntos. En este caso, estamos diciendo que es isomorfo a su doble conjunto de potencia (es decir, T P ( P ( T ) ) ), y esto viola el teorema de Cantor .TTP(P(T))

Dado que las teorías de tipo dependiente a menudo se usan para formalizar las matemáticas, sus diseñadores generalmente dudan en agregar principios que no sean compatibles con una semántica de teoría de conjuntos, incluso si son consistentes.

EDITAR: Estoy agregando esta edición en respuesta a la pregunta de Andrej. El tipo es consistente si lo agrega a (digamos) Agda; no hay problemas con eso en absoluto. Solo tenemos un problema si combinamos una positividad no estricta con un medio excluido.T

La intuición de por qué es seguro es (IMO) mejor vista a través de la lente de la parametricidad. En el Sistema F, podemos mostrar usando la parametricidad que para cualquier functor definible , el tipo μ F α .F es de hecho un tipo inductivo.μFα.(Fαα)α

Ahora, recuerde que un functor definible es un operador tipo F : , junto con un operador m a p : α , β .FF: satisface las condiciones de functorialidad (es decir, m a p

map:α,β.(αβ)FαFβ
y m a pmapid=id ).mapfmapg=map(fg

Ahora, podemos definir un operador de tipo para el doble conjunto de potencia

C=λα.(α2)2

y debido a que ocurre solo positivamente, también podemos definir un operador de mapa para él:α

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

T=μC

Neel Krishnaswami
fuente
¿Podemos encontrar un ejemplo que cree una inconsistencia por sí mismo? Su ejemplo es inconsistente si también asumimos (suficiente) medio excluido.
Andrej Bauer
Otra razón es que podemos agregar el teorema de FAN a Agda, después de lo cual podemos demostrar que el tipo en cuestión es (isomorfo a) números naturales.
Andrej Bauer
μα.(α2)α
1
Ah, entendí mal la pregunta: el punto es que la positividad estricta es una condición suficiente pero no necesaria. Su ejemplo (con una ocurrencia negativa real) es inconsistente.
Neel Krishnaswami
Sí, me acabo de dar cuenta de eso. Mi ejemplo no retiene el agua.
Andrej Bauer