Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТПфунк_Лекція_05_06_07.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
214.02 Кб
Скачать

6.1. Понятие комбинатора

Для того, чтобы формально определить комбинатор, необходимо ввести понятие свободной и связанной переменной в ламбда-выражении.

Переменная x называется свободной в ламбда-выражении (терме) вида λx.A, если она не имеет вхождений в терм A; в противном случае переменная x называется связанной.

Для составных ламбда-выражений понятие связанной и свободной переменной определяется индукцией по построению с учетом возможных способов комбинирования, а именно, операций аппликации и абстракции.

Определение 6.1. Комбинатором называется ламбда-выражение (терм), не содержащее связанных переменных.

6.2. Комбинаторная логика как формальная система

Согласно математической практике, необходимо определить следующие элементы теории:

  • алфавит;

  • утверждения;

  • аксиомы;

  • правила вывода.

Напомним, что под алфавитом понимается множество символов, допустимых в нотации той или иной формализации.

Утверждения устанавливают правила образования терминальных символов математической теории.

Под аксиомами понимаются элементарные утверждения, которые считаются истинными без необходимости доказательства истинности.

Правила вывода определяют правила преобразования одних символов (объектов), исследуемых в теории, в другие объекты.

Рассмотрим алфавит комбинаторной логики.

Допускаются элементы четырех видов:

  1. константы;

  2. переменные;

  3. комбинаторные выражения (или, иначе, термы);

  4. специальные символы.

При этом принимаются следующие обозначения.

Константы c1, c2, ... обозначаются малыми буквами латинского алфавита, возможно, с индексами.

Переменные x, y, ... обозначаются малыми буквами латинского алфавита, возможно, с индексами.

Выражения (или, иначе, термы) M, N, ... обозначаются заглавными буквами латинского алфавита, возможно, с индексами.

Допускается использование следующих специальных символов (взяты в кавычки и разделены запятыми): "(", ")".

6.2.1. Правила конструирования допустимых для заданного алфавита комбинаторных выражений (термов).

Комбинаторные термы строятся по индукции (порядок построения можно считать определением) следующим образом.

Базис индукции: любая переменная или константа является комбинаторным термом по определению.

Шаг индукции: если M, N - произвольные комбинаторные термы и x - произвольная переменная, то справедливо, что выражение (MN) является допустимым комбинаторным термом.

Комбинаторное выражение (MN) обозначает операцию аппликации (или применения функции к аргументу).

Примем, что никакой другой набор символов не является допустимым комбинаторным термом.

6.2.2. Аксиомы комбинаторной логики

После определения алфавита и порядка построения допустимых комбинаторных выражений посредством операции аппликации, перечислим аксиомы комбинаторной логики.

Отметим, что символ "=" понимается в комбинаторной логике как обозначение отношения конвертируемости, которым связываются соединенные этим значком комбинаторные термы. Конвертируемость двух комбинаторных термов означает, что один комбинаторный терм может быть преобразован к другому. Отношение конвертируемости моделирует переобозначения и во многих отношениях, как отмечалось ранее, напоминает процесс программирования.

Следующие аксиомы задают свойства отношения конвертируемости:

Аксиома (I)

Ix = x

существования комбинатора (функции) тождества, т.е. наличие тождественного преобразования, при котором любой аргумент отображается сам в себя

Аксиома(K)

Kxy = x

существование комбинатора (функции) взятия первой проекции, т.е. первого элемента упорядоченной пары или первого элемента списка*

Аксиома (S)

Sxyz = xz(yz)

попарного связывания третьего элемента с первыми двумя

*Аксиома (K) близка языкам функционального программирования, оперирующим списками, и соответствует фундаментальной операции взятия головного (первого) элемента списка.

Перечислим правила вывода комбинаторных термов, которые задают характеристики отношения конвертируемости и их свойства:

(μ)

если a=b, то ca=cb

(ν)

если a=b, то ac=bc

(ρ)

a=a

рефлексивность - конвертируемость произвольного комбинаторного выражения к самому себе

(σ)

если a=b, то b=a

симметричность - двунаправленность вывода комбинаторных выражений посредством конверсии

(τ)

если a=b и b=c, то a=c

транзитивность - возможность опускать промежуточные этапы конверсии для цепочек вывода

Как видно, отношение конвертируемости обладает, в частности, свойствами рефлексивности, симметричности и транзитивности.