Parametricità unaria vs. parametria binaria


15

Recentemente sono diventato piuttosto interessato alla parametricità dopo aver visto il documento LICS del 2012 di Bernardy e Moulin ( https://dl.acm.org/citation.cfm?id=2359499 ). In questo documento, interiorizzano la parametricità unaria in un sistema di tipo puro con tipi dipendenti e suggeriscono come estendere la costruzione ad arità arbitrarie.

Ho visto solo la parametricità binaria definita prima. La mia domanda è: qual è un esempio di un teorema interessante che può essere provato usando la parametria binaria, ma non con la parametria unaria? Sarebbe anche interessante vedere un esempio di un teorema dimostrabile con parametria terziaria, ma non con binario (anche se ho visto prove che n-parametria è equivalente per n> = 2: vedi http: //www.sato.kuis .kyoto-u.ac.jp / ~ takeuti / art / par-tlca.ps.gz )

Risposte:


12

In genere, si utilizza la parametricità binaria per dimostrare le equivalenze del programma. È innaturale farlo con un modello unario, poiché parla solo di un programma alla volta.

Normalmente, usi un modello unario se tutto ciò che ti interessa è una proprietà unaria. Ad esempio, vedere la nostra recente bozza, Tipi superficialmente sottostrutturali , in cui dimostriamo un risultato di solidità del tipo usando un modello unario. Poiché la solidità parla del comportamento di un programma (se allora diverge o si riduce a un valore v : A ), è sufficiente un modello unario. Se volessimo dimostrare anche le equivalenze del programma, avremmo bisogno di un modello binario.e:UNv:UN

EDIT: Mi sono appena reso conto che se guardi il nostro documento, sembra proprio un semplice vecchio modello di relazioni logiche / realizzabilità. Dovrei dire qualcosa in più su ciò che lo rende (e altri modelli) parametrico. Fondamentalmente, un modello è parametrico quando è possibile dimostrare il lemma dell'estensione dell'identità per esso: vale a dire, per qualsiasi espressione di tipo, se tutte le variabili di tipo libere sono legate alle relazioni di identità, allora l'espressione di tipo è la relazione di identità. Non lo dimostriamo esplicitamente come un lemma (non so perché, ma raramente ne hai bisogno quando fai modelli operativi), ma questa proprietà è essenziale per la solidità del nostro linguaggio.

La definizione di "relazione" e "relazione di identità" nella parametria è in realtà un po 'in palio, e questa libertà è in realtà essenziale se si desidera supportare tipi fantasiosi come tipi superiori o tipi dipendenti, o se si desidera lavorare con strutture semantiche più fantasiose. Il resoconto più accessibile di ciò che conosco è nel documento di studio di Bob Atkey Parametricity relazionale per i tipi superiori .

Se hai un buon appetito per la teoria delle categorie, questo è stato inizialmente formulato in modo astratto da Rosolini nel suo documento Grafici riflessivi e polimorfismo parametrico . Da allora è stato ulteriormente sviluppato da Dunphy e Reddy nel loro documento Parametric Limits , e anche da Birkedal, Møgelberg e Petersen in Modelli teorici di dominio del polimorfismo parametrico .


5

Questo dovrebbe essere un commento alla risposta di Neel, ma è un po 'lungo. Spinto da un suggerimento di Rasmus Petersen, ho trovato quanto segue nella tesi di Møgelberg (enfatizzare la mia):

Ivar Rummelhoff [36] ha studiato la codifica dei numeri naturali in modelli per diversi PCA diversi e ha dimostrato che in alcuni di questi modelli la codifica contiene più di numeri naturali. Quindi questi modelli non possono essere parametrici. Anche se non lo menziona, questo dimostra che la parametricità unaria è diversa dalla parametria binaria (relazionale), dal momento che si può facilmente dimostrare che la codifica dei numeri naturali in qualsiasi modello è parametrica unaria.

L'articolo citato è Polynat nei modelli PER .


3

nnR(n+1)R'(X,y)R(X)y=Xioio[1 ..n]nn+1n+1n. Poiché più relazioni significano una maggiore parametricità e un minor numero di famiglie di funzioni verrebbe considerato "parametrico", comprendiamo che la "vera parametricità" è ciò che otteniamo nel limite e ogni parametricità finanziaria ne è un'approssimazione.

Queste relazioni infinite sono state formalizzate come "relazioni logiche di Kripke di diversa arità", chiamate anche relazioni Jung-Tiuryn. Jung e Tiuryn ​​hanno dimostrato che tale parametricità infinita è sufficiente per caratterizzare la definibilità lambda, e O'Hearn e Riecke hanno dimostrato che è sufficiente caratterizzare modelli completamente astratti per linguaggi di programmazione, incluso il PCF sequenziale. Questi sono risultati fondamentali e belli!

Pertanto, la parametricità unaria è l'approssimazione più semplice, e meno espressiva, della vera parametricità e la parametricità binaria migliora leggermente. La tua domanda è "quanto è meglio"? La mia impressione è che sia molto meglio. La ragione è che, a livello unario, la "relazione di identità" è la relazione onnipotente, che non significa molto. A livello binario, la "relazione di identità" è l'uguaglianza. Quindi, si ottiene un improvviso salto nel potere della parametricità nel passaggio dal livello unario a quello binario. Successivamente, diventa sempre più raffinato.

Kurt Sieber ha studiato questi temi in modo approfondito: per sequenzialità e per linguaggi simili all'Algol .


2

Probabilmente il documento più semplice da leggere per le applicazioni della parametria binaria è Teoremi di Wadler gratis! .

In realtà, sono un po 'sorpreso dalla domanda perché la parametria binaria è ciò che viene più spesso menzionato nei documenti di parametricità. Perfino il documento originale di Reynolds "Tipi, astrazione e polimorfismo parametrico" lo menziona ovunque. È piuttosto la parametricità unaria che non è ampiamente conosciuta.


Questo è un ottimo documento, ma ho familiarità con la parametria binaria - quello che volevo era una chiara spiegazione del perché la parametria binaria è più potente della parametria unaria.
Christopher Monsanto,

Ho aggiunto ora qualche elaborazione, che pensavo potesse essere ovvia, ma non è ampiamente noto. Quindi, sembra bello documentarlo qui.
Uday Reddy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.