Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DM-6_lec.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.32 Mб
Скачать

Свободные и связанные переменные.

λх.А - переменная х связана в выражении с А.

Определение.

х входит связанно в (АВ) тогда и только тогда, когда х входит связанно в А или связанно в B.

Определение.

х входит связанно в λу.А тогда и только тогда, когда (х ≡ у и х А) или х входит связанно в А.

На место свободной переменной возможна подстановка.

Определение.

Свободные переменные - это синтаксические объекты, встречающиеся обычно в некотором контексте, вместо которых можно подставлять другие синтаксические объекты.

Связанные переменные не допускают подстановки.

(λх.х)+у Можем что-либо подставить на место у и не можем подставить на место х.

П ример. х+(( λх.х)3)

свободная связанная

Подстановка.

Определение.

Для термов М и N и переменной х результат подстановки [N/x]M -“ N на место х в М” определяется по индукции по построению терма М.

[N/x] x = N

[N/x] a = a

[N/x](M1M2) = ([N/x] M1)([N/x] M2)

[N/x](λх.M) = λх.M (т.к. х - связана)

[N/x](λу.M) = ( λу.[N/x]М), если у ≠ х, у N (или х М), иначе

=(α)(λz.[N/x][z/y]M),

если у ≠ х, у N и x M, где z- новая переменная, не входящая ни в N, ни в М.

Это запрещает значению [N/x](λх.M) зависеть от связанной переменной у.

Пример. [3/y](y) →3

[3/y](x) →x

[3/y](y+x) →3+x

[3/y](λу.y)7+x+y) → ((λу.y)7+x+3)

┌───║───

λу.((λу.y)7+x+y)3)

┌─

(λу.y+34) (λx.x) →(((( λx.x)+)3)4) →((+3)4)

──────└───┘ ──┘

┌─── ┌───

Пример. (λx. λу. λz+ x(-yz))123→( λxyz.+x(-yz))123→(( λyz.+1(-yz))2)3→

↑_________│ ↑_______│

| ↓

( λz.+1(-2z))3→+1(-23)

Вначале вычисляется выражение в скобках.

Коллизия имен переменных.

Чтобы ввести новые имена используется α - конверсия, она позволяет изменять имена свободной переменной x.

(х+( λx.-х3)2) не сможет дать какую-либо характеристику переменной.

Использование (α) - конверсии позволит изменить имя свободной переменной.

(х+(λx.-х3)2) (у+(λx.-х3)2) получим свободное вхождение у и связное вхождение х.

Изменение статуса переменной при подстановке называется коллизией переменных.

Коллизия переменных может служить источником ошибок в вычислениях.

Пример

Прямая редукция терма (λxy.x)y дает неверный результат

(λxy.x)y →(β) λy.y,

а если предварительно переименовать связанную переменную y, получится верный результат:

(λxy.x)y →(α) (λxz.x)y →(β) λz.y ≠ λy.y.

Редукция

Определение.

Х сворачивается к Y Y -результат замены части Х вида (λх.M)N на [N/x]M:

X редуцируется к Y Y получается из Х с помощью конечной (возможно, пустой) последовательности сворачиваний и замен имен связанных переменных.

Выражение вида (λх.M)N называется редекс.

Подстановка N на место х в М [N/x]M называется сверткой.

λ выражение Р находится в нормальной форме, если не содержит ни одного редекса.

Пример. 1) λх.х - является нормальной формой

2)(λх.+х((λу.у)х)) → не является нормальной формой → (λх.+хх) - является нормальной формой.

Говорят, что терм Р редуцируется к терму Q, если существует доказательство такого выражения: Р → Q.

Теорема Черча-Россера:

Если х конвертируется к у, т.е. х у (х редуцируется к у: х→у) и х конвертируется (редуцируется) к z,то а: у→а и z→а (у а и z а)

Следствие:

У λ - терма ! (единственная) нормальная форма.

Доказательство: (от противного)

Пусть у выражения x существует две нормальные формы a ,b: х→a и х→b т.е. а,b (a ≠b): (a b)

По Тh C: a→c, b→c т.к. а может редуцироваться, то а не является нормальной формой, то же самое можно сказать про b.

Либо не редуцируются, либо совпадают.

Двух нормальных форм существовать не может. #

Если а редуцируется к b (а→b) и b редуцируется к а (b→a),то говорят что а и b

конвертируются одно в другое (а b),т.е. а→b, b→a: а b- взаимно конвертируются.

Теорема.

λ–теория не противоречива, т.е. в ней нельзя вывести любые утверждения.

Теорема: (О комбинаторной полноте).

Пусть λ- терм М содержит n свободных переменных х1…хn, тогда λ-терм F: х1…xn не являются свободными переменными F (X1…Xn FV(F)) и при этом FX1…Xn=M соответственно F=λx1…xn.M.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]