Конвертируемость
Аксиомы ламбда-исчисления
Выражения (термы)
Специальные символы
Константы
Алфавит ламбда-исчисления.
Допускаются элементы четырех видов:
1. константы;
2. переменные;
3. специальные символы;
4. выражения (или термы).
При этом принимаются следующие обозначения.
Константы c1 , c2 , ... обозначаются малыми буквами латинского алфавита, возможно, с индексами.
5.1.2. Переменные
Переменные x, y, ... обозначаются малыми буквами латинского алфавита, возможно, с индексами.
Допускается использование следующих специальных символов (взяты в кавычки и разделены запятыми): "(", ")", "."
Выражения (или, иначе, термы) M, N, ... обозначаются заглавными буквами латинского алфавита, возможно, с индексами.
Рассмотрим далее порядок конструирования допустимых для заданного алфавита ламбда-выражений, или, иначе, термов.
Ламбда-термы строятся по индукции (порядок построения можно считать определением) следующим образом.
Базис индукции: любая переменная или константа является ламбда-термом по определению.
Шаг индукции: если M, N – произвольные ламбда-термы и x – произвольная переменная, то справедливо, что:
1) ламбда-выражение (λx.M) является допустимым ламбда-термом и обозначает операцию абстракции;
2) ламбда-выражение (MN) является допустимым ламбда-термом и обозначает операцию аппликации (или применения функции к аргументу).
Будем считать, что никакой другой набор символов не является допустимым ламбда-термом.
После определения алфавита и порядка построения допустимых ламбда-выражений посредством операций аппликации и абстракции перечислим аксиомы ламбда-исчисления.
Отметим, что символ "=" понимается в ламбда-исчислении как обозначение отношения конвертируемости, которым связываются соединенные этим значком ламбда-выражения.
Конвертируемость двух ламбда-выражений означает, что одно ламбда-выражение может быть преобразовано в другое. Отношение конвертируемости моделирует переобозначения и во многих отношениях, напоминает процесс программирования.
Следующие аксиомы задают свойства отношения конвертируемости:
Аксиома (a) о возможности подстановки терма z (конкретизации ?) вместо всех вхождений переменной x в ламбда-выражение a.
(a) λx.a = λz.[z/x]a;
Аксиома (β) о возможности редукции (то есть упрощения вида) ламбда-выражения в левой части путем подстановки b вместо всех вхождений переменной x в ламбда-выражение a.
(β) (λx.a)b = [b/x]a.
Фактически редукция означает возможность создания (в ламбда-исчислении или на языке программирования) одной функции (ламбда-выражения) как сокращенной записи другой функции (ламбда-выражения).
Перечислим правила вывода термов, которые задают характеристики отношения конвертируемости:
(μ) | если a=b, то ca=cb | |
(ν) | если a=b, то ac=bc | |
(ξ) | если a=b, то λx.a=λx.b | |
(ρ) | a=a | рефлексивность - конвертируемость произвольного ламбда-выражения к самому себе |
(σ) | если a=b, то b=a | симметричность - двунаправленность вывода ламбда-выражений посредством конверсии |
(τ) | если a=b и b=c, то a=c | транзитивность - возможность опускать промежуточные этапы конверсии для цепочек вывода |
Именно в силу фундаментальности отношения конвертируемости для ламбда-исчисления эта теория известна также под другим, более точно характеризующим ее суть названием, а именно, как исчисление ламбда-конверсий.