Parametrizität der linearen Logik


9

Sind wir in der Lage einen freien Parametrizität Sätze über Funktionen wie um zu beweisen , ? Es soll heißen, dass f eine Liste nimmt und immer eine Permutation davon zurückgibt.f:A.[A][A]f

Ein weiteres Beispiel: beweisen , dass Funktion gibt immer eine permutierte Liste mit genau einem kopierten Element zurück.f:A.(A(A,A))[A][A]


1
Ja das ist möglich Wir haben dieses Thema in einer etwas anderen Umgebung untersucht (dem polymorphen, linearen Kalkülπ ).
Martin Berger

Antworten:


7

Verschiedene Leute sind daran interessiert, so etwas zu beweisen. Neel Krishnaswami erwähnte diesen speziellen Satz hier . Ich habe auch gesehen, wie Frank Pfenning einige coole Beispiele für geordnete Logiken gegeben hat. Wenn Sie beispielsweise , muss e in einem geordneten Typsystem die Listen x und y anhängen .A,x:[A],y:[A]e:[A]exy

Die kurze Antwort lautet: Ja, wir können Ihr erstes Beispiel beweisen. Im Zusammenhang mit Lambda-Kalkülen wird in diesem Artikel ein auf logischen Beziehungen basierender Ansatz beschrieben . Sie würden Ihren Satz in zwei Schritten beweisen:

  1. Definieren Sie eine relationale Interpretation von Typen und verwenden Sie sie, um einen konventionellen freien Satz zu beweisen, der die Linearität vollständig ignoriert, dh im Wesentlichen die gleiche Argumentation verwendet, die Sie beispielsweise in „Theorems for Free!“ Sehen. In Anbetracht , der übliche freie Satz besagt, dass f eine Liste zurückgibt, die nur Elemente enthält, die in der Liste vorhanden waren, die sie erhalten hat. Aus einer Liste verschiedener freier linearer Variablen x 1x n schließen wir, dass f [ x 1 , . . . ,f:A.[A][A]fx1xn ergibt eine Liste [ y 1 , . . . , y m ] wobei { y 1 , , y m } { x 1 , . . . , x n } .f[x1,...,xn][y1,...,ym]{y1,,ym}{x1,...,xn}
  2. Beachten Sie, dass freie lineare Variablen bei der Auswertung erhalten bleiben müssen. Dadurch können wir die Linearität nutzen. Wenn keine Permutation von [ x 1 , . . . , x n ] , dann würde dies bedeuten, dass einige x i während der Auswertung verloren gingen oder dupliziert wurden, was nicht passieren kann.[y1,,ym][x1,...,xn]xi

Diese Art von Theoremen wird jedoch interessanter, wenn wir eine Sprache mit Effekten betrachten und unsere Fähigkeit, sie für solche Sprachen zu beweisen, leider begrenzt ist. Betrachten wir zum Beispiel die Isomorphismus aus System F. In einer Call-by-Value-Einstellung bricht dieser Isomorphismus, wenn wir die Nichtbeendigung hinzufügen. Wir sollten einen ähnlichen Isomorphismus erholen können, aber mit linearen Typen: & tgr; & sim; A . ( & Tgr; A ) A . Leider haben wir keine operativen logischen Beziehungen, die dies beweisen können.τA.(τA)AτA.(τA)A

Es gibt jedoch auch syntaktische Methoden, die sowohl diesen Isomorphismus als auch Ihren Satz beweisen können. Dies scheint ein besonders nützlicher Ansatz in einer linearen Umgebung zu sein und ist viel weniger belastend als die Erstellung einer logischen Beziehung zum Beweis einfacher Theoreme.

Edit: Da Sie gefragt, hier ist ein Beispiel für einen syntaktischen Nachweis eines freien Satz für den Typen in einer Umgebung mit einem Begriff , der sich für immer wiederholt und in jedem Kontext bei jedem Typ gut typisiert ist. Die Idee ist, eine Reihe von kanonischen Begriffen eines Typs zu finden und diese zu verwenden, um die möglichen Rückgabewerte für eine Funktion zu bestimmen. Wir beginnen mit einem Soliditätssatz für gut typisierte Begriffe.A.(AA)A

Δ;Γe:τ

  • evΔ;Γv:τ
  • enΓΔ;Γn:τ
  • e

Δx

f:A.(AA)Afλx.eA;x:(AA)e:A

  • eA;x:(AA)(v1,v2):Av1v2AA
  • ex
  • efλx.

e let(x1,x2)=x in eA;x1:A,x2:Ae:Afλx.let (x1,x2)=x in eeAexi

A.(AA)Aλx.λx.let (x1,x2)=x in 

Sie haben um eine Referenz für diese Art von Beweis gebeten, aber ich bin mir nicht sicher, ob es eine gute ist. Diese Art von Argumentation ist in bestimmten Kreisen bekannt und reicht vielleicht bis nach Gentzen zurück. Mir wurde gesagt, dass es an eine gezielte Proof-Suche nach sequentiellem Kalkül erinnert, aber ich weiß nicht genau, was die Verbindung ist.

Trotzdem sind mir keine modernen veröffentlichten Arbeiten bekannt, die diese relativ einfache Methode gut erklären. Zugegeben, die Anwendbarkeit auf einfachere Sprachen ist etwas eingeschränkt. Andererseits denke ich, dass es von "Theorems for Free!" et al. und infolgedessen denken sogar viele hochrangige Forscher sofort an logische Beziehungen, wenn sie den Ausdruck „freier Satz“ hören, ohne zu wissen, dass Techniken wie diese ein einfacherer alternativer Ansatz für solche Beweise sein können (insbesondere im Zusammenhang mit linearen Typsystemen).

AfA.(B.B(B,B))[A][A]B.B(B,B) existiert, da es seine Eingabe duplizieren müsste.


Können Sie eine Referenz für diese syntaktische Methode geben, von der Sie sprechen?
asukasz Lew

Ich bin mir einer guten Referenz nicht sicher, aber ich habe dem Beitrag ein Beispiel hinzugefügt. Lassen Sie mich wissen, wenn etwas unklar ist.
Nick Rioux

1
Nicht linear, aber hier ist ein Blog über die Verwendung der beweistheoretischen Analyse, um paramtrizitätsähnliche Theoreme zu erhalten: prl.ccs.neu.edu/blog/2017/06/05/…
Max New

Zusätzlich zu dem in diesem Beitrag verlinkten Artikel von Zhao et al. Erweiterten Lars Birkedal und seine Mitautoren in ihrer Arbeit Linear Abadi and Plotkin Logic auch Reynolds 'parametrisches Modell auf den linearen Fall .
Neel Krishnaswami

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.