Уменьшить лямбда-термин до нормальной формы - PullRequest
0 голосов
/ 20 сентября 2018

Я только что узнал о лямбда-исчислении, и у меня возникают проблемы, пытаясь уменьшить

    (λx. (λy. y x) (λz. x z)) (λy. y y)

до его нормальной формы.Я добираюсь до (λy. y (λy. y y) (λz. (λy. y y) z), затем теряюсь.Я не знаю, куда идти отсюда, или если это даже правильно.

1 Ответ

0 голосов
/ 25 сентября 2018
(λx. (λy. y x) (λz. x z)) (λy. y y)

Как отмечает @ymonad, один из параметров y необходимо переименовать, чтобы избежать захвата (объединяя разные переменные, которые совпадают только с одним и тем же именем).Здесь я переименовываю последний экземпляр (используя α -эквивалентность):

(λx. (λy. y x) (λz. x z)) (λm. m m)

Следующий шаг - β -reduce.В этом выражении мы можем сделать это в одном из двух мест: мы можем уменьшить либо внешнее приложение (λx), либо внутреннее приложение (λy).Я собираюсь сделать последнее, в основном по произвольной прихоти / потому что я немного подумал и думаю, что это приведет к более коротким промежуточным выражениям:

(λx. (λz. x z) x) (λm. m m)

Еще больше β -сокращение, чтобы сделать.Опять же, я собираюсь выбрать внутреннее выражение, потому что я могу видеть, куда это идет, но в данном случае это не имеет значения, я получу один и тот же окончательный ответ независимо от:

(λx. x x) (λm. m m)

Сторонапримечание: эти два лямбда-выражения (которые также известны как «Пересмешник» (согласно Раймонду Смулляну)) на самом деле α -эквивалентны, и все выражение является (в) известным Ω-комбинатором.Однако, если мы проигнорируем все это и применим другое β -среднение:

(λm. m m) (λm. m m)

Ах, это все еще β -редуцируемое.Либо это?Это выражение α -эквивалентно предыдущему.О, дорогой, мы, кажется, оказались в бесконечном цикле, как это всегда возможно в языках, полных по Тьюрингу (или мы должны сказать, что Лямбда-полные?).Можно было бы обозначить это как наше оригинальное выражение, равное «дну» (на языке Хаскеля), обозначенное ⊥:

(λx. (λy. y x) (λz. x z)) (λy. y y) = ⊥

Является ли это ошибкой?Что ж, есть хорошая теория ЛК, которую нужно знать:

  • если выражение имеет β -нормальную форму, то оно будет таким же β -нормальная форма независимо от того, какой порядок сокращений был использован для ее достижения, и
  • , если выражение имеет β -нормальную форму, тогда нормальный порядок оценка гарантированно найдет его.

Так что же такое нормальный порядок ?Короче говоря, это β - сокращение внешнего выражения на каждом шаге.Давайте возьмем это выражение для еще одного вращения!

(λx. (λy. y x) (λz. x z)) (λm. m m)
(λy. y (λm. m m)) (λz. (λm. m m) z)
(λz. (λm. m m) z) (λm. m m)
(λm. m m) (λm. m m)

Черт.Похоже, это выражение не имеет нормальной формы - оно расходится (не заканчивается).

...