Wie ist Lambda Calculus eine bestimmte Art von Term Writing System?


12

Jetzt können wir sehen, dass Church mit dem einfach getippten Lambda-Kalkül in Verbindung gebracht wurde . Tatsächlich scheint er den einfach getippten Lambda-Kalkül erklärt zu haben, um Missverständnisse über den Lambda-Kalkül zu vermeiden.

Jetzt, als John McCarthy Lisp kreierte, basierte er es auf dem Lambda-Kalkül . Dies hat er selbst zugegeben, als er "Rekursive Funktionen symbolischer Ausdrücke und ihre maschinelle Berechnung, Teil I" veröffentlichte . Sie können es hier lesen .

Jetzt wissen wir, dass Mathematica im Kern ein Lisp-ähnliches System ist , das jedoch nicht nur auf dem Lambda-Kalkül basiert, sondern auf einem System zur Umschreibung von Begriffen .

Hier stellt der Autor fest:

Mathematica ist im Grunde ein System zur Umschreibung von Begriffen ... ein allgemeineres Konzept als der Lambda-Kalkül hinter Lisp.

Es scheint, dass der Lambda-Kalkül ein kleiner Teil einer viel allgemeineren Kategorie ist. (Ganz aufgeschlossen als Gedanke, dies war eher ein grundlegendes Konzept). Ich versuche mehr darüber zu lesen, um eine Perspektive zu bekommen.

Meine Frage ist: Wie ist Lambda Calculus eine bestimmte Art von Term Writing-System?

Antworten:


14

Die Antwort ist, es kommt darauf an, was Sie mit Term Rewrite System meinen .

Als es eingeführt wurde, beschrieb das Konzept von Term Rewrite Systems , oder TRSes, was jetzt TRSes erster Ordnung genannt wird , was einfach ein Satz von Berechnungsregeln des Formulars ist

lr

wobei und r sind Terme erster Ordnung der Formlr

t:= x  f(t1,,tn)

wobei eine Variable ist und f ein Funktionssymbol von einem willkürlichen genommen, aber fester Menge Σ , die angerufene Signatur , die auch eine Anzahl von Argumenten für jede fixiert f Σ .xfΣfΣ

Es gibt ein paar gemeinsame Beschränkungen Regeln auferlegt, zB , aber wir brauchen hier nicht in sie zu gehen.Var(r)Var(l)

β

(λx.t) ut[u/x]
λxtλ

SKΣ={S, K,app}

app(app(K,x),y)x
app(app(app(S,x),y),z)app(app(x,z),app(y,z))

Es gibt eine andere, intuitivere Codierung, die Lambda-Terme mit de Bruijn-Indizes und expliziten Substitutionen umfasst, auf die ich hier jedoch nicht näher eingehen werde.


λ

t := x(t1,,tn)  f(x11xi11.t1,,x1nxinn.tn)

fΣxjitiabs(x.t)λx.t

βηβ

Daher sind die linken Seiten auf eine nette Untergruppe beschränkt, oft die "Miller-Muster". Eine Reihe von Ergebnissen für den Fall erster Ordnung verallgemeinern, obwohl es einige böse Überraschungen gibt.

λ βη

λβ

app(abs(x.y(x)),z)y(z)

Einen recht ordentlichen Überblick über die Definitionen und Grundergebnisse geben hier Nipkow und Prehofer .


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.