Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Часть 5. S-FLOGOL-система функционально-логического программирования

.pdf
Скачиваний:
18
Добавлен:
28.06.2014
Размер:
721.37 Кб
Скачать

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

5.S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-

ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

5.1.Архитектура и общие принципы реализации FLOGOL-системы функционально-логического программирования.

На рис. 5.1. представлена структурная схема FLOGOL -системы

функционально-логического программирования, построенной на основе

теории направленных отношений.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Транслятор

 

 

 

 

Библиотека

Компилятор

 

 

Библиотека

 

 

 

 

 

 

направленных

запросов

 

 

объектных

 

 

1:1

 

 

 

 

отношений

 

 

 

модулей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Система

 

 

Библиотека

 

Графический

 

 

 

Библиотека

 

 

 

исполнения

 

 

 

 

 

 

 

 

 

 

 

арифметич.

 

редактор

 

 

 

исходных

 

 

 

запросов

 

 

 

 

 

 

 

 

 

 

 

функций

 

 

 

 

 

 

 

 

 

 

модулей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Система

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Библиотека

Программ-я

 

 

 

 

 

 

 

 

 

 

 

Текстовый

 

 

 

внешних

общего

 

 

 

 

 

 

 

 

 

 

 

редактор

 

 

 

интерпретаций

назначения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5.1. Структура FLOGOL -системы функциональнологического программирования.

Кратко охарактеризуем назначение ее основных компонентов.

Графический редактор – основной инструмент при разработке

FLOGOL -программ. Назначение – создание и редактирование отдельных объектных модулей, хранимых в библиотеке объектных модулей, и фор-

мирование запросов на вычисление отношений. Обеспечивает контроль взаимных ссылок и реализацию сервисных функций по отражению струк-

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

работки объектов описания – доменов и схем отношений, контролю види-

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

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

нию их характеристик, графической поддержке разработки определений схем отношений, как в композиционной, так и в сетевой форме. Графиче-

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

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

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

Запрос – замкнутое (не содержащее свободных вхождений оператор-

ных переменных сверток) реляционное выражение в корневом домене не-

которого модуля. Сформированный в объектной форме в рабочем поле графического редактора запрос на вычисление отношения преобразуется в систему сетевых определений (фактически, в сетевую КС-грамматику) с

помощью компилятора запросов. При этом для поиска описаний конкрет-

ных, в общем случае, индексированных отношений по объектному пред-

ставлению модулей осуществляется решение систем арифметических уравнений относительно операторных переменных в свертках, компоновка повторных определений на одном структурном уровне, уточнение и под-

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

дования при переопределении отношений во вложенных доменах, форми-

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

терпретациях терминальных (не определенных в программе) отношений,

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 2

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

устанавливаются связи с библиотекой внешних интерпретаций. Интер-

фейс с этой библиотекой и с библиотекой внешних арифметических функ-

ций осуществляется средствами любого языка программирования общего

назначения, реализованного в операционной среде Windows. Результат ра-

боты компилятора запросов помещается в библиотеку отношений. Про-

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

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

зация параллелизма при вычислениях зависит от возможностей конкрет-

ной вычислительной установки.

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

полнения запросов – сложная структура данных с перекрестными ссылка-

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

ваний сетей, эффективный поиск редексов и применение правил редукции,

а также других процедур, реализуемых в поддерживаемых системой моде-

лях вычислений. На рис. 5.2. показаны фрагменты представления сетевой грамматики (аналогично представлено и рабочее множество сетей н ) при реализации data-flow-модели вычислений с внешней интерпретацией тер-

минальных сортов элементов сетей.Для понимания некоторых компонен-

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

отно-

шения

«подчиненности» на множестве Bн нетерминальных сортов

 

 

 

*, если и только если существует правило

 

B

элементов: ,

 

 

сетевой грамматики, такое, что сеть

B содержит элемент сорта

 

.

 

 

 

 

– аксиома сетевой грамматики.

Пусть

{ , | , *}, где

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 3

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

список входов сети

 

 

к точкам сети

 

список выходов сети

 

Сеть – правая часть правила

к точкам сети

 

 

 

нетерминальный сорт (см. рис. 4.5)

 

 

к элементам множеств сетей –

 

 

правых частей правил

 

«квота»

 

н

 

 

 

 

список нетерминалов

 

 

 

 

 

список входных точек

 

к точкам сети

нетерминала

 

 

 

 

список выходных точек

 

 

нетерминала

 

«вес» точки

к точкам сети «вес» точки

 

 

точки

 

 

сети

 

iвх

iвх

входы элементов (выходы сети)

 

iвых

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

iвых

 

 

 

 

 

 

 

выходы элементов (входы сети)

 

 

 

 

 

 

«готовность»

 

терминальные

 

 

 

т

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

элементы сети

 

 

 

 

 

 

 

 

 

 

 

 

список входных точек терминала

список выходных точек терминала

 

терминальный сорт

R

список смежных

'( R )

"( R )

 

 

точек в dif-графе

 

 

R

 

 

интерпретация

 

R

Рис. 5.2. Представление сетей – правых частей правил грамматики.

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 4

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

Построим

– наибольшее отношение эквивалентности на Bн , такое, что

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, а

– наименьшее отношение на множестве классов эквивалентно-

сти

по

 

отношению

 

 

(на фактор-множестве

Bн / ),

такое,

что

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/ ,

/ *.

Представление соответствующего

,

 

 

 

ациклического орграфа с множеством вершин – подмножеством

Bн /

и

множеством дуг

показано на рис. 5.3. В начальном состоянии множе-

ство

н

 

подлежащих вычислению сетей содержит единственную одно-

элементную сеть

 

S1 ,

где

– аксиома сетевой грамматики. Поэтому в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

начальном состоянии счетчики ссылок CRu для всех вершин

u

орграфа

отличны от нуля

 

и имеют следующие значения:

CR / 1,

а для всех

остальных

u

 

 

 

 

 

 

 

}| . В дальнейшем эти счетчики от-

CRu |{u

| u , u

слеживают количества элементов нетерминальных сортов из соответству-

ющего класса эквивалентности во всех сетях множества н . При обнуле-

нии некоторого счетчика CRu ' , во-первых, из грамматики исключаются все правила для нетерминальных сортов из данного класса эквивалентно-

сти

u , а, во-вторых, уменьшаются на 1 все счетчики CRu для таких u ,

что

 

u ,u . Исключение «лишних» нетерминальных сортов, которые

не могут появиться в сетях, выводимых из аксиомы грамматики, и соот-

ветствующих правил сетевой грамматики осуществляется при формирова-

нии рассматриваемого орграфа.

Для того чтобы представление не зависело от используемого при ин-

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

Для определения «готовых» к выполнению терминальных функциональ-

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

лении этих счетчиков ссылки на соответствующие терминальные элементы

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 5

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

передаются для вычислений в специальный список. Ссылки на исполняе-

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

множество сетей – правых частей правил для сорта (см. рис. 5.2)

 

сеть S 1

 

сеть S n

u

'( )

"( )

Нетерминальный сорт u

 

 

 

множество u

нетерминальных сортов

CRu

 

класс эквивалентности u Bн /

u

 

 

 

 

 

 

отношение

CRu '

 

класс эквивалентности

u '

Рис. 5.3. Представление нетерминальных сортов сетевой грамматики. части правил сетевой грамматики.

5.2.Язык функционально-логического программирования S-FLOGOL

Язык функционально-логического программирования S-FLOGOL

(Small Function and LOGic Oriented Language) является представительным подмножеством FLOGOL-а – языка программирования высокого уровня чисто декларативного типа [Фальк, 2001], семантика и реализация которо-

го опираются на теорию направленных отношений. Реализация языка S-

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 6

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

FLOGOL не только является существенным шагом на пути к полной реа-

лизации языка FLOGOL, но и имеет самостоятельное значение, прежде всего, для решения задач искусственного интеллекта. В первой части до-

клада формулируются основные концепции построения языка S-FLOGOL

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

танных инструментальных средств поддержки разработки и отладки S- FLOGOL-программ.

5.2.1. Особенности языка S-FLOGOL.

S-FLOGOL-система функционально-логического программирования,

как уже указывалось, построена на базе теории направленных отношений

[1]. Напомним определение ее базового понятия: направленным отноше-

нием арности (n',n"),n',n" 0.. , на непустом множестве данных D назы-

вается график соответствия из Dn' в Dn" . Большинство семантических примитивов языков функционального и логического программирования

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

шений определенной арности, возможно, дополнительно наделенными не-

которыми фундаментальными свойствами, например, тотальностью и функциональностью, относящимися как к самому представляющему от-

ношению, так и к обратному ему отношению.

Важную роль в теории направленных отношений играет сетевое пред-

ставление схем направленных отношений. Сетевое представление обладает многими преимуществами по отношению к заданию схем в виде формул:

простотой, наглядностью и др. Оно является одновременно и естественной

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 7

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

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

шений. Для основного класса рекурсивных схем направленных отношений их сетевое представление в форме сетевого языка (множества сетей в неко-

тором терминальном базисе элементов) задается с помощью контекстно-

свободных сетевых грамматик [3].

Программа на языке S-FLOGOL имеет форму запроса к информаци-

онной базе системы. Информационная база представляет собой многомо-

дульную структуру; отдельные модули, как правило, содержат описания объектов, относящихся к определенной содержательной области – домену.

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

Для одних, терминальных, отношений описание объявляет лишь их имена и некоторые характеристики – арность и наличие упомянутых выше свойств отношений, а другие, нетерминальные, могут быть определены в рекурсивной форме с помощью реляционных выражений. Фактически та-

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

стемы уравнений [1]. Чисто логическая связь объектов, представленных в базе направленными отношениями, задается описанием реляционных вы-

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

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

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

ми натуральными числами, а фактические значения параметров задаются в

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 8

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

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

ров свертки, используемых при построении тел модулей. В языке нет яв-

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

нее определенной схеме и к отношению, составляющему правую часть но-

вого определения, обеспечивая, таким образом, принцип «наследования».

Описав ранее схемы «универсальных» отношений различных типов, мож-

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

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

ляет применить описанную в разделе 2 технологию обработки S-FLOGOL-

программ. С точки зрения выразительных возможностей языка это ограни-

чение не столь существенно. В имени наследуемой схемы и для формиро-

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

сок индексов и (или) список фактических параметров совпадает со спис-

ком индексов и списком фактических параметров определяемого отноше-

ния. Одной из основных особенностей построения конструкций языка яв-

ляется то, что, за исключением элементов внешнего оформления синтакси-

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

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

ляют отдельные натуральные числа, индексных выражений – кортежи натуральных чисел, параметрических выражений – множества пар <номер

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 9

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

параметра, отношение – фактическое значение параметра>, реляционных выражений (правых частей определений схем и фактических значений па-

раметров определений) – направленные отношения, доменных выражений

– множества описаний схем отношений, и т.д. Все типы выражений стро-

ятся по единому шаблону: задаются формы первичных выражений данного типа, определяются связки унарных и бинарных операций (для последних задаются приоритеты), во всех типах выражений могут использоваться конструкции выбора if-then-else и case, а также оператор свертки по лю-

бой из бинарных операций рассматриваемого типа. Помимо операции,

оператор свертки предполагает задание: а) операторной переменной, б)

выражения, определяющего последовательность натуральных чисел – зна-

чений операторной переменной, и в) выражения рассматриваемого типа, в

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

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

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

раметрами, что существенно расширяет возможности использования опе-

раторов свертки. Полные имена отношений, включающие идентификатор,

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

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 10