¿Cuáles son las leyes equitativas para los tipos cero?

13

Descargo de responsabilidad : aunque me importa la teoría de tipos, no me considero un experto en teoría de tipos.

En el cálculo lambda de tipo simple, el tipo cero no tiene constructores y un eliminador único:

ΓM:0Γinitial(M):A

Desde un punto de vista denotacional, la ecuación es obvia (cuando los tipos tienen sentido).initial(M1)=initial(M2)

Sin embargo, desde esa perspectiva también puedo deducir que, cuando , entonces: . Esta deducción parece más fuerte, aunque un modelo particular que lo muestra se me escapa.M = M M,M:0M=M

(Sin embargo, tengo cierta intuición teórica de la prueba: no importa qué contradicción uses para obtener un habitante, pero puede haber diferentes pruebas de contradicción).

Entonces mis preguntas son:

  1. ¿Cuáles son las leyes equitativas estándar para los tipos cero?
  2. ¿Alguno de ellos está clasificado como leyes η o β ?
Ohad Kammar
fuente

Respuestas:

12
  1. Las reglas de ecuación estándar para el tipo vacío son, como supones, . Piense en el modelo estándar de teoría de conjuntos, donde los conjuntos se interpretan por tipos: los tipos de suma son uniones disjuntas, y el tipo vacío es el conjunto vacío. Entonces, cualquiera de las dos funciones e , e ' : Γ 0 también debe ser igual, ya que tienen un gráfico común (es decir, el gráfico vacío). .Γe=e:0e,e:Γ0

  2. El tipo vacío no tiene reglas , ya que no hay formas de introducción para ello. Su única regla de ecuación es una regla η . Sin embargo, dependiendo de cuán estrictamente desee interpretar qué es una regla eta, puede desglosar esto en η más una conversión de conmutación. La estricta regla η es:βηηη

    e=initial(e)

    La cobertura de los desplazamientos es:

    C[initial(e)]=initial(e)

EDITAR:

He aquí por qué la distributividad en el tipo cero implica la igualdad de todos los mapas .A0

Para arreglar la notación, escriba ! A : 0 A para ser el mapa único de 0 a A , y escriba e : A 0 para que sea un mapa de A a 0 .!A:0A0Ae:A0A0

Ahora, la condición de distributividad dice que hay un isomorfismo . Dado que los objetos iniciales son únicos hasta el isomorfismo, esto significa que A × 0 es en sí mismo un objeto inicial. Ahora podemos usar esto para mostrar que A en sí es un objeto inicial.yo:0 0UN×0 0UN×0 0A

Como es un objeto inicial, conocemos los mapas π 1 : A × 0 A y ! Aπ 2 son iguales.A×0π1:A×0A!Aπ2

Ahora, para mostrar que es un objeto inicial, necesitamos mostrar un isomorfismo entre él y 0 . ¡Elija e : A 0 y ! A : 0 A como los componentes del isomorfismo. Queremos mostrar que e ! A = i d 0 y ! Ae = i D A .A0e:A0!A:0Ae!A=id0!Ae=idA

Mostrando que es inmediato, ya que solo hay un mapa de tipo 0 0 , y sabemos que siempre hay un mapa de identidad.e!A=id000

Para mostrar la otra dirección, tenga en cuenta que

idA=π1(idA,e)Product equations=!Aπ2(idA,e)Since A×0 is initial=!AeProduct equations

Por lo tanto, tenemos un isomorfismo , por lo que A es un objeto inicial. Por lo tanto, los mapas A 0 son únicos, y si tiene e , e : A 0 , entonces e = e .A0AA0e,e:A0e=e

EDIT 2: Resulta que la situación es más bonita de lo que pensaba originalmente. Aprendí de Ulrich Bucholz que es obvio (en el sentido matemático de "obvio retrospectivamente") que cada biCCC es distributivo. Aquí hay una pequeña prueba linda:

Hom((A+B)×C,(A+B)×C)Hom((A+B)×C,(A+B)×C)Hom((A+B),C(A+B)×C)Hom(A,C(A+B)×C)×Hom(B,C(A+B)×C)Hom(A×C,(A+B)×C)×Hom(B×C,(A+B)×C)Hom((A×C)+(B×C),(A+B)×C)
Neel Krishnaswami
fuente
1
Con respecto a 1: pienso en un tipo cero como un objeto inicial. Los objetos iniciales pueden tener múltiples flechas en ellos, pero solo pueden tener una flecha fuera de ellos. En otras palabras, no veo inmediatamente ninguna razón por la cual ser bi-CCC implica que 0 sea subterminal. ¿Hay uno?
Ohad Kammar 01 de
Yes: the fact that the STLC with sums needs a distributive bi-CCC ((X×A)+(X×B)X×(A+B)) to interpret it, and the uniqueness for the 0 type comes as the nullary version of that. (Try to write down the interpretation of the elimination rule for sums, and you'll see it.)
Neel Krishnaswami
No te sigo. La distributividad equivale a tiene un inverso. ¿Por qué eso implica que 0 es subterminal? initial:0A×00
Ohad Kammar 01 de
¡Ajá! Gracias por esa prueba! ¡Y por la paciencia también!
Ohad Kammar
con respecto a la edición 2: los adjuntos izquierdos preservan los colimits. Si la categoría es cartesiano cerrado, a continuación, es adjunto izquierdo a ( - ) C de modo ( A + B ) × C es la suma A × C + B × C . ()×C()C(A+B)×C A×C+B×C
Ohad Kammar
8

The equation e=e:0 only captures the fact that 0 has at most one element so I don't think Neel is capturing the whole story. I would axiomatize the empty type 0 as follows.

There are no introduction rules. The elimination rule is

e:0magicτ(e):τ.
magicτ(e)=e:τ
e:0e:ττmagicτ(e) then 0 is inhabited by e, but this is absurd so all equations hold. So another way of achieving the same effect would be to pose the equation
x:0,Γe1=e2:τ
which is perhaps not so nice because it fiddles with the context. On the other hand, it shows more clearly that we are stating the fact that any two morphisms from 0 to τ are equal (the Γ is a distraction in a CCC).
Andrej Bauer
fuente
1
Hi Andrej, the equation you suggest is derivable from the commuting conversion I gave. magic(e)=e is derivable from C[magic(e)]=magic(e), since magic(e) does not actually have to occur on the left term. The analogy is to C[case(e,x.e,y.e)]=case(e,x.C[e],y.C[e]), where not using the result of a case-analysis is ok if you do the same in both branches.
Neel Krishnaswami
I should add, though, that I like the presentation with contexts better -- indeed, I think in general it's cleanest if you actually allow equations on sum values in the context! That's much nicer for actual proofs than games with commuting conversions, IMO. (IIRC, this is equivalent to adding the additional assumption of stable coproducts, but for all the models I can reasonably see caring about this holds.)
Neel Krishnaswami
Ah yes, excellent. It was too late for me to think about commuting conversions so I pretended you did not write that part. Now Ohad can have his pick.
Andrej Bauer
1
I was validating some structural (η, β, etc) rules in a class of models. While I know the set of equations I gave wasn't complete (you need CBPV with complex values and stacks for that), I wanted to at least capture the standard equations that will be used to prove completeness if I did have enough equations. In other words, I wanted the standard equational laws for zero types.
Ohad Kammar
1
There are no standard equational laws for zero types. Logicians have always been afraid of the empty universe of discourse, and computer scientists have always been afraid of the empty type. They even named a non-empty type "void" to deny the empty type.
Andrej Bauer