
- •Аппликативные вычисления в теории алгоритмов
- •Содержание
- •Введение
- •Построение λ- теории Основы теории формальных систем.
- •Понятие λ-исчисления.
- •Построение бестипового λ-исчисления.
- •Свободные и связанные переменные.
- •Подстановка.
- •Коллизия имен переменных.
- •Редукция
- •Погружение классических вычислений в λ-исчисление.
- •Нумералы.
- •Рекурсия
- •Рекурсия в λ-исчислении.
- •Контрольные вопросы
- •Бестиповая комбинаторная логика. Комбинаторы.
- •Построение комбинаторной логики
- •Базис k, s.
- •Базис I,b,c,s
- •Преимущества комбинаторов
- •Контрольные вопросы
- •Типизированные системы. Использование типов.
- •Расширенное λ-исчисление
- •Редукция графа
- •Алгоритм редукции графа (рг)
- •Суперкомбинаторы.
- •Алгоритм приведения λ-выражения к суперкомбинаторному виду
- •Упорядочивание параметров.
- •Способы реализации рекурсии.
- •Контрольные вопросы
- •Компиляция в коды абстрактных машин.
- •Кодирование по де Брейну.
- •Алгоритм преобразования λ-выражений по де Брейну.
- •Семантические равенства для кодов де Брейна:
- •Категориальная комбинаторная логика (ккл).
- •Общие свойства абстрактных машин.
- •Категориальная абстрактная машина (кам).
- •Цикл работы кам
- •Оптимизация кода кам
- •Дополнительные функциональные инструкции
- •Рекурсия в кам
- •Пример вычисления выражений на кам
- •Контрольные вопросы
- •Смешанные вычисления Процедура смешанных вычислений
- •Трансформационные семантики
- •Проекции Футамуры
- •Контрольные вопросы
- •Литература
Рекурсия в λ-исчислении.
Определение.
Выражение х является неподвижной точкой функции ƒ, если х = ƒх.
Теорема: ( О неподвижной точке).
1)Для
2)
-позволяет
определить неподвижную точку.
↑обьект ↑неподвижная точка
Пример. Y = λƒ.(λx.ƒxx)(λx.ƒxx)
YH = …H(YH)
# w = λx.ƒxx – введем этот объект и скажем, что х = ww =
┌──↓─↓
= (λх.ƒ(x x))(λx.ƒ(xx)) = ƒ((λx.ƒ(xx))(λx.ƒ(xx))) = ƒ(x) 1) доказано. #
↑
Определение.
Комбинатор
неподвижной точки - это терм М:
,
т.е. Мƒ - неподвижная точка.
Используется для выражения рекурсии в чистом виде (без самоссылки), т.к. в λ-исчислении не предусмотрено именование функций.
Пример. θ = (λxу.(у(хху))( λxу.у(хху))
С помощью комбинатора Y запишем и вычислим комбинатор какого-либо числа.
ƒac: λx.(if x=0,1,x* ƒac(-x1)) (λx .IF(=x0)1(*ƒac(-x1))
Вычислим факториал от 2: ƒac= λx.(… ƒac …) .
Применяя λ - абстракцию, получим ƒac(2) λƒac1.ƒacƒac1= (λƒac1.(λх.(… ƒac1…)))ƒac
Введем дополнительную функцию H, которая в определении факториала позволяет абстрагироваться от определения факториала.
По правилу (η) λƒac1.ƒacƒac1=ƒac и ƒac= λƒac1.(λх.(…ƒac1…)))ƒac.
H=λƒac1.( λх.( IF x=0,1,x*ƒac1(-x1))
ƒac=Hƒac YH=H(YH)
ƒac2=YH2
Шаг за шагом произведем эти вычисления.
┌───↓─────↓
(λƒ.( λх.ƒхх)( λх.ƒхх))( λƒac.( λn.(if n=0,1,n*ƒac(n-1))))2 (( λƒac.( λn.(if n=0,1,
n*ƒac(n-1))))(YH))2 (λn.(if n=0,1,n*(YH)(n-1)))2 if (2=0),1,2*(YH)(2-1)
2*((YH)1) 2*[H(YH)1] 2*[( λƒac.λn.if n=0,1,n*ƒac(n-1))(YH)1]
2*[ if 1=0,1,1*(YH)(1-1)] 2*[1*(YH0)] 2*1*(YH0)
2*1*[H(YH)0] 2*1*[( λƒacn.if n=0,1,n*ƒac(n-1))(YH)0]
2*1*[ if 0=0,1,n*[(YH)(0-1)]] 2*1*1=2.
Определения:
Бестиповое λ - исчисление является синтактико-семантической системой, т.е. семантика выражения полностью определяется его синтаксисом.
Синтаксис - способ записи выражения.
Семантика – смысл выражения. Алгоритм вычисления выражения полностью определяется способом его записи.
Все вычисления в символьных системах сводятся к подстановке одних идентификаторов вместо других, при этом они вначале вычисляются в среде, результат вычисления выражения изменяет исходную среду на новую.
Контрольные вопросы
Дайте определение формальной системы.
Приведите примеры символов и термов в λ–исчислении.
На основании каких постулатов λ–исчисления можно избавиться от коллизии переменных?
Какие аксиомы и правила вывода λ–исчисления позволяют применить функцию к ее аргументам?
На основании каких положений доказывается единственность нормальной формы?
С помощью каких средств могут быть заданы алгоритмы, использующие примитивную рекурсию?
Бестиповая комбинаторная логика. Комбинаторы.
Определение:
λ-выражение без свободных переменных называется комбинатором.
Позволяет избавиться от связанных переменных в λ-выражении.
Системы комбинаторов предназначены для выписывания тех же функций, что системы λ-конверсий, но без использования связанных переменных.
Пример. Ia = a
I: λx.x
Kab = a
K: λxy.x
Sabc = ac(bc)
S: λxyz.xz(yz)
Одни комбинаторы можно выражать через другие I = SKK.
Проверим это двумя способами.
1-ый способ:
Определение:
Комбинаторная характеристика – способ передачи информации об объекте в виде правил текстуального преобразования.
SKKa → Ka(Ka) → a
2-ой способ:
┌──↓ ┌─↓
(λxyz.xz(yz))( λxy.x)(λxy.x)→( λyz.( λxy.x)z(yz))( λxy.x)→((xy.z)(yz)→
↑─────────└────┘
→(λyz.z)( λxy.x)→ λz.z
Определение:
Базис формальной системы - минимальный набор объектов этой системы, через который можно с помощью аксиом и правил вывода выразить все остальные объекты формальной системы.
Определение:
Базисом бестиповой комбинаторной логики является набор комбинаторов: К,S и т.д.