Parametridade unária vs. parametridade binária

15

Recentemente, fiquei bastante interessado em parametridade depois de ver o artigo do LICS de Bernardy e Moulin em 2012 ( https://dl.acm.org/citation.cfm?id=2359499 ). Neste artigo, eles internalizam a parametridade unária em um sistema de tipo puro com tipos dependentes e sugerem como você pode estender a construção a aridades arbitrárias.

Eu só vi a parametridade binária definida antes. Minha pergunta é: qual é um exemplo de um teorema interessante que pode ser provado usando a parametridade binária, mas não com a parametridade unária? Também seria interessante ver um exemplo de um teorema comprovável com parametridade terciária, mas não com binário (embora eu tenha visto evidências de que n-parametricidade é equivalente a n> = 2: veja http: //www.sato.kuis .kyoto-u.ac.jp / ~ takeuti / art / par-tlca.ps.gz )

Christopher Monsanto
fonte

Respostas:

12

Normalmente, você usa a parametridade binária para provar as equivalências do programa. Não é natural fazer isso com um modelo unário, pois ele fala apenas de um programa por vez.

Normalmente, você usa um modelo unário se tudo o que lhe interessa é uma propriedade unária. Por exemplo, veja nosso rascunho recente, Tipos superficialmente subestruturais , no qual provamos um resultado de solidez de tipo usando um modelo unário. Como a solidez fala sobre o comportamento de um programa (se então diverge ou reduz a um valor v : A ), um modelo unário é suficiente. Se quiséssemos provar as equivalências do programa além disso, precisaríamos de um modelo binário.e:Av:A

Edição: Acabei de perceber que, se você olhar para o nosso artigo, ele se parece com um modelo antigo de relações lógicas / realizabilidade. Eu deveria dizer um pouco mais sobre o que o torna (e outros modelos) paramétrico. Basicamente, um modelo é paramétrico quando você pode provar o lema de extensão de identidade para ele: ou seja, para qualquer expressão de tipo, se todas as variáveis ​​de tipo livres estiverem ligadas a relações de identidade, a expressão de tipo será a relação de identidade. Nós não o provamos explicitamente como um lema (não sei por que, mas você raramente precisa fazer modelos operacionais), mas essa propriedade é essencial para a solidez de nossa linguagem.

A definição de "relação" e "relação de identidade" na parametridade é realmente um pouco em disputa, e essa liberdade é realmente essencial se você deseja suportar tipos sofisticados, como tipos superiores ou tipos dependentes, ou deseja trabalhar com estruturas semânticas mais sofisticadas. A explicação mais acessível sobre isso que conheço está no rascunho de Bob Atkey, Parametridade relacional para tipos superiores .

Se você tem um bom apetite pela teoria das categorias, ela foi formulada de maneira abstrata por Rosolini em seu artigo Gráficos reflexivos e polimorfismo paramétrico . Desde então, foi desenvolvido ainda mais por Dunphy e Reddy em seu artigo Parametric Limits , e também por Birkedal, Møgelberg e Petersen em modelos teóricos de domínio do polimorfismo paramétrico .

Neel Krishnaswami
fonte
5

Isso deve ser um comentário à resposta de Neel, mas é um pouco longo. Solicitado por uma sugestão de Rasmus Petersen, encontrei o seguinte na tese de Møgelberg (enfatize a minha):

Ivar Rummelhoff [36] estudou a codificação de números naturais em modelos por PCA diferentes e mostrou que em alguns desses modelos, a codificação contém mais do que números naturais. Portanto, esses modelos não podem ser paramétricos. Embora ele não mencione isso, isso mostra que a parametridade unária é diferente da parametridade binária (relacional), uma vez que se pode mostrar facilmente que a codificação dos números naturais em qualquer modelo por modelo é paramétrica unária.

O artigo citado é Polynat nos modelos PER .

Radu GRIGore
fonte
3

nnR(n+1)R(x,y)R(x)y=xEuEu[1 ..n]nn+1n+1n. Como mais relações significam parametridade mais forte e menos famílias de funções seriam consideradas "paramétricas", entendemos que "verdadeira parametridade" é o que obtemos no limite, e cada parametridade finitária é uma aproximação a ela.

Essas relações infinitárias foram formalizadas como "relações lógicas de Kripke de aridade variável", também chamadas de relações de Jung-Tiuryn. Jung e Tiuryn ​​mostraram que essa parametridade infinita é suficiente para caracterizar a definibilidade de lambda, e O'Hearn e Riecke mostraram que é suficiente para caracterizar modelos totalmente abstratos para linguagens de programação, incluindo PCF seqüencial. Estes são resultados fundamentais e bonitos!

Assim, a parametridade unária é a aproximação mais simples e menos expressiva da parametridade verdadeira, e a parametridade binária fica um pouco melhor. Sua pergunta é "quanto melhor"? Minha impressão é que é muito melhor. A razão é que, no nível unário, a "relação de identidade" é a relação toda verdadeira, o que não significa muito. No nível binário, a "relação de identidade" é igualdade. Assim, você obtém um salto repentino no poder da parametridade, passando do nível unário para o binário. Depois disso, fica cada vez mais refinado.

Kurt Sieber estudou essas questões em profundidade: por sequencialidade e por idiomas semelhantes ao algol .

Uday Reddy
fonte
2

Provavelmente, o artigo mais fácil de ler para as aplicações da parametridade binária são os Teoremas de Wadler, de graça! .

Na verdade, estou um pouco surpreso com a pergunta, porque a parametridade binária é o que é mais frequentemente mencionado nos documentos de parametridade. Até o artigo original de Reynolds, "Tipos, abstração e polimorfismo paramétrico", menciona isso em toda parte. É antes a parametridade unária que não é amplamente conhecida.

Uday Reddy
fonte
Esse é um ótimo artigo, mas eu estou familiarizado com a parametridade binária - o que eu queria era uma explicação clara de por que a parametridade binária é mais poderosa que a parametridade unária.
Christopher Monsanto
Agora adicionei alguma elaboração, que pensei que poderia ser óbvia, mas não é amplamente conhecida. Portanto, parece bom documentá-lo aqui.
precisa