Для удовлетворения растущих экспоненциально запросов многих автоматизированных предприятий часто бывает недостаточно только изменений в соответствующем программном обеспечении. Сегодня , вопросам применения которого посвящена данная статья. Интеллектуальное программирование предназначено для получения знаний в форме композиции новых фактов - "knowledge mining" вместо используемого сегодня "data mining" из технологии работы с хранилищами данных. Основные преимущества применения интеллектуального программирования: использование подмножества естественного языка или программирование без программистов; построение парадигмы отладки знаний; расширение области применения компьютеров; формирование инструментария, аналогичного, например, системе Паскаль, но без формализмов операторов.

Оперативное изменение комплекса программ обычно наталкивается на естественные ограничения самого процесса программирования [1]. Лозунг типа "Моя программа может все" общеизвестен; он стимулирует хорошее качество программ, однако другой лозунг "Все можно запрограммировать" можно назвать более важным и действенным, поскольку он утверждает необходимость алгоритмического знания, навсегда вошедшего в нашу жизнь. Тем не менее практика все чаще подбрасывает нам примеры существенных недостатков процедурного программирования, которые стимулировали сегодня интеллектуализацию применения компьютеров:

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

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

    Сила в знании

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

    Пик популярности экспертных систем отошел в прошлое по следующим причинам: не все недостатки процедурного программирования были устранены, оставалась главная трудность - составление последовательности действий; отсутствовал эффективный аппарат для отладки знаний, представленных фактами и продукциями; требовалось постоянное присутствие эксперта, заменившего программиста. Вторым шагом, способствовавшим достижению пика развития ЭС, стало изобретение инструментария - языка Пролог. Этот язык ограничен записями для поиска независимых переменных, применением дедуктивного метода, и отказ от использования естественного языка. Кроме этого появились языки представления знаний на понятийном уровне или на уровне графов для ввода отношений между понятиями. Однако, опять же, все эти средства требуют специальных знаний по программированию и информатике, а построенные на их основе ИС не удовлетворяли запросам пользователя. Существовали например весьма серьезные ограничения в технологии отладки знаний и формулировке заданий на естественном языке, в языках отсутствовали кванторы высокого порядка. Ограничения в представлении знаний, дедуктивный вывод с большими затратами времени или тупиковыми ситуациями и отсутствие альтернативных разрешений запросов только усугубляли ситуацию [2].

    Язык как основа интеллектуальной системы

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

    В основе анализа текста ЯПП лежит определение термина некоторого понятия. Допускается использование терминов, составленных из слова, знака или их сочетаний. Каждый термин должен иметь точные характеристики или быть неопределенным, тогда его характеристики могут определиться в процессе логического вывода. Весь текст ЯПП состоит из абзацев, имеющих законченный смысл. Каждый абзац - набор предложений, состоящих из последовательностей терминов. Все это напоминает естественный язык но с меньшим числом категорий, например, собраны воедино категории типов предложений. Многие термины являются стандартными - они составлены из общеупотребительных слов и знаков. В качестве терминов могут использоваться "сложение", "+", "плюс", "увеличить на", "-", "вычесть", "уменьшить на". Имеются две новые категории грамматики ЯПП: термин-операнд и термин-операция. Существительное или глагол могут быть операндами или операциями. Большинство формализаций знания рассматривает существительное как операнд, а глагол как операцию. Таким образом ЯПП является частью естественного языка, ориентированной на конкретную профессиональную деятельность.

    Тексту на языке профессиональной прозы должно предшествовать описание терминов. Каждый термин уникален, а содержащиеся в нем слова могут состоять из основы и конца слова. Основа слова служит для идентификации термина, а конец слова - для оформления результатов работы программы. Число категорий грамматики естественного языка в ЯПП уменьшается еще за счет исключения отношений рода, числа, падежа, суффикса, окончания и т.п. Некоторые слова могут входить в различные термины с различными основами. Значения таких слов как "красный", "красн_ый" или "красная" в составе терминов могут быть различными (знак подчеркивания разделяет основу и конец). Совокупность терминов вместе с определениями и характеристиками соответствующих понятий называется лексиконом. Одна часть лексикона составляется из стандартных терминов, известных интеллектуальной системе из русского языка - их около 1000, другая - из терминов пользователя.

    Естественный язык использует понятие синоним, а в ЯПП понятие синонима расширено. Синоним термина в грамматике естественного языка точно не определен, а в ЯПП можно вводить синонимы для любых терминов. К примеру, некоторое предложение может быть термином, и для него можно определить один или несколько синонимов. Введение понятий термина и синонима исключает категории частей речи и предложения грамматики естественного языка. Смысл синонима, который становится термином, совпадает со смыслом основного термина.

    Аксиомы как основа ИС

    В основе информатики ИС заложена информатическая логика (ИЛ) - новая ветвь логики, предназначенная для построения алгоритмов решения логических уравнений. До пояснения сущности этой логики рассмотрим источник такого внимания к логическим уравнениям.

    Каждый человек говорит или пишет предложениями или абзацами так, чтобы передать слушателю или читателю некую смысловую идею. При этом предложение или абзац - синтаксическая единица смысла (СЕ) - суть истинное или ложное высказывание. Будем опираться на характеристику - каждая СЕ является прикладной аксиомой, передающей знания. Совокупность прикладных аксиом составляет знания и используется для заполнения базы знаний. Кроме этого, в информатической логике каждая аксиома служит для определения некоторой операции, операнда или их взаимосвязи. Например, Х = Х определяет отношение операции равенства и операнда. Итак, совокупность абзацев-аксиом - Ki верны одновременно. Это значит, что базу знаний условно можно изобразить следующим образом:

    К1 и К2 и... и Kn = => Ki, i = 1, 2,..., n.

    Запрос для ИС также принимается за аксиому Q, тогда ИС должна решать следующую задачу:

    &Ki > Q, (1)

    где знак > является обозначением синтаксического (операция влечет) или семантического (из истины следует истина) следования. Эта запись является логическим уравнением (A > B то же самое, что и (A > B) = истина).

    Если человек передал для ИС все необходимые аксиомы и тем самым построил базу знаний, он сформировал модель своих способностей по одной конкретной специальности. Охват сразу всех специальностей немыслим как по причине огромного объема, так и в связи с различием смысла одних и тех же терминов для различных предметных областей. После заполнения базы знаний формируется запрос Q и ИС решает логическое уравнение (1). Здесь важно обратить внимание, что база знаний одна, а разнообразных запросов может быть сколько угодно. Одни запросы относятся к вычислению значения (если исходные данные определены), другие к выводу определения понятия и формулы (если некоторые операции не определены), третьи к построению программы (если исходные данные не заданы).

    Запросы пользователя могут задаваться абзацем или набором абзацев, анкетой типа А1 = да, А2 = нет, А3 = неопределено и т.д. Анкета представляет собой набор фактов и формализуется в виде:

    Q: = А1 = да и А2 = нет и А3 = неопределено и ...

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

    Возможности интеллектуальной системы

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

    Для успешного разрешения запроса важно понять, где в базе знаний или в запросе имеется "тонкое место". Для учета предположений в ИС можно ввести понятия, значения которых моделируются в многозначных логиках. К примеру, запрос типа "А или В = возможны" предполагает многозначность А и В. Гибкость задания вытекает из возможности быстрого изменения запроса при фиксации базы знаний. ИС ориентирована на пользователя и каждый специалист опирается на конкретную базу знаний, пополняя ее по мере необходимости и формулируя запрос на языке профессиональной прозы. ИС определяет все альтернативные решения, например, снабженные условием "Х не равен 0". Здесь нарушено академическое правило: каждая задача должна иметь единственное решение, однако напрактике невозможно заниматься сложной проблемой определения условий единственности решения конкретной задачи. Универсальность ИС состоит в том, что база знаний - это "программа" решения целого класса задач для данной специальности. Проблемы правильности программ не возникает по двум причинам:

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

    Основы информатической логики

    Классически ИЛ определяется в виде следующей тройки [4]:

    <ЯПП, набор базовых аксиом, набор базовых правил>,

    где базовые схемные аксиомы, а их около 300, определяют константы (ложь, истина), операции логики, арифметики, теории множеств и отношений, а базовые правила определяют логический вывод решения логического уравнения. В набор правил не входит правило modus ponens, которое связано с дедуктивным подходом в логическом выводе. Это правило работает по форме: если имеется А и из него следует В, то В верно. Например,

    А&С / not А&С&В -> А&С / С&В.

    Этот эквивалент правилу modus ponens применяется во избежание рассмотрения "больших и длинных" деревьев логического вывода. Кроме этого, в ИС нарушена математическая строгость путем введения правила (F(X) = F(Y)) " (X = Y) вместо обратного следования. Тем не менее все альтернативы для многозначных функций будут найдены, если это позволяет база знаний и в ней содержатся знания о многозначности. В результате логического вывода в ИС формируется решение логического уравнения, которое представляется набором альтернатив совместных фактов. Фактами являются, например, А = истина, Х принадлежит М, не Х = У, Х = А + В * С и т.п. Факты представляют элементарные знания в форме <имя термина, значение> и могут присутствовать либо в базе знаний, либо в запросе.

    Решение логического уравнения может отсутствовать(запрос противоречит базе знаний), решение может быть единственным (академический случай), решений может быть несколько (практический случай); решением являются любые комбинации фактов (это говорит о том, что доказана теорема, представленная запросом).В результате выполнения запроса в ИС выводиться число, формула или программа для выполнения. Набор базовых аксиом определяет константы "нулей" и "единиц", 70 операций логики, арифметики, математического анализа, теорий отношений и множеств. ИС рассматривает 35 типов данных (логические, числовые, текстовые, массивы, записи, таблицы, время и даты, функции, процедуры, множества и последовательности). Набор правил является классическим - переименование, подстановка термов и операций. Кроме этого, набор включает правила, порожденные аксиомами, поскольку поиск образов аксиом сложен, а применение правил проблем не вызывает.

    Не разделять, а объединять

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

    A. Получение ответа Да-Нет-Не знаю при доказательстве теорем или установке истинности утверждений. Установление истинности утверждений на основе знаний важно во многих практических приложениях.

    B. Поиск условий истинности утверждения (синтез теорем или определение недостающего знания для решения конкретной задачи). Главный класс проблем связан с поиском разрешений запросов в форме альтернативных композиций новых фактов, устанавливающих истинность запроса. А * Х + В = 0 будет истинным при Х: = - В/А.

    C. Формирование понятий по базе знаний и запросу (анализ и синтез понятия, необходимого в анализе, например, требований пользователя, аналитические выкладки). Каждое определение понятия - это логическое высказывание, представленное на естественный язык, например "кто лжец".

    D. Поиск информации в хранилище данных. К примеру, запрос: "Найти зарплату Иванова по ведомости за январь" может привести к результату - "Иванов = 35 тыс. р. по ведомости 23 и Иванов = 340 тыс. р. по ведомости 47". ИС рассматривает и более сложные примеры, чем задаваемые с помощью формального языка SQL.

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

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

    G. Информационное конструирование предметов (синтез систем на уровне знания обычных требований пользователя). Результатом работы ИС может быть сложный факт: Х принадлежит множеству {N, C}, где N - множество вершин, C - множество связей. Этот граф может навешиваться функциями или процедурами в вершинах и/или связях.

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

    Отладка знаний

    Проблема отладки базы знаний состоит в определении непротиворечивости, независимости и полноты знаний. При последовательном вводе знаний в базу решается логическое уравнение (1) с учетом Q: = истина и семантической интерпретацией операции >. Логическое уравнение решается каждый раз при расширении базы > Ki дополнительным простым исходным знанием Kn. Решение уравнения > Ki = true является результатом решения задачи определения свойств базы. Практическое назначение таких задач важно и как самостоятельная проблема, возникающая в различных прикладных ситуациях. Подчас уравнение &Ki = истина является практической задачей о свойствах знаний.

    Отладка знаний начинается с решения уравнение &Ki & Kn = true. При этом могут обнаружиться следующие варианты: пустое решение квалифицируется как глобальное противоречие между аксиомами Kn и базы, объем базы уменьшился - частичная (локальная) противоречивость Kn имеющимся знаниям, объем базы не изменился - Kn является зависимым от уже имеющегося знания, объем базы увеличился - в базу добавилось новое знание. Глобальное противоречие приводит либо к игнорированию Kn, либо к пересмотру базы, если значимость Kn велика. Локальное противоречие приводит к переосмыслению базы и ее коррекции. Зависимое знание не должно вызывать каких-либо действий по пересмотру базы, но общее понимание причин появления зависимого знания может стать средством для оценки источника знания. Расширение базы является верным признаком положительной оценки источника нового знания. Каждая теорема не прибавляет знаний, но может научить или дать навыки пользователю, ищущему эффективные пути логического вывода. Таким образом осуществляется отладка знаний на непротиворечивость и независимость.

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

    Полнота базы устанавливается автоматически и непосредственно зависит от запроса. Если решение задачи (1) состоит из композиции пар, представляющих элементарное знание (новые факты), то база полна, в противном случае ее полнота не гарантируется. В последнем случае ИС сама формирует дополнительные вопросы пользователю относительно неизвестного знания. Конечно, можно условно говорить о полноте базы вне связи с запросом Q по такой же схеме проверки содержимого базы. Это имеет смысл, если уравнение &Ki = истина представляет собой конкретную задачу. В таком случае речь идет о внешней и внутренней полноте базы.

    Интеллектуальное программирование

    Таким образом интеллектуальная система - это человекомашинная или объектомашинная программная система, предназначение которой - находить решение уравнения (1) по запросам в соответствии с лексиконом, базами знаний и ответами по их уточнению. Создание ИС и ее генерация включает: формирование лексикона, выбор формы запросов, конструирование меню прикладных работ, определение структуры базы знаний в зависимости от значности логики, генерацию формы или шаблона представления запросов или вопросов пользователю, настройку ИС на требуемый тип задачи, генерацию меню пользователя, учет типа логического исчисления и прикладной ИС, заполнение базы и отладку знаний. Предложенное определение ИС существенно отличается от известных определений в отношении системы знание - компьютер [2]. Интерфейс между пользователем и ИС поддерживается транслятором, переводящим ЯПП на формальный язык внутреннего представления логических формул. Транслятор работает на основе стандартного лексикона и лексикона пользователя, содержащего термины и их характеристики. После трансляции знания в виде логических формул Ki помещаются в базу и проверяются на непротиворечивость и независимость от уже имеющихся знаний. ИС может запрашивать дополнительные знания при формировании ответов на запросы пользователя для уточнения ответа, а также реализации пути от знания к программе, от программы к формуле, от формулы к числу.

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

    Что должен уметь "знаниевед"?

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

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

    2) Просмотр словаря для выделения базы и конца слова, выделение собственных имен. Термины могут вводиться в интерактивном режиме.

    3) Соединение стандартного словаря (в соответствии со словарным составом естественного языка) и словаря прикладной области в единый профессиональный словарь.

    4) Составление терминологического словаря, содержащего полные характеристики терминов, с возможным словесным определением термина.

    5) Первичный прогон транслятора знаний для обнаружения ошибок или неполноты словарей.

    6) Изменения, сделанные знаниеведом в словарях могут потребовать нового прогона транслятора.

    7) Генерация ИС должна производиться системным программистом совместно со знаниеведом. При генерации ИС "знаниевед" формирует схемы СУБЗ и формы представления знаний. Имея хороший обзор базы знаний он может предложить требования к способу генерации структур базы и СУБЗ.

    ***

    В основе определения науки лежит понимание предмета и объекта изучения. Предметом информатики является знание, а объектом - система человек-компьютер. На основе этих понятий, построения, исследования и проверки информатической логики ИЛ можно сегодня по новому определить понятие информатики [3]:

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

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

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

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

    Корпорация "Галактика", (Москва).


Литература

1. Красилов А.А., Горельков А.Л. Стили программирования. - М., МФТИ, 1986, - 83 с.

2. Справочник. Искусственный интеллект. В 3-х книгах. 1. Системы общения и экспертные системы. 2. Модели и методы. 3. Программные и аппаратные средства. - М., Радио и связь, 1990.

3. Красилов А.А. Основы информатики. Определение и концепции // Учебное пособие, МФТИ, - М., 1990, - 80 с.

4. Krasilov А.А. Informatical Logic, Logical Equation Decision and Intellectual (Non-production) Systems in CAD. EAST-WEST International Conference "Information Technology In Design", Part 1, Moscow, Russia, 5-9 Sept. 1994, pp. 196-198.


 

Примеры использования ИС

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

% понятия
~войдет в экспедицию Иван - биолог~,
~войдет в экспедицию Роман - биолог~,
~войдет в экспедицию Дмитрий - гидрогеолог~,
~войдет в экспедицию Павел - гидрогеолог~,
~войдет в экспедицию Павел - синоптик~,
~войдет в экспедицию Роман - синоптик~,
~войдет в экспедицию Юрий - радист~,
~войдет в экспедицию Василий - радист~,
~войдет в экспедицию Юрий - механик~,
~войдет в экспедицию Тимофей - механик~,
~войдет в экспедицию Данила - физик~,
~войдет в экспедицию Василий - физик~
: логический.

Для сокращения записей вводятся синонимы:

% синонимы
~Иван~=войдет в экспедицию Иван - биолог;
~Роман~=войдет в экспедицию Роман - синоптик;
~Дмитрий~=войдет в экспедицию Дмитрий - гидрогеолог;
~Павел~=войдет в экспедицию Павел - гидрогеолог;
~Юрий~=войдет в экспедицию Юрий - радист;
~Тимофей~=войдет в экспедицию Тимофей - механик;
~Данила~=войдет в экспедицию Данила - физик;
~Василий~=войдет в экспедицию Василий - физик.
Следующие синонимы показаны в качестве примера:
~не~=not;
~и~=&.
~или~=/.

Запрос пользователя включает ряд предложений:

% запрос ~знания + вопрос~:
Необходимо осуществить отбор:
Иван или Роман;
Дмитрий или Павел;
Павел или Роман;

Юрий или Василий;
Юрий или Тимофей;
Данила или Василий.

Необходимо также учесть совместимость характеров:

если войдет в экспедицию Павел - гидрогеолог, то
        войдет в экспедицию Дмитрий - гидрогеолог;
если войдет в экспедицию Василий - физик, то
        войдет в экспедицию Юрий - радист и
        войдет в экспедицию Тимофей - механик;
если войдет в экспедицию Юрий - радист, то
        не войдет в экспедицию Роман - синоптик;
если войдет в экспедицию Данила - физик, то
        не войдет в экспедицию Дмитрий - гидрогеолог.
конец.

Решение этой задачи сводится к выявлению свойств знаний, содержащихся в запросе, оно единственно и имеет следующий вид:

        не Данила, Дмитрий, Юрий, Василий, Иван, Павел, 
        не Роман, Тимофей.

В качестве следующего примера можно построить понятие "кто лжец" в логической задаче поиске лжеца.

% понятия
~говорит правду А~,
~говорит правду В~,
~говорит правду С~.

%синонимы
~А~=говорит правду А;
~В~=говорит правду В;
~С~=говорит правду С;

%запрос ~кто лжец~:
условие задачи: из трех субъектов - один лжец
не А и В и С или
А и не В и С или
А и В и не С.

Самохарактеристика участников дискуссии:

если говорит правду А, то не говорит правду В.
если говорит правду В, то не говорит правду С.
если говорит правду С, то говорит правду А 
        и не говорит правду В.
Ответ "кто лжец":
говорит правду А, не говорит правду В, говорит правду С.