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)XX.(XF(X))×XX.X(XF(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

dia
fonte
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.(XF(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:GF(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

α:LY and β:YG
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,(u1,y)).
LG

F(X)=1+A×XAA

Andrej Bauer
fonte
LGFF(L)LGF(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:CCF

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

    Morfismo da álgebra F

IFI

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

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

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

FF

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

T

  1. out:TF(T)
  2. FZcofold:ZT

T=X.(XF(X))×X

cofold=λz:Z.(Z,ω,z):ZT
T=X.X(XF(X))
cody
fonte
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 .

Martin Berger
fonte
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