Como é definida a dualidade de tipos?


12

Nos tipos recursivos de Wadler de graça! [1], que demonstraram dois tipos, e ∃ X . ( X → F ( X ) ) × X , e afirmaram que são duplos . Em particular, ele apontou que o tipo ∃ X . X → ( X → F ( X ) ) não é∀X.(F(X)→X)→X∃X.(X→F(X))×X∃X.X→(X→F(X))o dual do anterior. Parece que a dualidade em questão aqui é diferente da dualidade de De Morgan na lógica. Eu me pergunto como a dualidade de tipos é definida, especificamente para os três tipos mencionados, por que o segundo é duplo do primeiro e o terceiro não. Obrigado.

[1] http://homepages.inf.ed.ac.uk/wadler/papers/free-rectypes/free-rectypes.txt


Não vou ajudar muito aqui, mas parece teórico da categoria.
— Anthony

Respostas:


8

Nesse contexto, a dualidade refere-se a pegar o ponto menos fixo em um caso e o maior ponto fixo no outro. Devemos tentar entender em que sentido e L = ∃ X . ( X → F ( X ) ) × X são os e "grandes" soluções "menos" da equação recursiva F ( X ) ≅ X .L=∀X.(F(X)→X)→XG=∃X.(X→F(X))×XF(X)≅X

Primeiro de tudo, e G são, de facto pontos fixos (sob certas hipóteses técnicas que limitam a natureza da F ), porque a comparação mapeia v : F ( L ) → L e W : G → F ( G ) dadas por vLGFv:F(L)→Lw:G→F(G) e w ( X , ( f , x ) ) = F ( λ y : X

vxXg=g(F(λh:L.hXg)x)
são isomorfismos. Observe que usamos o fato de que F é um functor, ou seja, é monótono, quando o aplicamos a funções.
w(X,(f,x))=F(λy:X.(X,(f,y)))(fx)
F

Suponhamos que é qualquer solução para os F ( Y ) ≅ Y com um isomorfismo mediar u : F ( Y ) → Y . Então temos os mapas canônicos α : L → Y  e  β : Y → G definidos por αYF(Y)≅Yu:F(Y)→Y

α:L→Y and β:Y→G
e β
αf=fYu
Portanto, L émenosporque podemos mapear a partir dele para qualquer outra solução, e G émaiorporque podemos mapear a partir de qualquer outra solução para ele. Poderíamos tornar tudo isso mais preciso falando sobre álgebras iniciais e barras de carvão finais, mas quero que minha resposta seja curta e agradável, e Cody explicou as álgebras de qualquer maneira.
βy=(Y,(u−1,y)).
LG

F(X)=1+A×XAA


LGFF(L)→LG→F(G)

vw

ww′(X,(f,x))=F(λy:X.(X,(f,x)))(fx)

1
Suponho que você tenha provado que isso w'é um isomorfismo, mas isso lhe dá uma coalgebra válida? (Acho que sim, mas posso estar errado ...) Não parece que a praça comutaria.
— CA McCann

Em sua nota: homepages.inf.ed.ac.uk/wadler/papers/free-rectypes/… , Wadler fornece a primeira versão. No entanto, ele escreve um pouco diferente: w (X, (f, x)) = F (desdobrar X k) (fx). Isso faz com que a estrutura da coalgebra apareça com mais clareza e quase imediatamente fornece a comutação dos morfismos de corecursão apropriados. Como diz o camcann, acho que sua outra versão não faz com que esses quadrados comutem.
— Cody

7

ICF:C→CF

  • AC
    α:F(A)→A
  • como setas: quadrados

    Morfismo da álgebra F

IFI

  1. in:F(I)→I
  2. F(A,α)fold:I→A

I=∀X.(F(X)→X)→Xfold

fold=λi:I.i A α:I→A
inF, que pode ser visto como um requisito de positividade.

FF

  • ZC
    ω:Z→F(Z)
  • Fαβ

T

  1. out:T→F(T)
  2. FZcofold:Z→T

T=∃X.(X→F(X))×X

cofold=λz:Z.(Z,ω,z):Z→T
T=∃X.X→(X→F(X))

6

λπ

Quando você traduz (decompõe) tipos em cálculo de processo, a dualidade se torna simples: a entrada é dupla na saída e vice-versa . Não há (muito) mais na dualidade.

πα=(Bool,Int)↑ααxx¯⟨false,7⟩α¯(v,w)vwα¯(bool,int)↓α¯xc(v,w).0

β=(int,(int)↑)↓(v,w)vwβ¯=(int,(int)↓)↑αα¯PαxQα¯xPQββ¯

∀X.(X,(X)↑)↓(v,w)vXwXx

x(vw).w¯v
∀X.(X,(X)↑)↓

O que significa a quantificação universal no nível do processo? Há uma interpretação direta: se os dados são digitados por uma variável de tipo, eles não podem ser usados ​​como o assunto de uma saída, apenas um objeto. Portanto, não podemos inspecionar esses dados, podemos apenas transmiti-los ou esquecê-los.

∀X.(X,(X)↑)↓∃X.(X,(X)↓)↑

A teoria disso foi elaborada com mais detalhes em [1, 2, 3] e em outras mais difíceis de acessar o trabalho, e relacionada muito precisamente à lógica linear polarizada e à sua noção de dualidade em 4 .

λλπλπλ

π

π

π

4 K. Honda et al., Correspondência exata entre um cálculo pi digitado e redes de prova polarizadas .

5 R. Milner, Funções como Processos .


1
re: Sua opinião sobre o número de habitantes do tipo ∀X. (X, (X) ↑) ↓. Existe um análogo de "teoremas livres" para o cálculo pi? Se sim, onde isso é discutido?
— Dominic Mulligan

1
Olá @DominicMulligan, sim, existem "teoremas livres" e investigamos isso um pouco em [1, 2]. Eu acho que muito mais poderia ser dito nessa direção.
— Martin Berger

1
@MartinBerger: Você pode usar a parametridade para descobrir qual é a noção "certa" de equivalência de processo para o cálculo pi digitado? Por exemplo, no Sistema F, a relação lógica paramétrica corresponde à equivalência contextual. Por analogia, eu esperaria que qualquer noção de equivalência de processo que corresponda à relação lógica paramétrica para o cálculo pi seja especialmente interessante.
— Neel Krishnaswami

π

Caracterizações baseadas em bisimulação são úteis para o raciocínio prático, porque não exigem fechamento em todos os contextos.
— Martin Berger
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.