Свободные переменные (λx.xy) x и связанных переменных λxy.x

cs.stackexchange https://cs.stackexchange.com/questions/3274

  •  16-10-2019
  •  | 
  •  

Вопрос

Я решал упражнения на исчислении Lambda. Тем не менее, мои решения отличаются от ответов, и я не вижу, что не так.

  1. Найдите свободные переменные $ ( lambda x.xy) x $.
    Мои работы: $ fv (( lambda x.xy) x) = fv ( lambda x.xy) cup fv (x) = {y } cup {x } = {x, y } $.
    Ответ модели: $ fv (( lambda x.xy) x) = {x } $.

  2. Найдите связанные переменные $ lambda xy.x $.
    Мои работы: переменная $ y $ имеет свою привязку, но, поскольку она не присутствует в теле $ lambda $-Abstraction, она не может быть связана и, следовательно, $ bv ( lambda xy.x) = {x } $ Только.
    Ответ модели: $ bv ( lambda xy.x) = {x, y } $.

Это было полезно?

Решение

  1. Ваш ответ верен, $ y $, безусловно, бесплатный. Модель - это неправильно. Может быть, была опечатка, и ответ был предназначен для $ ( lambda y.xy) x $

  2. Это зависит от точного определения $ bv $. Часто только $ fv $ определяется формально, потому что это важнее. (Связанные переменные могут быть свободно переименовано В под термере, но свободные переменные не могут.) Поэтому, если $ bv $ определяется как begin {eqnarray*} bv (x) & = & {} bv (mn) & = & bv (m) cup BV (n) bv ( lambda xm) & = & {x } cup bv (m) end {eqnarray*} тогда ответ модели верен. Обратите внимание, что это определение имеет смысл: если у вас есть термин $ M $ и замените бесплатную переменную $ x $ Другой термин $ n $ без связанных переменных ($ bv (n) = {} $), вы ожидаете, что это $ Bv (m) = bv (m [x: = n]) $. Если вы рассмотрите только связанные переменные, которые также появляются в рамках $ lambda $, это свойство не будет удерживать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top