Was ist der Vorteil von Krivines Notation?

9

Ich habe gesehen, dass einige Leute Krivines Notation für die Funktionsanwendung verwenden, wenn sie die Syntax für den Kalkül präsentieren. Zum Beispiel ist der λ- Term λ f . λ x . λ y . f x y (mit der normalen Konvention, dass die Funktionsanwendung nach links assoziiert, bedeutet also tatsächlich λ f . λ x . λ y . ( ( f x ) y ) ) wird λ f geschrieben . λ x . λ yλλλf.λx.λy.f x yλf.λx.λy.((f x) y) (mit einer ähnlichen Konvention, dass es tatsächlich λ f . λ x . λ y bedeutet . ( ( f ) x ) y ). Ich sehe keinen Sinn darin, ein weiteres Paar Klammern um das innerste f zu haben . Warum verwenden die Leute Krivines Notation anstelle der üblichen?λf.λx.λy.(f) x yλf.λx.λy.((f) x) yf

Tag
quelle

Antworten:

13

Ich nehme an, Sie meinen Krivines Notation aus Lambda Calculus: Typen und Modelle .

Diese Notation, die als Datendarstellung verwendet wird, vereinfacht die Implementierung vieler Algorithmen zu Lambda-Begriffen und beweist ihre Richtigkeit. Das heißt, gegeben ein Lambda-Term , Sie möchten es alsKopf f zusammen mit einerListevon Argumenten [ e 1 , e 2 , , e n ] anzeigen.fe1e2en f[e1,e2,,en]]

Angenommen, Sie möchten zwei Begriffe f vergleichen mit gfe1en . Es ist oft am natürlichsten, zuerst die Köpfe f und g zu vergleichenund nicht einmal die ( e i , t i ) -Paare zu betrachten, es sei denn, dieser Vergleich ist erfolgreich. (Dies tritt häufig bei Implementierungen der Vereinigung höherer Ordnung auf.)Gt1tnfG(eich,tich)

Eine Formalisierung dieser Idee finden Sie in Cervesato und Pfennings Artikel A Linear Spine Calculus .

Neel Krishnaswami
quelle
0

Ein interessanter Unterschied zeigt sich in Abschnitt 2 "Darstellbare Funktionen" von Kapitel 2 von Krivines Buch. Kirchenkodierte Drei werden in Standardnotation als λ x. λ y. x (x (x y)) . Mit Krivines Notation (wenn ich es endlich richtig verstehe!) Würden wir stattdessen λx λy (x)(x)(x)y schreiben .

Aaron Stump
quelle