Продукционная машина автоматического логического вывода для создания экспертных систем

наука: актуальные проблемы теории и практики. Серия: Естественные и технические науки, 2016. - № 3. - С. 29-39.

7. Артамонова Я.С., Максименко В.Н. Аналитическое моделирование ИК-услуг сетей NGN // Инновации и инвестиции, 2015. - № 6. - С. 136-142.

8. Кудин А.В., Максименко В.Н. Управление качеством услуг. Конкурентоспособность и нормативные аспекты // ИКС, 2005. - № 4. - С. 84-87.

9. Максименко В.Н., Васильев М.А. Стандартизация LBS в сети сотовой подвижной связи // ИнформКурьерСвязь, 2007. - № 9. - С. 72-75.

10. Максименко В.Н., Васильев М.А. Методика системного проектирования // Электросвязь, 2011. - № 6. - С. 37-41.

11. Леоненков А.В. Нечеткое моделирование в среде Matlab и FuzzyTECH. Санкт-Петербург: БХВ-Петербург, 2005.

12. Максименко В.Н. Услуга определения местоположения абонента как средство защиты в сети сотовой подвижной связи // Известия ЮФУ. Технические науки, 2007. - № 4 (76). - С. 151-155.

13. 3GPP TS 23.002V10.2(2011-03) Network architecture.

14. 3GPP TS 22.071. Services and System Aspects; Location Services (LCS); Service description; Stage 1.

15. Максименко В.Н., Каменский М.А. Оценка качества гео- и инфо-коммуникационных услуг // Технологии информационного сообщества, 2016. - С. 238.

16. Максименко В.Н. Особенности оценки качества услуг автоматизированной системы (АС) экстренного реагирования при авариях "ЭРА-ГЛОНАСС"/АУШ Международный форум по спутниковой навигации. Тезисы докладов. 23-24 апреля 2014. - С. 11.

17. инфокоммуникационных услуг сетей 3G // Электросвязь, 2011. - № 6. - С. 38-41.

18. Шорин О.А., Щучкин В.М. Использование интеллектуальных антенн в системах мобильной связи для снижения перегрузок // Труды МАИ, 2012. - № 53. - С. 19.

19. Максименко В.Н., Филиппов А.А. Центр обработки данных в структуре системы управления качеством оператора сотовой связи // T-Comm: Телекоммуникации и транспорт, 2008. - Т. 2. - № 6. - С. 47-51.

ПРОДУКЦИОННАЯ МАШИНА АВТОМАТИЧЕСКОГО ЛОГИЧЕСКОГО ВЫВОДА ДЛЯ СОЗДАНИЯ ЭКСПЕРТНЫХ СИСТЕМ

Г.С. Иванова, профессор кафедры «Компьютерные системы и сети» МГТУ им. Н. Э. Баумана, д.т.н, gsivanova@gmail.com;

А.П. Авдошин, магистрант кафедры «Компьютерные системы и сети» МГТУ им. Н. Э. Баумана, alexei. avdoshin@yandex. ru

УДК 004.825_

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

Ключевые слова: правила продукции; прямой и обратный логические выводы; предикат; логическое высказывание; экспертная система; представление знаний; искусственный интеллект.

PRODUCTION MACHINE OF AUTOMATIC LOGICAL CONCLUSION FOR ESTABLISHING EXPERT SYSTEMS

Galina Ivanova, professor of the «Computer systems and networks» department of Bauman Moscow state technical university, doctor of technical sciences;

Alexey Avdoshin, student of the «Computer systems and networks» department of the Bauman Moscow state technical university

Annotation. A system of automatic logical conclusion is developed. This system allows designing expert systems of the production type. The syntax and semantics of the representation language of knowledge in the form of product rules are proposed. The internal realization of the production machine is shown and the technology of creation of expert systems on its basis is considered.

Keywords: production rules; direct and inverse logical conclusions; predicate; logical statement; expert system; knowledge representation; artificial intelligence.

Введение

Продукционная система - это модель вычислений, основанная на продукционных правилах, представляющих знания о решении задач в виде правил «ЕСЛИ условие, ТО действие». Такие системы могут использоваться, например, для извлечения знаний из текстов с помощью применения онтологии [1], для создания автоматизированных систем управления технологическими процессами [2], для распределения ресурсов автономных систем электроснабжения [3], для автоматизации задач выбора и принятия решений в составе корпоративных информационных систем [4] и в других случаях.

Отличительной особенностью интеллектуальных систем, основанных на правилах продукции, является сравнительная простота описания зависимостей и ограничений предметной области и достаточное их понимание пользователем. Наглядное выстраивание логической цепочки рассуждений позволяет машине объяснять разработчикам сетей связи свои логические выводы. По сравнению с продукционным логическим выводом автоматический логический вывод, построенный на методе резолюций [5], не является прозрачным. Другими словами, механизм резольвирования дизъюнктов не является интуитивно понятным для пользователей и на его основе нельзя сказать, почему машина выдала конкретное логическое умозаключение [6].

Однако существующие продукционные системы обладают достаточно сложным интерфейсом и трудно запоминаемым синтаксисом языка представления знаний в виде правил продукции. Так, программная среда построения экспертных систем CLIPS [7] имеет Си-подобный синтаксис и ею может воспользоваться достаточно опытный программист или инженер знаний с базовыми навыками в программировании. Некоторые продукционные системы либо являются полноценными экспертным системами определённой предметной области, например, MYCIN [8], PROSPECTOR [9], либо служат чисто «скелетным» инструментом для построения экспертных систем, так EMYCIN [10] - это Empty MYCIN -«пустой» MYCIN, KAS [11] - тот же PROSPEPCOR, где удалена вся геологическая база знаний, OPS-5 [12].

Естественно, что готовые экспертные системы не являются универсальными с точки зрения использования, так как работают только в одной определённой предметной области, а инструментальные - недостаточно универсальными с точки зрения выполнения: они реализуют либо прямой, либо обратный продукционный вывод [13], и, следовательно, ограничивают класс решаемых задач.

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

Синтаксис и семантика языка представления продукционных знаний

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

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

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

области;

• блока фактов, указывающих на текущую ситуацию;

• цели, конкретизирующей решаемую задачу.

Структура пользовательской программы представлена на рис. 1.

Начало Правила:

После дователь ность продукционных правил

Факты:

После дователь ность фактов

Цель:

Целевое предложение Конец.

Рисунок 1

Как видно из структуры можно ввести несколько продукционных правил и фактов. Синтаксические диаграммы [15] описания продукции и факта показаны на рис. 2 и 3 соответственно.

<Правило>::= ЕСЛИ <Условие> ТО <Следствие> | ЕСЛИ <Условие> ТО <Следствие> ИНАЧЕ <Следствие>

Следствие -

КС.111^— Условие--

>

Следствие

Рисунок 2

<Факт>::= «<Высказывание>» | <Предикат> | НЕ «<Высказывание>» | НЕ <Предикат> | НЕТ «<Высказывание>» | НЕТ <Предикат>

Рисунок 3

Стоит отметить, что продукция обязательно должна иметь условную и следственную часть для реализации модели «ЕСЛИ условие, ТО действие» и, что в качестве фактов могут выступать как простые высказывания, так и п-мерные предикаты. Простые высказывания можно соединять конъюнктивно в одно составное с помощью служебного слова, что позволит машине строить логические цепочки в виде деревьев [16] при осуществлении обратного продукционного вывода.

Реализация продукционной машины логического вывода

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

Для создания структуры данных продукционной машины логического вывода была реализована диаграмма классов, представленная на рис. 4. В основу структуры данных положен контейнер [18], реализованный на агрегации классов Элемент и Список элементов. От них наследуются классы, обеспечивающие внутреннее представление фактов и правил продукций. От класса Элемент наследуется класс Факт, включающий логическое поле Истина, которое может принимать значение «ИСТИНА» или «ЛОЖЬ», в зависимости от истинности или ложности факта. Также в данном классе присутствует поле Имя, куда помещается имя факта, которое может быть использовано при осуществлении поиска факта в соответствующей базе. В качестве методов фактов были разработаны следующие функции: Проверить истинность() и Вернуть имя(). Первая возвращает логическое значение, которое принимает факт в данный момент времени, вторая возвращает имя соответствующего факта. Таким образом, не происходит прямого обращения к полям классам, тем самым поддерживается его инкапсуляция, что защищает класс от несанкционированного доступа к данным и делает их надёжными.

Факт N Элемент

-Истина -Имя -Следующий -Предыдущий

+Проверить истинность) +Вернуть имя() У

+Создать

Высказывание

-Предложение

+Создать

Предикат -Имя предиката -Список аргументов предиката +Создать

+Уничтожить

Правило

-Адрес списка условий -Адрес списка следствий ИСТИНА -Адрес списка следствий ЛОЖЬ -Флаг использования

+Создать

+Добавить список условий

Список элементов

-Первый

-Последний

-Текущий

+Создать контейнер

База фактов

-Количество фактов

+Создать базу

База правил

-Количество правил

+Создать базу

Пользовательская программа

-Файловая переменная -Буферная строка -Указатель на базу фактов -Указатель на базу правил

+Создать объект

Рисунок 4

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

Класс Высказывание содержит поле Предложение, куда записывается суть самого логического высказывания и самые общие, стандартные методы (который имеет каждая разновидность факта): Создать, Напечатать, Уничтожить и Проверить истинность.

Класс Предикат в качестве поля содержит список аргументов и собственное имя предиката.

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

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

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

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

Для продукционной машины с учётом построенного внутреннего представления знаний и фактов были спроектированы и реализованы алгоритмы прямого и обратного вывода. Алгоритм прямого продукционного вывода реализован таким образом, что однократно будут выполнены всевозможные продукционные правила. Цикл осуществляется по всем правилам: берётся первое правило из базы, проверяется, возможно ли его использовать и удовлетворяет ли посылка тому, что находится в базе фактов. Если да, то следствие продукционного правила добавляется в базу фактов, активизируется флаг использования правила (т.е. в дальнейшем это правило уже не будет работать), и осуществляется переход к следующему правилу. Когда все правила пройдены, проверяется условие, если база фактов была изменена путём добавления новых фактов, то осуществляется повторный проход по всем неактивизированным правилам продукции. Алгоритм останавливается тогда, когда исчерпаются правила, которые могут быть использованы в ходе прямого продукционного вывода. Таким образом, автоматически отпадает проблема формирования конфликтного множества правил и проблемы разрешения конфликтов. Такая реализация позволяет находить внутренние противоречия в совокупности фактов и правил, описываемых для решения поставленных задач.

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

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

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

Построение экспертной системы с помощью разработанной продукционной

машины

Разработанная продукционная машина служит для построения экспертных систем, основанных на продукционных правилах, поэтому прежде, чем проектировать экспертную систему в нём необходимо знания, с которыми в дальнейшем будет работать система, представить в виде правил продукций ЕСЛИ (посылка, условие, антецедент) ТО (следствие, консеквент). Например: «Если процентные ставки растут, то валютный курс доллара падает».

В продукционном правиле допускаются сложные (составные) условия, состоящие из нескольких простых суждений, которые обязательно должны быть соединены конъюнктивно (с помощью связки И). Однако следствие из правила (его правая часть после союза ТО) должно являться простым суждением. Например, «Если процентные ставки федерального резерва падают и средства федерального резерва добавлены, то процентные ставки падают».

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

Если продукционное правило содержит в себе предикаты с одними и теми же переменными, то в них будут подставлены одни и те же значения данных переменных. Например, согласно синтаксису разработанного языка, введено следующее продукционное правило в прототип: «ЕСЛИ Двигатель($Х) и Не Заводится($Х) ТО Сломан($Х)». При инициализации переменной Х значением «Бензиновый двигатель», следует правило, говорящее о том, что если бензиновый двигатель не заводится, то сломан именно он, а не какой-нибудь другой (например, дизельный двигатель). Данное правило распространяется на всё множество продукционных правил, составляющих базу знаний экспертной системы, спроектированной в разработанном прототипе.

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

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

и отличник(Х), то закрыл сессию(Х)».

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

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

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

|ЕСЛИ Двигатель($Х) и Не Заводится($Х) ТО Сломан($Х). |ЕСЛИ Двигатель($Х) и Не Заводится($Х) и Нет Искра($Х) |ТО Не Исправна система зажигания($Х).

|ЕСЛИ Двигатель($Х) и Не Заводится($Х) и Нет Искра($Х) |и «Функционирует цепь низкого напряжения» то Не |Исправна катушка зажигания($Х).

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

|ЕСЛИ Двигатель($Х) и Не Заводится($Х) ТО Сломан($Х).

|ЕСЛИ Сломан($Х) и Нет Искра($Х) ТО Не |Исправна система зажигания($Х). |ЕСЛИ Не Исправна система зажигания($Х) и |«Функционирует цепь низкого напряжения» то Не |Исправна катушка зажигания($Х).

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

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

Пример построения экспертной системы диагностики неисправностей автомобиля с помощью разработанного прототипа записан в листинге пользовательской программы. |Начало |Правила:

| ЕСЛИ Двигатель($Х) и Не Заводится($Х) ТО Сломан($Х).

|ЕСЛИ Сломан($Х) и Нет Искра($Х) ТО Не |Исправна система зажигания($Х).

|ЕСЛИ Не Исправна система зажигания($Х) и "Функционирует |цепь низкого напряжения"

|ТО Не Исправна катушка зажигания($Х).

|ЕСЛИ Не Исправна система зажигания($Х) и НЕ |"Функционирует цепь низкого напряжения" и

|Устраняет неисправность замена($У) то Не исправен($У).

|ЕСЛИ Не Исправна система зажигания($Х) и НЕ |"Функционирует цепь низкого напряжения" и

|Не Устраняет неисправность замена($У) ТО "Неполадки в распределителе". |ЕСЛИ Сломан($Х) и Искра($Х) ТО НЕ |Исправна система питания($Х).

|ЕСЛИ НЕ Исправна_система_питания($Х) и НЕТ |Бензин_в_баке($К) ТО Заправиться бензином($К).

|ЕСЛИ НЕ Исправна система питания($Х) и Бензин в баке($К) |и Не Поступает в карбюратор бензин($К) |ТО "Неполадки в бензонасосе".

|ЕСЛИ НЕ Исправна система питания($Х) и Бензин($К) и |Поступает в карбюратор бензин($К) |ТО "Неполадки в карбюраторе".

|ЕСЛИ Сломан($Х) и Не Работает стартер($Х) ТО "Неполадки |в системе электропитания стартера".

|ЕСЛИ Двигатель($Х) и "Крутится коленчатый вал" ТО |Вращается($Х). |ЕСЛИ Двигатель($Х) и Не "Крутится коленчатый вал" То Не |Вращается($Х). |ЕСЛИ Вращается($Х) и Топливо поступает в($Х) ТО |"Неполадки в свечах зажигания".

|ЕСЛИ Не Вращается($Х) и "Горят фары" ТО Не |Работает_стартер($Х).

|ЕСЛИ Не Вращается($Х) и Не "Горят фары" ТО "Неполадки в |аккумуляторе или

проводке".

|ЕСЛИ Двигатель

|ТО Топливо поступает в($Х).

|Двигатель(Бензиновый двигатель). |Не Заводится(Бензиновый двигатель). |Не "Крутится коленчатый вал". |"Функционирует цепь низкого напряжения". |Нет Искра(Бензиновый двигатель). |"Горят фары". |Цель:? |Конец.

Заключение

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

Литература

1 . Дармахеева Т.А., Хаптахаева Н.Б. Онтологическая модель представления знаний о системе продукций // Материалы Всероссийской конференции с международным участием «Знания -Онтологии - Теории» (ЗОНТ-2017), 2017. - С. 119-126.

2 . Баймухамедов М.Ф. Построение автоматизированной системы управления технологическими процессами на базе продукционной экспертной системы // Аграрный вестник Урала, 2013. - № 8 (114). - С. 26-28.

3 . Экспертные системы и продукционные правила в интеллектуальных комплексах распределения ресурсов автономных систем электроснабжения // Управление большими системами: сборник трудов, 2008. - № 20. - С. 95-106.

4 . Пушкин А.Ю. Продукционная система для автоматизации задач выбора и принятия решений в составе информационных систем предприятий // Межотраслевая информационная служба, 2005. - № 2-3. - С. 23-26.

5 . Карягина Т.В. Метод резолюций в логике высказываний и предикатов // Учёные записки российского государственного социального университета, 2012. - № 9. - С. 37-42.

6 . Палий И.А. Алгоритм элиминации переменных для доказательства логического следствия по методу резолюций в исчислении высказываний // Наука и мир, 2015. - № 8 (24). - С. 22-24.

7 . Частиков А.П. Разработка экспертных систем. Среда CLIPS: учебное пособие для вузов / А.П. Частиков, Т.А. Гаврилова, Д.Л. Белов. - СПб: БХВ-Петербург, 2003. - 396 с.

8 . Shortliffe E. H. Computer Based Medical Consultations: MYCIN. - Elsevier/North Holland, New York NY, 1976.

9 . Duda R. O., Gaschnig J. G., Hart P. E. Model design in PROSPECTOR consultant system for mineral exploration // Expert system in the micro-electronic age. Edinburgh: Edinburgh University Press, 1979. P. 153-167.

10 . Джексон П. Введение в экспертные системы, 3-е изд.: Пер. с англ. - М.: Издательский дом «Вильямс», 2001, - 624 с.: ил. - Парал. тит. англ.

11 . Представление знаний в экспертных системах: учебное пособие / сост. В. А. Морозова, В. И. Паутов. - Екатеринбург: Изд-во Урал. ун-та, 2017. - 120 с.

12 . The OPS_5 user's manual. Technical Rept. CMU-CS-81. Pittsburgh: Carnegie - Mellon University, 1981.

13 . Уотермен Д. Руководство по экспертным системам: Пер. с англ. - М.: Мир, 1989. - 388 с.

14 . Фаулер М. Предметно-ориентированные языки программирования. Пер. с англ. - М.: ООО «И.Д. Вильямс», 2011. - 576 с.: ил. - Парал. тит. англ.

15 . Рейуорд-Смит В. Дж. Теория формальных языков. Вводный курс. Пер. с англ. - М.: Радио и связь, 1988. - 128 с.

16 . Представление и использование знаний: Пер. с япон./Под ред. Х. Уэно, М. Исидзука. - М.: Мир, 1989. - 220 с.

17 . Буч Г., Максимчук Р. А., Энгл М У., Янг Б Дж., Коналлен Д., Хьюстон К А. Объектно-ориентированный анализ и проектирование с примерами приложений, 3-еизд.: Пер. с англ. -М.: ООО «И.Д. Вильямс», 2008. - 720 с: ил. - Парал. тит. англ.

18 . Браунси Кен. Основные концепции структур данных и реализация в С++. Пер. с англ. - М.: Издательский дом «Вильямс», 2002. - 320 с: ил. - Парал. тит. англ.

19 . Ахо А., Сети Р., Ульман Д. Компиляторы: принципы, технологии и инструменты. Пер. с англ. - М.: «Вильямс», 2003.