Quais são as leis equacionais para zero tipos?


13

Isenção de responsabilidade : enquanto me preocupo com a teoria dos tipos, não me considero um especialista em teoria dos tipos.

No cálculo lambda de digitação simples, o tipo zero não possui construtores e um eliminador exclusivo:

ΓM:0Γinitial(M):A

De um ponto de vista denotacional, a equação initial(M1)=initial(M2) é óbvio (quando os tipos sentido).

Contudo, dessa perspectiva, também posso deduzir que, quando M,M:0 , então: M=M . Essa dedução parece mais forte, embora um modelo específico que a mostre me ilude.

(Contudo, tenho alguma intuição teórica da prova: não importa qual contradição você usa para obter um habitante, mas pode haver diferentes provas de contradição.)

Então, minhas perguntas são:

  1. Quais são as leis equacionais padrão para os tipos zero?
  2. Algum deles é classificado como leis η ou β ?

Respostas:


12
  1. As regras equacionais padrão para o tipo vazio são, como você supõe, . Pense no modelo padrão da teoria dos conjuntos, em que os conjuntos são interpretados por tipos: os tipos de soma são uniões disjuntas e o tipo vazio é o conjunto vazio. Portanto, quaisquer duas funções e , e ' : Γ 0 também devem ser iguais, pois possuem um gráfico comum (ou seja, o gráfico vazio). .Γe=e:0e,e:Γ0

  2. O tipo vazio não possui regras , pois não há formas de introdução para ele. Sua única regra equacional é uma regra- η . No entanto, dependendo de quão estritamente você deseja interpretar o que é uma eta-regra, você pode dividir isso em η mais uma conversão pendular. A regra η estrita é:βηηη

    e=initial(e)

    A cobertura pendular é:

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

EDITAR:

A0

!A:0A0Ae:A0A0

i:0A×0A×0A

A×0π1:A×0A!Aπ2

A0e:A0!A:0Ae!A=id0!Ae=idA

e!A=id000

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

A0AA0e,e:A0e=e

EDIT 2: Acontece que a situação é mais bonita do que eu pensava originalmente. Aprendi com Ulrich Bucholz que é óbvio (no sentido matemático de "retrospectivamente óbvio") que todo biCCC é distributivo. Aqui está uma pequena prova:

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
Em relação a 1: penso em um tipo zero como um objeto inicial. Objetos iniciais podem ter várias setas para eles, mas só pode ter uma seta fora deles. Em outras palavras, não vejo imediatamente nenhuma razão pela qual ser bi-CCC implica que 0 seja subterminal. Existe um?
Ohad Kammar

(X×A)+(X×B)X×(A+B)

initial:0A×00

Aha! Obrigado por essa prova! E pela paciência também!
Ohad Kammar

()×C()C(A+B)×C A×C+B×C

8

e=e:000

e:0magicτ(e):τ.
magicτ(e)=e:τ
e:0e:ττmagicτ(e)0e
x:0,Γe1=e2:τ
0τΓ

1
magic(e)=eC[magic(e)]=magic(e)magic(e)C[case(e,x.e,y.e)]=case(e,x.C[e],y.C[e])

Devo acrescentar, porém, que eu gosto mais da apresentação com contextos - na verdade, acho que em geral é mais limpo se você realmente permitir equações nos valores de soma no contexto! Isso é muito mais agradável para provas reais do que jogos com conversões pendulares, IMO. (IIRC, isto é equivalente a adicionar a suposição adicional de co-produtos estáveis, mas para todos os modelos que pode razoavelmente ver inquietação sobre este detém.)
Neel Krishnaswami

Ah sim, excelente. Era muito tarde para eu pensar em mudar as conversões, então eu fingi que você não escreveu essa parte. Agora Ohad pode escolher.
Andrej Bauer

1
Eu estava validando algumas regras estruturais ( , , etc) em uma classe de modelos. Embora eu saiba que o conjunto de equações que eu dei não foi completo (você precisa de CBPV com valores e pilhas complexos para isso), queria pelo menos capturar as equações padrão que serão usadas para provar a integridade se eu tiver equações suficientes. Em outras palavras, eu queria as leis equacionais padrão para tipos zero. βηβ
Ohad Kammar

1
Não há leis equacionais padrão para tipos zero. Os lógicos sempre tiveram medo do universo vazio do discurso, e os cientistas da computação sempre tiveram medo do tipo vazio. Eles até nomearam um tipo não vazio como "nulo" para negar o tipo vazio.
Andrej Bauer 29/07
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.