Frage

Ich löste Übungen auf Lambda Calculus. Meine Lösungen unterscheiden sich jedoch von den Antworten und ich kann nicht sehen, was falsch ist.

  1. Finden Sie kostenlose Variablen von $ ( lambda x.xy) x $.
    Meine Arbeiten: $ fv (( lambda x.xy) x) = fv ( lambda x.xy) cup fv (x) = {y } cup {x } = {x, y } $.
    Die Modellantwort: $ fv (( lambda x.xy) x) = {x } $.

  2. Finden Sie gebundene Variablen von $ lambda xy.x $.
    Meine Arbeit: Eine Variable $ y $ hat ihre Bindung, aber da sie nicht im Körper des $ lambda $ -abstraktion vorhanden ist, kann sie nicht gebunden werden und somit $ bv ( lambda xy.x) = {x } $ nur.
    Die Modellantwort: $ bv ( lambda xy.x) = {x, y } $.

War es hilfreich?

Lösung

  1. Ihre Antwort ist korrekt, $ y $ ist sicherlich kostenlos. Das Modell 1 ist falsch. Vielleicht gab es einen Tippfehler und die Antwort war für $ ( lambda y.xy) x $ gedacht

  2. Es hängt von der genauen Definition von $ bv $ ab. Oft wird $ fv $ offiziell definiert, weil es wichtiger ist. (Gebundene Variablen können sein frei umbenannt In einem subterm, aber freien Variablen können nicht.) Wenn $ bv $ als begin {eqnarray*} bv (x) & = & {} bv (mn) & = & bv (m) definiert wird cup bv (n) bv ( lambda xm) & = & {x } cup bv (m) end {eqnarray*} Dann ist die Modellantwort korrekt. Beachten Sie, dass diese Definition sinnvoll ist: Wenn Sie einen Begriff $ M $ haben und eine kostenlose Variable $ x $ ein weiterer Begriff $ n $ ohne gebundene Variablen ($ bv (n) = {} $), erwarten Sie das, dass das erwarten $ Bv (m) = bv (m [x: = n]) $. Wenn Sie nur gebundene Variablen betrachten, die auch unter dem $ lambda $ erscheinen, würde diese Eigenschaft nicht gelten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top