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

Погружение классических вычислений в λ-исчисление.

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

Нумералы- объекты, обладающие свойствами натуральных чисел.

n= λxy.(xn)y n=(SB)n(KI), здесь S,B,K,I - простейшие комбинаторы

Системы комбинаторов предназначены для выполнения тех же функций, что и системы

- - конверсии

B: Bfgx = f(gx)- элементарный композитор

S: Sfgx = fx(gx) –элементарный коннектор

K: Kcx =c – элементарный канцелятор

I: Ix = x – комбинатор тождества

Пусть z0= λyx.x (считаем это число нулем). Остальные целые числа введем по индукции: zn+1=σzn, где σ - функция добавления единицы: σ = λxyz.y(xyz)

Операция сложения PLUS:

PLUS = λxy.xσy

Утверждается, что PLUSz0b=b и PLUS(σa)b=σ(PLUSab) (проверяется подстановкой).

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

Усеченная разность: DIF=λxу.yπx, где π-функция предшествования

π=λx.хω(kz0)z1, где ω= λx.D(σ(xz0))(xz0) πzi+1=zi, i ≥ 0

k= λxy.x πz0=z0.

D - декартово замкнутое произведение.

D: PROD = λxy.x(yσ)z0

TRUE λxy.x (так обозначим)

FALSE λxy.y

If X then Y else Z XYZ.

Нумералы.

Введем по индукции обозначение

anb n N nab= anb

a0b=b

an+1b=a(anb)

Пример. a3b=a(a(ab))

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

Нумералом n будем называть λ-выражение вида λху.хny, где n=0,1,2,…

n = λху.хny

n =(SB) n(KI) (то же выражение, но в терминах комбинаторной логики)

Введем функцию прибавления единицы σ.

σ = λхуz.y(хyz) (σ = λхуz.xy(yz))

σn = n+1

Пример. 0 = λху.y 2 = λху.x(xy)

Покажем, что для таких нумералов (n) σ прибавляет единицу:

┌───────

σnab = (λхуz.y(xyz))( λху.хny)ab = ((( λx.( λy.( λz.y(xyz))))( λx.λy.хny))a)b └───σ──┘└──n─┘ ───────────└─────┘

┌───────────┌─────────

= ((λy.( λz.(y((λx.λy.хny)yz)))a)b = (λz.a((λx.λy.хny))az))b = a((λx.λy.хny)ab) =

──────────────┘ ──────────┘ └─n───┘

= a(anb) =an+1b = /(λху.хn+1y)ab/ = (n+1)ab.

 ↓

σ (SB) n(KI) = (λхуz.y(xyz))((SB) n(KI))(λхуz.y(xyz))[(SB) n(KI)]ab =

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

= a(((SB) n(KI)a)b) =B Ba[(SB) n(KI)a]b =S SB[(SB) n(KI)]ab = (SB) n+1(KI)ab

a┘└──b───┘c x z└──y──┘ z

σ| = λхуz.xy(yz)- альтернативное определение σ, которое также приводится в литературе. Для него можно провести аналогичные выводы.

TRUE λху.x

FALSE λху.y

If x then y else z xyz

Как это проверить?

If TRUE then A else B A

If FALSE then A else B B

┌─

( λху.x)AB = A

┌─

( λху.y)AB = B

X&Y If X then Y else FALSE

XVY If X then TRUE else Y

Рекурсия

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

Рекурсивное определение- это определение, которое внутри себя содержит ссылку

на определяемый объект.

Пример. 1) Факториал ƒac(x): x*ƒac(x-1),

if (х=0) then 1 ƒac(0)=1.

else x* ƒac(x-1)

2) Список:

Голова

c ons(x.y)→(x.y) (точечная пара)

head(x.y) →x (голова)

t

nil

ail(x.y) → y (хвост)

length(x)

tail(x) = Nil

length(x) = 1+ length(tail(x))

length(x): if x = Nil then 0

else 1+(length(tail(x))).

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