Обновление [2011-09-20]: я расширил параграф о расширении и расширении. Спасибо Антону Салихметову за указание на хорошую ссылку.η
-конверсия ( λ x . f x ) = f является частным случаем β - преобразованиятольков частном случае, когда f сама является абстракцией, например, если f = λ y . y y тогда ( λ x . f x ) = ( λ x . ( λ y . y y ) x ) = β ( λ x .η( λ x . fх ) = еβее= λ у, YYНо что, если f - это переменная или приложение, которое не сводится к абстракции?
( λ х .fх ) = ( λ x . ( λ y, YY) х ) =β( λ x . x x ) =αе,
е
В некотором смысле правило - это особый вид экстенсиональности, но мы должны быть немного осторожны с тем, как это заявлено. Мы можем утверждать экстенсиональность как:η
- для всех термов M и N , если M x = N x, то M = N , илиλMNMх = NИксM= N
- для всех если ∀ x . f x = g x, то f = g .е, г∀ х . ех = гИксе= г
Первый - это мета-утверждение о членах исчисления. В нем x выступает как формальная переменная, т. Е. Является частью λ- исчисления. Это можно доказать из β η- правил, см., Например, теорему 2.1.29 в «Лямбда-исчислении: его синтаксис и семантика» Барендрегта (1985). Его можно понимать как утверждение обо всех определяемых функциях, т. Е. Тех, которые обозначают λ- термины.λИксλβηλ
Второе утверждение - то, как математики обычно понимают математические утверждения. Теория исчисления описывает определенный вид структур, назовем их « λ -моделями ». Λ -модель может быть несчетной, так что нет никакой гарантии , что каждый элемент он соответствует λ термам (так же , как есть более действительные числа , чем есть выражения , описывающие реалы). Тогда экстенсиональность говорит: если мы возьмем любые две вещи f и g в λ- модели, если f x = g x для всех x в модели, то f = gλλλλеграммλех = гИксИксе= г, Теперь, даже если модель удовлетворяет правилу, она не должна удовлетворять экстенсиональности в этом смысле. (Ссылка нужна здесь, и я думаю, что мы должны быть осторожны, как равенство интерпретируется.)η
Есть несколько способов, которыми мы можем мотивировать и η -преобразования. Я случайным образом выберу теоретико-категоричный, замаскированный под λ- калькуляцию, и кто-то другой может объяснить другие причины.βηλ
Давайте рассмотрим типизированный расчет (потому что он менее запутанный, но более или менее те же рассуждения работают для нетипизированного λ- вычисления). Одним из основных законов , которые должны трюмов экспоненциальный закон C × B ≅ ( C B ) . (Я использую обозначения A → B и B A взаимозаменяемо, выбирая то, что кажется лучше.) Что означают изоморфизмы i : C A × B → ( C B ) A и j :λλ
СA×B≅(CB)A.
A→BBAi:CA×B→(CB)A похожи, записанные в
λ- калькуляции? Предположительно они были бы
я = Л п : С × B . λ : . λ б : Б . е ⟨ , б ⟩ и
J = λ г : ( С В ) . λ p : A × Bj:(CB)A→CA×Bλi=λf:CA×B.λa:A.λb:B.f⟨a,b⟩
Короткий расчет с парой
бета -reductions (том числе
бета -reductions
П 1 ⟨ в , б ⟩ = с и
П 2 ⟨ в , б ⟩ = Ь для продуктов) говорит намчто, для каждого
г : ( С В ) А у нас есть
я ( J г ) =j=λg:(CB)A.λp:A×B.g(π1p)(π2p).
ββπ1⟨a,b⟩=aπ2⟨a,b⟩=bg:(CB)A
Так
как я и
J являются инверсиями друг друга, мы ожидаем
, что я ( J г ) = г , но на самом деле доказать этомы должны использовать
η -уменьшение дважды:
я ( J г ) = ( λ в : . Л Ь : В . g a b ) = η (i(jg)=λa:A.λb:B.gab.
iji(jg)=gη
Так что это одна из причин наличия
η- сокращений. Упражнение: какой
η- правила нужен, чтобы показать, что
j ( i f ) = f ?
i(jg)=(λa:A.λb:B.gab)=η(λa:A.ga)=ηg.
ηηJ(if) = f