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.
Ein weiteres Beispiel: beweisen , dass Funktion gibt immer eine permutierte Liste mit genau einem kopierten Element zurück.
linear-logic
parametricity
Łukasz Lew
quelle
quelle
Antworten:
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] e x y
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:
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.(A⊗A)⊸A ⊥
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).
quelle