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

кандидата физико-математических наук
Соловьев, Игорь Павлович
город
Санкт-Петербург
год
1995
специальность ВАК РФ
05.13.11
Автореферат по информатике, вычислительной технике и управлению на тему «Разработка и экспериментальная реализация интеграции рекурсивных образцов и функций в синтаксическую среду языка пролог»

Автореферат диссертации по теме "Разработка и экспериментальная реализация интеграции рекурсивных образцов и функций в синтаксическую среду языка пролог"

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

На правах рукописи

Соловьев Игорь Павлович

РАЗРАБОТКА И ЭКСПЕРИМЕНТАЛЬНАЯ РЕАЛИЗАЦИЯ ИНТЕГРАЦИИ РЕКУРСИВНЫХ ОБРАЗЦОВ И ФУНКЦИЙ В СИНТАКСИЧЕСКУЮ СРЕДУ ЯЗЫКА ПРОЛОГ

05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов, систем и сетей

АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук

Санкт-Петербург 1995

Работа выполнена на кафедре математического обеспечения ЭВМ математико-механического факультета Санкт-Петербургского государственного университета.

Научный руководитель: доктор физико-математических наук,

профессор Косовский Николай Кириллович

Официальные оппоненты: доктор физико-математических наук,

профессор БельтБКов Анатолий Петрович

Ведущая организация: Санкт-Петербургский Институт информатики

и автоматизации РАН

заседании диссертационного совета К 063.57.54 по защите диссертации на соискание ученой степени кандидата наук в Санкт-Петербургском государственном университете по адресу: 198904, С.-Петербург, Старый Петергоф, Библиотечная пл. 2, математико-механический факультет СП6ГУ.

С диссертацией можно ознакомиться в научной библиотеке Санкт-Петербургского государственного университета по адресу: 199034, С.-Петербург, Университетская набережная, 7/9.

кандидат технических наук, доцент Керов Леонид Александрович

Защита состоится

1995 года

на

Автореферат

Ученый секретарь диссертационного совета доцент

Б. К. Мартыненко

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

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

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

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

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

з

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

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

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

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

1992), на международной конференции "Математика, компьютер, управление и инвестиции" (Москва, 1993), на философской конференции "Научная и техническая теория: закономерность и интерпретация" (С.-Петербург, 1993), на 10й международной конференции по логическому программированию (Будапешт, Венгрия,

1993), на международной конференции по компьютерным системам и прикладной математике (С.-Петербург, 1993), на международной конференции "Актуальные проблемы фундаментальных наук" (Москва,

1994), на международной конференции по математическим методам и средствам в компьютерном моделировании (С.-Петербург, 1994), на 2й международной конференции "Математические алгоритмы" (К. Новгород, 1995), были представлены на международной конференции по автоматам и формальным языкам (Шалготарьян, Венгрия, 1993), а также на семинарах кафедры математического обеспечения ЭВМ С.-Петербургского университета. Язык Проф и его средства спецификации в течение двух лет изучались на учебном семинаре студентами кафедры математического обеспечения математико-мехакического факультета С.-Петербургского университета.

Работа выполнена при поддержке Р«вИ, грант #94-01-00б38-а.

Публикации. По теме диссертации опубликовано 11 работ.

Структура и объем работы. Диссертация состоит из введения, четырех глав, списка литературы из 92 наименований и приложения. Объем основной части работы составляет 145 машинописных листов, вместе с приложением - 201 лист.

СОДЕРЖАНИЕ РАБОТЫ

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

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

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

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

символьными, вообще говоря, древовидными данными, позволяет сделать описание алгоритмов и данных более декларативным.

Для обозначения конкатенации используется инфиксный оператор Пустой терн (нейтральный элемент) обозначается атомом []. Непустой терм, непредставимый в виде конкатенации непустых подтермов, называется элементарный или е-термом.

Для обеспечения органичного соединения синтаксиса Пролога и переборных конструкций в языке предусмотрена возкохность для некоторых последовательностей использовать принятые в Прологе обозначения для списков. Имеют место тождества: для любых термов 5, Ь, ..., Ьд

.....V

[вЦ] = [вП

.....* .....V*

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

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

Включение в язык ассоциативной операции требует пересмотра принятого в Прологе алгоритма унификации. Известно, что в теории с ассоциативной операцией задача унификации двух термов решается, вообще говоря, неоднозначно и, более того, не существует алгоритм унификации, всегда заканчивающий работу. Поэтому обычно ставится задача поиска уже множества наиболее общих унификаторов (МНОУ).

Известны различные подходы х решению указанной проблемы - от перебора в глубину всех вариантов унификации (Дистлог) до различного рода синтаксически и семантически ограниченных схем унификации (Рефал, Пролог).

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

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

1. Ограничение на перебор в левой части (равенства).

АУП запрещает такие комбинации пар унифицируемых (под(термов, которые могуг потребовать перебора вариантов подстановок для переменных из девой части равенства, не ограничивая при этом перебора значений переменных в правой части. Запрещается унификация пар вида: Х~и=у, где и - непустой терм, терм V не начинается с X (не терм вида X"»).

2. Ограничение на вхождения переменных. АУП выполняет проверку вхождения переменных в подтермы. При унификации вида Х=и или и=ЛГ"г, где ц и V - термы, X - переменная, должно выполняться следующее ограничение: либо X не входит в и, либо и начинается с X.

Оба ограничения формализуются как часть определения АУП.

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

Анализ АУП, позволяющий, сформулировать его свойства, необходимые для практического применения, и подготавливающий доказательство теоремы об АУП, содержится в леммах 1-7 (разд.2.2). В леммах классифицируются типы точек ветвления и соответствующие варианты подстановок в корректных задачах унификации (леммы 1-5), утверждается конечность числа вариантов подстановок в корректных задачах унификации (лемма б) и конечность числа шагов в произвольной задаче унификации (лемма 7).

Теорема 2.2.1. АУП строит МНОУ корректно поставленной задачи унификации двух термов, при этом элементы МНОУ не имеют общих частных решений.

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

Далее в диссертации описывается функциональное подмножество (языка Проф) - реляционное подмножество, расширенное средствами определения и вычисления функций (разд. 1.3).

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

Функциональные вычисления в языке Проф не ограничиваются арифметикой. Здесь допустимы вычисления с любыми определяемыми в программе или встроенными функциями, включая метафункции (eval, quote). Разрешается использовать любые допустимые в языке данные, любые (в том числе частично вычисленные) выражения, включая несвязанные переменные, что, может служить основой для обращения функций. Функциональные вычисления, подобно доказательству предикатов, допускают повторный вызов ("перевычисление") при откатах. И, наконец, функциональные вычисления сохраняют характерный для Пролога стиль метапрограммирования.

Арифметические вычисления в языке Проф опирается, как и в Прологе, на встроенную арифметику, имеющую эффективную аппаратную реализацию.

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

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

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

Определения функций записываются с помощью продукций или функциональных правил вида:

.....С1.....ck ~> v

где п,к>0, термы - образцы аргументов, термы

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

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

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

Под функциональной спецификацией понимается операция функционального сопоставления выражения образцу - несимметричная двуместная операция (обозначение - '::'), обобщающая операцию унификации термов. Явный вызов оператора сопоставления состоит в доказательстве подцели вида: s :: t,

где sat- произвольные термы, s называется аргументом сопоставления, t - образцом (спецификацией) аргумента.

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

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

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

$ункциональное сопоставление применяется для отождествления аргументов предикатов и функций. Это означает, что каждое введенное в программу логическое правило

f(*l.....сл> clf...,ck

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

i(X1,----Xn) :~X1::t1.....Х„: :t„, сг----,ск

где X}....,ХП - новые переменные.

В преобразованной программе для отождествления заголовков правил применяется процедура унификации термов.

Аналогично преобразуются и функциональные правила.

Алгоритм Функционального сопоставления (А5С) определяется в разд. 2.4. Прежде всего описываются правила сопоставления образцу-переменной. Для каждой переменной, скажем, X определяется ее имя спецификации, обозначаемое Хпа. Имя Хпа определяется отбрасыванием от имени X (возможного) целочисленного суффикса и перекодировкой имени в нижний регистр. Если существует определенная в программе или предопределенная функция Хпа/1, то переменная X называется специфицированной, иначе - универсальной.

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

в :: X

если X - специфицированная переменная; (XI)

X is Xna(ss)

здесь символ ' обозначает вызов метафункции quote, блокирующей Функциональное вычисление выражения s;

s :: X

-, если X - универсальная переменная. (Х2)

s = X

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

s :: X(slt . ..,s )

-----, (X/nlj

X is Xna(*s_J.....*s)

если существует Xna/n+J - спецификация перемевной X/n;

s : : X(slr ...,sn)

-1-ÍL, (x/n2;

s = X

если переменная X/n не имеет спецификации.

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

В работе описаны следующие конструкторы образцов: объединение ( ';'), пересечение ('&'), отрицание ( '"') свойств; образец-значение (':'); правила для управляющих образцов (cut, once); правила блокировки и метаинтерпретации функционального сопо-

ставления (quote и eval); правила для составного терма и конкатенации; правила для кратного образца ( '§', '8+').

Помимо определяемых имен спецификаций в языке также предусмотрен набор предопределенных образцов (разд. 1.5).

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

На множестве стандартных типов определен частичный порядок, согласованный с их теоретико-множественным включением: Atom, Char. Integer, Real < Symbol < Eterm < Term

В языке Проф переменные могут быть связаны произвольными значениями некоторого стандартного типа или короче, стандартным типами. Например, {X:Eterm}, {X:Symbol} и т.д.

Несвязанные переменные считаются связанными значением произвольного терма или максимальным типом.

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

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

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

Это сокращенная запись определения функции а/1, эквивалентная

а: {Atom -> Atom}. Здесь Atom - переменная, имеющая спецификацию atom/1. Аналогично определим

с: Char, i: Integer, г: Real, s: Symbol. e: Et erw.

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

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

Соответствующим образок модифицированная формулировки АУП описана в разд. 2.5. Ограничения АУП в целом сохраняются.

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

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

Приведем примеры.

Рассмотрим предикат reverse, переворачивающий произвольные списковые древовидные структуры на всю глубину вложенности: reversed], []).

reverse([X]~Y,Yl~[Xl]) :- !, reverse(X,XI), reversed,Г1). reverse (E~X,Y"E) :- reverse (X,Y). В отличие от Пролога, в определении на языке Проф не используется дополнительный предикат сцепления списков, т.к. образцы аргументов в заголовке второго правила обеспечивают доступ как к первому, так и к последнему элементам списка. Третье правило со стандартным образцом Е описывает специальный случай элементов типа е-терн, не являющихся списками

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

Определение распознавателя палиндрома: palindrome: ("" ; С ; С" Palindrome"С).

Это определение компактно и имеет ясный декларативный смысл (практически точно соответствует детерминированной интерпретации БНФ), что объясняется в первую очередь простым синтаксисом языка и применением функциональных образцов: стандартного типа С и рекурсивного типа Palindrome. Незначительная модификация -изменение порядка отождествления - позволяет сделать определение более эффективным (и более операционным):

palindrome: {("" ; С ; СХ'С) :- X :: Palindrome}. Данный вариант определения аналогичен определениям на языках двухуровневых грамматик (TLG) и Рефал.

В четвертой главе описывается разработанная автором экспериментальная реализация системы программирования на языке Проф.

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

В настоящий момент система программирования Проф включает следующие компоненты:

- многооконный пользовательский интерфейс;

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

- текстовый многофункциональный редактор;

- службу настройки системы;

- службу помощи;

- службу управления программами;

- собственно интерпретатор Проф-программ, включавший в себя средства трассировки программ.

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

Весь комплекс программ системы программирования Проф написан автором на языке PDC Пролог в среде MS DOS. Поскольку PDC Пролог - язык высокого уровня и существуют реализации компиляторов с этого языка для различных модификаций операционных систем Windows, OS/2 и UNIX, представляемая реализация языка Проф может быть практически без изменений использована в других операционных средах и на других платформах.

Объем представляемой реализации составляет приблизительно 4300 строк на PDC Пролог.

Объел объектного кода составляет приблизительно 340 КВ.

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

ОСНОВНЫЕ РЕЗУЛЬТАТЫ

Основными результатами диссертации являются:

* разработка и интеграция в синтаксическую среду языка Пролог расширенных средств функциональных вычислений и средств спецификации рекурсивными образцами с параметрами в виде языка логического программирования Проф; анализ выразительной силы средств спецификации языка;

* разработка алгоритма ограниченной унификации последовательностей и алгоритма функционального сопоставления для применения в синтаксической среде языка Пролог;

* экспериментальная реализацию системы программирования на языке Проф.

ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ

[1] И.П.Соловьев. Согласование синтаксиса рефал-продукций с интерпретатором СВМ. Труды Всесоюз. науч.-тех. совещ. "Программное обеспечение новой информационной технологии". Калинин, 1989, 125-127. Г 2] И.П.Соловьев. Реализация логического программирования на языке Проф. Сб. Вычислительные системы, 146. Логика и семантическое программирование. Ред. Ю.Л. Ершов и С.С. Гончаров. Изд. СО РАН, Новосибирск, 1992, 183-185.

[3] И.П.Соловьев. Ограниченная унификация последовательностей в одном языке логического программирования. Тезисы Второй Межд. конф. "Математические алгоритмы". Ред. H.A. Антонец, Б.Е.Алексеев, В.Н.Шевченко. Н.Новгород, 1995, с.53.

[4] Соловьев И.П. Программирование образцами в языках ПРОБ и РЕ$АЛ ПЛЮС. Сб. Вычислительная техника и вопросы кибернетики, 27. Теория и приложения дискретных систем. Ред М.К. Чирков, С.П. Маслов. Изд. СПб университета, С.-Петербург, 1995, 149-170.

[5] И.О.Бабаев, М.А.Герасимов, Н.К.Косовский, И.П.Соловьев. Интеллектуальное программирование. Турбо Пролог и Рефал-5 на персональных компьютерах. Изд. СПбУ, 1992.

[6] К.В.Дмитриева, Т.Н.Косовская, Н.К.Косовский, Е.А.Костин, И.П.Соловьев, С.Я.Фитиалов. Управление переборем в задачах искусственного интеллекта. Тезисы Межд. хонф. "Математика. Компьютер. Образование". Москва-Пупшно, 1995, с. 70.

[7] Н.К.Косовский, И.П.Соловьев. Образцы-Функции и веерно-возвратный перебор для информационных исследований. Труды Межд. конф. "Математика, компьютер, управление и инвестиции". Ред. И.Е.Ярошевская. Москва, 1993, 7S-83 .

[8] 1.Р.Solovjev. Prof as Implementation of Logic Programming In Abstracts of Int. Congress on Computer Systems and Applied Mathematics CSAM'93. St.Petersburg, 1993, p.201.

[9] N.K.Kossovsky, I.P.Solovjev. Fan-Backtracking with Function-Patterns. In Abstracts of the 7th Int. Conf. on Automata and Formal Language. Salgotarjan, Hungary, 1993, 29-30.

[10] N.K.Kossovsky, I.P.Solovjev. Function-Patterns and Fan-Backtracking for Logic Programming. In D.S.Warren, ed. , Proc. of the Tenth Int. Conf. on Logic Programming, The MIT Press, 1993, p.843.

[11] N.Kossovsky, I.Solovjev. Some recursive specifications for simulation clarity.Int.Workshop on Mathematical Methods & Tools in Computer Simulation. St.Petersburg, 1994, 82-85.

Подписано к печати 21.11.95. Заказ кЗО Тираж 100 Объем 0,75 п.л. ЦОП СИГУ. 199034, Санкт-Петербург, наб. Макарова,б.