Frage

Ich versuche, die Grundlagen der Lambda-Kalkül und Kirche Zahlen zu verstehen. Ich habe viel gelesen worden zu tun und zu üben, aber ich scheine immer stecken zu bleiben mit dem Versuch zu sehen, wie einige Funktionen arbeiten.

Das Beispiel steckte ich bin auf wie folgt. Vielleicht kann mir jemand erklären, wo ich falsch gegangen sind.

Die Kirche Ziffer 1 kann wie folgt dargestellt werden:

λf. λx. f x

Die Exponentiationsfunktion auf Kirche Ziffern (m n ) als angegeben werden:

λm. λn. n m

Alles, was ich tun möchte, ist zu zeigen, dass durch die Exponentiationsfunktion 1 und 1: Anwendung komme ich zurück 1, da 1 1 = 1. Ich tue dies, so verstehe ich besser, wie dies Funktionen arbeiten. Meine Arbeitsweise ist wie folgt, und ich bekomme jedes Mal fest:

// Exp (1 1)
(λm. λn. n m) (λf1. λx1. f1 x1) (λf2. λx2. f2 x2)
// Substitute for m
(λn. n (λf1. λx1. f1 x1)) (λf2. λx2. f2 x2)
// Substitute for n
(λf2. λx2. f2 x2) (λf1. λx1. f1 x1)
// Substitute for f2
(λx2. (λf1. λx1. f1 x1) x2)
// Substitute for f1
λx2. (λx1. x2 x1)

Und da bin ich stecken. Ich habe beide f verloren, links mit x einzigen, und ich habe nicht 1 zurück bekomme. Wo soll ich denn falsch?

War es hilfreich?

Lösung

  

Wo soll ich denn falsch?

Nirgendwo! Sie sind fertig. Denken Sie daran, die Variablennamen sind nicht wichtig; es ist die Struktur, die wichtig ist. Die Namen f oder x2 sind nicht sinnvoll. Wichtig ist nur, wie sie verwendet werden. Die Kirche Zeichen für 1

λf. λx. f x

und Sie haben

λx2. (λx1. x2 x1)

Umbenennen x2 f und x1 x und voilà! Sie haben

λf. (λx. f x)
= λf. λx. f x
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top