- •Аппликативные вычисления в теории алгоритмов
- •Содержание
- •Введение
- •Построение λ- теории Основы теории формальных систем.
- •Понятие λ-исчисления.
- •Построение бестипового λ-исчисления.
- •Свободные и связанные переменные.
- •Подстановка.
- •Коллизия имен переменных.
- •Редукция
- •Погружение классических вычислений в λ-исчисление.
- •Нумералы.
- •Рекурсия
- •Рекурсия в λ-исчислении.
- •Контрольные вопросы
- •Бестиповая комбинаторная логика. Комбинаторы.
- •Построение комбинаторной логики
- •Базис k, s.
- •Базис I,b,c,s
- •Преимущества комбинаторов
- •Контрольные вопросы
- •Типизированные системы. Использование типов.
- •Расширенное λ-исчисление
- •Редукция графа
- •Алгоритм редукции графа (рг)
- •Суперкомбинаторы.
- •Алгоритм приведения λ-выражения к суперкомбинаторному виду
- •Упорядочивание параметров.
- •Способы реализации рекурсии.
- •Контрольные вопросы
- •Компиляция в коды абстрактных машин.
- •Кодирование по де Брейну.
- •Алгоритм преобразования λ-выражений по де Брейну.
- •Семантические равенства для кодов де Брейна:
- •Категориальная комбинаторная логика (ккл).
- •Общие свойства абстрактных машин.
- •Категориальная абстрактная машина (кам).
- •Цикл работы кам
- •Оптимизация кода кам
- •Дополнительные функциональные инструкции
- •Рекурсия в кам
- •Пример вычисления выражений на кам
- •Контрольные вопросы
- •Смешанные вычисления Процедура смешанных вычислений
- •Трансформационные семантики
- •Проекции Футамуры
- •Контрольные вопросы
- •Литература
Способы реализации рекурсии.
В рассмотренных нами методах (в редукции графов и в суперкомбинаторах)
рекурсия осуществляется по именам, т.е. имеем дело с именованными выражениями.
Пример.
ƒac n: if n=Ø 1 n*ƒac(n-1)
λn.if n= Ø 1 n*ƒac(n-1)
1)Редукция графа:
Разворачиваем тело графа.
Суперкомбинаторы (рекурсия):
letrec ƒ=N(ƒ) M
letrec ƒac=(λn.if n= Ø 1 n*ƒac(n-1))(ƒac3)(λƒac.(ƒac3))(λn.if n= Ø 1 n*ƒac(n-1))
Контрольные вопросы
Приведите общую схему реализации аппликативных языков.
Какие новые конструкции введены в расширенное λ–исчисление по сравнению с традиционным?
Дайте определение глубины связывания переменной.
Постройте и редуцируйте граф разбора для выражения (λxy.+ x y)7((λx.x)12)
Приведите к суперкомбинаторному виду выражение (λx.+ x ((λy.x)5))
Какими средствами организуется рекурсия для суперкомбинаторных выражений?
Компиляция в коды абстрактных машин.
ФЯ→λ-выражение→код де Брейна→категориальная комбинаторная логика→
→код категориальных абстрактных машин (КАМ-код)
Кодирование по де Брейну.
Определение.
Пусть есть λ-выражение S и связное вхождение в него переменной х. Построим дерево разбора выражения S.
Глубиной связывания вхождения переменной х называется число λ-узлов дерева разбора между вхождением переменной и ее связыванием.
Пример.
λх.+х1 глубина связывания х равна 0.
λх.λу.+ху глубина связывания х равна 1, глубина связывания у равна 0.
λх. +х((λу.+ух)2)
0↑ 0↑1↑
Обозначение:
1. Заменим имена переменных на их глубину связывания, такие числа называются числами де Брейна.
Глубина связывания
переменных обозначается n- число де
Брейна. n
.
xi→ n
2. const c →’c
3. MN = S(M,N)-аппликация
4. λ.M = Λ(М) - λ-абстракция.
Примеры кодирования по де Брейну:
1
.
λх.λу.((+х)у)
→Λ(Λ(S(S(’+,1),0)))
@ @↑
2. (λх.+((
λх.x)3)x)4→S(Λ(S(S(’+,S(Λ(0),’3)),
0)),’4).
Вычисления по де Брейну: преобразования в соответствии с формализмами Де Брейна.
Замена: λ ~ Λ(), аппликация ~ S( , ), n ~ n.
Определение.
1)Пустая среда ( ) - есть среда,
2)если ρ - среда, х - переменная, то пара (ρ,х) есть среда
3) других сред нет.
Для хранения переменных используется среда.
Есть два способа получить значение переменной из среды:
по имени
по номеру (Fst,Snd).
По соглашению - среда конечна.
Среда наращивается справа. Самая внешняя переменная имеет 0-е значение числа
Де Брейна.
Определение.
Среда - упорядоченное множество пар “ переменная, значение”.
Кодирование в среде (ρ):
Шаг кодирования
const
[
c]
ρ→c - константа, вычисленная в среде
равна самой себе => 0(ρ, d) = d
среда
↓переменная n+1(ρ,d) = nρ
[x]ρ→ ρ(x) - х – переменная, ρ(x) - ее значение в среде ρ.
[(MN)] ρ→(([M] ρ)([N] ρ))
[ λх.М]ρ→[M]( ρ,x)
новая среда
Предполагается, что если в выражении есть свободные переменные, то они
явным образом находятся в среде.
