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

6.2.3.Умолчания

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

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

1. Скобки для операции аппликации восстанавливаются по ассоциации влево, например:

XY = (XY), XYZ = ((XY)Z), ...

2. Избыточные скобки могут опускаться, например:

(XY) = XY, ((XY)Z) = XYZ, ...

6.2.4. Синтаксис выражений комбинаторной логики

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

Задать синтаксис языка возможно, перечислив описание его конструкций с использованием метаязыка, например, с помощью форм Бэкуса-Наура или БНФ. БНФ созданы в 60-х годах Дж. Бэкусом (John Backus) и развиты П. Науром (Peter Naur) как метаязык для формализации синтаксиса языка программирования ALGOL 60. Впоследствии БНФ получили широкое распространение и в настоящее время являются основной нотацией для формализации синтаксиса языков программирования (мы будем пользоваться БНФ для формализации синтаксиса языка программирования SML).

В нотации БНФ символ "::=" интерпретируется словами "может иметь вид", а символ "|" - словом "или". Определяемое понятие записывается слева от значка "::=", а определяющие понятия записываются в угловых скобках справа от значка "::=".

Формализуем синтаксис выражений комбинаторной логики (или комбинаторов).

БНФ-описание комбинатора имеет вид:

<комбинатор> ::= K | S | (<комбинатор> <комбинатор>)

БНФ-описание терма комбинаторной логики, возможно, содержащего переменные, имеет вид:

<комбинаторный терм> ::= K | S | <переменная> |

(<комбинаторный терм> <комбинаторный терм>)

Примеры комбинаторов для представленной формальной системы комбинаторной логики. Рассмотрим характеристические соотношения для комбинаторов, которые впоследствии окажутся теоретически интересными и практически полезными в данном курсе (некоторые из соотношений совпадают с введенными ранее аксиомами):

(I)

I a = a

комбинатор тождества

(K)

К ab = a

комбинатор первой проекции (иначе именуемый канцелятором, т.е. "отменяющим" "выполнение" всех "инструкций", кроме первой)

(S)

S abc = ac(bc)

комбинатор-коннектор - определяет порядок "связывания" "инструкций" программы таким образом, что третья "инструкция" "распределяется" по паре из двух первых

(B)

B abc = a(bc)

комбинатор композиции - образует последовательность комбинаторных термов и служит для объединения более элементарных "инструкций" в более сложные, а в итоге - в "программы"

(C)

C abc = acb

пермутация (перестановка)

(W)

W xy = xyy

дублирование аргументов