Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в лямбда-исчисление.doc
Скачиваний:
32
Добавлен:
28.06.2014
Размер:
1.54 Mб
Скачать
  1. Моделирование в -исчислении конструктивных объектов и вычислимых функций.

    1. Представление конструктивных объектов

Пусть – подмножество замкнутых, т.е. не содержащих свободных вхождений переменных,-термов (-термов);– подмножество-термов в нормальной форме (-термов), а- их пересечение (множество-термов).

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

, где – арность-го конструктора для сорта. Для всехчерезобозначим взаимно-однозначные отображенияв множество-термов. Если, тобудем далее обозначать как «»и называть-образом объекта. Если для построения объектов различных сортов используются различные наборы конструкторов, то в обозначении-образа объектанет необходимости указывать его сорт, и он обозначается просто как «».

Определим образы объектов по общему правилу. Пусть . Тогда «»«»«»…«».

    1. Моделирование вычислимых функций.

-образом функции , вообще говоря, частичной, назовем такой-терм «», что для всех наборов значений аргументов,,…,«»«»«»…«»не имеет нормальной формы, если значениене определено, иначе«»«»«»…«»«». Возможность решения уравнений в-исчислении с помощью комбинатора Карри позволяет пользоваться рекурсивным определением образов моделируемых функций. Конструкция же образа «» любого объектатакова, что терм вида«»фактически осуществляет разбор случаев конструкции объекта, так как«»«»«»…«», если. Следовательно, термдолжен определять необходимое значение для этого случая как функцию от образов тех объектов, из которых построен объектс помощью-го из конструкторов для объектов сорта.

Для освоения техники описанного моделирования в -исчислении различных конструктивных объектов и функций на этих объектах, в том числе и предикатов, познакомимся с некоторыми примерами. Будем, как и ранее, использовать имена, начинающиеся со строчных букв для обозначения сортов объектов, а имена, начинающиеся с прописных букв, для обозначения конструкторов. В случае, когда конструируемые объекты имеют общепризнанное представление, будем на его основе определять вводимые конструкторы. Арность конструкторов при необходимости указывается в скобках в качестве верхнего индекса.

    1. Примеры.

Пример 1. Сорт (логические значения).

. Используется множество конструкторов , где.

«»,

«».

Заметим, что образы логических значений играют роль функций выбора значения одного из двух аргументов, «» – первого, а «» – второго, что позволяет использовать это при моделировании условных определений.

Действительно, «», а

«».

Примеры логических функций:

«»«»«»«», «».

«»«»«»«», «».

«»«»«», «»«»«».

Пример 2. Сорт (натуральные числа).

. Используется множество конструкторов , где,.

«»,

«»«».

Примеры арифметических функций:

«»«»«»«», «»«». В этом рекурсивном описании образа функции сложения натуральных чисел предполагается, что вместо переменнойбудет подставлен образ числа, на единицу меньшего числа, образ которого подставляется вместо переменной. Явное решение этого уравнения может быть получено так:

«»

«»«»«»«», «»«»«»«».

«»«»«»«», «»«». В этом примере используется упомянутый выше прием условного определения.

«»«»«»«», «»«»«». Описание образа функции умножения натуральных чисел.

«»«»«»«», «»«»«»«». Описание образа функции возведения в степень для натуральных чисел.

«»«»«»«», «»«»«»«». Описание образа функции вычисления номера упорядоченной пары натуральных чисел диагональным способом нумерации.

Пример 3. Сорт (массивы – последовательности, кортежи – натуральных чисел любой конечной длины),. Для построения массивов используется множество конструкторов, где,

«»,

«»«»«».

Примеры функций, оперирующих с массивами.

«»««»«»«»,

«»«». Описание образа функции сцепления двух последовательностей в одну.

«»«»«»«», «»«». Описание образа функции включения числа в качестве первого элемента в заданный список.

«»«»«», «»«»«». Описание образа функции, изменяющей порядок следования элементов последовательности на обратный.

«»«»

«»«». слияния двух упорядоченных по неубыванию последовательностей натуральных чисел в одну общую неубывающую последовательность.

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

«»«»«».

Заметим, что «»«»«» и«» «»«».

«»«»«».

«»«»«»«». Описание функции, преобразующей массив чисел в пару массивов примерно из одинакового числа элементов.

«»«»«»«»«»«»«». Описание функции сортировки по неубыванию массива натуральных чисел методом слияния.

Пример 4. Сорт (-термы).Для построения-термов используется множество конструкторов, где

, и.

«»«»,

«»«»«»,

«»«»«».

«»«»«»«»

«»«»«»«». Описание предиката, устанавливающего, находится-терм в нормальной форме или нет.

«»«»«»«».

«»«»«»«»«»«»«»«»Описание предиката, устанавливающего отсутствие свободных вхождений переменной с заданным номером в заданный терм, где

«»«»«»«»«». Описание предиката неравенства двух натуральных чисел.

«»«»«». Описание функции, вычисляющей наименьший номер переменной, не имеющей свободных вхождений в заданный терм, с помощью вспомогательной функции:

«»«»«».

«»«»

«»«»«»«»«»«».

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

«»«»«»«». Описание частичной функции, вычисляющей нормальную форму заданного-терма.

«»«»

«»«»

«»«»

«».

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

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

«»«»«»«».

«».

«»«»««»».