
- •Аппликативные вычисления в теории алгоритмов
- •Содержание
- •Введение
- •Построение λ- теории Основы теории формальных систем.
- •Понятие λ-исчисления.
- •Построение бестипового λ-исчисления.
- •Свободные и связанные переменные.
- •Подстановка.
- •Коллизия имен переменных.
- •Редукция
- •Погружение классических вычислений в λ-исчисление.
- •Нумералы.
- •Рекурсия
- •Рекурсия в λ-исчислении.
- •Контрольные вопросы
- •Бестиповая комбинаторная логика. Комбинаторы.
- •Построение комбинаторной логики
- •Базис k, s.
- •Базис I,b,c,s
- •Преимущества комбинаторов
- •Контрольные вопросы
- •Типизированные системы. Использование типов.
- •Расширенное λ-исчисление
- •Редукция графа
- •Алгоритм редукции графа (рг)
- •Суперкомбинаторы.
- •Алгоритм приведения λ-выражения к суперкомбинаторному виду
- •Упорядочивание параметров.
- •Способы реализации рекурсии.
- •Контрольные вопросы
- •Компиляция в коды абстрактных машин.
- •Кодирование по де Брейну.
- •Алгоритм преобразования λ-выражений по де Брейну.
- •Семантические равенства для кодов де Брейна:
- •Категориальная комбинаторная логика (ккл).
- •Общие свойства абстрактных машин.
- •Категориальная абстрактная машина (кам).
- •Цикл работы кам
- •Оптимизация кода кам
- •Дополнительные функциональные инструкции
- •Рекурсия в кам
- •Пример вычисления выражений на кам
- •Контрольные вопросы
- •Смешанные вычисления Процедура смешанных вычислений
- •Трансформационные семантики
- •Проекции Футамуры
- •Контрольные вопросы
- •Литература
Построение комбинаторной логики
Определение:
Комбинаторная логика (КЛ) - часть математической логики, изучающая комбинаторы и их свойства, где функциональная абстракция выражается без использования формальных переменных.
Введем комбинаторную логику как формальную систему:
1
.
Алфавит: ( , ) , хi , сi, S, K, I,…
комбинаторы
2. Комбинаторные термы:
- все переменные являются термами ( хi – терм);
- все константы являются термами ( сi - терм);
- все комбинаторы являются термами (S,K,I,…- термы).
А-терм, В-терм (Если А- терм и В - терм, то аппликация (АВ)-терм )
(AB)-терм Таким образом (АВ) также является термом.
λ-абстракций в комбинаторной логике нет.
Скобки расставляются по ассоциации влево.
3. Правила вывода:
а→b
(μ) a→b
(υ)
a→b
(τ)
ca → cb ac→bc b→c a→c
4. Схема аксиом.
Ix → x
Kxy → x
Sxyz → xz(yz)
x → x
x,y,z
Примеры комбинаторов. Ix = x -тождество
Bxyz = x(yz) - композитор
Wxy = xyy - дупликатор
Cxyz = xzy - пермутатор
Sxyz = xz(yz) - коннектор
Kxy = x - канцелятор
I, B, W, K - также образуют базис.
Определения:
Выражение вида Ix, Kxy, Sxyz называются редексами.
Получившиеся свернутые выражения для редексов (соответственно х, х, xz(yz)) называются контрактами либо сверткой.
Говорят, что выражение А находится в нормальной форме, если оно не содержит редексов. Для любого комбинаторного выражения существует нормальная форма.
Пример
B = S(KS)K
W = SS(K(SKK))
C = S(BBS)(KK)
Теорема Черча-Россера.
If А→В, А→С
then D :B→D, C→D
Базис k, s.
Кроме базисного набора K, S будем использовать еще плюс к ним I.
Любое λ-выражение Р, не содержащее свободных переменных представляется в базисе IKS индукцией по построению терма Р.
Р: FV(P) = Ø –свободные переменные.
λх.х = I
λx.P = KP, если х FV(P)
λx.PQ = S(λx.P)(λx.Q)
Примеры.
λxy.yx = S(K(SI))(S(KK)I)
Babc = a(bc) Представим комбинатор B в базисе I,K,S.
B: λxyz.x(yz)
1-ый способ
λx.(λy.(λz.x(yz))) = λx.(λy.(S(λz.x)(λz.(yz))) = λx.λy.(S(Kx)(S(λz.y)(λz.z))) =
= λx.λy.((S(Kx)(S(Ky)I)) = λx.(S(λy.S(Kx))(λy.S(Ky))I)) = λx.(S(K(S(Kx)))
( S(λy.S(Ky))(λy.I))) = λx.(S(K(S(Kx)))(S(S(λy.S)(λy.Ky))(KI))) =
= λx.(S(K(S(Kx)))(S(S(KS)(S(KK)I))(KI))) = S(λx.(S(K(S(Kx))))(λx.[…])) =
нет
свободных вхождений х
= S(S(λx.S)(λx.K(S(Kx)))( …) = S(S(KS)(S(λx.K)(λx.S(Kx)))( …) =
= (S(S(KS)(S(KK)(S(KS)(λx.Kx))))( …) = (S(S(KS)(S(KK)(S(KK)(I))( …) .
2-ой способ
a(bc) =(K) Kac(bc) =(S) S(Ka)bc =(K) KSa(Ka)bc =(S) S(KS)Kabc .
Базис I,b,c,s
Для всей комбинаторной логики I,B,C,S не является базисом, т.к. в нем нет укорачивающего правила, которое вводится Kxy = x. Однако для систем без укорачивающих правил I,B,C,S можно использовать как базис.
K – не может быть выражено через остальные комбинаторы, значит для всей комбинаторной логики I,B,C,S - не базис.