
- •Аппликативные вычисления в теории алгоритмов
- •Содержание
- •Введение
- •Построение λ- теории Основы теории формальных систем.
- •Понятие λ-исчисления.
- •Построение бестипового λ-исчисления.
- •Свободные и связанные переменные.
- •Подстановка.
- •Коллизия имен переменных.
- •Редукция
- •Погружение классических вычислений в λ-исчисление.
- •Нумералы.
- •Рекурсия
- •Рекурсия в λ-исчислении.
- •Контрольные вопросы
- •Бестиповая комбинаторная логика. Комбинаторы.
- •Построение комбинаторной логики
- •Базис k, s.
- •Базис I,b,c,s
- •Преимущества комбинаторов
- •Контрольные вопросы
- •Типизированные системы. Использование типов.
- •Расширенное λ-исчисление
- •Редукция графа
- •Алгоритм редукции графа (рг)
- •Суперкомбинаторы.
- •Алгоритм приведения λ-выражения к суперкомбинаторному виду
- •Упорядочивание параметров.
- •Способы реализации рекурсии.
- •Контрольные вопросы
- •Компиляция в коды абстрактных машин.
- •Кодирование по де Брейну.
- •Алгоритм преобразования λ-выражений по де Брейну.
- •Семантические равенства для кодов де Брейна:
- •Категориальная комбинаторная логика (ккл).
- •Общие свойства абстрактных машин.
- •Категориальная абстрактная машина (кам).
- •Цикл работы кам
- •Оптимизация кода кам
- •Дополнительные функциональные инструкции
- •Рекурсия в кам
- •Пример вычисления выражений на кам
- •Контрольные вопросы
- •Смешанные вычисления Процедура смешанных вычислений
- •Трансформационные семантики
- •Проекции Футамуры
- •Контрольные вопросы
- •Литература
Свободные и связанные переменные.
λх.А - переменная х связана в выражении с А.
Определение.
х входит связанно в (АВ) тогда и только тогда, когда х входит связанно в А или связанно в B.
Определение.
х входит связанно
в λу.А тогда и только тогда, когда (х ≡
у и х
А)
или х входит связанно в А.
На место свободной переменной возможна подстановка.
Определение.
Свободные переменные - это синтаксические объекты, встречающиеся обычно в некотором контексте, вместо которых можно подставлять другие синтаксические объекты.
Связанные переменные не допускают подстановки.
(λх.х)+у Можем что-либо подставить на место у и не можем подставить на место х.
П
ример.
х+(( λх.х)3)
свободная связанная
Подстановка.
Определение.
Для
термов
М и N и
переменной
х результат подстановки [N/x]M
-“ N на место х в М”
определяется по индукции по построению
терма М.
[N/x] x = N
[N/x] a = a
[N/x](M1M2) = ([N/x] M1)([N/x] M2)
[N/x](λх.M) = λх.M (т.к. х - связана)
[N/x](λу.M)
= ( λу.[N/x]М),
если у ≠ х, у
N
(или х
М),
иначе
=(α)(λz.[N/x][z/y]M),
если у ≠ х, у N и x M, где z- новая переменная, не входящая ни в N, ни в М.
Это запрещает значению [N/x](λх.M) зависеть от связанной переменной у.
Пример. [3/y](y) →3
[3/y](x) →x
[3/y](y+x) →3+x
[3/y](λу.y)7+x+y) → ((λу.y)7+x+3)
┌───║───↓
λу.((λу.y)7+x+y)3)
↑
┌─↓
(λу.y+34) (λx.x) →(((( λx.x)+)3)4) →((+3)4)
↑──────└───┘ ↑──┘
┌───↓ ┌───↓
Пример. (λx. λу. λz+ x(-yz))123→( λxyz.+x(-yz))123→(( λyz.+1(-yz))2)3→
↑_________│ ↑_______│
|
↓
→
(
λz.+1(-2z))3→+1(-23)
↑
Вначале вычисляется выражение в скобках.
Коллизия имен переменных.
Чтобы ввести новые имена используется α - конверсия, она позволяет изменять имена свободной переменной x.
(х+( λx.-х3)2)
не сможет дать какую-либо характеристику
переменной.
Использование (α) - конверсии позволит изменить имя свободной переменной.
(х+(λx.-х3)2)
(у+(λx.-х3)2) получим свободное вхождение
у и связное вхождение х.
Изменение статуса переменной при подстановке называется коллизией переменных.
Коллизия переменных может служить источником ошибок в вычислениях.
Пример
Прямая редукция терма (λxy.x)y дает неверный результат
(λxy.x)y →(β) λy.y,
а если предварительно переименовать связанную переменную y, получится верный результат:
(λxy.x)y →(α) (λxz.x)y →(β) λz.y ≠ λy.y.
Редукция
Определение.
Х сворачивается
к Y
Y
-результат замены части Х вида (λх.M)N
на [N/x]M:
X редуцируется к Y Y получается из Х с помощью конечной (возможно, пустой) последовательности сворачиваний и замен имен связанных переменных.
Выражение вида (λх.M)N называется редекс.
Подстановка N на место х в М [N/x]M называется сверткой.
λ выражение Р находится в нормальной форме, если не содержит ни одного редекса.
Пример. 1) λх.х - является нормальной формой
2)(λх.+х((λу.у)х)) → не является нормальной формой → (λх.+хх) - является нормальной формой.
Говорят, что терм Р редуцируется к терму Q, если существует доказательство такого выражения: Р → Q.
Теорема Черча-Россера:
Если х конвертируется
к у, т.е. х
у
(х редуцируется к у: х→у) и х конвертируется
(редуцируется) к z,то
а:
у→а и z→а (у
а
и z
а)
Следствие:
У λ - терма ! (единственная) нормальная форма.
Доказательство: (от противного)
Пусть у выражения
x существует две нормальные
формы a ,b:
х→a и х→b т.е.
а,b
(a ≠b): (a
b)
По Тh C: a→c, b→c т.к. а может редуцироваться, то а не является нормальной формой, то же самое можно сказать про b.
Либо не редуцируются, либо совпадают.
Двух нормальных форм существовать не может. #
Если а редуцируется к b (а→b) и b редуцируется к а (b→a),то говорят что а и b
конвертируются одно в другое (а b),т.е. а→b, b→a: а b- взаимно конвертируются.
Теорема.
λ–теория не противоречива, т.е. в ней нельзя вывести любые утверждения.
Теорема: (О комбинаторной полноте).
Пусть λ-
терм М содержит n свободных
переменных х1…хn,
тогда
λ-терм F:
х1…xn
не являются свободными переменными F
(X1…Xn
FV(F))
и при этом FX1…Xn=M
соответственно F=λx1…xn.M.