Quelles sont les lois équationnelles pour les types nuls?


13

Avertissement : bien que je m'intéresse à la théorie des types, je ne me considère pas comme un expert en théorie des types.

Dans le calcul lambda simplement tapé, le type zéro n'a pas de constructeurs et un éliminateur unique:

ΓM:0Γinitial(M):A

D'un point de vue dénotationnel, l'équation initial(M1)=initial(M2) est évidente (lorsque les types ont un sens).

Cependant, de ce point de vue, je peux également déduire que, lorsque M,M:0 , alors: M=M . Cette déduction semble plus forte, bien qu'un modèle particulier qui la montre m'échappe.

(J'ai cependant une certaine intuition de la théorie de la preuve: peu importe la contradiction que vous utilisez pour obtenir un habitant, mais il peut y avoir différentes preuves de contradiction.)

Mes questions sont donc:

  1. Quelles sont les lois équationnelles standard pour les types nuls?
  2. Y en a-t-il parmi les lois η ou β ?

Réponses:


12
  1. Les règles équationnelles standard pour le type vide sont, comme vous le supposez, . Pensez au modèle standard de la théorie des ensembles, où les ensembles sont interprétés par des types: les types de somme sont des unions disjointes et le type vide est l'ensemble vide. Ainsi, deux fonctions e , e : Γ 0 doivent également être égales, car elles ont un graphe commun (à savoir le graphe vide). .Γe=e:0e,e:Γ0

  2. Le type vide n'a pas de règles , car il n'y a pas de formulaire d'introduction pour lui. Sa seule règle équationnelle est une règle η . Cependant, en fonction de la rigueur avec laquelle vous souhaitez interpréter ce qu'est une règle ETA, vous pouvez souhaiter la décomposer en un η plus une conversion de navettage. La règle η stricte est:βηηη

    e=initial(e)

    La coversion de navettage est:

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

ÉDITER:

Voici pourquoi la distributivité au type zéro implique l'égalité de toutes les cartes .A0

Pour corriger la notation, écrivons pour être la carte unique de 0 à A , et écrivons e : A 0 pour être une carte de A à 0 .!A:0A0Ae:A0A0

Maintenant, la condition de distributivité dit qu'il y a un isomorphisme . Puisque les objets initiaux sont uniques jusqu'à l'isomorphisme, cela signifie que A × 0 est lui-même un objet initial. Nous pouvons maintenant l'utiliser pour montrer que A lui-même est un objet initial.i:0A×0A×0A

Puisque est un objet initial, nous connaissons les cartes π 1 : A × 0 A et ! Aπ 2 sont égaux.A×0π1:A×0A!Aπ2

Maintenant, pour montrer que est un objet initial, nous devons montrer un isomorphisme entre lui et 0 . Choisissons e : A 0 et ! A : 0 A comme composants de l'isomorphisme. Nous voulons montrer que e ! A = i d 0 et ! Ae = i d A .A0e:A0!A:0Ae!A=id0!Ae=idA

Montrant que est immédiat, car il n'y a qu'une seule carte de type 0 0 , et nous savons qu'il y a toujours une carte d'identité.e!A=id000

Pour montrer l'autre sens, notez

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

Nous avons donc un isomorphisme , et donc A est un objet initial. Les cartes A 0 sont donc uniques, et donc si vous avez e , e A0AA0 , alors e = e .e,e:A0e=e

EDIT 2: Il s'avère que la situation est plus jolie que je ne le pensais à l'origine. J'ai appris d'Ulrich Bucholz qu'il est évident (au sens mathématique de "rétrospectivement évident") que chaque biCCC est distributif. Voici une petite preuve mignonne:

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)

1
Concernant 1: Je pense à un type zéro comme un objet initial. Les premiers objets peuvent avoir plusieurs flèches en eux, mais ne peuvent avoir une flèche sur eux. En d'autres termes, je ne vois pas immédiatement de raison pour laquelle être bi-CCC implique que 0 soit subterminal. Est-ce qu'il y a un?
Ohad Kammar

Oui: le fait que le STLC avec des sommes a besoin d'un distributif bi-CCC ( ) pour l'interpréter, et l'unicité pour le type 0 vient comme le version nullaire de cela. (Essayez d'écrire l'interprétation de la règle d'élimination des sommes, et vous le verrez.)(X×A)+(X×B)X×(A+B)
Neel Krishnaswami

Je ne suis pas. La distributivité s'élève à ayant un inverse. Pourquoi cela implique-t-il que 0 est subterminal? initial:0A×00
Ohad Kammar

Ah! Merci pour cette preuve! Et pour la patience aussi!
Ohad Kammar

regarding edit 2: Left adjoints preserve colimits. If the category is Cartesian closed, then ()×C is left adjoint to ()C so (A+B)×C is the sum A×C+B×C.
Ohad Kammar

8

e=e:000

e:0magicτ(e):τ.
magicτ(e)=e:τ
where e:0 and e:τ. Throughout τ is any type. The equation is motivated as follows: if you managed to form the term 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).

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.