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

Алгоритм преобразования λ-выражений по де Брейну.

1.Избавляемся от свободных переменных путем их абстрагирования в поряд-

ке, заданном средой.

2.Рекурсивно выполняем шаг алгоритма кодирования λ-терма в среде.

3.Отбрасываем символы λ, приписанные на первом шаге.

Пример.

λх.+ху (( ),у) - среда.

Шаги:

1. λу.λх.+ху

2. Λ(Λ(S(S(’+,0), 1)))

3. Λ(S(S(’+,0), 1))

λх.+ху ((( ),у),z) - среда

λz.λх.+ху

λу.λz.λх.+ху

λ.λ.λ.+0 2

λ.+ 0 2

Λ(S(S(’+,0), 2))

Семантические равенства для кодов де Брейна:

0(х,у) = у

n+1(х,у) = nх

(’x)y = x

S(x,y)z = xz(yz)

Λ(x)yz = x(y,z) - каррирование, т.е. преобразование функции от двух аргументов в функцию от первого аргумента, задающую функцию от второго аргумента

.

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

Пара из терма Де Брейна и среды, в которой он рассматривается, называется кодом

Де Брейна.

Вычислять мы можем только код Де Брейна. Вычисление терма в отрыве от среды невозможно.

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

Композицией функций х и у - называется функция (х○у): (х○у)z = x(yz)

Соглашение о композиции: А○В = ВА. Если ”+” - машинная команда вида Λ(+○ Snd)

(из ’M= Λ(+○ Snd)) ↑аппликация

Уравнения, описывающие семантику, называются семантическими:

Семантические равенства с учетом среды: Без учета среды:

||0!||(ρ,d) = d ||0!|| = 0!

||(n+1)!||(ρ,d) = ||n!|| ρ ||n|| = n!

||c|| ρ = c ||c|| = ’c

||MN|| ρ = ||M|| ρ(||N|| ρ) ||MN|| = App○<||M||, ||N||>

||λx.M|| ρ = ||M||( ρ,x) ||λ.M|| = Λ||M||

Snd○Fstn = n! App○<A, B> = S(A,B)

Вычисления с использованием семантических равенств:

Пусть Q --терм:

1) применение к Q формализма Де Брейна;

2) преобразование правой части равенства с помощью семантических равенств

После того как терм Q приведен к окончательному виду по Де Брейну, его с помощью семантических равенств вычисляют путем приложения к среде (с помощью категориальных операторов).

Категориальная комбинаторная логика (ккл).

Декартово замкнутая категория подразумевает наличие:

1) аппликации арр,

2) каррирования (Λ),

3) точечной пары (х,у).

Так как есть пара, то есть и функции доступа к элементам:

Fst(x,y) = x

Snd(x,y) = y

ККЛ представляется следующей совокупностью комбинаторов:

App - аппликация,

Λ - абстрактор,

< , > - комбинационные пары,

( , ) - совокупность,

○ - композиция.

Заявим, что 0 = Snd D=λr.rxy

N = Snd○Fstn ↑ комбинатор точечной пары.

(ass): (x○y)z = x(yz) – композиция

(fst): Fst(x,y) = x Fst = CIK

(snd): Snd(x,y) = y Snd = CI(KI)

(dpair): <x,y>z = (xz,yz)

Для вычисления композиции в среде предлагается ввести:

[(M,N)] ρ = <[M],[N]> ρ

(dΛ): Λ(x)yz = x(yz) - операция каррирования.

(app): App(x,y) = xy S = CIS

(quote): (’x)y = x λxy.x

(ac): App(Λ(x)y,z) = x(yz) # App(Λ(x)y,z) = Λ(x)yz = x(yz)#

Пример

Λ(x○Snd)yz = (x○Snd)(y,z) = xz

(’x)yz = xz

> quote = Λ(x○Snd) - правило quote является избыточным.

Пример. (из λ-исчисления в код Де Брейна).

(λх.х4((λх.х)3))+

(λ.04((λ.0)3))+

S (Λ (S(S(0,’4),S(Λ (0),’3))),’+)

↑Snd ↑Snd

1 2 3 4 4 3 2 1

S(x,y) = App○<x,y>

0 заменяем на Snd и получаем выражение:

App○< Λ (App○< App○< Snd,’4>, App○< Λ(Snd),’3>>),’+>

На основе ККЛ можно построить абстрактную машину.

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