Lambda kalkuel Auswertung - probeklausur 08 - Lösung ?

zum vergleichen,verbessern,drueber labern

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Lambda kalkuel Auswertung - probeklausur 08 - Lösung ?
hier mal meine loesung, werde auch noch zu weiteren aufgaben demnext meine vorschlaege posten.
wer mag kann sich zu aeussern ich wuerds cool finden!

DEN PUNKT in der vorletzten zeile zwischen linkem und rechten teil wegdenken. wie ihr sehn koennt wurde die zeile in der zeile davor schon ausgewertet, d.h in der vorletzten zeile steht nurmehr eine applikation.


     (λ X Y Z. Y (X Z)) (λ X. Z X) (λY. X) (λX. X X)
->a  (λ A B C. B (A C)) (λ X. Z X) (λY. X) (λX. X X)
->b  (λY. X) ((λ X. Z X) (λX. X X))
->b  X

Ich krieg X raus, weil man nur gebundene Variablen umbenennen darf, also z.B in (λY. X) nicht das X umbenennen kann. (Dieses X bezieht sich ja auf einen äusseren Kontext)


so wie ich das verstanden habe steht aber z.b das (λY. X) nicht in einem aeusseren kontext. da es fuer sich selber ne abstraktion is, jedoch an sich nur von rechts nach links ausgewertet wird.

als parameter von dem was bei (λ X Y Z. Y (X Z)) (λ X. Z X) rauskommt. (λY. X)

((λ X Y Z. Y (X Z)) (λ X. Z X) ) (λY. X) quasi so.( applikation)

im grunde machen wirs ja aehnlich.
also, unsere beiden auswertungen kriegen jeweils genau die variable die an selber stelle , im urspruenglichen lambda ausdruck, stehen.
sie heissen bei uns nur anders.

ich hab nur halt die fuer sich stehenden lambda ausdruecke, die als parameter uebergeben werden, alpha konvergiert.
ich dachte echt dass das geht…fail

edit: oder meinst du dass (λY. X) zwar als parameter uebergeben wird, aber selber noch einem „welt“ kontext ( also ganz ganz aussen) steht, und man daher zwar das Y, nicht jedoch das X umbenennen darf, da das X von irgendwo ganz aussen(umgangsprachlich) „bestimmt“ wird?


Also ich habe es so gemeint: Der gesamte Ausdruck, also die Funktion mit ihren drei Parametern kann ja in irgendeinem Zusammenhang verwendet werden. Das X in (λY. X) ist völlig frei und hat deshalb eine “äussere Bedeutung” und ist kein gebundener Bezeichner. Das Y kann ich umbenennen, weil sein Gültigkeitsbereich sich sozusagen nur auf den Lambda-Ausdruck (λY. X) erstreckt.
Also im Grunde kann man das X gerade deswegen nicht umbenennen, weil es in dem ganzen Ausdruck nicht an ein Lambda gebunden ist.
Ich glaub das mit dem Kontext ist irreführend und missverständlich gewesen.
Ich hätte sagen sollen: es steht in einem unbekannten Kontext…

edit: genau so mein ichs :wink:


http://www.inf.fu-berlin.de/lehre/WS07/ALPI/Lambda-Rechner.jar


Darf man in der Klausur einen Lambdarechner verwenden? :smiley:


Deinen integrierten neuronalen Rechner selbstverständlich.
Da dieser durch entsprechende Programmierung auch um diese Funktion erweitert werden kann,
dürfte es bei der Klausur sehr hilfreich sein.
Wer Ihn zu hause vergisst braucht es eigentlich gar nicht erst zu versuchen.


wie funzten den rechner?
Also was muss ich z.B. eingeben um (λY. YX)B auswerten zu lassen?
weil so wie ichs hier geschrieben hab nimmt erst nicht an…


Hab´s heute zuerst auch nicht gewusst: Man muss für Lambda das Zeichen \ eingeben (wie Haskell).