Dies ist für Hausaufgaben, bevor jemand fragt, ich bin nur auf der Suche nach Anleitung.Reduzieren Lambda-Kalkül Begriff auf Normalform
Hier ist die erste Frage Begriff:
(λx.λy.x y)(λx.x y)
=(λx.λz.x z)(λx.x y) α-renaming
=(λz.(λx.x y) z)
=(λx.x y)
Ich mag würde sicherstellen, dass ich dies richtig denke. Der rechte Ausdruck ist der Wert, der in den Parameter x eingegeben wird, richtig? Dann wird jede Instanz von x durch den Begriff auf der rechten Seite ersetzt. Ich habe y umbenannt, also gab es keine Verwechslungen mit dem freien y und dem begrenzten y. Was ich jetzt nicht verstehe, ist die zweite Zeile, die mit = beginnt. Wird der ganz rechte z als Parameter für die Variable z übergeben? Oder wird es in x weitergegeben? Wie auch immer ich denke, die Antwort ist die gleiche, aber ich würde gerne wissen, welche die richtige Methode ist. Hier
ist die zweite Frage Begriff
((λx.λy.x y)(λx.x)) y
=((λx.λz.x z)(λx.x)) y
=(λz.(λx.x)z) y
=(λx.x)y
=(λx.x)
Wegen der Klammern, bedeutet der Begriff (λx.x) für den Parameter x ersetzt werden? Oder wird y für x substituiert?
Ich hoffe, das macht Sinn. Vielen Dank im Voraus für jede Hilfe.