Часть 5. S-FLOGOL-система функционально-логического программирования
.pdf
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
