- •2 . Сетевые языки функционального и логического программирования
- •Сетевые языки функционального и логического программирования
- •Графические представления схем -отношений.
- •Базисы и сети.
- •Элементарные сети.
- •Операции композиции сетей.
- •Свободные и связанные сети. Вложение сетей.
- •Сетевые языки.
- •Сетевая интерпретация рекурсивных схем -отношений.
- •Реляционная интерпретация сетевых языков.
- •Примеры задания сетевых языков и их реляционной интерпретации.
- •Формализация отношений реляционного включения и эквивалентности сетевых языков.
- •Литература
- •Оглавление
- •41 F logol:язык и система функционально-логического программирования
Сетевая интерпретация рекурсивных схем -отношений.
Пусть – рекурсивная схема-отношений. Преобразуем ее к эквивалентной форме задания в виде конечной системы уравнений вида , такой, что
для всех переменныеИспользуя дистрибутивность объединения относительно операций последовательной и параллельной композиции, преобразуем все , , к виду , где все – простые схемы -отношений, т.е. в них не используются операция объединения и оператор рекурсии;
для любой интерпретации свободных переменных – первый компонент кортежа – минимального решения этой системы уравнений в интерпретации .
Сетевая интерпретация рекурсивных схем определяется так:
Определение 2.16. , где
,
,
,
.
Полезной, но не обязательной, является последующая “чистка” нетерминального базиса.
Пусть – пустое подмножество. Вычислим предел(его существование очевидно) последовательностигдесуществует правило, такое, что все элементы сетинетерминальных сортов являются элементами сортов из. Если(– аксиома грамматики), то– пустой язык, в противном случае в множестве правилоставим только те из них, в которых используются исключительно сорта из.
Пусть . В качестве нового нетерминального базиса возьмем предел последовательности, гдесуществует правилотакое, что сеть содержит элемент сорта из . В множестве правил снова оставим только те правила, в которых используются исключительно сорта из построенного множества. Таким образом, в нетерминальном базисе останутся только те нетерминальные символы, которые «нужны» для определения аксиомы.
Реляционная интерпретация сетевых языков.
Пусть – сетевой язык в базисе, заданный КС-грамматикой. Фиксируем интерпретациюэлементов терминального базисатак, что для всех¤¥ – -отношение арности на носителе.
Определение 2.17. Интерпретация ¤¥ сетевого языка , индуцированная интерпретациейэлементов терминального базиса, есть
¤¥.
Функция называетсяразметкой точек сети; допустимые разметки должны удовлетворять требованиям, предъявляемым к точкам элементами сети и ее -графом. Пары кортежей допустимых разметок входных и выходных точек сети являются элементами определяемого-отношения.
Теорема 2.4. ¤¥=¤¤¥¥ для всех и для всех интерпретаций .
Отсюда следует важный вывод: сетевые КС-грамматики могут рассматриваться как форма задания рекурсивных схем -отношений.
В заключение покажем, как для заданного сетевого языка построить сетевой язык, такой, что для любой интерпретации¤¥ представляет -отношение, обратное -отношению ¤¥. Пусть - арность языка. Для построения грамматикиязыкапо заданной грамматикеязыканужно:
изменить арность аксиомы грамматикина;
во всех правилах вида в сети поменять местами кортежи входных и выходных точек;
все элементы сетей (правых частей всех правил) вида заменить на элементы.
Примеры задания сетевых языков и их реляционной интерпретации.
Пусть и задана сетевая грамматика, где правила грамматики P показаны на рис. 2.7.
Тогда при ¤¥,¤¥¤¥ , т.е. является графиком функции «факториал». Нетерминальные сортаиинтерпретируются при этом как сложение и умножение, соответственно.
На рис. 2.8 изображена сеть , для которой¤¥, при следующей интерпретациисортов ее элементов на множестве натуральных чисел:¤¥,¤¥,¤-¥,¤¥,¤¥
На рис. 2.9 представлены правила сетевой грамматики, определяющей конструктор упорядоченной пары натуральных чисел в базисе, интерпретация элементов которого дана в предыдущем примере, на основе «диагонального» метода нумерации.
Рис. 2.10 представляет правила сетевой грамматики в терминальном базисе . При интерпретации элементов базиса как нуля, конструктора следующего числа и сложения, соответственно, нетерминальный сортинтерпретируется как функция числа сочетаний.
Правила сетевой грамматики, показанные на рис. 2.11, определяют операцию сцепления двух списков при интерпретации сортакак конструктора пустого списка, а– как конструктора двоичного упорядоченного дерева (-операции по Мак-Карти).
На рис. 2.12 приведены правила сетевой грамматики в терминальном базисе , сетевой язык которой представляет (для нетерминального сортакак аксиомы грамматики) регулярную схему, которой в традиционной теории формальных языков (рассматривая терминальные сорта элементов как буквы терминального алфавита, а операцию последовательной композиции как конкатенацию) соответствует язык, не являющийся даже контекстно-свободным. Построение отдельных сетей этого языка иллюстрирует рис. 2.5, приведенный выше как пример выполнения операции последовательной композиции.
Еще один пример приведен на рис. 2.13. Интерпретация терминальных сортов элементов такова (носитель – множество вещественных чисел):¤¥,¤¥,¤¥,¤¥,¤¥,¤¥,¤¥,¤¥,¤¥. Нетерминальный сортв этом случае интерпретируется как функция с параметрами,, вычисляющая значение определенного интегралас точностью. Подынтегральная функция представлена нетерминальным сортом, для которого предполагается наличие определяющих эту функцию правил. Интеграл вычисляется рекурсивно, методом трапеций с переменным шагом. Фактически, носитель в этом примере – множество кодов-представлений чисел в доступном формате вещественных чисел, а интерпретация терминальных символов – реализация соответствующих функций и предикатов с доступной точностью над представлениями чисел в этом формате.
В этом примере рассматриваются операции доступа к памяти типа «куча» (память типа «куча» является одним из основных компонентов архитектуры -машины, описанной в[ ]. Пусть нетерминальный сорт представляет конструктивное счетное множество «адресов»,обозначает множество «данных», которые могут храниться в памяти, а– множество возможных «состояний» памяти, представленное структурой, показанной на рис. 2.14, где– конструктор «пустой» памяти (с пустым графиком), а– произвольный бинарный конструктор. Состояние памяти – множество состояний «ячеек» памяти с различными адресами. Состояние ячейки включает адрес ячейки и «данное», хранящееся в ячейке.
Определим три операции:
функцию адресного чтения: ; если, то– не определено;
функцию адресной записи: ; если, то– не определено;
отношение (неоднозначное соответствие из в) инициализации новой ячейки памяти:
.
Правила сетевой грамматики, определяющие эти операции, приведены на рис. 2.15.
В этом примере (рис. 2.16) рассматривается та же задача, что и в предыдущем. Однако для взаимно-однозначного представления всех объектов – адресов, данных и состояний памяти используются натуральные числа (терминальный базис ). Для представления состояний памяти используются методы нумерации элементов конструктивных множеств, в частности, сведение разнообразия конечных подмножеств натуральных чисел к разнообразию кортежей конечной длины из натуральных чисел. Для построения номеров различных конструкций будем использовать суперконструкторупорядоченной пары на множестве натуральных чисел, определенный в примере 3. Помимо операций,и, определяется вспомогательная функция, используемая при нумерации конечных подмножеств натуральных чисел.