Книга
Книга
APPROCHE LOGIQUEDE L’INTELLIGENCEARTIFICIELLE
1 DE LA LOGIQUE CLASSIQUEA LA PROGRAMMATION LOGIQUE
par
Andre Thayse, Pascal Gribomont,Georges Louis, Dominique Snyers. Pierre WodonPhilips Research Laboratory, Bruxelles
Paul Gochet
Universite de Liege
Eric Gregoire
Universite de Louvain, Louvain-la-Neuve
Eduardo Sanchez
Ecole Polytechnique Federate de Lausanneavec la collaboration de
Philippe Delsarte
Philips Research Laboratory, Bruxelles
Dunodinformatique
ЛОГИЧЕСКИЙПОДХОДК ИСКУССТВЕННОМУИНТЕЛЛЕКТУ
От классической логики к логическомупрограммированию
Перевод с французского
П. П. Пермяковапод редакцией
Г. П. Гаврилова
Москва «Мир» /990
ББК 32.973 Л 69
УДК 681.3
Авторы: А. Тей , П. Грибомон, Ж. Луи, Д. Сний- ерс, П. Водой, П. Гоше, Э. Грегуар, Э. Санчес, Ф. Дельсарт
Л69 Логический Подход к искусственному интеллекту: от классической логики к логическому программированию: Пер. с франц./Тейз А., Грибомон П., Луи Ж. и др. — М.: Мир, 1990. — 432 с., ил.
ISBN 5-03-001636-8 (русск.)
Монография специалистов из Бельгии и Швейцарии, излагающая проблемы и методы искусственного интеллекта с точки зрения математической логики. Она состоит из шести глав: логика, аксиоматические системы, представление знаний и рассуждений, логика и модифицируемые рассуждения, формальные грамматики и логическое программирование, Пролог и логическое программирование. Книга построена так, что для понимания материала от читателя требуется только знание основ информатики.
Для всех изучающих и использующих методы искусственного интеллекта и логического программирования.
ЛЛ1602110000—423041(01)—901602110000—423041(01)—9022—9022—90ББК 32.973ББК 32.973
Л
Л
1602110000—423041(01)—90
1602110000—423041(01)—90
22—90
22—90
ББК 32.973
ББК 32.973
Редакция литературы по математическим наукам
ISBN 5-03-001636-8 (русск.) ©
ISBN 2-04-018658-1 (франц.) ©
Bordas, Paris, 1988 перевод на русский язык, П. П. Пермиков, 1990
Предисловие редактора перевода
Многообразие научных и технических исследований, называемое искусственным интеллектом, уже давно использует различные логические средства — язык, понятия и приемы логических исчислений. В искусственном интеллекте есть целая область, существенно опирающаяся на логические представления и конструкции, основная ее задача состоит в разработке способов доказательства теорем.
Вполне естественным поэтому представляется стремление авторов данной книги рассказать и показать, где и как работает логика в искусственном интеллекте; причем они попытались сделать это так, чтобы изложение было доступно даже читателю, не имеющему специальной подготовки ни по искусственному интеллекту, ни по логике.
Отметим, однако, что решить эту сложную задачу в полной мере авторам, как нам кажется, пока не удалось. Но все же «развеять немного туманную завесу» над довольно обширной «логической панорамой» искусственного интеллекта они смогли.
Читателю, не являющемуся специалистом по логике, книга, бесспорно, сослужит добрую службу, хотя и потребует от него систематического ее прочтения и привлечения хорошего руководства по математической логике. Для читателя, имеющего традиционную логическую подготовку, т. е. изучавшего теорию высказываний (логику и исчисление) и теорию предикатов первого порядка (логику и исчисление), интерес могут представить гл. 3 и 4, материал которых на русском языке в достаточно последовательном и полном виде пока еще не появлялся. Та часть книги, в которой описывается ряд аспектов логического программирования, просто представляет читателю некоторые взаимосвязи, существующие между логическими исчислениями и языками логического программирования. Она, естественно, не может служить руководством по Прологу.
В предисловии авторы говорят о своем намерении осветить в последующих томах и другие важные приложения логики в искусственном интеллекте. Как стало известно, в настоящее время появился второй том, имеющий подзаголовок «От модальной логики к логике баз данных».
В заключение отметим, что, по нашему мнению, книга будет полезна научным и инженерно-техническим работникам, а также студентам старших курсов вузов и всем читателям, интересующимся приложениями математической логики.
' Г. П. Гаврилов
Цель этой книги — представить понятия и методы искусственного интеллекта (ИИ), используя в качестве определяющего логический подход. Мы стремились добиться достаточно автономного и дидактически выдержанного изложения. Оно ориентировано на читателей (студентов или исследователей), имеющих хорошую культуру в области математики и информатики. Однако особых знаний ни в логике, ни в ИИ не предполагается. Мы пока что запланировали выпустить два тома. Содержание данного тома, первого из них, можно описать следующим образом.
В первой главе собраны математические и логические сведения, которые будут использоваться в дальнейшем. Излагаются основные понятия классической логики. Сперва рассмотрено исчисление высказываний, а затем — исчисление предикатов. Особое внимание уделено методу резолюций и связанным с ним понятиям, что обусловлено их ролью в приложениях. .
Вторая глава представляет аксиоматический подход к логике и служит введением в теории первого порядка. В ней показано, как исчисление предикатов превращается в основу теории для изучения специфических математических структур. В этом контексте изложены некоторые фундаментальные вопросы логики, естественным образом продолжающиеся в теоретическую информатику. В частности, это касается алгоритмических языков Тьюринга и Гёделя, тезиса Чёрча, класса вычислимых функций и понятия разрешимости.
В третьей главе показано, как классическая логика (особенно логика предикатов) может использоваться для представления знаний и автоматических рассуждений, относящихся к ним. Изложены методы, позволяющие преобразовать логическое представление в сетевое и объектное. Затем обсуж-
даются сравнительные достоинства этих различных представлений. Классическая логика связана с формализацией корректных рассуждений. Однако, как это бывает в ИИ, моделирование рассуждений не ограничивается областью абсолютно корректных рассуждений. Основанные на неполной, неточной или изменчивой информации, наши рассуждения часто гипотетичны, лишь в той или иной степени правдоподобны и предполагают осуществление систематических пересмотров (модификаций).
Четвертая глава служит введением в логики, которые предназначены для формализации модифицируемых рассуждений: логики умолчаний, модальные логики знания и веры, немонотонные логики, авто- эпистемические логики.
Пятая глава — вспомогательная. В ней показывается, как логическая интерпретация формальных грамматик и их правил вывода приводит к языкам логического программирования, наиболее известным из которых является Пролог. Грамматики классифицированы по иерархии Хомского. Каждая из грамматик этой иерархии описывается соответствующей машиной или автоматом. Автомат является основной моделью в теории грамматик и языков. Эта модель послужила источником сетевого формализма. Показана связь между такими сетями и языками функционального программирования, среди которых особенно типичен Лисп.
В шестой главе представлен язык программирования Пролог. Его создание навеяно формальной логикой и формальными грамматиками. В Прологе некоторые логические формулы (хорновские дизъюнкты) становятся инструкциями, допускающими исполнение на ЭВМ. Пролог можно считать языком ИИ, который хорошо приспособлен для автоматизации некоторой формы логических рассуждений. В этом смысле он представляет собой итог изучения понятий и методов ИИ, основанных на логике.
Итак, главная цель авторов — изложить согласованно и стройно набор дисциплин, включающий: классические логики, представление знаний и корректные рассуждения, неклассические логики, моди-
фицируемые рассуждения, формальные грамматики, теорию автоматов, логическое программирование (особенно язык Пролог). Это интеграция различных дисциплин такого типа для решения сложных проблем, составляющих предмет того, что обычно принято называть ИИ. Среди проблем, особенно часто исследуемых свойственными ИИ методами, назовем распознавание и понимание речи и изображений, создание экспертных систем, имитацию рассуждений (например, в функционировании сознания или медицинских дисциплинах), робототехнику.
Зависимость между главами первого тома этой книги можно схематически изобразить так.
Планируется выпуск второго тома, который будет посвящен четырем следующим темам:
временная логика и ее приложения в ИИ и информатике,'
углубленное изучение представления знаний и рассуждений,
логические грамматики и их применение к моделированию естественного языка и пониманию речи,
логика баз данных и баз знаний.
Авторы хотели представить в этих двух томах основы ИИ, руководствуясь логикой. Важные аспекты ИИ были либо сильно сокращены (как, например, логическое программирование), либо полностью обойдены молчанием. В частности, последнее относится к:.
функциональному программированию и объектно-ориентированному программированию.
доказательству теорем и верификации программ,■
эвристикам поиска и стратегиям,
видению, пониманию речи, обучению, '
построению экспертных систем.
Эти темы могли бы быть изложены в последующих томах.
Мы благодарны всем, кто помог нам в работе:
Даниэль Брике, Мари-Франс Деклерфей, Даниэль Дзиржовски, Пьер-Ив Шоббен и Мишель Зинцофф согласились прочесть и прокомментировать части этой книги.
Анна-Мари Де Сёсте и Эдит Моэ участвовали в редактировании текста.
Один из авторов (Эрик Грегуар) благодарит Бельгийский институт научных исследований в промышленности и сельском хозяйстве за оказанную поддержку (Конвенция 4856: Общее направление исследований в ИИ).
Логика
Исчисление высказываний
Введение
Исчисление высказываний —■ одна из самых простых теорий, однако оно основательно используется в весьма различных областях. Логикам, информатикам и математикам необходима полная ясность.
Исчисление высказываний изучает предложения, которые могут быть либо истинными, либо ложными. Рассмотрим три следующих истинных предложения (утверждения):
За четверть часа до своей смерти он был еще ЖИВ.■
Если' верно, что когда идет дождь, то дорога мокрая, то справедливо также и следующее утверждение: если дорога сухая, то дождя нет.
Земля вертится.
Чтобы убедиться в правильности первого предложения, достаточно понимать смысл слов: это предложение является истиной языка. Чтобы принять второе утверждение, достаточно понимать смысл некоторых слов (если ... то, нет), а также знать, что куски фразы «идет дождь» и «дорога мокрая» являются высказываниями, т. е. предложениями, которые могут быть истинными или ложными. Второе предложение останется истинным, если заменить эти два высказывания другими. Такие истины языка называются логическими истинами. Напротив, третье предложение не является истиной языка, так как оно выражает некоторый факт (в данном случае — из физики и астрономии). Таким образом, это предложение — фактическая истина.
Словарь
Пропозициональный логический словарь традиционно составляется из бесконечного счетного множества
высказываний, обозначаемых строчными буквами (иногда с индексами), и пяти связок (точнее, логических или пропозициональных, связок), описанных и таблице на рис. 1.1.
название
обычное обозначение
ТИП
другие обозначения
отрицание
1
унарный
—, ~, not, не
КОНЪЮНКЦИЯ
А
бинарный
&,., and, н
дизъюнкция
V
бинарный
|, or, или
импликация
бинарный
эквивалентность
=
бинарный
Рнс. 1.1. Логические связки.
Высказывания представляют собой предложения, которые могут быть истинными или ложными. Логическая истинность, упомянутая в § 1.1.1, может быть записана как
(р =></)=> (П р П р).
Ясно, что эта фраза остается логически истинной при любых предложениях, представленных высказываниями р и q. Естественно потребовать, чтобы одинаковые высказывания представляли одинаковые предложения. Такой тип замены называется одновременной подстановкой.
Здесь почти не рассматривается соответствие между фразами (и рассуждениями) естественного языка, с одной стороны, и формулами исчисления высказываний, с другой стороны [86]. К этому вопросу мы еще вернемся в § 1.1.5. .
Синтаксис исчисления высказываний
Теперь займемся логикой высказываний как таковой, т. е. безотносительно к ее связям с фразами естественного языка. В таком контексте логику высказываний часто называют исчислением высказываний.
Словарь исчисления высказываний дает возможность строить сложные, или составные, высказывания из исходных (простых, элементарных), соединяя последние связками. Правила построения описывают те выражения, которые являются объектами языка. Такие высказывания называют формулами. Аналогия с естественными языками очевидна: фраза — это составное высказывание, построенное по определенным правилам.•
Совокупность правил построения выглядит так:
Базис: всякое высказывание является формулой.
Индукционный шаг: если X и У—формулы, то П X, (ХА У), (XV У), (ХгэУ) и (X = = У) — формулы.
Ограничение: формула однозначно получается с помощью правил, описанных в базисе и индукционном шаге.
Эта грамматика требует некоторых пояснений. Прежде всего, появились два новых типа символов: X, У и (,). Круглые скобки позволяют указать порядок, в котором применялись правила построения. Например, в формуле
(pA^Vr))(1.1)
индукционный шаг применялся дважды: первый раз — при построении формулы (</ V г) из формул q и г, а второй — при построении заключительной формулы из формул р и (q V г). Скобки здесь использовались так же, как и в арифметике. Естественность употребления скобок является следствием древовидности структуры логических формул и арифметических выражений. Описанное в базисе правило сопоставляет высказывания висячим узлам дерева, а индуктивное правило, сформулированное в индукционном шаге, порождает дерево, растущее из некоторого узла (связки) и построенное на основе одного из двух ранее сформированных деревьев (рис. 1.2). Корневой узел (корень) дерева высказываний, соответствующего некоторой формуле, является связкой. Ее называют главной связкой формулы. Формула, у которой глав? ная связка — импликация (эквивалентность), иногда называется условной ^биусловнойу
Рис. 1.2. Древовидная форма формулы (1.1).
Естественным образом вводятся и прописные буквы X и Y. Это метасимволы, т. е. не принадлежащие языку обозначения, позволяющие вводить понятия и свойства этого языка. Буквы р, q, г представляют определенные высказывания. Метасимволы X и Y служат для обозначения формул вообще.
Если при построении формулы X формула Y используется как элемент в индуктивном правиле, то Y называется подформулой формулы X. Множество подформул формулы (1.1) таково:
{р, q, г, (q V г)}.
Множество формул является подмножеством множества всех слов (соединений), построенных из исходных символов. Это множество слов счетное (можно установить взаимно однозначное соответствие между ним и множеством натуральных чисел). Следовательно, множество формул счетное. Оно является также рекурсивным (или разрешимым), то есть можно достоверно выяснить, является ли даннное слово'(соединение) формулой или нет. Скобки в изображении формул служат также для установления различия формул, например
(р Л {q V г)) и ((р A q) V г) — разные формулы.
Аналогичная ситуация имеет место и в арифметике. Так, например, формулы а *(6 + с) и (а*Ь)+с— различные.
По причинам удобочитаемости некоторые пары круглых скобок иногда заменяют парами фигурных или квадратных. Кроме того, когда позволяет контекст, некоторые пары скобок вообще опускают.
Семантика исчисления высказываний
Объектами изучения естественных и формальных языков являются, в частности, синтаксис (который позволяет распознавать фразы среди наборов слов) и семантика (которая придает определенное значение фразам). В равной мере это относится к исчислению высказываний.
Уже отмечалось, что высказывание либо истинно, либо ложно. Поэтому введем семантическую область {И, Л}. Интерпретировать формулу — значит приписать ей одно из двух значений истинности И или Л (часто используют обозначения 1 для И и 0 для Л).
Семантика (то есть набор правил интерпретации формул) должна быть композиционной: значение формулы должно быть функцией значений ее составляющих. Точнее, значение истинности формулы зависит только от структуры этой формулы и от значений истинности составляющих ее высказываний.
Таким образом, связки исчисления высказываний представляют функции истинности °: например, значение истинности формулы (X А У) будет известно, если известны значения истинности X и У. Рис. 1.3 описывает семантику отрицания. Семантика бинарных связок дана на рис. 1.4.
X
и л
л и
Рис. 1.3. Таблица истинности для отрицания.
X
У
X А У
X V У
X D У
X = У
и и л л
и л и л
и л л л
И " и и л
и л и и
и л л и
Рис. 1.4. Таблица истинности для бинарных связок.
11 Называемые также булевыми (или булевскими') функциями или функциями алгебры логики. — Прим. ред.
р
9
т
q D т
Р э (9 D г)
Р A q
(Р A g) D т
(1-2)
и
И
и
И
И
И
И
И
и
и
л
л
л
И
Л
И
и
л
и
И
И
Л
И
и
и
л
л
и
И
Л
И
и
л
и
и
и
И
Л
И
и
л
и
л
л
И
Л
И
и
л
л
и
■ и-
И
Л
И
и
л
л
л
и
И
Л
И
и
Рис. 1.5. Пример.
Интерпретация — это отображение I, сопоставляющее каждому элементарному высказыванию р некоторое значение истинности. Интерпретацию I, заданную на множестве элементарных высказываний, можно распространить (продолжить) на множество формул (высказываний) посредством таблиц истинности. Соответствующее продолжение (расширение) / тоже называется интерпретацией. Интерпретация, при которой истинное значение формулы есть И, называется моделью этой формулы.
Литера^ — это элементарное высказывание или его отрицание. Литеры р и П р противоположны. Интерпретация определяет разбиение множества L литер на два подмножества £и и Ln, каждое из которых содержит по одному элементу из каждой пары противоположных литер.
Для иллюстрации метода таблиц истинности докажем, что формула
(р 2D (<7 zd г)) = ^р л 9) zd г) (1.2) истинна при любых интерпретациях. Соответствующая таблица с 8 возможными интерпретациями приведена на рис. 1.5.
Исчисление высказываний и естественный язык
В исчислении высказываний имеется пять связок, использование и смысл которых были формально пред
!> Или литерал. — Прим, перед.
ставлены в предыдущих параграфах. С одной стороны, ясно, что для этих связок имеются «эквиваленты» в естественном языке. В этом параграфе мы очертим границы сходства между логическими связками и связками естественного языка. С другой стороны, естественный язык был бы сильно обеднен сокращением числа его связок до пяти. Далее в данном параграфе мы покажем, что, напротив, исчисление высказываний не станет богаче, если ввести дополнительные связки..
В естественном языке связки «не», «и», «или», «если ..., то» на первый взгляд вполне однозначно описываются приведенными выше функциями истинности. Например, фразы
Хорошая погода или идет дождь
и
Идет дождь или хорошая погода
кажутся синонимами. Однако иначе обстоит дело с фразами
Ему стало страшно и он убил чужака
и
Он убил чужака и ему стало страшно,
так как слово «и» подчеркивает здесь определенный временной и причинный нюанс. Наконец, многочисленные связки естественного языка ни в коей мере не соответствуют функциям истинности. Связка «потому что» служит хорошим тому примером. Чтобы убедиться в этом, предположим, что идет дождь (высказывание р) и что земля мокрая (высказывание р). Легко принимается как истинное высказывание
q потому что р, но нельзя считать истинным высказывание р потому что q.
Логическая дизъюнкция являетсялеразделительной °: она истинна, если истинным является хотя бы один
11 Или, иначе, соединительной. — Прим, персе.
из двух ее операндов. В естественном языке союз «или» иногда является исключающим (разделительным). В предложении «целое число четно или нечетно» одна ветвь альтернативы истинна, а другая ложна.
Импликация — очень важная связка; она отражает структуру рассуждений, в частности математических. Первый ее операнд называется посылкой (или антецедентом), а второй — заключением (или консеквентом). Ясно, что если посылка истинна, то импликация принимает значение истинности заключения. Однако может вызвать удивление, что импликация бывает истинна и тогда, когда ее посылка ложна. Тем не менее легко убедиться, что импликация (как мы ее определили) является единственной связкой, удовлетворяющей следующим требованиям:
Если первый операнд истинный, то значение истинности совпадает со значением второго операнда.
Значение истинности зависит от двух операндов.
Связка некоммутативна.
В той мере, в какой эти три критерия удачно очерчивают естественную импликацию, принятое нами определение служит наилучшим возможным приближением. Чтобы подчеркнуть этот нюанс, смоделированную связкой zd импликацию иногда называют материальной импликацией. Материальная импликация—основная связка в математических рассуждениях. Она соединяет условие Н и утверждение Т в теореме. Однако было бы незаконно писать И zd Т, так как Н и Т — не логические формулы, а какие-то достаточно произвольные высказывания: неформальные или принадлежащие некоторому нелогическому формализму. В таких случаях лучше писать Н^Т. Аналогично, в таком контексте лучше писать С1<=^С2, а не С, = С2.
Исчисление высказываний выражает только чисто функционально-истинностные связи между высказываниями. Это очень хорошо, однако желательно иметь возможность выражать все многообразие взаимосвя-
зей. Кроме того, нет особых причин ограничиваться унарными и бинарными связками.
Связка (функционально-истинностная). задается своей таблицей истинности. Таблица для связки с п операндами имеет 2П строк. С каждой из этих строк связано свое значение истинности. Таким образом, можно задать 2 и-арных (то есть с п операндами) связок. Однако на самом деле двух связок П и лэ достаточно для порождения всех этих многочисленных связок при любых значениях п.
Три другие традиционные связки могут быть «определены» с помощью отрицания и импликации посредством следующих всегда истинных формул:
(X V У) ^ ("1 X гэ У),
(ХДУ)^П(Х^ПУ),(1.3)
(Х = УН((ХэУ)Л(УэХ)).
(Здесь центральная связка ^ понимается как символ, обозначающий «равенство по определению».)
С другой стороны, легко показать, что каждую n-арную связку можно определить (выразить, описать) через пять традиционных связок. Приведем пару расхожих примеров (как на естественном языке, так и на математическом). Формула
(X Л I У) V (И X Л У)
задает исключающую дизъюнкцию 2> X и У. Далее, высказывание «если X, то У, иначе Z» описывается формулой
(X гэ У) Д (П X ^ Z), соответствующей часто употребляемой тернарной связке. Отметим еще, что связками с нулевым числом операндов являются только И и <П. Их можно также считать n-арными связками для всех натуральных значений п.
Можно еще выбирать: отрицание и конъюнкцию, отрицание и дизъюнкцию. Напротив, используя только отрицание и эквивалентность, нельзя получить все другие связки.
Заметим наконец, что бинарная связка «не-и» *\ обозначаемая f, позволяет определить все другие связки. По определению (X f У) ложно, только если X и У истинны. В частности, (X f X) эквивалентно П X. Это свойство порождать все другие связки (см. [86]) используется в цифровой электронике. Имея логические схемы, реализующие «не-и», можно построить любую логическую схему, моделирующую заданную функцию истинности (и соответствующую ей связку). Связка «не-или» 2), обозначаемая |, является еще одной бинарной связкой, порождающей все другие связки. По определению (X | У) истинно тогда и только тогда, когда X и У ложны.
Выполнимые и общезначимые формулы -
В этом параграфе мы рассмотрим формулы, которые истинны при всех интерпретациях, а также формулы, которые при всех интерпретациях ложны. В дальнейшем это подведет нас к определению логического следствия.
Формула семантически выполнима или просто выполнима, если она допускает некоторую модель, т. е. ее можно интерпретировать со значением И. Например, формулы (рА^) и (р V </) выполнимы: они истинны, в частности, если р и q истинны. Другие примеры: все высказывания выполнимы, отрицания высказываний тоже выполнимы. Формула, не являющаяся выполнимой, называется невыполнимой. Формула (р А “I р) невыполнима.
Формула общезначима, если она истинна, независимо от’истинностных значений, приписанных составляющим ее высказываниям. Формула (1.2) общезначима так же, как и формулы (р V Пр), (prop) и (ПП р = р). Формулу, которая не является общезначимой, иногда называют необщезначимой.
Сразу же заметим, что отрицание общезначимой формулы — невыполнимая формула. Точно так же
’> Иные названия: дизъюнкция отрицаний или штрих Шеффера. — Прим, перев.
®> Конъюнкция отрицаний или стрелка Пирса. — Прим, перев.
отрицание выполнимой формулы — необщезначимая формула. Иногда нейтральной называют формулу, которая не является ни общезначимой, ни невыполнимой.
Формула, содержащая к различных высказываний, допускает 2к интерпретаций. Рассмотрев все эти 2к интерпретаций, можно тотчас определить, с какой формулой мы имеем дело — общезначимой, нейтральной или невыполнимой. Из рис. 1.5 (§ 1.1.4) следует, что формула (1.2) общезначима, а, например, формулы р Л q и р 7D г) нейтральны.
Таким образом, множество формул естественно делится на три рекурсивных подмножества (§ 1.1.3). Эти три подмножества бесконечны.
Общезначимые формулы исчисления высказываний часто называют тавтологиями. Если А — формула, то запись.
ИЛ
означает, что А есть тавтология. Более общо: если Е — множество формул, то запись
Е\= А
означает, что при всех интерпретациях, при которых истинны все формулы из Е, истинна также формула А. Формула А называется логическим следствием из Е. Таким образом, тавтология — логическое следствие из пустого множества. Если Е содержит единственный элемент В, то пишутВ)=Д вместо {В} )= А. Легко устанавливается следующее утверждение: А является логическим следствием из В тогда и только тогда, когда материальная импликация (ВлэД) есть тавтология (это остается верным, в частности, если В невыполнима или А общезначима). Данный результат можно записать так:
В'^ А<=> \=<В^ Д)..
В более общем виде имеем
№, ..., Нп^С^\=(Нх л ... Д Нп^С.
В этом контексте формулы Н, называют гипотезами, а формулу С — заключением. Фундаментальная
проблема логики, называемая проблемой дедукции, состоит в следующем: определить, является ли формула С логическим следствием множества формул Е. Мы только что видели, что, когда множество Е конечно, проблема дедукции сводится к определению некоторой условной общезначимости. Определение, которое мы сейчас введем, позволит заняться проблемой дедукции эффективнее.
Множество формул Е семантически выполнимо (или просто выполнимо'), если все его элементы допускают общую модель; в противном случае оно невыполнимо. Таким образом, множество формул уподобляется (с точки зрения семантики) конъюнкции своих элементов.
Формула С является логическим следствием конечного множества Е тогда и только тогда, когда fUtnC) невыполнимо. В этом состоит принцип дедукции. Заметим также, что множество Е невыполнимо тогда и только тогда, когда Л — его логическое следствие. Или еще можно сказать, что любая формула — его логическое следствие. Символически принцип дедукции записывается следующим образом:
{Яь ..., H^C^VHxнп, -АС^Л.
Различные формулировки этого принципа будут даны в § 1.1.9. Практический метод применения принципа дедукции представлен в § 1.1.13. Случай дедукции с бесконечным множеством формул рассматривается в § 1.1.18.■
Если формулы А и В — логические следствия друг Друга, то они называются логически эквивалентными. Такая ситуация имеет место тогда и только тогда, когда формула (Д = В) является тавтологией.
Правило одновременной подстановки, сформулированное чуть ниже, представляет собой очень простое средство порождения тавтологий.
Если X — тавтология, р — высказывание и А — формула, то выражение, получаемое из X в результате одновременной замены всех вхождений ' р на А в X, является тавтологией..
Алгоритмическая точка зрения
В предыдущем параграфе мы определили понятия общезначимой формулы и выполнимой формулы. В данном и следующем параграфах будут описаны алгоритмы, позволяющие эффективно распознавать выполнимость и общезначимость формул.
Задача выяснения того, является ли некоторое выражение формулой, достаточно проста. Напротив, выявление выполнимости или общезначимости формулы может оказаться довольно нудной процедурой. В § 1.1.6 мы видели, что формула, содержащая к различных высказываний, допускает У интерпретаций. Заманчиво иметь более эффективный алгоритм проверки, чем последовательный просмотр всех интерпретаций. В последующих параграфах будут представлены основные результаты, полученные в этой области.
Явно или неявно различные алгоритмы используют понятие семантического дерева. Если дано конечное или счетное множество высказываний Р = {рр„, ...}, то семантическое дерево — это бинарное корневое дерево, удовлетворяющее следующим условиям.
Каждая дуга помечена позитивной или негативной литерой, взятой из Р.
О Литеры, которыми помечены две дуги, выходящие из одного узла, противоположны.
О Никакая ветвь не содержит более одного вхождения каждой литеры.
Никакая ветвь не содержит пару противоположных литер.
Пример семантического дерева изображен на рис. 1.6. Если Р конечно, то все соответствующие ему семантические деревья обязательно конечны. Если Р бесконечно, то существуют конечные и бесконечные семантические деревья. Напомним, что бесконечное бинарное дерево непременно содержит хотя бы одну бесконечную ветвь..
Каждому узлу N семантического дерева соответствует частичная интерпретация, т. е. функция 1^,
Рис. 1.6. Неполное семантическое дерево.
которая сопоставляет истинностное значение некоторым элементам из Р. Частичная интерпретация IN сопоставляет значение И (соответственно Л) высказыванию р, если некоторая дуга пути, соединяющая N с корнем, помечена литерой р (соответственно П р). Частичная интерпретация не определена для р, если ни одна из литер р и —। р не встречается на этом пути.
Конечное семантическое дерево полно, если каждый его лист ’> соответствует некоторой тотальной, т. е. всюду определенной, интерпретации. Бесконечное семантическое дерево полно, если каждая ветвь, выходящая из корня, определяет тотальную интерпретацию. Полное семантическое дерево, соответствующее Р, является конечным тогда и только тогда, когда Р тоже конечно. В противном случае все его ветви бесконечны.
Для того чтобы определить, выполнима ли формула А, тривиальный -алгоритм требует просмотра некоторого полного семантического дерева, соответствующего (конечному) множеству высказываний, встречающихся в А. Для каждого листа этого дерева формула А оценивается согласно соответствующей интерпретации. Формула выполнима, если по крайней мере для одного из листьев получается значение И. Этот алгоритм крайне неэффективен: если формула А содержит п различных высказываний, то нужно рассматривать 2П интерпретаций.
Алгоритм Киайна [86] — довольно непосредственное усовершенствование тривиального алгоритма.
11 То есть концевой узел. — Прим. ред.
Если при всех возможных расширениях некоторой частичной интерпретации исследуемая формула принимает одно и то же истинностное значение, то бесполезно строить поддерево, исходящее из узла, соответствующего этой частичной интерпретации. Напри-' мер, если исследуемая формула есть (pV^Vr), то любой путь с положительной литерой соответствует такой интерпретации, при которой эта формула истинна.
Рассмотрим применение этого алгоритма для проверки общезначимости формулы
[((Р Л <?) ^ г) Д (р => </)] =) (р => г).
Начинаем с произвольного упорядочивания множества {р, q, г} высказываний, содержащихся в формуле. Например, пусть порядок будет (р, q, г). Это эквивалентно тому, что дуги уровня 1 (исходящие из корня) помечены литерами р или “I р, дуги уровня 2 — q или И </ и дуги уровня 3 — г или П г.
Сначала рассмотрим те интерпретации, при которых р принимает значение И. При такой частичной интерпретации наша формула сводится к
[(<7 2D г) Л q] 2D г.
Если q интерпретировать как И, то получим (гс2г), что общезначимо. Если q^ интерпретировать как <П, то имеем (Л zd г), что тоже общезначимо.
Далее рассмотрим те интерпретации, при которых р ложно. Наша формула сводится к
[(Л 2D г) А И] гэ И,
что всегда истинно.
Из проведенного анализа заключаем, что исследуемая формула всегда истинна, т. е. общезначима. Соответствующее семантическое дерево изображено на рис. 1.6.
Слово «истинно» и символ И часто употребляются вперемежку. Обычно это не причиняет неудобств и облегчает рассуждения. Разрешается также вводить семантические символы И и Л прямо в сами формулы. Это не опасно. В таком контексте И и Л можно
считать сокращениями или разновидностями записей соответственно (р V ~1 р) и (р Д ~1 р). Впрочем, некоторые авторы начинают вводить исчисление высказываний с константы Л (оператора без операндов) н связки лэ. Тогда “I А определяется йак (А лэ Л).
Алгоритм редукции
Алгоритм редукции, о котором сейчас пойдет речь, позволяет доказывать общезначимость формул с помощью приведения к абсурду. Это особенно удобно, когда формула содержит много импликаций. Для иллюстрации проверим общезначимость формулы
[(р Д р) 2D г] 2D [p^(pZDr)].
Предположим, что при некоторой интерпретации I эта формула принимает значение Л. Согласно таблице истинности импликации, условное предложение ложно тогда и только тогда, когда его заключение ложно, а посылка истинна. Из этого правила получаем
Цр^ (р=)г)) = Л,
/ ((р А Р) 2D Г) = И.
То же самое правило, примененное к первой строке этого результата, позволяет определить /. Получаем
/(р) = И, /(р) = И, 7(г) = Л,
что противоречит соотношению Ц(р А р)=> г\ = И Это противоречие означает общезначимость исходной формулы.
Легко построить примеры, для которых алгоритмы Куайна и редукции ненамного эффективнее, чем тривиальный алгоритм. Точнее, установлено, что проблема выявления общезначимости (или выполнимости) формулы исчисления высказываний NP-полна. Не вдаваясь в рассуждения, выходящие за рамки этой книги, отметим, что указанный факт означает ничтожность вероятности существования эффективного общего алгоритма для проверки выполнимости или общезначимости формул исчисления высказываний.
Тем не менее в некоторых частных случаях возможно эффективное решение этой проблемы. Метод резолюций, который будет описан ниже, позволяет распознавать общезначимость и невыполнимость формул. В большинстве случаев этот алгоритм достаточно эффективен. К затронутому сейчас вопросу мы еще вернемся в § 1.1.12.
Алгебраический подход
Семантика произвольной формулы Исчисления высказываний полностью определяется ее таблицей истинности. Отметим, что многие формулы могут иметь одну и ту же семантику. Например, таковы формулы р 2D (</ лэ г) и (рА</)=)г (рис. 1.5, § 1.1.4).
Такое же явление типично и в элементарной алгебре. Например, алгебраические выражения х(х— у^ (х + у) и х3—■ хуг имеют «одинаковую семантику»: они представляют одинаковые полиномы (и одинаковые функции).
Для логических формул, как и для формул алгебры полиномов, важно уметь обнаруживать эквивалентность двух различно представленных объектов. Методы, используемые для этой цели, подразумевают прежде всего изучение «замечательных тождеств», которые задают различные способы представления объекта. А затем удобно бывает задать одну или пару канонических форм представления объектов. В случае с полиномами обычно используют две такие формы: произведение сомножителей минимальной степени и сумму одночленов. Замечательные тождества позволяют более или менее легко перейти от одного представления к другому.
В контексте исчисления высказываний понятие логической эквивалентности берется вместо понятия тождества. Связка « соответствует логической эквивалентности: А « В означает |=(А = В).
Приведем первую группу основных логических эквивалентностей. Они относятся к связкам Д и V, рассматриваемым как отдельно, так и в их сочетании СО СВЯЗКОЙ 2D. '
Эти и последующие свойства доказываются методом таблиц истинности.
(X Л X) « X » (X V X) (идемпотентность), .
(X Л У) ~ (У Л X) )
(X VY) ~ (У V X) j (коммутативность), (1.4)
((X Л У) Л Z) » (X Л О'Л Z)) |
«х V У) v Z) ~ (X V (Г v Z)) ) (•»»»>*»»№).
Зададим бинарное отношение ^ на множестве формул. Выражение А ^ В означает )= (Д гэ В). Это отношение является отношением порядка, так как имеют место четыре следующих свойства (они избыточны): .
XX<х<х(рефлексивность).(рефлексивность).
X
X
<х
<х
(рефлексивность).
(рефлексивность).
Х^У и У^Х=^Х«У (антисимметричность),
Х^У и y^Z=J»X^2 (транзитивность), (1.5)
Х<У^((ХЛУ)-Х)Х<У^((ХЛУ)-Х)X < У о ((X v У) » У)X < У о ((X v У) » У)(элиминация).(элиминация).
Х<У^((ХЛУ)-Х)
Х<У^((ХЛУ)-Х)
X < У о ((X v У) » У)
X < У о ((X v У) » У)
(элиминация).
(элиминация).
В этом контексте наибольшая нижняя граница двух формул есть их конъюнкция, а наименьшая верхняя граница •— их дизъюнкция. На обычном алгебраическом языке структура, удовлетворяющая условиям (1.4) и (1.5), называется решеткой. Точнее, фактормножество формул относительно эквивалентности « является решеткой, называемой решеткой Линден- баума [5].
Третья группа логических эквивалентностей описывает отношения между связками конъюнкции и дизъюнкции:
((X Л У) V Z) «((X V Z) Л (У V Z)) j ((X v У) Л z) « ((X Л Z) V (У Л Z)) j((X Л У) V Z) «((X V Z) Л (У V Z)) j ((X v У) Л z) « ((X Л Z) V (У Л Z)) j(дистрибутивность).
((X Л У) V Z) «((X V Z) Л (У V Z)) j ((X v У) Л z) « ((X Л Z) V (У Л Z)) j
((X Л У) V Z) «((X V Z) Л (У V Z)) j ((X v У) Л z) « ((X Л Z) V (У Л Z)) j
(1-6)
' Связка «отрицание» описывается четвертой группой формул:
(X V П X) « И )
/у ап ( (дополнительность), -(1.7)
(Л Л IAJ ~ Ji j
И —I X ~ X (инволюция).
Снабженная свойствами (1.6) и (1.7), решетка Лин- денбаума становится булевой алгеброй.
Если в некоторой логической эквивалентности, не содержащей связку лэ, поменять местами, с одной стороны, Л и V, а с другой стороны, И и JI, то опять получим логическую эквивалентность. В этом состоит принцип двойственности. Впрочем, вхождение связки лэ легко исключить, пользуясь логической эквивалентностью
(X zd У) ~ (1 X V У).
Укажем еще законы де Моргана-.-
-I (X Л У) ~ (-1 X V -] У),.
п (А V У) ~ (и х Л П У).
Двойс: ценность встречается иногда в другой форме: от одной формулы переходят к двойственной ей, меняя местами, с одной стороны, Л и V, с другой стороны,— <П и И и, кроме того, заменяя каждое высказывание его отрицанием. Этот второй тип двойственности используется в рамках принципа дедукции (§ 1.1.6). Необходимое и достаточное условие того, что С — логическое следствие гипотез /Л, ..., Нп, имеет вид
Hi Л ... Л Нп Л И С « Л (прямая дедукция),
П Нх V .. . V ~1 Нп V С ~ И (обратная дедукция).
Переход от одного выражения к другому осуществляется с помощью двойственности (второго типа).
Перечисленные в этом параграфе логические эквивалентности можно задать в некоторой канонической форме представления формул, которая будет описана в следующем параграфе. Сразу же заметим, что каждая логическая формула может изучаться алгебраи-
чески. В частности, формула А общезначима тогда и только тогда, когда А « И.
Рассмотрим множество Р, состоящее из конечного числа (скажем, а) высказываний. Исходя из Р, можно породить бесконечно много формул. Однако существует только 22“ логически различных формул. Таким образом, алгебраический подход позволяет заменить при изучении бесконечное множество на конечное.
Дизъюнкты и нормальные формы
Как будет продемонстрировано в нашем изложении, бывает полезно преобразовать данную формулу в эквивалентную ей, имеющую вид «нормальной», или «канонической», формы. В этом отношении особый интерес представляют понятия «дизъюнкт» и «конъюнктивная нормальная форма».
Дизъюнктом ’> называется дизъюнкция конечного числа литер, то есть формула вида
(/, V /2 v ... V /J.
Ее часто записывают как V{/,[<= 1, ..., п} или просто как множество литер: {/>|z = 1, . .., и}.
Такое представление является исключением из правила, упомянутого в конце § 1.1.6: дизъюнкт эквивалентен дизъюнкции (а не конъюнкции) своих элементов. По этой причине нужно каждый раз явно оговаривать, что множество литер представляет именно дизъюнкт.
Пустой дизъюнкт — единственный невыполнимый дизъюнкт. Естественно его обозначить через Л (иногда в литературе встречается символ □).
Конъюнктивной нормальной формой (КНФ) называется конъюнкция конечного вдела дизъюнктов.
11 В оригинале — clause (клауза, т. е. «статья»), В отечественной литературе широко используется термин «дизъюнкт». Его мы и применяем в данном переводе, хотя различные производные от слова clause мы переводим с сохранением «оригинального написания», например «неклаузальное правило резолюций» (см. § 1.1.15). — Прим, перев.
Теорема 1.1. Любая формула имеет логически эквивалентную ей КНФ. '.
Доказательство. Ниже приведен алгоритм нормализации.
О Сначала заменяем (X = У) на (ХгзУ)Л(Улэ лэХ), а затем (U лэ V)—на (—I U V V). Это делается для исключения связок = и лэ.
О Необходимое число раз применяются правила преобразования, выведенные из законов де Моргана:
. -I (X л У) -> (П X V ”1 У),
П (X V У)->ПХ Л П У).
Символ ^- означает «заменяется на». В настоящем контексте правило (а-* А) означает только (а « Ь). Двойные отрицания «гасятся» по закону
1ПХ->Х.
На этой стадии связка «отрицание» остается только непосредственно перед высказываниями. О Наконец, необходимое число раз применяются правила преобразования, выведенные из законов дистрибутивности:
X v (У Л Z)->(X v У) Л (X v Z),.
(XAy)VZ->(XVZ)A(yVZ).
Формула, полученная в конце третьего этапа, это и есть нормальная форма, эквивалентная исходной формуле. □
Дизъюнкты, содержащие противоположные литеры (то есть высказывание и его отрицание), общезначимы л могут быть опущены. Можно также опускать повторения литер в пределах одного и того же дизъюнкта. Полученная таким способом нормальная форма называется приведенной.
Алгоритм нормализации формулы очень прост, но, вообще говоря, неэффективен.
Если в некоторой нормальной форме дизъюнкт с, содержится в дизъюнкте С/, то с,- можно опустить. В частности, содержащую пустой дизъюнкт нормаль-
ную форму можно заменить этим единственным дизъюнктом.
Пустая нормальная форма эквивалентна И, в то время как нормальная форма, содержащая только пустой дизъюнкт, эквивалентна Л.
Дизъюнкт общезначим тогда и только тогда, когда он содержит пару противоположных литер. Единственным невыполнимым дизъюнктом является пустой дизъюнкт Л.
Нормальная форма общезначима тогда и только тогда, когда все ее дизъюнкты общезначимы.
. В качестве примера приведем к КНФ формулу ' (р 2D ^ 2D г)) 2D ((р Д s) 2D г).
Каждая из нижеприведенных формул эквивалентна исходной.■
Первый этап (исключение импликации): •
(р 2D (q 2D г)) 2D ((р Д s) 2D г),
”1 (р 2D (q =) г)) V ^Р A s)^ г),
П (П р v (» 2)Г» V (и (р A S) V г),■
"П (1 Р V (и q V Г)) V (П (р A s) V Г).
Второй этап (перенос и снятие отрицания):
(П П р A I (П q V г)) V ((П р V ”1 s) V г),
(П ”1 р А (П I q А П г)) V ((Л Р V И s) V г),
(pAtoA'lrMVfHpV-lsjVr).
Третий этап (применение дистрибутивности и упрощение):-.
(р V ((П р V П s) V г)) А ((<7 A ~lr) V
V ((Пр V Hs) V г)),
(р V (П р V 1 s) V г) A lq V (“1 Р V П s) V г) А
А (И г V (Пр V Is) V г)),
(pVnpVlsVr)A(<7V-lpV"~|sVr)A
A Пг V Пр V "Is V г),
и A to V пр v ns V Г) А и,
to v п р v п$ v А
Нормальная форма содержит единственный дизъюнкт (</ V ~| Р V "I s V /■). Отсюда следует, что исходная формула ложна только когда р и s истинны, а </ и г ложны.
Замечание. Понятие дизъюнкта важно для практики. Описание задач и алгоритмов в терминах дизъюнктов составляет основу логического программирования вообще и языка Пролог в частности (разд. 5.1 и гл. 6).
Двойственным понятием к дизъюнкту является произведение1), или конъюнкт, конечного множества литер. Дизъюнктивная нормальная форма (ДНФ) — дизъюнкция конечного числа конъюнктов. Можно показать, что любая формула приводится к логически эквивалентной ей ДНФ.
Алгоритм Девиса и Патнема
В §§ 1.1.7 и 1.1.8 были описаны алгоритмы проверки выполнимости и общезначимости логических формул. В § 1.1.10 было введено понятие эквивалентной нормальной формы и предложен (теорема 1.1) алгоритм преобразования произвольной логической формулы в эквивалентную ей нормальную форму. Цель этого параграфа состоит в. описании алгоритма проверки выполнимости и общезначимости логических формул, предварительно приведенных к нормальной форме. '
Алгоритм Куайна для проверки выполнимости и общезначимости формулы (§ 1.1.7) упрощается в применении к КНФ. Прежде всего, проблема общезначимости становится тривиальной: речь идет о проверке тавтологичности каждого дизъюнкта. Проблема выполнимости более интересна. Предположим для простоты, что проверяемая КНФ — приведенная. Будем применять классические теоретико-множественные обозначения.
Пусть р — некоторое высказывание. Приведенная нормальная форма S разбивается на Sp (дизъюнкты,
” Встречаются также термины «конъюнкция». «импликант», «им- пликанта» и «грань». В оригинале — cube. — Прим. ред.
содержащие р), S^p (дизъюнкты, содержащие ~1 р) и S \ (Sp U S-, р) (остальные дизъюнкты).
Применительно к нормальным формам алгоритм Куайна сводится к следующим правилам.
Если S = ф, то S выполнима.
Если S = {Л}, то S невыполнима.
В остальных случаях:
выбираем высказывание р, входящее в S,
находим Sp, S_, р и 8" = S \ (Sp U S-, р),
получаем S', дизъюнкты которого — дизъюнкты из Sp, лишенные литеры р,
получаем S^ дизъюнкты которого — дизъюнкты из S-, Р, лишенные литеры И р.
Множество S невыполнимо тогда и только тогда, когда невыполнимы два множества (S' US") и (S^ U US").'
Замечание. Этот алгоритм рекурсивен; проблема выполнимости, поставленная для множества S, сводится к такой же проблеме для двух более простых множеств, уже не содержащих высказывания р.
Следующая лемма гарантирует корректность описанного алгоритма.
Лемма 1.2. Если р истинно, то форма S эквивалентна (S' U S"). Если р ложно, то S эквивалентна (s'pUS").'
Доказательство. Если р истинно, то все дизъюнкты с р тоже истинны и могут быть опущены. Можно вычеркнуть ложную литеру П р из каждого содержащего ее дизъюнкта. Эти упрощения преобразуют S = (Sp U S-, р U S") в (S^ р U S"). Случай, когда р— ложно, вполне аналогичен.□
Замечание. Осуществление этого алгоритма естественно изолировать бинарным деревом, на котором проверяются следующие условия.
• Следующий (по дуге р) за узлом, помеченным
S, узел "помечен выражением (S^pUS").
Следующий (по дуге П р) за узлом, помеченным S, узел помечен выражением (S' U S").
Очевидно, что это дерево — семантическое, хотя
различные высказывания не обязательно следуют в одном и том же порядке на каждой ветви.
В качестве примера применим упрощенный алгоритм Куайна для доказательства невыполнимости множества
3 = {р V q, PV г, П <7 V “I г, Пр).
Выбирая высказывание р, получаем'
Sp = b V q, р V г), 5пР = Пр},
3" = {Пр V Пг),
s^k.r), з;р=.{л},
(s;us") = {?, г, п,/v дг), •
(3;риЗ") = (Л, "Aq V Пг}.
Очевидно, что множество (3^113") невыполнимо. Таким образом, достаточно доказать невыполнимость множества £7 = (S'U 3")- Выбирая высказывание q, получаем
Uq = ^, Щр-rAqV "Н U" = H,
u'q = 0. ^р={пг},
<u'q и У") = {Л, г}, (tr q U и") = (П г, г).
Множества {Л, г} и (П г, г} невыполнимы. Проверка закончена.
Алгоритм Девиса и Патнема базируется на использовании нормальной формы исследуемой формулы— для выбора высказываний в оптимальном порядке. При этом не строятся бесполезные ветви семантического дерева [14]. Приоритетный выбор р удобен в двух следующих случаях:
3 содержит один из дизъюнктов с литерой р или П р.
Только одна из литер р и П р входит в 3. Например, предположим, что 3 содержит дизъюнкт (р). Множество (Sp U 3") будет содержать пустой дизъюнкт и, следовательно, будет невыполнимым. Таким образом, возможная невыполнимость для 3 сводится к невыполнимости для (S^pU3"). С другой
стороны, если р входит в S, тогда как П р не входит, то SL, р пусто. Возможная невыполнимость для S сводится к невыполнимости для (S'US").
Эта простая стратегия сильно увеличивает эффективность алгоритма. Всякий раз, когда она применима, она сводит проблему невыполнимости для S к проблеме невыполнимости для единственного множества S', более простого, чем S.
Позже мы вернемся к понятию рекурсивного алгоритма. Отметим здесь, что слово «рекурсивный» имеет много смыслов (понятие рекурсивного множества уже было затронуто в § 1.1.3).
В качестве примера интересно установить общезначимость одного расхожего метода доказательства, называемого доказательством разбором случаев. Обозначим гипотезу через h, два возможных случая — через р и q, а заключение — через с. Требуется доказать.
{ft, h zd (р V q), pZDc, ргэс)|=с.
Это сводится к доказательству невыполнимости множества
{/1, hz=>(p V qY р^с, qzDc, П с).
Представим элементы этого множества в виде дизъюнктов и проделаем следующие преобразования:
{h, И h V р V q, “I р V с, 1 q V с, П с).
{р V q, “I р V с, "Aq V с, ~1 с).
{р V q, ~l р, “I qY
{£. ^р}-.
(Л).
Здесь каждая строка соответствует одному прохождению цикла нашего алгоритма. Выбираемая литера подчеркнута.
Замечание. Сейчас самое время подчеркнуть в связи с этим примером ограниченность формальной
логики. На самом деле мы установили общезначимость формальной модели принципа доказательства разбором случаев. Обоснованность же соответствия между самим принципом (философским понятием) и его моделью (понятием формальной логики) лежит за пределами формальной логики.
Принцип резолюций .
Не существует общего, по-настоящему эффективного критерия для проверки выполнимости КНФ. Тем не менее есть достаточно удобный метод для выявления невыполнимости множества дизъюнктов. Действительно, множество дизъюнктов невыполнимо тогда и только тогда, когда пустой дизъюнкт Л является логическим следствием из него (§ 1.1.6). Таким образом, невыполнимость множества S можно проверить, порождая логические следствия из S до тех пор, пока не получим пустой дизъюнкт.
Для порождения логических следствий будет использоваться очень простая схема рассуждений. Пусть А, В и X — формулы. Предположим, что две формулы (ДУХ) и (В V Д X) — истинны. Если X тоже истинна, то отсюда можно заключить, что В истинна. Наоборот, если X ложна, то можно заключить, что А истинна. В обоих случаях (Д V В) истинна. В обозначениях § 1.1.6 получается правило
{ДУХ, В V ПХ}^=Л V В,
которое можно записать также в виде
{ПХгзД, ХэВ}!=ДуВ.
В том частном случае, когда X — высказывание, а Д и В — дизъюнкты, это правило называется правилом резолюций. Очень подробное обсуждение его содержится в [14]. Общезначимость правила резолюций выражается следующей леммой.
Лемма 1.3. Пусть Si и s2 — дизъюнкты нормальной формы S, I — литера. Если les, и “] I е s2, то дизъюнкт г = (s, \ {/}) (J (s2 \ {—1 Д) является логическим следствием нормальной формы S.
Следствие. Нормальные формы S и S U {г} эквивалентны.
Замечание. Дизъюнкт г называется резольвентой ДИЗЪЮНКТОВ S] и s2.
Доказательства невыполнимости, основанные на принципе резолюций
Доказательства невыполнимости логических формул очень важны в ИИ (гл. 5). Способы таких доказательств, основанные на принципе резолюций, выделяются среди прочих тем, что они дают возможность использовать средства автоматического доказательства, применяемые в логическом программировании (гл. 6).
При всей простоте метод резолюций (или, короче, резолюция) достаточен для обнаружения возможной невыполнимости множества приведенных дизъюнктов. Таким образом, можно попробовать доказать невыполнимость конечного множества дизъюнктов из S с помощью следующего алгоритма.
При условии, что Л ^ S, выбираем /, si, s2, такие, что /gsi и П / g s2; вычисляем резольвенту г;
заменяем S на S U {г}.
В качестве примера перепроверим невыполнимость множества
S = (p V », PV г, “1 q V ~1 г, Пр),
уже установленную в § 1.1.11.. Дизъюнкты удобно пронумеровать. Получится следующий список:
р V <7
р V г
. “I q V 1 г
“1 р
Затем вычисляются и добавляются к S резольвенты; В списке, который приводится ниже, каждый дизъюнкт— резольвента некоторых из предшествующих
дизъюнктов. Номера их приведены в скобках права
от соответствующей резольвенты.
5.
р У 1 г
(1,3)'
6.
q
(1,4)
7.
pV~\q
(2,3)■.
8.
г
(2,4)'
9.
Р
(2,5)■
10.
1 г
(3,6)
11.
(3,8)
12.
~1 г
(4,5)
13.
(4,7)
14.
л
(4,9)
Замечание. Алгоритм проверки невыполнимости — недетерминированный: вообще говоря, возможен не один выбор для /, Si и s2. В приведенном примере мы выбирали дизъюнкты Sj и s2 в лексикографическом порядке номеров. Такая стратегия неоптимальна. Некоторые резольвенты оказались ненужными, а также вычислялись в некоторых случаях более одного раза. Для сравнения продемонстрируем теперь применение этого же алгоритма с минимумом резолюций: -
q (1,4) .
г (2,4)
П<7 (3,6)
Л (5,7)
Ясно, что принятая стратегия может значительно влиять на процесс выполнения алгоритма. Тем не менее упомянем два важных свойства, не зависящих от используемой стратегии.
Прежде всего, если множество S не содержит ни одной пары дизъюнктов, допускающих резольвенту, то оно выполнимо (разумеется, за исключением случая, когда оно содержит пустой дизъюнкт). Интерпретация I получается заданием Цр) — И тогда и только тогда, когда положительная литера р принадлежит одному из дизъюнктов множества S.
Во-вторых, если выполнение этого алгоритма закончилось «нормально» после порождения пустого дизъюнкта, то установлена невыполнимость исходного
множества S. Это непосредственное следствие леммы 1.3.
Может случиться, что выполнение алгоритма не завершится, хотя число различных дизъюнктов, которые могут быть порождены с помощью резолюций, очевидно, конечно. Например, такое явление имеет место для множества {р, Йр V qY Резольвентный дизъюнкт q будет порождаться неограниченное число раз. Рассмотрим также случай невыполнимого множества {р, П р V q, ~1 qY Оптимальная стратегия установит невыполнимость посредством построения резольвент q, а затем Л. Напротив, «неадекватная» стратегия приведет к зацикливанию, которое только что было отмечено. Таким образом, можно констатировать, что стратегия влияет не только на эффективность алгоритма, но и на его за- вершаемость.
Представляет интерес свойство завершаемости метода резолюций: конечное множество S невыполнимо тогда и только тогда, когда пустой дизъюнкт может быть выведен из S с помощью резолюций. Из- леммы 1.3 следует достаточность этого условия. Пустой дизъюнкт, будучи невыполнимым, не может быть логическим следствием из выполнимого множества дизъюнктов. Необходимость сформулированного условия отражена в следующей лемме [14].
Лемма 1.4. Если множество дизъюнктов S невыполнимо и содержит резольвенты своих элементов, то оно обязательно содержит пустой дизъюнкт. '
Замечание. Ясно, что число различных дизъюнктов, которые можно составить на основе конечного множества S, конечно. Таким образом, лемма 1.4 дает простое общее средство решения вопроса о выполнимости или невыполнимости конечного множества дизъюнктов.
Мы не приводим формального доказательства леммы 1.4, но проиллюстрируем ее одним очень простым примером. Рассмотрим множество дизъюнктов
S = {р, “1 р V “1 q, ”\ pV г, qY
Первый этап состоит в построении семантического дерева и помечивании каждого листа дизъюнктом, делающим ложной интерпретацию, соответствующую этому листу (§ 1.1.7). Это возможно тогда и только тогда, когда 3 невыполнимо. Здесь именно такой случай и подходящее дерево изображено на рис. 1.7. Второй этап состоит в том, что каждому узлу N дерева сопоставляется некоторый дизъюнкт с. Этот дизъюнкт будет зависеть от дизъюнктов С] и с2, которые уже сопоставлены двум узлам, следующим за N. Две соответствующие дуги помечены двумя противоположными литерами, скажем I и ”1 /. Если один из дизъюнктов, например Ci, не содержит ни /, ни ее отрицание, то можно выбрать c — ct, в противном случае с будет резольвентой для С] и с2 по отношению к /.
Этот результат, полученный для множества 3, иллюстрируется рис. 1.8. Заметим, что каждый узел
(-ip V 19)(9)
Рис. 1.7. Пример, первый этап.
(Л)
Рнс. 1.8. Пример, второй этап.
помечен дизъюнктом, при котором ложна частичная интерпретация, соответствующая этому узлу (§ 1.1.7). Таким образом, корень будет помечен пустым дизъюнктом. Наконец, по построению каждый дизъюнкт является элементом S или получен из S с помощью резолюции. Число резольвент, которые надо вычислить для установления невыполнимости множества дизъюнктов S, не больше числа невисячих узлов семантического дерева. Максимальное значение этой величины равно 2П-1, где п— число различных высказываний, входящих в 3. Тем самым показано, что резолюция неэффективна, если применяется только что описанная простая стратегия. Отметим, что некоторые стратегии выбора приводят к лучшим реализациям [14]. '
Лемма 1.4 остается справедливой для бесконечного 3. Отсюда следует, что бесконечное множество дизъюнктов невыполнимо тогда и только тогда, когда в нем найдется конечное невыполнимое подмножество. К этому вопросу мы еще вернемся в § 1.1.18. Приведем непосредственное следствие, отражающее свойство завершаемости принципа резолюций.
Следствие 1.5. Если множество S формул невыполнимо, то этот факт всегда можно установить методом резолюций.
Приложения и примеры . использования метода резолюций .
Метод резолюций применяется в качестве механизма доказательства при реализации принципа дедукции, упомянутого в § 1.1.6. Для доказательства того, что некое заключение С является логическим следствием множества гипотез Яь ..., Нп, нужно применить резолюцию к множеству {/7,, ..., Н п, ПС). Эти гипотезы и отрицание заключения должны иметь вид дизъюнктов.
Резолюция — еще и такой механизм, который служит основой для осуществления инструкций на языке Пролог (разд. 5.1 и гл. 6).
Будет интересно вновь рассмотреть задачу о доказательстве разбором случаев, встречавшуюся в конце § 1.1.11. Множество дизъюнктов, невыполнимость которого следует установить, таково:
{ft, —I h V р V q, П р V с, "1 q V с, 1с}.
Исходя из этого множества, можно следующим образом получить пустой дизъюнкт:
1.
Л
гипотеза
2.
“1 h V р V q
гипотеза
3.
Пр V с
гипотеза
4.
1qVc
гипотеза
5.
П с
отрицание заключения
6.
PVq
резольвента для 1 и 2
7.
Пр
резольвента для 3 и 5
8.
П<7.
резольвента для 4 и 5
9.
q
резольвента для 6 и 7
10.
л
резольвента для 8 и 9
Всякое доказательство, формальное или неформальное, является последовательностью элементарных рассуждений, последнее из которых и есть заключение (в данном случае это <П, потому что речь идет об опровержении). Однако взаимосвязь между различными этапами доказательства есть не что иное, как отношение частичного порядка. Таким образом, естественно, хотя менее удобно, представлять доказательство деревом, а не последовательностью. В случае доказательства с помощью метода резолюций это дерево будет семантическим. Дерево нашего примера изображено на рис. 1.9. Чтобы уменьшить громоздкость, узлы помечены номерами дизъюнктов, а не самими дизъюнктами.
Замечание. В таком контексте семантическое дерево часто изображают корнем вниз. .
Правило согласия 1 двойственно правилу резолюций. Если его применить к конъюнкциям р Л С] и Чр Л c2i то получим конъюнкцию С] Л с2. Эта операция была введена в рамках булевой алгебры
* В оригинале — consensus (лат.) — Прим. ред.
Рис. 1.9. Дерево доказательства.
применительно к синтезу логических схем [109]. Она позволяет выявлять общезначимость ДНФ. -
Неклаузальное правило резолюций
При использовании метода резолюций для доказательства невыполнимости требуется, чтобы логические формулы, к которым применяется правило резолюций, были приведены к КНФ (§ 1.1.10). Это преобразование, предшествующее доказательству, может оказаться довольно трудоемким. Неклаузальная резолюция предназначена для распространения ' механизма доказательства на произвольные логические формулы. В частности, это позволяет использовать резолюцию как средство в доказательствах, проводимых по принципу дедукции, даже если гипотезы и отрицание заключения не являются дизъюнктами.
Пусть Aj и Л2 — формулы исчисления высказываний. Введем определения
ТР(ЛЬ Л2)=ае( ЛГ=л Д Д2р:=и,
±РМЬ Л2)=аеГЛГаЛ V ЛГ“".
Символом Лр = 4 обозначена формула, полученная заменой всех вхождений р в А на q. Оператор Т употребляется для доказательства общезначимости, а ± — невыполнимости (см. [107] по поводу правила согласия и [81] по поводу правила резолюций). Лег-
ко проверить, что, если At и Л2 — конъюнкции (дизъюнкты), то оператору (±) — классическое правило согласия (резолюций).
Рассмотрим простой пример на применение не- клаузальной резолюции. Попробуем доказать невыполнимость множества формул
Mi : (р A г) V (</ А ”1 г),
Л2:(ПрЛг) VH<7 А Дг)}..
Доказательство таково:
L(Mr)V(M"lr) л,
(П р Л г) V (И q Л“1г)Л2
(q Л Пг) V (~»<7 ЛПг)±„(1,2)
(рЛг)УПрЛг)1,(1,2)
Л±г(4,3)
Эти формулы либо гипотезы, либо получены с помощью правила X из предыдущих формул (номера которых указаны в скобках).
Заметим еще, что операторы Т и X содержатся в понятии булева вывода (дизъюнктивного и конъюнктивного), описанного в [106].
Неклаузальное правило резолюции используется в § 3.1.20 в примере рассуждений по поводу знаний.
Хорновские дизъюнкты'
Хотя метод резолюций в наибольшей общности неэффективен, он эффективен в некоторых частных случаях. Важнейшим из них является случай хорнов- ских дизъюнктов, т. е. таких, которые содержат не более одной позитивной литеры *>. Дизъюнкт
{-1 р, "I q, И г, s}•
эквивалентен импликации
(р A q A г) zd s.--
Хорновский дизъюнкт называется точным, если он содержит позитивную литеру. В противном случае он
° Для некоторых авторов хорновские дизъюнкты — это те, которые содержат не более одной негативной литеры. Мы здесь придерживаемся наиболее распространенного мнения.
называется негативным. Точный дизъюнкт нередко выражает некоторое правило: негативные литеры соответствуют гипотезам (которые представлены соответствующими высказываниями), а позитивная литера представляет заключение. Унитарный позитивный дизъюнкт, сводящийся к одиночной позитивной литере, представляет некоторый факт, т. е. заключение, не зависящее ни от каких гипотез.
Часто задача состоит в том, что надо проверить какую-то формулу (называемую целью'), логически выведенную из множества фактов и правил. Резолюция является методом доказательства от противного: исходя из фактов, правил и отрицания цели, приходим к противоречию (пустому дизъюнкту). Этот метод (наряду с понятиями факта, правила и цели) будет использоваться в рассуждениях по поводу знаний в §§ 3.1.21—3.1.23 и 3.3.8—3.3.11.
Рассмотрим множество S хорновских дизъюнктов (без тавтологий). Выполнимость S можно проверить с помощью следующего алгоритма.
При условии Л ^ S, выбираем рис, такие, что:
— Р— унитарный позитивный дизъюнкт из S, — с — дизъюнкт из S, содержащий И р;
вычисляем резольвенту г;
заменяем S на (S\(c}) U И-
Этот алгоритм, применимый только к множеству хорновских дизъюнктов, очень похож на общий алгоритм из § 1.1.13. Принципиальное отличие состоит в том, что на каждом этапе некая литера удаляется из одного дизъюнкта. Действительно, в только что введенных обозначениях дизъюнкт г есть не что иное, как дизъюнкт с, из которого была удалена литера “I р. Отсюда сразу же следует, что выполнение алгоритма всегда завершается, какая бы стратегия ни была принята при выборе рис. Если N — число литер, первоначально присутствующих в S (с учетом повторений), то цикл будет выполняться не более N раз. Таким образом, сложность этого алгоритма порядка N2.
рvirvitgгtv-ipvir t v ig
pV2ГVitgrtVipVirt
pV-itgrtVip Vift
pVitgтtVip Vift
pVitgrtVip Virt
pgrtVipVirt
pgrtVipVirt
ip V ig v ir ip V ig v ir ip V ig V ir ip V ir
ip
22 Л
Рис. 1.10. Проверка выполнимости.
Имеются две возможности, которыми может закончиться этот алгоритм: либо порожден пустой дизъюнкт, либо получено множество S, уже не содержащее дизъюнктов, равных рис.
Рассмотрим- первую возможность. Множества 3 и S U И (в обозначениях нашего алгоритма) эквивалентны: это верно в общем случае (§§ 1.1.12—1.1.13). Однако дизъюнкт с является здесь логическим следствием резольвенты г и, значит, может быть опущен. Это показывает, что порождаются только логические следствия из 3. Таким образом, появление пустого дизъюнкта означает невыполнимость S.
При второй возможности 3 обязательно выполнимо. Обозначим через Т множество дизъюнктов, полученных в результате выполнения алгоритма. Моделью для 3 (и для Г) является такая интерпретация /, что /(р) = И тогда и только тогда, когда унитарный позитивный дизъюнкт р находится в Т. Это каноническая модель для 3.
Для примера применим этот алгоритм к проверке невыполнимости множества
3 = {р V' П г V ”11, q, г, IV И р V 1г,
t V I q, 1 р V 1 q V 1 г}.
Каждая строка в таблице на рис. 1.Ю представляет один из выполняемых этапов. Выбираемый унитарный позитивный дизъюнкт и соответствующая ему негативная литера подчеркнуты.
Недавно был разработан алгоритм, имеющий ли- иейную сложность относительно N [25}.
Множества хорновских дизъюнктов обладают одной особенностью, которую стоит отметить. Если множество Р высказываний фиксировано, то любая интерпретация / задается подмножеством Pi высказываний, которым она сопоставляет значение И. Пересечение ГК^) множества интерпретаций 3 определяется равенством
^n(J)= П ^л
Ie у
Пусть Л — множество моделей для конечного множества S произвольных дизъюнктов. Если интерпретация М = П (Л)—тоже модель для S, то она называется минимальной моделью для S. (Если Л пусто, то Рм = Р) В общем случае пересечение двух моделей не является моделью. Например, множество S, состоящее из единственного дизъюнкта р V q, допускает три модели I, J и К, такие, что Pi =• {р, р}, Р; = {р} и Рк = {</}. Однако J \j К не модель для Р V q.
Заметим сразу, что каноническая модель для выполнимого множества S хорновских дизъюнктов — это в точности минимальная модель для S. Тем самым установлен следующий результат.
Теорема 1.6. Любое конечное выполнимое множество хорновских дизъюнктов допускает одну и только одну минимальную модель.
Этот результат, интересен по двум причинам. Прежде всего нахождение минимальной модели означает, что истинными считаются только явно сформулированные факты (высказывания) и логические следствия, получаемые из них согласно правилам. Это положение соответствует гипотезе «замкнутого мира», широко используемой в области баз данных. Кроме того, в некоторой мере это узаконивает интересное понятие отрицания/ используемое в логическом программировании (гл. 6).
С другой стороны, предположим, что множество S уже было исследовано и что минимальная модель М уже найдена. Рассматривая множество S', получаемое присоединением к S новых фактов и новых
правил, видим, что имеются две возможности. Во- первых, очевидно, что полученное множество может оказаться невыполнимым. Во-вторых, если оно останется выполнимым, то его минимальная модель М' является расширением модели М.
В общем случае, напротив, присоединение новых дизъюнктов делает бесполезной всю уже выполненную работу. Например, множество S, состоящее из единственного дизъюнкта р V q V —1 г, допускает пустую минимальную модель, но присоединение дизъюнкта г дает такое множество, которое, будучи выполнимым, уже не допускает минимальной модели.
Хорновские дизъюнкты и КС-грамматики
Здесь мы примем новую форму записи хорновских дизъюнктов. Например,
^Р, "^Q, "Ir, s}
будем записывать как■
s:-p. q, г..
При такой записи появляются интересные аналогии. Прежде всего, хорновский дизъюнкт можно уподобить правилу переписывания, а множество хорновских дизъюнктов — некоторой КС-грамматике ° (§§ 5.1.2, 5.1.3). Символами будут высказывания и выделенный символ Л. Все они нетерминальные. Рассмотрим пример. Пусть множество дизъюнктов представлено следующей грамматикой:
р :— q, г, в.
p:—r, t.•
q:—.
г: — ..
/:— р, г.
t:— q.
Л :— р, q, г.
Это множество невыполнимо тогда и только тогда,
11 Контекстно-свободной свободно-контекстной, бесконтекстной н т. п. —— Прим, перев.
когда пустая цепочка е может быть получена с помощью правил грамматики (правил переписывания) исходя из символа Л. (Эти понятия детально разъяснены в разд. 5.1 и 5.2.) Здесь именно такой случай, что подтверждается следующей цепочкой переписываний:
Л(7)р, q, г (2) г, t, q, r^t, q, r^q, q,
r^q, r, (3)r (4)e ».
Это, очевидно, просто иная запись нижеследующего логического вывода:
1.
Пр V Пр VHr
дизъюнкт цели.
2.
3.
р V П г V п /.
1 г V "1 / V “1 q V Д г
правило.
резольвента для 1 и 2.
4.
5.
г
И / V Д q V 1 г '
факт.
резольвента для 3 и 4.
6.
7.
/ V”Aq П<7 V Иг
правило.
резольвента для 5 и 6.
8.
9.
q
П г
факт.
резольвента для 7 и 8.
10.
11.
г
Л
факт.
резольвента для 9 и 10.
Наличие нескольких дизъюнктов с общей позитивной литерой влечет за собой недетерминированность этой грамматики: одно и то же выражение может быть переписано многими способами.
Другое толкование указанного подхода состоит в том, что литеры рассматриваются как (вызываемые) процедуры. В этом состоит основа логического программирования (разд. 5.1 и гл. 6).
Для сравнения разберем тот же пример, пользуясь алгоритмом из предыдущего параграфа:
—1 р V —I <7 V ™1г дизъюнкт цели.
гфакт.
"1 р \/ —1 qрезольвентадля1и2.
qфакт.
П ррезольвентадля3и4.
’> Это читается так: перепись от Л по (7) дает р, q, г, перепись по (2) дает г, t, q, г и т. д.
6.
7.
Р V' г
1г V п/
правило, факт.
8.
р v ~
1 /
резольвента для 6 и 7.
9.
/ V ^q
правило.
10.
t
резольвента для 4 и 9.
11.
Р
резольвента для 8 и 10.
12.
Л
резольвента для 5 и 11.
Теорема компактности
Фундаментальная проблема логики — выявление невыполнимости множества дизъюнктов, или, шире, множества формул (§ 1.1.6). Мы видели, что метод резолюций решает эту проблему для конечного множества дизъюнктов или формул (§ 1.1.12—1.1.13) В данном параграфе этот результат обобщается на случай бесконечного множества.
Введем для начала два полезных понятия. Будем здесь предполагать фиксированным (конечное или бесконечное) множество Р базовых (исходных, примитивных) высказываний. Пусть Е — множество формул, которые можно построить из элементов множества Р, S — подмножество из Е. S называется финитно выполнимым, если все его конечные подмножества выполнимы. S называется максимальным, если оно финитно выполнимо и, кроме того, для любой формулы Д из £ оно содержит либо А, либо П А.
Существует тесная связь между интерпретациями и максимальными финитно выполнимыми множествами. Прежде всего, любая интерпретация 1 естественным образом задает максимальное (финитно) выполнимое множество S/ согласно правилу
Ле5,о/(Л) = И. .
Обратное гораздо интересней и составляет предмет следующей леммы.
Лемма 1.7. Любое максимальное финитно выполнимое множество допускает одну и только одну модель.
Доказательство. Пусть S — максимальное финитно выполнимое множество. Зададим интерпретацию /
следующим образом. Для каждого элемента р из Р положим /(р) = И тогда и только тогда, когда peS.
Прежде всего, если I—модель для S, то J = I. Действительно, для любого высказывания р должно выполняться J(р) =/(р) = И, если peS. Кроме того, должно выполняться J (р) — Цр) = Л, если р ^ S, так как в этом случае Пр g S.
С другой стороны, если А — формула из S, то /(Д) = И. Действительно, пусть Q+ — множество высказываний, входящих в A, Q~—множество соответствующих негативных литер. Пусть R+ и R- — соответственно пересечения этих множеств с S. Множество (£+U£-U{A}) конечное и вложено в S, следовательно, оно выполнимо. По построению, его модели точно такие же, как для (/?+U^')- Так как / — одна из этих моделей, то ЦА) = И□
Замечание. Любое максимальное финитно выполнимое множество выполнимо.
А теперь — основной результат.
Теорема 1.8. Множество формул S выполнимо тогда и только тогда, когда все его конечные подмножества выполнимы.'
Доказательство. Необходимость этого утверждения очевидна. Для доказательства достаточности можно ограничиться построением некоторой интерпретации для S, или, что то же самое, максимального выполнимого множества, содержащего S. Рассмотрим здесь общий случай, когда рассматриваемое множество Р счетное. При этом множество формул Е тоже счетное. Пусть Аь Д2Ап, ... — некоторая нумерация Е. Следующим рекуррентным образом зададим последовательность подмножеств Еп в Е;
Ео = S,
если все конечные подмножества объединения Е п U {Дп} выполнимы, то задаем Еп+\ = Е„\3 и {Д„}, иначе задаем £„+1 = Еп U {~) Д„}.
Индукцией по п легко доказать, что для любого п все конечные подмножества в Еп выполнимы.
О По условию это верно для Е».
■ Предположим, что все конечные подмножества в Еп выполнимы. Установим это и для Еп+\.
— По построению это очевидно для Еп+\ = = £nUM„}.
— Если Еп + Х = Еп U {”I Л„}, то обязательно ' существует такое конечное подмножество Е' в ЕП) что £'U {Л„} невыполнимо. Пусть Е" — произвольное конечное подмножество в £п+ь Ввиду индуктивного предпо- -ложения конечное множество £'U£"\
\{~I Л„} выполнимо. Пусть / — модель для этого множества. Тогда ЦАп) = И невозможно из-за невыполнимости Е' (J U (Лп). Следовательно, /(Л„) = Л, / — модель для Е" U Е", а значит, и для Е".
Объединение всех Еп максимально. Любое конечное подмножество входит в одно из Еп и, следовательно выполнимо. Таким образом, это объединение является максимальным финитно выполнимым множеством. Его (единственная) модель будет также моделью для S.' □
Мы предположим, что наше множество высказываний, а следовательно, и множество формул являются счетными. Однако это не обязательно. Если множество формул несчетно, но вполне упорядочено, то наше доказательство и к этому случаю легко приспособить: индукцию по натуральным числам надо заменить на трансфинитную индукцию-. Действительно, любое вполне упорядоченное множество изоморфно некоторому ординалу. Если мы примем аксиому выбора (например, в форме: декартово произведение непустых множеств непусто), то даже не надо будет требовать вполне упорядоченность: в таком контексте ее допускает любое множество. Эти понятия строго изложены в [3] и особенно в [5].
Замечание. Теорема 1.8 утверждает, что из любого невыполнимого множества можно выделить конечное невыполнимое подмножество. Этот результат аналогичен следующему факту из топологии: «из любого открытого покрытия можно выделить конечное подпокрытие». Данный факт характеризует
компактные топологические пространства. Аналогия глубокая, поэтому теорема 1.8 названа «теоремой компактности» [5].
1.2. Исчисление предикатов
Введение
Исчисление высказываний позволяет формализовать лишь малую часть множества рассуждений. Например, рассмотрим следующее рассуждение:
Все люди смертны;.
Сократ — человек;(1.8)
следовательно, Сократ смертен.'
Это рассуждение правильное, но оно выходит за рамки логики высказываний. В нем содержатся три высказывания:
р : Все люди смертны,
q : Сократ — человек, г : Сократ смертен.
Используя соответствующие связи, можно написать формулу
(Р Л q) zd г.
Эта формула необщезначима. Таким образом, логика высказываний не позволяет корректно выразить рассуждение (1.8). Причина этой неудачи довольно очевидна. Логика высказываний моделирует высказывания и функционально-истинностные связки, позволяющие комбинировать высказывания. В таком контексте высказывание — неделимый объект. Однако ясно, что в естественных языках высказывание имеет внутреннюю структуру. Иначе говоря, значение высказывания, хотя бы в первом приближении, является функцией значений его компонент.
До того как будет рассмотрен собственно семантический аспект, даже простой лексический анализ обнаруживает интересное сходство между тремя выска-
зываниями приведенного в примере рассуждения: некоторые слова присутствуют в этом рассуждении более одного раза. Следовательно, можно предположить, что указанное сходство должно сохраниться в формальной версии этого рассуждения.
С другой стороны, в естественном языке часто опускают легко восполняемые слова. Текст (1.8) в этом отношении не исключение. Мы уже заметили наличие связки конъюнкции, обозначенной в тексте точкой с запятой. Первое высказывание содержит также скрытую импликацию. Его можно переписать следующим образом.
Быть человеком —
значит быть смертным.
Эта переформулировка не вполне удовлетворительна: такое впечатление, что ей соответствует формула типа (Л лэ В). Это не так: слово «быть» устанавливает связь между посылкой Л и следствием В условного наклонения. Впрочем, заметим, что слово «Сократ» устанавливает аналогичную связь между двумя последними строками в (1.8). Между тем эти случаи различны: слово «быть» означает какой-то, пока не определенный, член некоторого универсума, тогда как «Сократ» означает конкретный член этого универсума. По аналогии с языком математики говорят, что «быть» — это переменная (заново обозначим ее, как это принято, через х), тогда как «Сократ» — константа.
Текст (1.8) можно переписать так, что будет лучше видна его реальная структура, а именно следующим образом.
Для всех х, если х является человеком, то х является смертным;л оа
Сократ является человеком;' " '
(следовательно) Сократ является смертным.
Теперь можно пополнить запас различных составляющих. В дополнение к высказываниям и связкам (неявной конъюнкции, импликации вида «если ..., .... то» и импликации вида «следовательно») у Hat есть разные новые компоненты: «для всех», «х», «Сократ»,
«является человеком» и «является смертным».
Забота об утонченном анализе не должна заводить слишком далеко. Достаточно ясно, что расчленение выражения «для всех» бесполезно. Напротив, и выделение слова «является» могло бы показаться интересным, но в нашем контексте это не подтверждается, так как оно может слишком легко исчезнуть. Оборот речи «является альтруистом» можно заменить на «заботится о других», тогда как «является смертным» приблизительно означает «умрет».
Такие обороты речи служат примерами предикатных констант. Предикатная константа не меняет своего значения истинности. Она лишь связана с подходящим числом аргументов или параметров, называемых термами. Это число мест зависит только от рассматриваемой предикатной константы. Последняя вместе с подходящим числом термов называется предикатной формой.
Выражение «для всех х» служит примером квантификации, которая состоит из квантора (здесь «для всех») и одной переменной (здесь х). Естественные языки содержат не только огромное число связок, но и громадное число кванторов. Заметим для начала, что отрицанием выражения
для всех х, А '
очевидно будет
существует (хотя бы один) х, “I А.
Таким образом, нужен квантор «существует». Другие возможные квантвры:. .
Почти для всех...
Ровно для одного....
■ Существует ровно один... •
Существует не более одного...'
Существует много...
Существует бесконечно много...
Существует ровно пять...
Мы ограничимся квантором «для всех» и теми кванторами, которые можно из него получить с помощью пропозициональных связок и, возможно, посредством
отношения равенства, которое будет введено далее. Уместно отметить, что в естественном языке квантификация очень часто лишь подразумевается, но явно не представляется — например во фразах: «Все люди смертны», «Некоторые люди умерли».
Теперь мы можем формализовать гипотезы и заключение рассуждения (1.9). Квантор «для всех» обозначим V, высказывание «с— человек» представим через Н(с), a «d смертен» запишем как M^d). Таким образом, получим полуформальное рассуждение:
Чх(Н (х) zd М (х)) и // (Сократ),следовательно, М (Сократ) .
По виду формул можно понять, что М и Н — одноместные предикатные константы, т. е. М и Н допускают единственный аргумент. Заметим также, что х— переменная (только одна переменная может следовать за квантором). Напротив, ниоткуда не следует, что «Сократ» — константа.
Теперь займемся формализацией логики предикатов или исчисления предикатов. Для начала точно опишем язык этой логики.
Словарь
Основными символами языка являются переменные, индивидные константы, предикатные константы, связки (~I, Л, V, тэ, = ), кванторы общности V (для всех) и существования 3 (существует)0. В языке предикатов содержится язык высказываний, так как высказывание—не что иное, как предикатная константа без аргументов или, точнее, предикатная константа с нулевым числом мест. Удобно заменить понятие индивидной константы более общим понятием функциональной константы. Функциональная константа с определенным числом мест — в точности то же, что предикатная константа. Индивидная константа — просто нульместная функциональная константа.
*' Соответственно универсальный и экзистенциальный. — Прим, перев.
Ввиду того что исчисление предикатов позволяет оперировать с отдельными объектами (переменными и константами), иногда полезно вводить предикат равенства между этими объектами, однако это не будет обязательным. Для обозначения этого предиката используется классический символ =. Переменные, предикатные и функциональные константы обозначаются буквами или словами, иногда снабженными верхними и/или нижними индексами. Можно полностью избежать риска перепутать эти три класса объектов, если ввести строгие типографские соглашения. Что касается предикатных и функциональных констант, то можно также потребовать явного указания числа мест (например, в виде показателя). Однако на практике соглашения менее строги, а принадлежность объекта к определенному синтаксическому классу определяется по контексту или по неформальным комментариям к формуле. Это послабление позволяет давать объектам мнемонические имена. Они будут широко использоваться для представления знаний (гл. 3).
Следующая лексика является обычной и будет полезна для понимания примеров, приводимых в этом разделе:
х,у,zпеременные,'
а,Ь,синдивидные константы,
f,g>hфункциональныеконстанты,
р,q,гвысказывания,
Р, Q, R предикатные константы.
Синтаксис исчисления предикатов
Словарь, введенный в предыдущем параграфе, позволяет определить термы, формы и квантификации (все они уже упоминались), а также атомы и формулы. Теперь изложим правила соответствующих построений.
О Термом является всякая переменная и всякая функциональная форма.
О Функциональная форма — это функциональная константа, соединенная с подходящим числом
термов. Если /—функциональная «-местная константа и ti, ..., tn — термы, то соответствующая форма обычно обозначается через f(/i, ..., tn). Если п = 0, то пишут f вместо f( )■
Предикатная форма — это предикатная константа, соединенная с подходящим числом термов. Если Р — предикатная m-местная константа и h, ..., tm — термы, то соответствующаяформаобычно обозначается через
P^titm). При «г = О пишут Р вместо Р ( )-
. О Атом— это предикатная форма или некоторое равенство, т. е. выражение типа (s = /), где s и / — термы.
О Понятие формулы определяется рекурсивно (индуктивно) следующими правилами:
атом есть формула;
если А — формула, то П Л — формула;
если А и В —формулы, то (ЛАВ), (ЛУВ), (Л 2D В) и (Л = В)— формулы;
если А — формула их — переменная, то УхЛ и ЗхЛ — формулы.
Замечания. Как и в исчислении высказываний, круглые скобки иногда заменяются фигурными или квадратными и даже опускаются совсем, если контекст это позволяет. Естественный язык не допускает такого употребления скобок, поэтому могут возникать двусмысленности, особенно когда число мест у предикатной или функциональной константы неизвестно.
Слова «функция» и «предикат» иногда используются вместо выражений «функциональная форма» и «предикатная форма», особенно Ь приложениях (гл. 3—6).
Свободные и связанные переменные, область действия
Переменные в логике играют роль, аналогичную их роли в алгебре или анализе. Прежде всего они
позволяют указать в структуре математического объекта те места, которые при использовании этого объекта будут заняты другими объектами. Например, линейная функция / может быть записана классической формулой
f(x) = x + 6
или еще с помощью обозначения, подчеркивающего статус объекта f, формулой типа
f = Хх.х + 6.
В этом контексте х означает не объект, а место для объекта. Можно без хлопот переобозначить х, т. е. заменить два вхождения х, например, на у. Очевидно, что нельзя заменить только одно вхождение, а другое оставить без изменения. Такой тип замены называется одновременной подстановкой. Говорят, что х — связанная переменная, желая тем самым отразить то обстоятельство, что первое вхождение х вводит (описывает) связь, которой подчинено второе вхождение х. Переименование связанной переменной допустимо, так как сколько было различных вхождений переменных до одновременной подстановки, столько же останется и после. Например, выражение
Хху.х*у
равняется
Хиу.и* у,
но не
Хаи.и* и.
Теперь рассмотрим такой контекст, где х тем или иным образом представляет число 3, a sq — квадратичная функция. Можно написать
sq (х) — х + 6,
но, очевидно, уже нельзя заменять х на у, так как на этот раз через х обозначен вполне определенный объект. Переменная х называется свободной, точнее, два вхождения х называются свободными.
Рассмотрим следующий пример:
Ак=ЦВ‘киг.
i = l
Единственной связанной переменной здесь является/. Связь вводится первым вхождением L Остальные символы представляют свободные переменные или функциональные константы. Можно переименовать I в / или /, но не в к или п.
Наконец, в выражении
/X
у = Хх. I у0+ ^ f(/,y^dt j
\Хо/■
связанные переменные — х и t. Связи вводятся соответственно первым вхождением х и последним вхождением t.
Теперь вернемся к логике. Из интуитивного понимания квантификации вытекает, что имеется связь между вхождениями переменной, содержащейся в квантификации. В формуле
Чх VH (х) о М (х)]
переменная х «связана». Связь вводится первым вхождением, которое следует непосредственно после квантора общности.
Область действия некоторой квантификации есть формула, к которой применяется эта квантификация. Вхождение переменной х, появляющейся в квантификациях Vx или Зх, называется квантифицированным. Каждое вхождение переменной х в область действия этой квантификации является связанным. Вхождение переменной х свободное, если оно не является ни квантифицированным, ни связанным.
Замечания. Часто употребляют выражение «область действия квантора» вместо «область действия квантификации».
Переменная, имеющая связанное вхождение в некоторую формулу, имеет также квантифицированное вхождение в эту формулу.
В некоторой данной формуле переменная является
квантифицированной (связанной, свободной), если она имеет хотя бы одно квантифицированное (связанное, свободное) вхождение.
В формулах УхЛ и ЗхЛ область действия х есть А. Если х и у — переменные, то области действия х и у либо не пересекаются, либо одна вложена в другую. '
Рассмотрим следующие примеры:
Vx [Р (х, а) до Зх Q (х)], .
МхР (х, а) ~d Зх Q (х),
■ УхР(х, а) 2D Q(x).
В первом случае две квантификации по одной и той же переменной перекрываются. Мы не желаем сопоставлять семантику этому типу формул, его мы исключим из рассмотрения, подчиняясь следующему правилу введения кванторов:
УхЛ и ЗхЛ — формулы только в том случае, если х — переменная и Л — формула, не содержащая связанных вхождений х.
Во втором случае две связанные переменные случайно получили одно и то же имя. Это совсем незначительное затруднение.
В третьем случае и связанная, и свободная переменные получили одно и то же имя. Хотя это допустимо, лучше переименовать связанную переменную и написать, например,
VyP кУ, a^Q kxY
Семантика исчисления предикатов
Формулы исчисления предикатов, как и формулы исчисления высказываний, могут быть интерпретированы, т. е. могут получить значение истинности. Однако формулы исчисления предикатов состоят не только из подформул, но также и из термов. Следовательно, необходимо будет интерпретировать также термы. Терм интуитивно означает объект. Таким образом, интерпретация должна специфицировать множество объектов, называемое областью интерпретации.
Точнее, интерпретация 1 — это тройка (D, 1С, /„) со следующими свойствами:
D — непустое множество, область интерпретации.
1С — функция, которая сопоставляет каждой функциональной n-местной константе f некоторую функцию icU) из Dn в D и которая сопоставляет каждой предикатной m-местной константе Р некоторую функцию 1с(Р) из Dm в {И, Л} ”.
/0 — функция, сопоставляющая каждой переменной некоторый элемент из D.
Теперь можно задать для интерпретации / — = (D, 1С, /„) такие правила, которые каждой формуле А ставят в соответствие некоторое значение истинности /(Л), а каждому терму t сопоставляют элемент 1Ц) из D.
Если х — свободная переменная, то Цх) = def^u (х) •
Если f—функциональная n-местная константа, h, ..., tn — термы, ТО Hf(tb • tn)) = def = = UAmuUx), .... №) '
Если P— предикатная m-местная константа, /1, .... /m — термы, TO HP(tit . . . , tm) ) = = det = (/C(P)) (/(Л), - - - , HU)).
Если s и t— термы, то Цз = t) есть И при /(s) =/(/), а иначе Л.
' • Если А и В — формулы, то —I Л,(Л АВ),
(Л V В), (Л td В) и (Л = В) интерпретируются как в исчислении высказываний.
Осталось задать интерпретацию для двух типов квантифицированных формул. Введем сначала одно понятие. Если / — интерпретация с областью Di, х— переменная, d— элемент из Di, то Uid означает такую интерпретацию /, что Dj = Du 3c = lc, Jo(x) = = d и Jv(y) = 1М Для всех свободных переменных у, отличных от х.
Правила интерпретации будут такими:
Если А — формула и х— переменная, то '1 (УхЛ) есть И при условии, что /Х^(Л) есть
*> По соглашению функция из О” в В есть просто элемент из В.
И для всех элементов d из D. .
Если Л— формула и х — переменная, то / (ЗхЛ) есть И при условии, что Луд (Л) есть И хотя бы для одного элемента d из D.
Формула Л исчисления предикатов называется истинной при интерпретации I, если /(Л) = И.
Теперь видно, что запрещение перекрытия кванторов, действующих на одну и ту же переменную, не является существенным ограничением. В частности, Ух ЗхА интерпретируется как ЗхЛ и 3xVxA интерпретируется как VxA. Ясно также, почему требуется условие D =т^ 0: без него естественные импликации
VxA п А, ''
А щ> ЗхА.■
не всегда были бы истинны.
Заметим также, что наши правила интерпретации соответствуют интуитивным представлениям. В частности, формальное значение кванторов хорошо моделирует их естественное значение. Эти правила подтверждают также сказанное о переименовании переменных в § 1.2.4.
Как и формулы исчисления высказываний, формулы исчисления предикатов делятся на три класса: общезначимые формулы, которые истинны при всех интерпретациях, невыполнимые, которые ложны при всех интерпретациях, и нейтральные (или просто выполнимые), которые истинны только при некоторых интерпретациях. В противоположность тому, что имело место для исчисления высказываний, эти три класса не являются рекурсивными: не существует детерминированного алгоритма, который определял бы, к какому классу принадлежит произвольная формула исчисления предикатов. Позже мы вернемся к этому вопросу (§ 2.2.11). Вполне естественно, что формула исчисления предикатов выполнима, если она истинна хотя бы при одной интерпретации.
Приведем примеры нескольких формул, общезначимость которых легко установить. Они описывают
взаимоотношения между V-квантификацией 11 и пропозициональными связками:
(УхЛ Л УхВ) = Ух (АЛ В),'
(УхЛ V УхВ) го Ух (Л V В),
Ух (Л ID В) ID (УхЛ ID УхВ),
Ух (Л = В) ID (УхЛ УхВ).(1.10)
Здесь речь идет по существу о схемах формул. Из этих схем можно получить общезначимые формулы, если заменить Л и В на формулы, не содержащие квантификации по х.
Замечание. В трех последних схемах в качестве главной связки стоит импликация. Если ее заменить эквивалентностью, то формулы перестанут быть общезначимыми.
Приведем аналогичные схемы, касающиеся 3-квантификации:
(МО(МОЗх(Л V В) = (ЗхЛ V ЗхВ), Эх (Л Д В) id (ЗхЛ А ЗхВ), Зх (Л id В) = (УхЛ ю ЗхВ).
(МО
(МО
Следующая схема устанавливает связь между V- .квантификацией и 3-квантификацией:
УхП Л ^"] ЗхЛ.
Можно распространить принцип двойственности (§ 1.1.9) на исчисление предикатов. Если в некоторой логической эквивалентности, не содержащей связки id, поменять Местами И и Л, А и V и, наконец, V и 3, то опять получим логическую эквивалентность. К исчислению предикатов возможен алгебраический подход, и он оказывается продуктивным. Это описано В [5].
Иначе, универсальной квантификацией. — Прим, перев.
А. Тейз и др..
Отметим также важные соотношения между различными квантификациями:
Vx Му А = Му МхА,■
ЗхЗуА = ЗуЗхА,.
Зх Му А тзМу ЗхЛ.
Импликацию в последней схеме заменить на эквивалентность, конечно, нельзя. Например, в 'аддитивной группе целых чисел существование у каждого элемента противоположного ему выражается формулой
МуЗх (х + у = Оу
Напротив, формула
Зх Му (х + у = 0),'
очевидно, некорректна: не существует такого элемента х, который был бы противоположным для всех целых чисел. Интерпретация, даваемая этим йримером, эффективно опровергает схему Зх МуА = Му ЗхЛ.
Наконец, следующее правило показывает, что исчисление предикатов действительно является расширением исчисления высказываний.
Если 5(ЛЬ ..., Ап) —общезначимая схема исчисления высказываний, то она является также общезначимой схемой исчисления предикатов.
Из общезначимой схемы исчисления высказываний (~1 ~I Л = Л) можно вывести не только [—I И (р Д q) = = (p/\q)), н0 и [—1 —1 ЧхР (х) = МхР (х)].
Подстановка и конкретизация
Подстановка есть отображение множества переменных V в множество термов Т. Подстановка а конечна, если о(х) отлично от х лишь для конечного числа элементов из V. В дальнейшем будут рассматриваться только конечные подстановки и поэтому соответствующее прилагательное употребляться не будет. Подстановка а будет задаваться множеством таких пар (х, о(х)), что а(х)=# х. ■
Пусть t — терм и о— подстановка. Терм о[/] получается одновременной заменой всех вхождений переменной х в t на их образы относительно о(х). Вот пример:
о = {(х, Цх)), ^у, g(x, z^,
t = S(f(x),g(f(z),y)),
oVA = g(HHx^, g(f(z), g^x, z))).
Эта манипуляция сопоставляет каждой подстановке о некоторую функцию из 7 в Т, которая отображает t в ор]. Так как для всех переменных х имеем о [х] = о(х), то эта новая функция является продолжением о. Обозначим ее тоже через о.
Композиция двух подстановок си и 02 есть функция 02 ° си, определяемая следующим образом:
(О2 о Oi) [/] = О2 [Oj [/]].
Легко проверить, что это правило композиции подстановок имеет смысл для всех подстановок и дает подстановку. Оно ассоциативно и допускает в качестве нейтрального элемента тождественную функцию. Это означает, что множество подстановок с операцией композиции является моноидом (некоммутативным).
. ' Если подстановки си и о2 таковы, что для любой переменной х хотя бы один из термов си(х), о2(х) равен х, то объединение образов си и о2 определяет еще одну подстановку, которая называется объединением подстановок си и а2 и обозначается через си U 02.
Терм t2 называется конкретизацией (для ) терма t\, если существует подстановка о, такая, что /2 = = о[Л]. Множество переменных терма t обозначим через иагЦу Терм t вполне конкретизирован, если оаг^ = 0.
Отношение «является конкретизацией (для)» обозначим символом <^. Очевидно, оно рефлексивно и транзитивно. Оно не антисимметрично, но верен следующий результат: соотношения 7 <( /2 и t2 -^ ti имеют место тогда и только тогда, когда Л и ^2 отличаются только именами переменных. Точнее,
существует биективное соответствие f между иаг(Л) и иаг(/2), такое, что /2 получается одновременной заменой всех вхождений переменной х на f(x). В этом случае пишут tx см t2.
Отношение — является отношением эквивалентности. На фактор-множестве Т/~ .множества термов по этому отношению эквивалентности отношение <( становится отношением частичного порядка. Существует максимальный элемент, а именно класс термов, составленных из единственной переменной. Минимальными элементами являются вполне конкретизированные термы. Наименьшая верхняя граница конечного множества термов всегда существует и ее легко найти. Наоборот, наибольшая нижняя граница существует не всегда.
Наибольшая нижняя граница для пары
{Л(х, f(«). g Ш А (у, z, g(b))} ' есть терм
А (у, f (a), gW).
Понятие конкретизации непосредственно обобщается на предикатные формы, называемые матрицами, которые являются формулами, не содержащими квантификаций. Понятие конкретизации еще сохраняет смысл и для формул общего вида, содержащих квантификации, но при этом можно конкретизировать только свободные переменные. (Наличие одинаковых имен у свободной и связанной переменных здесь также оказалось бы источником сложностей.) Например, рассмотрим формулу
Vx [Р (х, у, z) V Q (а, х)] => BuR (b, f (и), о).
Свободные переменные —- у, z и а. По обычному соглашению а, b и f — функциональные константы (соответственно с 0, 0 и 1 местами). Конкретизации этой формулы получаются применением подстановок типа {(у, М» (z. ^2), (у, /з)} при соблюдении следующего ограничения: /ь t2 и t3 не должны содержать вхождений переменных х и и, связанных в исходной формуле. ■ . '
Универсальным замыканием (или Ч-замыканием^ формулы А, содержащей свободные переменные Хь ..., хп, называется формула Vx! ... ^хпА. Точно так же экзистенциональным замыканием (или 3-за- мыканием^ формулы называется формула Зх, ... . ..Зх„Д. Ясно, что порядок следования переменных Xi роли не играет.
Рассмотрим формулу А, ее V-замыкание UA и 3- замыкание Ед, а также конкретизацию А' для Д. Имеем следующие результаты:
1=Д<^|=(/л, ■ -
^Ua^\=A',
\=А'=^\=Еа,
где обозначение [= А означает общезначимость формулы А (в рамках исчисления предикатов).
Можно еще добавить, что формула общезначима тогда и только тогда, когда все ее конкретизации общезначимы, и что формула выполнима тогда и только тогда, когда хотя бы одна из ее конкретизаций выполнима. В этом предложении слово «конкретизация» можно заменить на «вполне конкретизация».
Предваренная и нормальные формы
В логике высказываний были введены две нормальные формы: конъюнктивная и дизъюнктивная. Мы видели, что приведение формулы логики высказываний к одной из этих нормальных форм позволяет упростить алгоритмы доказательства выполнимости общезначимости (§§ 1.1.11—1.1.14). По аналогичным причинам стоит ввести нормальные формы и в исчисления предикатов.
Проблемы, возникающие при оперировании с квантификациями и областями действия кванторов, иногда бывают достаточно сложными. В частности, к некоторым трудностям может привести одновременное присутствие в формуле свободных и связанных вхождений одной и той же переменной. Положение заведомо проще для случая предваренных форм.
Предваренной формой называется формула, состоящая из матрицы, перед которой стоит префикс, т. е. некоторая конечная последовательность квантификаций. Эти квантификации относятся к различным переменным, и их порядок вообще является существенг ным в. Таким образом, формула имеет вид '
Qi%i ... QnxnM,
где символ Qi означает либо V, либо, 3, для i=lп и где М — формула (матрица), не содержащая квантификаций.
' Без ограничения общности можно потребовать, чтобы квантифицированы могли быть только переменные, имеющие вхождение (обязательно свободное) в матрицу. Действительно, по правилам интерпретации если формула Л не содержит вхождений переменной х, то формулы Л, ЭхА и ЧхА имеют одно и то же значение истинности при всех интерпретациях..
Интерес к предваренным формам связан со следующей теоремой.
Теорема 1.9. Для любой логической формулы существует логически эквивалентная ей предваренная форма.
Доказательство. Алгоритм получения предваренной формы очень прост. Этапы таковы:
Исключить связки эквивалентности и импликации по правилам преобразования из § 1.1.1®
Переименовать (если необходимо) связанные переменные таким образом, чтобы никакая переменная не имела бы одновременно свободных и связанных вхождений. Это условие требуется не только для рассматриваемой формулы, но также для всех ее подформул.
Удалить те квантификации, область действия которых не содержит вхождений квантифици-
*> В случае повторения квантификаций для одной и той же переменной можно принять, что существенна только самая правая квантификация: это согласуется с общим правилом интерпретации квантифицированных формул.
рованной переменной. Такие квантификации в действительности не нужны.
Преобразовать все вхождения отрицания в стоящие непосредственно перед атомами в соответствии со следующими правилами:
—1 УхЛ->ЗхП Л,
“1 ЗхЛ->Ух “I Л,
П (Л А В) -> (П л V П В),.
И (Л v В)^О Л Д ИВ), -'
“1 пл->л.
Переместить все квантификации в начало формулы. Для этого используется соответствующий набор правил преобразования. Здесь мы приведем эти правила для конъюнкции. Парные им правила для дизъюнкции получаются применением двойственности.
если В не содержит х, если А не содержит х, если В не содержит х, если А не содержит х.если В не содержит х, если А не содержит х, если В не содержит х, если А не содержит х.(УхЛ А УхВ)->Ух(Л А В), ^хА А В)-^ Ух(Л А В), (Л A VxB^'dx^A А В), (ЗхЛ А В)->Зх(Л А В), (Л А ЗхВ)^Зх(Л А В),
если В не содержит х, если А не содержит х, если В не содержит х, если А не содержит х.
если В не содержит х, если А не содержит х, если В не содержит х, если А не содержит х.
Для полноты этого набора правил необходимо добавить возможность переименования некоторых связанных переменных. Например, формула ЗхР (х) A VxQ(x) будет сначала преобразована в ЗхР(х) A Vz/Q(z/) (перед применением правил преобразования). Заметим также, что для упрощения формул в любой момент можно применять свойства коммутативности, ассоциативности и идемпотентности связок А и V (§ 1.1.9). Итак, теорема конструктивно доказана. Л
В качестве приложения найдем предваренную форму, эквивалентную формуле
Ух [В (х) А Vz/Зх (И Q (х, у) => VzR(a, х, у))].
Этаны этого поиска последовательно перечислены ниже.
Исключение связки импликации:■
Mx [Р (х) Л МуЗх (П П Q (х, у> V ^zR (а, х, у))].
Переименование:
Vx [Р (х) Л \/уЗи (“1 —I Q (и, у) V VzR (а, и, </))].
Удаление бесполезной квантификации:
Vx [Р (х) Л МуЗи (И П Q (и, у) V R (а, и, у))].
Применение правил, касающихся отрицания:
.. Vx [Р (х) Л ЧуЗи (Q («, у) V R (а, и, у))].
Перемещение квантификаций:'
VxVz/[P(x) Л 3u(Q(u, у^ V RVa, и, у))],
VxVz/Bu[P(x) Л (Q(u, у) V R(a, и, ^))]_.
Замечание. Одна формула может допускать много эквивалентных предваренных форм. Вид полученного результата зависит от порядка применения правил, а также От произвола при переименовании. Например, эквивалентны следующие предваренные формы:
Vx (Р (х) Л Q (х)) и VxVz/ (Р (х) Л Q (у)).
Понятия литеры, дизъюнкта и КНФ, введенные в исчислении высказываний, непосредственно распространяются на исчисление предикатов. Литера — это атом или его отрицание, дизъюнкт — дизъюнкция литер, конъюнктивная нормальная форма — предваренная форма, матрица которой есть конъюнкция дизъюнктов. Равным образом можно использовать двойственные понятия: импликант ^конъюнкт') есть конъюнкция литер, дизъюнктивная нормальная форма — это предваренная форма, матрица, которой есть дизъюнкция импликантов.
Сколемовские и клаузальные формы
Механизм квантификации, очевидно, не только основа могущества, но и источник сложности исчисления предикатов. Предваренные и нормальные формы осо-
бенно интересны тем, что, с одной стороны, они требуют лишь «дисциплинированного» использования квантификации, и с другой стороны, они сохраняют всю выразительную силу исчисления предикатов. Действительно, любая формула допускает эквивалентную нормальную форму (хотя иногда более громоздкую или менее обозримую, чем исходная формула). ’
Можно установить еще более строгие пределы использования механизма квантификации ценой приемлемого уменьшения выразительной мощи. Точнее, будет предложено средство сопоставления каждой формуле Л некоторой формулы 5Л очень простого строения с гарантией, что формулы Л и Зл либо обе выполнимы, либо обе невыполнимы. Эта связь между Л иЗл строго слабее, чем логическая эквивалентность, но все-таки она очень полезна по следующей причине. Предположим, что мы хотим доказать, что заключение С является логическим следствием гипотез Н\ и Н2. Это сводится к доказательству невыполнимости формулы G: (Я] А Яг А ПС), или же невыполнимости соответствующей формулы So (вообще это будет легче).
Без ограничения общности можно рассматривать только предваренные формы, потому'что любая формула допускает эквивалентную предваренную форму. Кроме того, достаточно оперировать с замкнутыми формулами, т. е. без свободных переменных. Действительно, если Л — формула со свободными переменными хх, .. . , хп, которая не содержит ни одного связанного вхождения переменных х\, ..., хп (после осуществления переименования), то формула 3-А . .. .. .З^Л, с одной стороны, замкнута и, с-другой стороны, выполнима тогда и только тогда, когда выполнима формула Л.
' Форма Sa, которую мы сейчас опишем, известна под названием сколемовской формы (соответствующей формуле Л). Сведение Л к Sa представляет особый интерес, потому что доказательство невыполнимости становится эффективнее, если ограничиться толь ко формулами, представленными в сколемовской форме. Приведение произвольной формулы исчисления
предикатов к сколемовской форме требует двух предварительных операций:
Привести данную формулу к предваренной форме (§ 1.2.7), состоящей из префикса и матрицы.
Привести затем матрицу к КНФ с помощью алгоритма § 1.1.10.
Результатом будет замкнутая предваренная форма. Сколемовская форма, соответствующая ей (и, следовательно, исходной формуле), получится применением следующей процедуры, называемой сколемовским преобразованием и служащей для исключения 3-квантификаций.
Сопоставить каждой 3-квантифицированной переменной список V-квантифицированных переменных, предшествующих ей, а также некоторую еще не использованную функциональную константу, число мест у которой равно мощности списка.
В матрице нашей формулы заменить каждое вхождение каждой 3-квантифицированной переменной на некоторый терм. Этот терм является функциональной константой, соответствующей данной переменной и снабженной списком аргументов, также соответствующим той же самой переменной.
Устранить из формулы все 3-квантификации. Обратимся вновь к примеру из предыдущего параграфа. Преобразуем формулу
Vx[P(x) Д Vr/3x(-|Q(x, y^^zR^a, х, у))].
Осуществленные в предыдущем параграфе преобразования привели нас к следующей КНФ:
VxVy3u [Р (х) A (Q (и, у) \/ R (а, и, у))].
Описанная выше процедура позволяет получить ско- лемовскую форму, соответствующую исходной формуле:
VxVz/[P(x) Д (Q(f (х, у), у) V Я (а, Нх, y),y))L
Рассмотрим более пристально связь между формулой и ее формой Сколема. Например, обратимся к
замкнутой предваренной форме
А : ЗиЧиЗшЧхЧуЗгМ (и, v, w, х, у, z).
Ей соответствует сколемовская форма
Sa : VvVxVz/Al (а, у, f (и), х, у, g(y, х, у)).
Предполагается, что функциональные константы а, f и g не входят в матрицу М(м, у, ш, х, у, z).
Констатируем сразу же, что формула (Sa^A) общезначима. Отсюда следует, что если формула А невыполнима, то формула SA тоже невыполнима. Наоборот, предположим, что формула А выполнима и принимает истинное значение при некоторой интерпретации / в области D. Положим М = /С(М). Для любых V, X, ¥ существуют элементы Л, В, CeD, такие, что М(Л, V, В, X, Y, С) истинно в D. Обратив внимание на относительное положение кванторов в формуле А, видим, что Л не зависит от V, X и У, что В может зависеть от V (но не от X и У), что, наконец, С может зависеть от V, X и У. Для получения интерпретации, при которой истинна формула Sa, достаточно интерпретировать f и g как подходящие функции выбора F и G, т. е. такие, что F(V) и G( V, X, У) были бы допустимыми значениями В и С.
Отметим, что сколемовская форма есть предваренная форма, префикс которой содержит только У-квантификации. С другой стороны, каждая предваренная форма такого специального типа является ее собственной сколемовской формой. Поэтому удобно соединить эти два понятия. Когда позволяет контекст и особенно когда типографические условности дают возможность отличать индивидные константы от переменных, префикс сколемовской формы можно опустить: подразумевается, что каждая присутствующая в матрице переменная V-квантифицирована. В этом случае, пожалуй, лучше говорить о конкретизации для сколемовской формы, а не о конкретизации для матрицы сколемовской формы.
*> Используется также термин «.сколемовские функции». — Прим. ред.
Клаузальной формой называется такая сколемов- ская форма, матрица которой является КНФ. Любая сколемовская форма допускает эквивалентную клау- зальную форму.
Эрбранова интерпретация и компактность
Далее мы увидим, что не существует алгоритма, позволяющего распознать общезначимость, нейтральность или невыполнимость произвольной формулы исчисления предикатов. Это связано с существованием бесконечного числа возможных интерпретаций для формул исчисления предикатов. Может ведь потребоваться обязательное рассмотрение всех интерпретаций. Частные, но интересные результаты в этом направлении были получены Эрбраном. Они приводят к упрощенной проверке выполнимости формул. Так как каждой формуле F можно сопоставить такую кла- узальную форму Sr, что формулы F и SF одновременно выполнимы (невыполнимы), то будем рассматривать только клаузальные формы. Представленные здесь результаты относятся к исчислению предикатов без равенства. Более подробное изложение см. в [14] и [65].
Основная идея, подводящая к определению эрбра- новой области, состоит в следующем. Клаузальная форма невыполнима тогда и только тогда, когда она принимает значение Л при всех интерпретациях. Увы, рассмотрение всех областей возможной интерпретации исключается. Поэтому было бы неплохо попытаться выявить такую специальную область, которая была бы тесно связана с рассматриваемой клаузаль- ной формой и чтобы форма была невыполнима тогда и только тогда, когда она принимает значение Л при всех интерпретациях на этой области. Такая область действительно существует и называется эрбрановой областью. Она определяется так.
Эрбранова область клаузальной формы G — это минимальное множество HG, удовлетворяющее следующим условиям:
Для любой индивидной константы а, имеющей вхождение в G, область Но содержит соответ-
ствующую эрбранову константу, обозначаемую Л.
Если G не содержит индивидных констант, то тем не менее Но содержит эрбранову константу, обозначаемую С.
Для каждой «-местной функциональной константы f, имеющей вхождение в G, вводится функциональная константа F. Принадлежность элементов h\, ..., hn к Но влечет за собой принадлежность к На терма F(hx, ..., hn).
Эрбранова область считается «универсальной» (точный смысл этого термина описан в теореме 1.10). Таким образом, ее элементы не имеют конкретного значения: они лишь простые синтаксические объекты.
При отсутствии функциональных констант эрбранова область клаузальной формы сводится к множеству из одного элемента {С}. Например, такой случай имеет место для клаузальной формы (Р (х) V Q (х)) Д —IQ (х). Напротив, при наличии хотя бы одной функциональной (не индивидной) константы эрбранова область всегда бесконечна. Для клаузальной формы
Р№)
такой областью будет множество
(C,F(C),F(E(C)),...}.
Эрбрановой интерпретацией для формулы G называется интерпретация I для G, удовлетворяющая следующим условиям:
Область интерпретации является эрбрановой областью На.
Функция интерпретации констант 1С сопоставляет каждой индивидной константе а соответствующую эрбранову константу А. Эта функция сопоставляет каждой «-местной функциональной константе f функцию F:
' Нпа^На:(К ..., hn)^F(hx, .... hn). .
Существует много эрбрановых интерпретаций, так как интерпретации предикатных констант, как и
интерпретации переменных, могут быть выбраны произвольно.
Замечание. Для удобства эрбрановы символы часто отождествляют с соответствующими функциональными константами. Например, пишут /(а) вместо ^(Д).
Теорема 1.10. Клаузальная форма G невыполнима тогда и только тогда, когда она ложна при всех эрбрановых интерпретациях.
Доказательство. Необходимость этого утверждения очевидна. Для установления достаточности можем ограничиться доказательством, что каждой интерпретации / с /(G) = И можно сопоставить эрбранову интерпретацию 1\ такую, что /ft(G) = И.
В действительности достаточно определить Ih^P^tx, ..., /„)) для любой «-местной предикатной константы Р и произвольных термов 1Х, ..., tn. Каждому элементу из Но естественным образом ставится в соответствие элемент из области D интерпретации /. Если элементу 7A(G), здесь hi^Ha, сопоставлен элемент di^D, то Г1 (Р(^, ..., tn)) есть И тогда и только тогда, когда ЩР) (dx, ..., dn)) есть И. □
Эрбранова интерпретация задается значениями истинности, которые она приписывает предикатным формам P(tb ..., tn), термы которых принадлежат эрбрановой области. Эти формы называются фундаментальными формами. Так как число предикатных констант конечно, а эрбранова область не более чем счетна, то множество фундаментальных форм, связанных с клаузальной формой, тоже не более чем сиетно. Если вместо клаузальной формы взять бесконечное множество дизъюнктов, результат останется верным. Мощность множества фундаментальных форм не больше мощности множества формул.
Эрбрановы интерпретации похожи на интерпретации исчисления высказываний: каждая фундаментальная форма соответствует некоторому высказыванию. Примеры будут приведены в следующем параграфе. ■ ,
Основываясь на теореме 1.10, можно распространить теорему о компактности из исчисления высказываний (§ 1.1.18) на исчисление предикатов.
Теорема 1.11. Произвольная совокупность формул исчисления предикатов выполнима тогда и только тогда, когда все ее конечные подмножества выполнимы.
Доказательство. Необходимость этого утверждения очевидна. Дадим только доказательство достаточности. Пусть S — некоторое множество формул исчисления предикатов. Без ограничения общности можно предположить, что S состоит только из дизъюнктов. Рассмотрим множество S' фундаментальных конкретизаций, то есть полных конкретизаций дизъюнктов в эрбрановой области.
По теореме 1.10 и следующим за не^ замечаниям S выполнимо тогда и только тогда, когда S' выполнимо. Между тем множество S' состоит из дизъюнктов исчисления высказываний, потому что каждую фундаментальную форму можно уподобить подходящему высказыванию. В силу теоремы компактности из исчисления высказываний (§ 1.1.18) S' выполнимо тогда и только тогда, когда все конечные подмножества S' выполнимы. Таким образом, остается доказать, что каждое конечное подмножество множества S' выполнимо. Пусть R' именно, такое множество и R — подмножество из S, образованное дизъюнктами, имеющими фундаментальную конкретизацию в R'. Множество R конечно, следовательно, выполнимо. Множество фундаментальных конкретизаций для R тоже выполнимо (по теореме 1.10) и содержит подмножество R', Значит, и R' выполнимо. □
Теорема 1.12. Любое конечное или счетное выполнимое множество формул исчисления предикатов допускает конечную или счетную модель.
Доказательство. Достаточно рассмотреть эрбра- нову модель. □
Этот важный результат известен под названием теоремы Лёвенгейма — Сколема. Отметим, что существуют более сильные версии [3], [5]. Эта теорема
будет применена при изучении теорий первого порядка (§ 2.2.5).
Два простых примера
Рассмотрим следующую схему обычного рассуждения: Я]: Vx [Р (х) id Q(x)], Я2: Vx [Q (х) zd Р (х)],.',
С : Vx [Р (х) => Р (х)].
Попытаемся доказать, что заключение С действительно является логическим следствием гипотез Hi и Я2 или что формула (Hv Л Я2 Л П С) невыполнима. Она эквивалентна следующей
Vx ([Р (х) ZD Q (х)] Л [Q (х) ZD р (X)]) Л
ЛЗу[Р(у)ЛПР№'
Эквивалентной предваренной формой является формула
3z/Vx([P(x) zd Q(x)] Л [Q(x) zd P(x)] A
A [PM Л ПР (</)]).■
Эквивалентная КНФ есть _
3</Vx (П Р (х) V Q (х)] Л [1 Q (х) V Р (х)] Л ДРМЛ1РМ).
Наконец, эквивалентная клаузальная форма такова:
Ух(П?(х) V Q (х) ] Д HQ(x) V P(x)] A
A P (с) А П P (c)).
Ее эрбрановой областью является множество из одного элемента {с}. Любая интерпретация в этой области сопоставляет х значение с, и единственной фундаментальной конкретизацией будет
[Л Р (с) V Q (с)] Д [П Q (с) V Р (с)] А Р (с) А П Р (с).
Имеются три фундаментальные формы — это Р(с), Q(c) и Р(с). Таким образом, существует 23 = 8 эр- брановых интерпретаций. Ясно, что каждая из чих
приписывает значение Л фундаментальной конкретизации, которая, следовательно, невыполнима. Тем самым установлено, что С действительно логическое следствие из Нх и //2.
Теперь рассмотрим привычную рекуррентную схему в следующей простейшей форме:
В : Р {а),'
/ :Vx[/>(%)=>/>№)],’.
G-.MxP^xY
Эти три формулы представляют соответственно базис индукции, индукционный шаг и общее утверждение. Используемая в этой схеме частичная интерпретация имеет своей областью множество N натуральных чисел, а интерпретируется как число 0 и f — как функция, которая каждому натуральному числу г сопоставляет следующее за ним число г + 1. В этом контексте, какой бы ни была данная интерпретация предиката Р, схема общезначима в том смысле, что G — логическое следствие из В и /. (Этот результат перестает быть верным в более общем контексте.) Для доказательства можно установить выполнимость формулы (В А/А ДО), Она эквивалентна следующей:
Р (a) A Vx [В (х) zd В (/ (х))] А Зу "1 В (у).
Матрица соответствующей клаузальной формы будет, например, такова:
В (а) А П В(х) V В У И)] А П В (6).
Эрбранова область, соответствующая этой форме, есть бесконечное множество
H = Va, b, f (a), f(bY fV^), ...
/*")(а), f<")(6), ...},
где f(n) означает композицию n-го порядка (л-ую «степень» функции f. Таким образом, имеется бесконечное число эрбрановых интерпретаций. Каждая из них сопоставляет некоторое значение истинности каждому элементу бесконечного множества:
Е = {В(а), P(bY P(f(a)Y P№Y P(f(f(a))Y •
Существование некоторой истинной интерпретации достаточно для доказательства Выполнимости (В Д Д/ ДПС).
Рассмотрим интерпретацию, которая сопоставляет значение И литере P(f">(a)) и значение J1 литере Р(/(п)(6)) для всех п. Ясно, что эта интерпретация является моделью множества фундаментальных конкретизаций:
{Р(Р>(а)) Д [ПР(р)(а)) V
V Р (f,n+1) (а))] ДПР yw (6)) -.т, ne N}.
Это позволяет получить объявленный результат.
Проблема проверки невыполнимости формулы наталкивается в действительности на тройное препятствие, связанное с понятием бесконечности:
Существует бесконечно много областей интерпретации.
Если выбранная область бесконечна, то формула допускает бесконечно много конкретизаций.
Если выбранная область бесконечна, то существует бесконечно много интерпретаций относительно этой области. Каждая из них сопоставляет некоторое значение бесконечному множеству литер.
Результаты Эрбрана устраняют первое препятствие: можно рассматривать только эрбранову область. Если эта область конечна, исчезают и два последних препятствия.
Трудный (впрочем, часто встречающийся) случай, когда эрбранова область бесконечна. Тогда можно рассмотреть последовательность S = (Дь ... ..., Ап, ...) фундаментальных конкретизаций исследуемой формулы А. Положим 51 = {Д], .. . , Д,}. Известно, что А (или, что то же самое, S) невыполнима тогда и только тогда, когда одна из Зг невыполнима. Таким образом, можно последовательно проверять выполнимость Sj для возрастающих значений i. Если А невыполнима, процесс закончится обнаружением невыполнимости некоторой S, при очередной проверке. Этот процесс априори очень неэффективен. ..
Замечание. Можно перечислять конкретизации дизъюнктов вместо конкретизаций формул.
Замечание. Этот метод допускает применение к проверке выполнимости счетного множества формул {A‘|ieW}. Действительно, можно объединить все конкретизации для Д* в одну последовательность (счетное объединение счетных множеств счетно). Это показывает, что счетное множество формул выполнимо тогда и только тогда, когда все его конечные подмножества выполнимы. Мы получили ослабленную версию теоремы компактности из предыдущего параграфа (теорема 1.11).
1.2.11. Алгоритм Куайна, Девиса и Патнема
Цель этого параграфа состоит в обобщении алгоритма Куайна и стратегии Девиса и Патнема на исчисление предикатов. Из § 1.1.11 мы знаем, как проверять выполнимость нормальных форм исчисления высказываний. Здесь будет показано, что проблема выполнимости клаузальной формы в исчислении предикатов не является существенно иной.
Прежде всего известно, что такая формула невыполнима тогда и только тогда, когда ее эрбрановы интерпретации невыполнимы, т. е. тогда и только тогда, когда множество фундаментальных конкретизаций этой формулы невыполнимо. Естественно, можно рассмотреть фундаментальные конкретизации дизъюнктов, а не формул.
Первый пример из § 1.2.10 дает следующее множество фундаментальных конкретизаций:
S = nP(c)VQ(c), ^QW R<cY Р(с), П^(С)}.
Стратегия Девиса и Патнема (§ 1.1.11) приводит к выбору, например, литеры ^(с) ввиду существования некоторого дизъюнкта, сводящегося к этой литере. Невыполнимость S сводится к невыполнимости
Si = {Q(c), 1Q(c)V R(c), ~4R(c)}.
Тогда выбираем Q(c), что приводит к множеству
S^R^c),■
Так как 32, очевидно, невыполнимо, делаем вывод о невыполнимости исходной формулы.
Второй пример из § 1.2.10 сложнее, так как множество фундаментальных конкретизаций дизъюнктов бесконечно. Имеем
3 = {Р (а), П Р (6)} U
и {("1 р yw М) V р (f(n+’> (а))): П е Л^} и
U {ОР Ум (»)) V Р к^ (»))) :neNY
Обобщение алгоритма Девиса и Патнема на бесконечный случай возможно, но не представляет большого интереса.
Ф.ундаментальная резолюция
Как и алгоритм Девиса и Патнема, метод резолюций непосредственно обобщается на исчисление предикатов в случае, когда эрбранова область конечна. Вот исследование первого примера из § 1.2.10 в обозначениях § 1.1.13:
П Р (с) V Q(c)
Р(с)
Q^
HQ(c)V R(c)
R^
ПР (с)
Л
элемент из 3.
элемент из 3.
резольвента для 1 и 2.•
элемент из 3.
резольвента для 3 и 4.
элемент из 3.
резольвента для 5 и 6.
Если эрбранова область бесконечна, метод резолюций остается применимым, по крайней мере в принципе. В действительности известно, что если множество дизъюнктов невыполнимо, то оно допускает невыполнимое конечное подмножество. Второй пример из § 1.2.10 исследуется так:
Р^элементиз3.
ПР (6)элементиз3.
П Р(а) V P(f (а))элементиз3.
Р (f (а))резольвентадля 1 и 3.
"""I Р (f (о)) V Р (/(2) (а)) элемент из 3.
Р (f<2)(a))резольвента для 4 и 5.
Таким образом, можно порождать дизъюнкты T*(f(n)(a)) для всех значений п, но невозможно породить другие одноэлементные дизъюнкты или пустой дизъюнкт. Следовательно, исходное множество выполнимо.
Представленный здесь метод резолюций называется фундаментальным, так как он использует фундаментальные конкретизации дизъюнктов.
Унификация
Так как дизъюнкт может допускать бесконечно много конкретизаций, то фундаментальный метод резолюций непременно неэффективен. Идея Робинсона состоит в том, чтобы работать прямо с самими дизъюнктами без явного рассмотрения их фундаментальных конкретизаций. Эта идея требует использования операции унификации [14], [65].
Прежде чем объяснить, о чем идет речь, отметим, что унификация — это основной механизм при выполнении инструкций в логическом программировании (разд. 5.1 и гл. 6).
Пусть два дизъюнкта■
Cj — {^ь ...} и С2 — [—1/2, ...}.
принадлежат множеству S. Посредством переименования можно исключить одновременное появление -одной и той же переменной в Ci и Сг. Предположим, что литеры /1 и /2 являются унифицируемыми, т. е. они обладают общей фундаментальной конкретизацией. Из каждой пары фундаментальных конкретизаций
С>{^ ...} и С>{~4, ...}, таких, что /{ = /' = /', получается резольвента
^==(c;\ou(c;\nn).
Каждый дизъюнкт такого типа является логическим следствием из С] и С2. Задача состоит в том, чтобы найти такой дизъюнкт R, фундаментальные конкретизации которого были бы в точности конкретизациями того типа, как для R'. Этот дизъюнкт R «представлял бы» подходящим образом множество таких конкретизаций. Обозначим через 1и наибольшую нижнюю грань пары {Zi, /2} относительно порядка <(, введенного в § 1.2.6. Имеем Г <( 1Х и I' <( Z2, что эквивалентно V <( 1и. По определению /„ существуют подстановки О] и о2, такие что Oi [Zi] = Z„ и o2[Z2] = Zu. Так как никакая переменная не появляется одновременно в /] и /2, то имеем также Z„ = ou[Zi] = o„[Z2] для оц = Oi U о2. Подстановка а-- является наиболее общим унификатором (НОУ) литер 1Х и Z2 (это обозначение не приводит к единственности ouY
Резольвентным дизъюнктом R с требуемым свойством будет
fl-^JC.lXlZuDUtaJcJM-l/,,}). ■
Два атома унифицируемы, если они построены из одной предикатной константы, примененной к попарно унифицируемым термам. Таким образом, достаточно рассмотреть унификацию двух термов. Если один из них — переменная, то унификация получается мгновенно. В противном случае для унифицируемости два терма должны быть построены из одной и той же функциональной константы, примененной к попарно унифицируемым термам.
Очевидно, получается (рекурсивный) алгоритм унификации — очень простой и-линейной сложности относительно числа термов. Все-таки следует указать на одну трудность. В частном случае, когда один из термов есть переменная х, а другой содержит х, но не сводится к х, унификация, конечно же, невозможна. 'Систематическая проверка невхождения некоторой переменной в терм, подлежащий унификации с этой переменной, приводит к неэффективному алгоритму. Тем не менее можно в некоторой мере найти средство для решения этой проблемы. Проверку невхождения часто опускают в логическом программи-
ровании, основные принципы которого будут изложены в § 1.2.15.
Замечание. Формально можно доказать, что НОУ для х и Цх^ является f (f (. . . (х).. .)). В некоторых случаях этому «бесконечному терму» можно придать вполне определенный смысл.
В исчислении высказываний предпочтительно было работать с приведенными дизъюнктами, т. е. с дизъюнктами без повторяющихся литер (§ 1.1.12). Естественно, это остается верным во всем исчислении предикатов, но нужно учесть одну особенность: приведенный дизъюнкт может допускать неприведенную конкретизацию. Например, Р^х, а)\/ P(f(y), 2) допускает P(f(y), a)V P(f(y), а). Действительно, {(х, f(y)), (2, а)} есть НОУ двух литер исходного дизъюнкта. Устранив повторение в результирующем дизъюнкте, получим фактор исходного дизъюнкта. Всякий дизъюнкт имплицирует любой из своих факторов.
Метод резолюций
С помощью унификации можно легко распространить алгоритм резолюций (§ 1.1.12) на исчисление предикатов. Пусть S — множество дизъюнктов, исследуемое на невыполнимость. Алгоритм таков:
Пока Л ^ S, 1.
искать Ц, /2, si’, s2, такие, что
'$] и s2 есть дизъюнкты или факторы
дизъюнктов-,
1хг$х, П/2 е $2 и 1Х, 12 унифицируемы, вычислить резольвентный дизъюнкт г, заменить S на S{r}.
Преобразованный таким способом метод резолюций полностью остается в силе.
Замечание. Напомним, что все переменные, входящие в дизъюнкт, связанные и их можно переименовывать.
Для примера применим метод резолюций к доказательству того, что если G — группа, каждый элемент
которой является обратным самому себе, то G коммутативна.1' Гипотезы и заключение такие:
Н] : VxVz/Vz [(х ■ у) • z = х • (у • z)],
Н2 '• Vx [х • е = х. = е • х],"
Ha: Vx [х • х = е],
С : VxVz/[x • у = у - х]. -■
Для исключения предиката равенства, не введенного в нашем изложении данного метода, полагаем
Р^Х, у, z)=defX • у = 2..
Представив гипотезы и отрицание заключения в ско- лемовской форме, получим множество дизъюнктов, исследуемое на невыполнимость:
Д Р (х, у, и) V 1 Р {у, z, о) V 1 Р (и, 2, ф) V V Р^х, v, до).
Д Р U, У, ^ V 1 Р ^У, 2, и) V ДР (х, и, гу) V
V Р (U, 2, W).
Р (х, е, х)..
Р^е, х, х).•
Р(х, х, е)..х
Р^а, Ь, с)."
ПР (6, а, с).
Первые два дизъюнкта означают ассоциативность. Точнее, первый гласит, что (x-y)-z можно переписать как x-^y-z), тогда как второй — что x-(y-z) можно переписать как (x-y^-z. Отметим также, что отношение а-b #=Ь- а эквивалентно формуле Эу^а-Ь = = уАЬ-а=/=у), сколемовская форма которой есть а-b == с A b а #= с.'
Пустой дизъюнкт Л можно получить так, как показано ниже. (В правой части списка указаны но-
*> Этот пример неоднократно использовался для иллюстрации различных вариантов метода резолюций.
мера дизъюнктов, над которыми осуществляется резолюция, а также используемые унификаторы.)
—I Р (х, z, и) V —I Р (е, z, w) V Р (х, о, w)
1 {(у, х), (и, е))> 5.
~Л Р (b,z,и)V“I Р (a,v, да) V Р (с, z, да)
2{(х, а), (у, 6), (u, с)), 6.
ПР(х,z,и)vР(х,v,2) 4{(х,2)), 8{(W,Z)}. .
П Р (а,е,w^VР (с,b,ay) 5((х, ь^, 9{(2, 6), (о, е)).
Р (с, Ь,о)3((Х1л)}, .11{(а>, а)}-
■13.Р (с, й,Ь)Ю{(х, с), (г, 6), (о. а)}, 12.
—I Р (х, у, и^ V —I Р (х, е, ш) V Р (и, у, да)
2((р, е), (г, у)}, 5((Х, у)}.
П Р(х, у, u) V Р(и, у, х) 3,14((w,x)).
Ю. Р (Ь, U, С)13, 15{(х, с), (у, а), (и, 6)} ■
Л7, 16.
Правило согласия двойственно правилу резолюций. Если литеры /] и /2 допускают НОУ о, то согласием конъюнкций /] A Ci и 1/2 А С2 является конъюнкция ulCJ Ао[С2].
Правила согласия и резолюций обобщаются для неклаузальных форм. Пусть At и Д2 — формулы исчисления предикатов, содержащие соответственно литеры h и /2. Предполагаем, что /1 и /2 унифицируемы. Пусть а — НОУ и / = о(Ю =о(12)- В обозначениях § 1.1.15 операторы согласия и резолюций определяются следующием образом:
Т / (а [Л,], о [Д2]) =def а М,]'=л Д о [Л2]'-«,
±,(а[Л]], a]42])=defo[^i]z=JI V а[Л2]/=и.
Пример доказательства от противного с использованием неклаузальной резолюции ± приведен в § 3.1.20.'
Принцип логического программирования
Понятие хорновского дизъюнкта, введенное в § 1.1.16 для исчисления высказываний, очевидным
образом распространяется на исчисление предикатов. Метод резолюций — хорошее средство проверки выполнимости множества хорновских дизъюнктов в исчислении предикатов при условии использования подходящей стратегии выбора. Найдено много интересных стратегий, некоторые из них описаны в [63].
Алгоритмические свойства некоторой функции можно представить множеством дизъюнктов и использовать метод резолюций для вычисления значений этой функции. Этот принцип логического программирования мы проиллюстрируем простым примером из арифметики.
Хорошо известный метод вычисления наибольшего общего делителя двух натуральных чисел — алгоритм Евклида. Его основу можно, пользуясь формализмом § 1.1.17, резюмировать тремя следующими дизъюнктами:
pgcd (х, х, х):—.
pgcd(x, у, z):—x>y, pgcd (х — у, у, г).
pgcd (х, у, z):— у > х, pgcd (х, у — х, z).
Предикатная форма pgcd(x, у, г) истинна, если z является наибольшим общим делителем х и у. Бинарный предикат «>» и бинарная операция «—» имеют свой обычный арифметический смысл. Для вычисления НОД двух натуральных чисел, например 4 и 6, добавим к описанию алгоритма четвертый дизъюнкт:
Л :— pgcd(4, 6, z).
Как и в исчислении высказываний, этот набор из четырех дизъюнктов будет рассматриваться как некая грамматика, имеющая Л исходным символом. Будем искать вывод пустой цепочки е. Для этого необходима последовательность унификаций. В частности терм, которым будет конкретизирована переменная х, даст решение (задачи). В данном сиу-
чае имеем следующую последовательность преобразований:
Л (4) pgcd (4, 6, z) (3) 6 > 4, pgcd (4, 6 — 4, z)
pgcd (4, 2, z) (2) 4 > 2, pgcd (4 — 2, 2, z)
pgcd (2, 2, z)(l) e[z = 2]'
«Арифметико-логическая» машина, базирующаяся на принципе резолюций, может выполнить алгоритм, описанный набором хорновских дизъюнктов. Язык программирования Пролог пронизан этим принципом. Пролог вводится в разд. 5.1 и более подробно излагается в гл. 6.'
Аксиоматические системы
Аксиоматический подход к логике
Введение
Понятие аксиоматической системы очень старо. Такая система состоит из множества аксиом, т. е. выражений, считающихся общезначимыми '^ и множества правил вывода, т. е. механизмов, позволяющих строить новые общезначимые выражения из аксиом и уже полученных общезначимых выражений. В этом контексте построенные указанным способом общезначимые выражения называются теоремами. Доказательством (или выводом) теоремы называется последовательность из аксиом, правил вывода и уже доказанных теорем, позволяющая получить данную теорему.'
В этой главе выражениями всегда будут формулы исчислений высказываний или предикатов.
Евклидова геометрия — древнейшая из аксиоматических теорий..
Тот факт, что в некоторой аксиоматической системе формула А является выводимой, будет обозначаться так:
НА.
Вообще, если Е — множество формул, то выражение Е Н А.
означает, что А выводима из Е, т. е. что А является доказуемой, если элементы из Е рассматриваются как дополнительные аксиомы. В этом контексте эле-
*’ Слово общезначимый имеет здесь свой естественный смысл. Аксиома считается всегда истинной. Хотя конечная цель всякой аксиоматической системы — улавливать истину, это понятие можно считать лишь абстрактной системой получения одних цепочек символов из других.
менты Е являются гипотезами. Обозначение НА можно считать сокращением для 0 Н А. Множество Е называется синтаксически невыполнимым, если Е И Л.
Свойства аксиоматических систем
Аксиоматическая система может появляться в двух весьма различных контекстах. Прежде всего, она может быть предназначена для аксиоматизации уже известной теории. Именно так и будет для исчисления высказываний: вводимые нами аксиомы лишь «дублируют» уже определенную семантику, а понятия тавтологии и теоремы должны совпасть. С другой стороны, множество аксиом может послужить отправной точкой для новой теории. Именно так обстояло дело с теорией групп. Наконец отметим, что существуют промежуточные случаи. Наиболее известный из них касается теории множеств: аксиоматическая система внесла поправку в интуитивную теорию.
Первое требование, которому должна удовлетворять аксиоматическая система, заключается в невозможности вывода отрицания уже доказанного выражения (которое, следовательно, считается общезначимым). "
Можно также пожелать, чтобы система была минимальной, т. е. не содержащей бесполезных (лишних) аксиом и правил вывода. Точнее, некоторое выражение независимо от -аксиоматической системы, если его нельзя вывести с помощью этой системы. В минимальной системе каждая аксиома независима от остальной системы. Вопрос о независимости постулата о параллельных в аксиоматической системе Евклида неотступно преследовал весь математический мир в течение двух тысяч лет. Наконец, его независимость в прошлом веке была доказана изящно и полностью. Это было сделано путем построения математических моделей, в которых истинны все геометрические аксиомы, за исключением названного постулата.
Обратимся снова к аксиоматическим системам вообще. Для начала нам достаточно выделить те
свойства, которыми должна обладать аксиоматическая система, соответствующая исчислению высказываний (предикатов). Это, прежде всего, свойство адекватности, т. е. все теоремы должны быть общезначимыми формулами. Требуется также полнота, т. е. взаимность адекватности: всякая общезначимая формула должна быть теоремой. Система адекватна, если для любой формулы А имеем
А => |= А.
Соответственно система полна, если для любой формулы А
Н= А => Н А.
Заметим, что никакая адекватная логическая система не может порождать одновременно некоторое выражение и его отрицание. В действительности адекватная система позволяет выводить ч только тавтологии. Аксиоматический подход к логике высказываний (предикатов) изложен в §§ 2.1.3—2.1.6 (2.1.8—2.1.9).
Простая аксиоматическая система исчисления высказываний
Рассмотрим следующие три схемы формул:
(А1) (Х=>(У^Х)),
(А2) ((% ^(Y^ Z)) 2D ((А 2D У) 2D (X 2D Z))).
(АЗ) ((П X 2D ~| У) 2D ((1 X 2D У) 2D X)).
Всякий раз, когда в любой из этих схем X, У, Z заменяются произвольными формулами, получается тавтология. Следовательно, эти схемы формул могут служить схемами аксиом в некоторой адекватной системе.
Правило вывода, называемое обычно modus ро- nens 2), формулируется следующим образом:
Если X и (X 2D У) — теоремы,
(MP) v
то У есть теорема.
Это правило вывода, добавленное к нашим схемам аксиом, дает аксиоматическую систему. Система остается адекватной, так как наше правило вывода сохраняет общезначимость. Точнее, правило (МР) семантически корректно, так как оно «заменяет» слово «тавтология» на «теорема».
Данный результат, выражающий включение мно жества выводимых формул в множество общезначимых, служит примером метатеоремы. В нашем изложении все выражения, перед которыми стоят слова теорема, лемма или следствие, фактически являются метатеоремами. . -
Каждая аксиома здесь независима от совокупности остальных аксиом. Чтобы установить невыводимость аксиомы А из некоторого множества аксиом Е, пользуются'методом моделей. Он состоит в приписывании конкретных значений символам, входящим в А и Е. Затем указывается структура, в которой элементы истинны, тогда как А ложно. Доказательства независимости для обсуждаемой системы содержатся, например, в [72].
Рассматриваемая нами система содержит только связки Ч и d. Следовательно, она не позволяет судить о формулах, содержащих другие связки. Это, однако, не является существенным ограничением, если рассматривать связки Пиз как первичные, а три другие связки — как полученные из них по формулам (1.3) из § 1.1.5. Вопрос о полноте этой системы отложим до § 2.1.5.
Несколько интересных теорем
Докажем для примера, что (р о р)—теорема введенной в предыдущем параграфе аксиоматической системы.
н (р ID ((р ID р) ZD р))Л1
н ((р ID ((р ID Р) ID р)) ID ((р ID (р ID р)) ID (р ID р)))
Л2
Н ((р => (р ID р)) ID (р ID р))) 1, 2, МР .
Н (р=>(р=>р))А1
Н (р =) р).4, 3, МР■
Каждая строка формального доказательства содержит порядковый номер, саму формулу и обоснование ее вывода. Существуют три типа обоснования:
если формула является гипотезой, обоснование содержит имя (номер) этой гипотезы,
если формула получается из какой-либо схемы аксиом, обоснование содержит имя (номер) этой схемы,
если формула получена применением некоторого правила к ранее полученным формулам, обоснование содержит порядковые номера . строк этих формул и имя правила.
Этого нехитрого примера достаточно для демонстрации возможной нудности доказательств. Ниже приведены несколько элементарных теорем без формальных доказательств. .
Р=>Р-'
Р => П ~1 Р,.
П pzD р,
П р =э П q) zd (р zd р),'
(р =) р) zd ((П р zd q) zd q)..
Построение формальных доказательств можно упростить, привлекая одну достаточно полезную метатеорему, принадлежащую Эрбрану и Тарскому. Мы приведем ее здесь в довольно урезанном виде. Общую версию см., например, в [72].
Метатеорема дедукции 11 утверждает, что необходимым и достаточным условием выводимости А из гипотез £ (J {В} является выводимость (В о Д) из Е. Этот результат можно записать так:
Е,ВЬА<^ Е Н (В zd Д).
Достаточность доказывается простым применением правила modus ponens. Необходимость устанавливается индукцией по длине вывода (Е, В Н Д). Детальные рассуждения приведены в [72]. Эта мета-
Иные названия — теорема дедукции или теорема о дедукции. — Прим. ред.
теорема значительно упрощает доказательства. Она формализует обычный подход того математика, который, чтобы установить, что гипотеза влечет некоторое следствие, прямо устанавливает это следствие в предположении истинности гипотезы. Например, доказательство того, что Н (р id р) сводится к доказательству (тривиальному) р Н р.
Замечание. Метатеорема дедукции тривиально верна в адекватной полной системе, но может оста- ■ ваться верной и в неполной системе.
- Замечание. Входящие в доказательство формулы, ^вообще говоря, не являются теоремами (за исклю- ;чением частного случая, когда гипотезы отсут- ■ ствуют).
Формальное доказательство должно быть конечным. Если же множество^Е бесконечно, обозначение Е Н А означает, что в Е существует такое конечное подмножество Е', что Е'\—А.
'Другой полезной метатеоремой является следующее правило замены:
Если X, (У id Z) и (Z id У) теоремы,
если У есть X или подформула формулы X,
если U получается заменой в X вхождения У на Z, то U является теоремой.
Принцип одновременной подстановки (см. § 1.1.2) можно представить в виде следующей метатеоремы:
Если р — высказывание, X(р) — теорема и
А — формула, •
если Х(А) получается заменой из Х(р^ путем замены всех вхождений р на А, то Х(Л) —теорема.
Замечание. Эти два правила становятся очевидными, если слово «теорема» заменить на выражение «общезначимая формула». Значит, они останутся верными в адекватной полной аксиоматической системе, в том числе и в используемой здесь (§ 2.1.5).
Как приложение формализуем и обоснуем заново принцип рассуждений, базирующийся на разборе .^случаев.
Лемма 2.1. Если Е, В \-А и Е, "1В |— А, то ЕНЛ.
4 А. Тейз и др.
Доказательство. Имеем последовательно
гипотеза.дедукция, теорема.3, подстановка.4, МР.гипотеза.дедукция.5 МР. □гипотеза.дедукция, теорема.3, подстановка.4, МР.гипотеза.дедукция.5 МР. □£, В\- А
гипотеза.
дедукция, теорема.
3, подстановка.
4, МР.
гипотеза.
дедукция.
5 МР. □
гипотеза.
дедукция, теорема.
3, подстановка.
4, МР.
гипотеза.
дедукция.
5 МР. □
Е Н (В => А)
Н ((р => 9)((П Р => 9) => 9))
Н ((В id Л) id ((”] В id Л) id Л))
£Н((ПВ=> Л) id А)
Е, "1 В Н А
£н(ПВзЛ)
Е Н А
Замечание. Это доказательство демонстрирует автоматическое получение вывода £н А из выводов Е, В I— А и Е, “] В Н А.
Полнота
Набросаем основные штрихи доказательства полноты, принадлежащего Кальмару (подробности см., например, в [72]). Ограничимся случаем формул, содержащих лишь связки “I и ID.
Лемма 2.2. Пусть А — формула, построенная из высказываний р^, ..., рп и связок ~\, id. Пусть / — некоторая интерпретация. Пусть p'k означает рк при Црк) = И и "1рк при Црк) = Л и, аналогично. А' есть А при /(Л) = И и —I А при /(Л) = Л.
Тогда
{Р^ Рп^А'-
Доказательство. Применим индукцию по числу связок в А. Если оно равно 0, то А сводится к одному из высказываний рк и результат очевиден. В противном случае А является формулой вида —I В или (В тз id С). Предположив, что результат верен для В и С, легко доказать в каждом случае, что он верен для Л. □
Следствие. Если формула А из леммы 2.2 — тавтология и если р'к — общее обозначение для рк и И рк, то, какова бы ни была п-ка р'х, ..., р',
{р;, .... р'}н а
Теорема 2.3. Введенная в § 2.1.3 аксиоматическая система полна.
Доказательство. Пусть А — тавтология, построенная из множества высказываний {ptрп}. По лемме 2.2 имеется 2" выражений |р', ..., р'} н А, где рд есть либо рй, либо П рк. Отсюда следует
{Р1Pn-JHPn^ Л),
{р;р'_,)Н(Прп=э Ау
Значит, по лемме 2.1 получается 2П-1 выражений
^Р\<->} И А-
Конечный результат НА получается после осуществления п таких шагов.□
Можно также установить полноту некоторой аксиоматической системы исчисления высказываний, показав, что метод резолюций есть метатеорема этой системы. В действительности надо доказать три метатеоремы:
Если С—КНФ, соответствующая А, то НС = .= А.
Если С и С'—нормальные формы, отличающиеся лишь порядком дизъюнктов и/или порядком литер в пределах одного дизъюнкта, и/или числом повторений одной и той же литеры в дизъюнкте, то Н С = С'.
Правило резолюций:
Е, pV X, ~1 р V У Н X V Y.
Доказательства этих метатеорем простые, но длинные. Вот, например, основные этапы доказательства третьего пункта:
X Н X V У,'
УН XV У,
ЕДАрэ X), (р=>У), АРН X,
Е, И Р => XV kP^YV ApHXVY,
Е, Ор^Х^ (poY), р }—Y,
Е, Оро X), (poY), р\- XV Y, ' . Е, ОроХ), <poY)\-XVY,
Е, (р V X), (П р V У) Н X V Y.
Польза аксиоматических систем
Выяснилось, что доказательство тавтологий — более трудоемкое дело, чем просто проверка общезначимости. Следовательно, может возникнуть вопрос о пользе аксиоматических систем. Действительно, аксиоматизация исчисления высказываний сама по себе бесполезна, так как существуют относительно эффективные алгоритмические средства для определения того, является или нет формула тавтологией.
С этой точки зрения исчисление высказываний представляет собой исключение. Другим замечательным исключением является евклидова геометрия. Истины этой теории были классически доказаны в аксиоматической системе Евклида. Доказательства эти часто весьма изящны. Напротив, доказательства, опирающиеся на аналитический метод Декарта, довольно механистичны.
Честно говоря, существует много теорий, для которых аксиоматическая точка зрения оказывается самой простой, даже единственно возможной. Сошлемся, в частности, на логику предикатов, теорию чисел и теорию групп. Ознакомление с некоторыми аксиоматическими системами исчисления высказываний является хорошей подготовкой к изучению более сложных аксиоматических систем, таких, как логика предикатов (§§ 2.1.8—2.1.9).
С другой стороны, понятие аксиоматической системы исчисления высказываний интересно само по себе. Наряду с классической логикой высказываний были разработаны различные альтернативные теории, оказавшиеся полезными в некоторых контекстах.
Теория высказываний состоит в выделении некоего подмножества из множества формул. Ниоткуда не следует, что множество тавтологий (или теорем), определенное в разд. 1.1, является единственным ин-
тересным подмножеством. И действительно, были выделены и изучаются другие подмножества формул — интересные либо с семантической точки зрения (многозначные логики), либо с аксиоматической (в особенности интуиционистская логика). Изучение этих неклассических логик выходит за рамки настоящей главы. Отметим только, что наибольшие споры вызывает тавтология (р V П р), называемая обычно законом исключенного третьего. Этот принцип позволяет, например, математику провести следующее рассуждение:
Множество алгебраических чисел счетно, множество действительных чисел несчетно, следовательно, существуют неалгебраические действительные числа.
Обоснование данного рассуждения в некоторых отношениях недостаточно удовлетворительное, потому что оно не указывает неалгебраического действительного числа. Доведенная до крайности, такая критическая позиция приводит к отказу от важного принципа теории доказательств: ставится под сомнение неявно фигурирующий в доказательстве принцип исключенного третьего. Это привело к развитию логик с более чем двумя значениями. В § 3.1.16 мы встретимся с примером использования трехзначной логики при задании семантики некоторых модальных логик.
Двузначность логики высказываний может стеснять администратора базы данных, информация р в которой может иметь три состояния:
Истинно: р подтверждается в базе данных (БД).
Ложно: р явно отрицается в БД.
Неопределенно: по поводу р ничего не сказано в БД.
Можно было бы ввести четвертое состояние — наличие в БД противоречивой информации по поводу р. Обычно это запрещено.'
Сделаем последнее замечание о неклассических логиках. Они определяют все подмножества множе-
ства тавтологий (по крайней мере те, которые используют классический язык). Неклассические логики получаются обеднением множества тавтологий, являющегося в некотором роде максимальным *).
Присоединение к множеству тавтологий какой- либо необщезначимой формулы неизбежно приводит к невыполнимости системы: множество «теорем» совпадает тогда с множеством всех формул. Предположим, что некий не являющийся общезначимым дизъюнкт, например (р V ~1^), был бы объявлен общезначимым и добавлен к множеству аксиом. Правило одновременной подстановки позволяет получить дизъюнкт (р V П "1 р) путем замены высказывания q формулой П р. Из этого последнего дизъюнкта легко выводится р, так как ((р V "1 ~1 р) ^ р) является теоремой. Наконец, из р выводится какая угодно формула А (по правилу одновременной подстановки).
Вторгшаяся формула буквально «отравила» систему. Эта хрупкость присуща не только исчислению высказываний, но распространяется на большинство формальных систем. Тем самым она угрожает и предостерегает: логик будет осторожен при выборе аксиом и правил вывода, зная о санкциях за каждую ошибку такого рода.
■ Замечание. Не следует смешивать случаи, когда некоторый дизъюнкт рассматривается как истинный (что часто приходится делать), с теми случаями, когда какой-либо дизъюнкт считается общезначимым. Например, вывод
(р V И ?) Ь Л
некорректен, если А — произвольная формула, но он корректен во всех тех случаях, когда А — логическое следствие из (р V q).
Система натурального2’ вывода
Существуют различные способы проведения доказательств в логике. В аксиоматической системе из
Это не касается немонотонных логик, которые вводятся в гл. 4.
Иногда говорят «система естественного вывода». — Прим. ред.
использовалось одно правило вывода modus ponens и несколько аксиом. Такой тип доказательства (который, исходя из упомянутой аксиоматической системы, приводит к требуемому результату) называется «доказательством в смысле Гильберта».
Аксиоматическая система, рассматриваемая в этом параграфе, не содержит аксиом, зато использует немало правил вывода. Тип доказательства, связанный с такой системой, называется «доказательством в смысле Генцена». Эта аксиоматическая система введена Генценом (см. [3], [53], [65]). Правила вывода записываются в следующей форме:
S| ... Sns
. Это обозначение выражает возможность вывода S из Sb ..., Sn. Каждой связке сопоставлены правила введения и удаления. Они задают семайтику связок и указывают «способ применения». Название естественный (или натуральный) вывод дано этой системе потому, что используемый тип рассуждений приближается к обычному человеческому (естественному) рассуждению.
Метод натурального вывода позволяет оперировать с формальными объектами, представляющими рассуждения. В логике рассуждение можно представить выражением типа
Н влечет С,
где Н — последовательность формул, С — формула. Рассуждение общезначимо, если его заключение является логическим следствием его гипотез (§ 1.1.6). Вывод или доказательство есть формальное представление рассуждения. Метасимвол => является формальным эквивалентом слова «влечет». Вывод
Н=^С
общезначимый, если С — логическое следствие Н.
Множество правил оперирования с выводами представлено ниже, Е — множество формул, А, В и С — формулы. Выражение Е, А служит сокращением для BUM). В частности, если Е содержит А, то Е
эквивалентно Е, А. Как обычно, Л представляет произвольную невыполнимую формулу.
Вот для начала два правила (называемые ба- зиснымиу
Е^А
Е, А=^АИ Е, В=>А'.
формализующие принцип монотонности. Первое из них означает, что всякий вывод, заключение которого совпадает с одной из гипотез, обязательно общезначим. Второе гласит, что присоединение гипотезы к общезначимому выводу дает общезначимый вывод. А теперь выпишем правила введения связок:
Наконец, приведем правила удаления связок:
Е => А Д В Е => А Д В
Е^А Е^В
E=^AVB Е, А=>С Е, В^С
•Е=^- A id В
Ха^в
. Е =^ А Е=>^А Е=^"АА
' ' Е=^ЛЕ => А
.. Е =>- А = В Е => А = В "Е, А^ В Е, В^А
Эта система (натурального вывода) является адекватной: если выводы в числителе произвольного правила общезначимы, то вывод в знаменателе того же правила также общезначим. Кроме того, она является полной: каждый общезначимый вывод можно получить из пустого вывода (т. е. «из ничего»), применяя конечное число подходящих правил.
В качестве примера рассмотрим заново метод доказательства разбором случаев (§ 1.1.11). Требуется доказать
{A, h zd (р V q), pTD с, q zd с^ => с.
Обозначив множество гипотез через Е, имеем следующий вывод:
Е, HzD^pVq^hzD^pVq)Е => h zd (p V q)E, A => p V qE => p V qЕ, HzD^pVq^hzD^pVq)Е => h zd (p V q)E, A => p V qE => p V qE, p zd с ^p"=) cE =>p zd cE, p cE, q zd c =>q^> cE=>q zd cE, q=>cE=>cE, p zd с ^p"=) cE =>p zd cE, p cE, q zd c =>q^> cE=>q zd cE, q=>cE=>cбазисное правило.hzD (p V q) — E.2, правило зэ-удаления,h = E.базисное правило.pZD c — E.6, правило iD-удаления. базисное правило.E, qZD c = E.1правило iD-удаления.7, 10, правило V-удаления.базисное правило.hzD (p V q) — E.2, правило зэ-удаления,h = E.базисное правило.pZD c — E.6, правило iD-удаления. базисное правило.E, qZD c = E.1правило iD-удаления.7, 10, правило V-удаления.
Е, HzD^pVq^hzD^pVq)
Е => h zd (p V q)
E, A => p V q
E => p V q
Е, HzD^pVq^hzD^pVq)
Е => h zd (p V q)
E, A => p V q
E => p V q
E, p zd с ^p"=) c
E =>p zd c
E, p c
E, q zd c =>q^> c
E=>q zd c
E, q=>c
E=>c
E, p zd с ^p"=) c
E =>p zd c
E, p c
E, q zd c =>q^> c
E=>q zd c
E, q=>c
E=>c
базисное правило.
hzD (p V q) — E.
2, правило зэ-удаления,
h = E.
базисное правило.
pZD c — E.
6, правило iD-удаления. базисное правило.
E, qZD c = E.1
правило iD-удаления.
7, 10, правило V-удаления.
базисное правило.
hzD (p V q) — E.
2, правило зэ-удаления,
h = E.
базисное правило.
pZD c — E.
6, правило iD-удаления. базисное правило.
E, qZD c = E.1
правило iD-удаления.
7, 10, правило V-удаления.
Этого простого примера, пожалуй, достаточно для демонстрации того, что система натурального вывода гораздо удобней, 'чем классическая аксиоматическая система из § 2.1.3.
Классические аксиомы для квантификации
Аксиоматическую систему из § 2.1.3 можно приспособить к исчислению предикатов без равенства. Схемы аксиом (Al), (А2) и (АЗ) и правило (МР)
остаются без изменений. Две дополнительные схемы дают возможность оперировать с кванторами.
Введем сокращение, которое будет использоваться при записи одной из схем аксиом. Говорят, что терм t свободен для переменной х в формуле Q, если ни х, ни произвольная переменная из / не квантифицированы в Q. При этом через Qx;t обозначается формула, полученная из Q путем одновременной замены всех вхождений х на L Пять схем аксиом таковы:
(Л1) (P=>(Q^P)),
■(Л2)«Р ID (Q ID Р)) О ((Р ID Q) ID (Р ID/?))),.
.(ЛЗ)((Д Р гэ Д Q) ZD ((Д Р id Q) id Р)),.
(Л4)Vx (Р id Q) id (Р id VxQ)'
' (х не содержится в Р и не является ..
■ связанной в Q),
(Л5) (VxQ id Qx(t)
(х свободна для t в Q).-
Второе правило вывода (правило обобщения^ управляет квантификацией. Оба правила рассматриваемой аксиоматической системы сформулированы ниже:
Если X и (X id У) — теоремы,
(.МР) то у _ теорема
Если х не связана в теореме Р, /р\г
' то VxP — теорема.
В этом контексте квантор существования не вводился потому, что формула ЗхЛ считается сокращением для —I Vx Д А.
Адекватность описанной аксиоматической системы устанавливается легко, как и в случае исчисления высказываний. Можно также установить полноту, но доказательство соответствующего факта является значительно более тонким. Довольно длинное классическое доказательство дано в [5]. Можно интуитивно убедиться в полноте системы, выведя в ней правила унификации и резолюций.
Пусть А — формула, Е — конечное множество формул и 2 — аксиоматическая система. Обозначение Е Н ^А или просто Е Н А означает, что А можно вывести в системе 2, к которой добавлены в качестве аксиом некоторые формулы из Е.
Возникает вопрос: останется ли метатеорема дедукции справедливой в рассматриваемой здесь аксиоматической системе 2. Точнее, надо выяснить, справедлива ли следующая эквивалентность:
Е,^АоЕ^1ВтпА\
Это соотношение неверно, если в выводе формулы А из Е, В используется правило обобщения (G) по некоторой переменной, имеющей свободное вхождение в В. Например, вывод Р Н ^хР вполне законный, тогда как импликация (Pzd^xPY естественно, необщезначима. Но если запретить применение в выводе такой операции, то метатеорема дедукции останется справедливой. Существует довольно длинное прямое доказательство, которое проводится индукцией по сложности вывода Е, BY А.
Натуральный вывод в логике предикатов
Введенная в исчислении высказываний система натурального вывода (§ 2.1.7) обобщается на исчисление предикатов путем добавления правил введения и удаления кванторов общности и существования. Правила введения таковы:
(V)
Е => А (х)(х не имеет свободных вхож-
£=>УхЛ(х) дений в Е),
(3)
Е => A(t).,. . ..
—ЧлТП (теРм ‘ свободен для х в А (х)).
Правила удаления следующие:
(V)
Е => VxA (х) .,,....
■=-т— (терм t свободен для хв Л(х)),
с => А (г)
(з)
Е =>- ЗхА (х) (с не встречается ни в Е, Е=>А(с)ни в Л(х)).
В этих правилах х — переменная, с —константа, Л (х)—формула, в которой х не имеет связанных вхождений, /— терм и Е — множество формул.
В качестве примера выведем в этой системе аксиому (Л4), сформулированную в § 2.1.8. Предполагаем, что переменная х не входит в формулу Р и не имеет связанных вхождений в формулу Q. Подходящий вывод таков:
Mx (Р id Q) => Vx(PidQ) базисное правило.
Vx (Р id Q) => (Р id Q)1,правилоV-удаления.
Vx(P id Q), P=>Q2,правилоiD-удаления.
Vx (P id Q), P =>V xQ3,правилоV-введения.
Vx (P id Q) => (P id VxQ) 4,правилоiD-введения.
Равенство в исчислении предикатов
Введенное в § 1.2.3 исчисление предикатов содержит связку равенства. Однако, начиная с § 1.2.9, мы часто рассматривали исчисление предикатов без этой связки, что, в частности, упростило доказательство принципа резолюций (§ 1.2.12). При отсутствии связки «=» отношение равенства можно моделировать и даже аксиоматизировать. Рассмотрим двуместный предикат Е и три следующие формулы:
VxE (х, х),
VxVz/ [Е (х, у) id Е (у, х)],■
ЧхМуМг [(Е (х, у) А Е (у, 2)) => Е (х, z)].
Они характеризуют отношения эквивалентности, т. е. рефлексивные, симметричные и транзитивные отношения. Отношение равенства — частный случай эквивалентности. Для моделирования присущих ему свойств введем два следующих правила вывода:
Е (sb /J Д Е (s2, У Д ... Д Е (sm, t^
P(sh s2, ..., s^^P^t,, t2tm) ’
E (sb /J A E (s2, /2) A • • - A E (sn, tn)
E(f(Si s2s„), f Vi» t^tn^ ‘
Символы P и f m-меетная предикатная и «-местная функциональная константы соответственно.
Чтобы приспособить метод резолюций для исчисления предикатов с равенством, были предложены разнообразные приемы. Основной принцип, заложенный в них, состоит в возможности замены терма равным термом. Один из наиболее широко применяемых методов — парамодуляция (см. [94]). Заметим, что, за исключением явно искусственных случаев, доказательства обычно очень длинны.
Для иллюстрации последнего утверждения обратимся к одной классической теореме теории групп. Рассмотрим произвольную группу. Операция обозначается точкой между операндами. Нейтральный элемент обозначен через е, обратный к х — через х-1. Определим х* для всех целых k следующим образом: х° = е, хп+' = хп-х и х~("+1) = х-"-х-1 для всех п "^ ^ 0. Полезным оказывается понятие коммутатора двух элементов х и у — элемента [х, у]:
[х, y]=def(x • у) • (х-1 • у^1).
Ясно, что два элемента перестановочны тогда и только тогда, когда их коммутатор равен е. Обратимся к следующей элементарной теореме:
Если для всех х справедливо равенство х3 = е, то для всех х и всех у имеем [ [х, у), у] = е.
Следующие формулы соответствуют гипотезам и заключению.
//] : МхЧуЧх [(х • y)-z = x-(y- z)].
Н2: Vx [х*- е = х = е • х].
Нэ: Vx [х • х~* — е = х~* • х].
Нл: Vx [х3 = е].
Я5: VxVz/ ([х, у] = (х • у) • (х“‘ • у-1)).
С :VxVy([[x, у], у] = е).
Сперва рассмотрим полуформальное доказательство. В силу ассоциативности все скобки опускаются. Общая величина (x-y)-z и x-(y-z) обозначается xyz (это могло бы быть предметом некой леммы об обобщенной ассоциативности). В 'этих новых обозначениях имеем следующую лемму:
L : VxVz/ [хух = у-’х^у-1].
Доказательство легкое:
ухухух = е хухух = у”хухух = х-ху-х хух = у~хх~ху~хухухух = е хухух = у”хухух = х-ху-х хух = у~хх~ху~хHi (для ух), умножили слева обе части на
ухухух = е хухух = у”х
ухух = х-ху-х хух = у~хх~ху~х
ухухух = е хухух = у”х
ухух = х-ху-х хух = у~хх~ху~х
умножение слева на х-х, ' умножение слева на у-х.
Доказательство теоремы тоже простое:
хуххуххух = е(хух/ = е,
хуххуху~хх~ху~х = елемма L,
хух~хуху~'х~'у~' = ех2 = х~х,
хух~х (у-'у) уху~хх"ху-х = е у~ху = е, (хух~ху~1) у (уху~]х~х) у-х = е ассоциативность, (хух~ху~х) у (хух~ху~х)~} у”' = е (uv)-1 = «“‘и-1, [х, У\У tx> У\ Х У~Х" е определение коммутатора, [[х, УЪ У1 — еопределение коммутатора.
Это доказательство можно формализовать. Дизъюнкты первой группы представляют гипотезы:
Е^ЦЦх, У), г), Цх, Цу, 2))). .
Е(Цх, е), х).
Е (f (е, х), х).
Е(Цх, Цх)), е).
Е(ЦЦх), х), е).
Е У (f Ц, х), х), е).
Е(с(х, у), ЦЦх, у), Ц1Ц), i{y)))).
Функции f, I и с представляют здесь соответст- веннно групповую операцию, взятие обратного элемента и коммутатор. Далее, три дизъюнкта (8, 9, 10) означают, что предикат Е представляет отношение эквивалентности, а пять дополнительных дизъюнктов (11, 12, 13, 14, 15) позволяют подстановку равных
термов:
Е (х, х).
~\Е (х, у) V Е (у, х).
~] Е (х, у) \/ П Е (у, z) V Е (х, z).
"1Е (и, и) V Е (I (и, х), f (о, х)).
~] Е (и,и) VЕ (f (х,и), f (х, о)).
"ЛЕ^и,u)-VЕ (t (и),t (о)).■
И.~] Е (и,и) VЕ (с (и,х), с (о, х)).'
“] Е (и,о) VЕ(с (х,и), с (х, о)).
Наконец, последний дизъюнкт представляет отрицание заключения:
~\Е(с (с (а, Ь), Ь), е).
Здесь символы а и b — сколемовские константы.
Доказательство, базирующееся на классическом методе резолюций, содержит минимум 137 этапов, тогда как парамодуляция позволяет уменьшить это число до 48 [94]. Неформальное доказательство содержит менее 20 этапов, но в нем используются многочисленные «очевидные» леммы, ссылки на которые отсутствуют. Формальный подход надежней, чем неформальные рассуждения (по крайней мере в принципе). Из- за чрезмерной длины формальные доказательства без автоматизации практически неподъемны.
Теории первого порядка
Введение
В этом разделе будет показано, как исчисление предикатов может служить источником теорий, позволяющих изучать некоторые специфические структуры. Мы поинтересуемся также, какие свойства можно ожидать у этих теорий. Наиболее важным из них является разрешимость, т. е. существование алгоритма, позволяющего различать истинные и ложные вира-, жения. Тем самым необходимо критически проанализировать понятие алгоритма, его возможности и
границы. Рассматриваются и алгоритмические языки — под необычным углом зрения их выразительных возможностей. Проявляются связи между понятиями вывода и вычисления. Во многих случаях читатель должен приноравливаться к неразрешимым теориям и проблемам. Если говорить конкретнее, то, например, в общем случае невозможно алгоритмически распознать, выводима ли некая формула в данной аксиоматической системе, а также — можно ли некую функцию вычислить, используя данный алгоритм. Излагаются и комментируются (кратко) различные примеры. Логика — это прежде всего язык, а уже затем средство дедукции (построения выводов). Польза от этого языка есть, даже если дедуктивный аппарат не введен. Язык программирования Пролог (гл. 6) служит неплохой иллюстрацией этого положения. • .
Неформальные и формальные теории .
Прежде чем ввести понятие формальной теории, интересно исследовать обыденный смысл слова. Любая теория прежде всего обладает языком, на котором сформулированы выражения. Набор правил позволяет отличать выражение от простой последовательности символов (если даже в некоторых случаях различие субъективно). Другие правила позволяют выделять среди выражений некие базисные (первичные, примитивные), называемые аксиомами или постулатами и считающиеся «истинными» (без необходимости ссылаться при этом на какую-либо действительность). Язык должен быть достаточно богатым и содержать, в частности, понятие отрицания. Способ рассуждения позволяет получать, исходя из постулатов, новые выражения, тоже считающиеся «истинными». Марксизм и теория эволюции — примеры теорий. Их язык — естественный (иногда слегка расширенный).
Исчисление предикатов можно считать формальным эквивалентом понятия теории. Есть язык и правила, позволяющие отличать выражения (формулы) от простых наборов символов. Впрочем, исчисление
предикатов оснащено адекватной и полной аксиоматической системой для получения из малого числа аксиом и правил вывода всех истин языка. Исчисление предикатов редко употребляют как таковое. На практике чаще всего рассуждения строятся над довольно ограниченным множеством предикатных и функциональных констант. Их семантика лимитирована набором соответствующих аксиом. (В гл. 3 такое применение исчисления предикатов продемонстрировано для представления знаний.)
Сигнатурой называется набор предикатных и функциональных констант, каждая из которых обладает определенным числом мест. Не привлекая синтаксиса исчисления предикатов, сигнатура определяет некий язык, являющийся множеством термов и формул, которые разрешается строить.
Структурой относительно какого-то языка называется некая интерпретация этого языка. Каждой предикатной или функциональной константе сигнатуры сопоставляются предикат или функция подходящего типа на области интерпретации. Термы и формулы языка интерпретируются по правилам исчисления предикатов (§ 1.2.5).
Теорией относительно определенного языка называется некое множество формул этого языка. Последние называются аксиомами. .
Теорема — это логическое следствие из аксиом. Термин «теория» иногда означает множество теорем (на практике такой разнобой в толковании термина «теория» затруднений не вызывает). Структура, в которой истинны все аксиомы некой теории, называется моделью (для) этой теории.
Теория в нашем смысле (т. е. основанная на исчислении предикатов) часто именуется теорией первого порядка. Это название напоминает о том, что переменные здесь — только индивидные: нет ни функциональных, ни предикатных переменных. Однако таковые были бы очень полезны. Например, с их помощью очень просто вводилось бы определение равенства:
a = Z>=defVP(P(a) = .P(6)).
Логики «высших порядков» обладают заведомо превосходящими выразительными возможностями. К сожалению, такое преимущество оплачивается отсутствием полной аксиоматизации для теорий высших порядков.
Итак, теория первого порядка является сужением исчисления предикатов на ту или иную заданную область. Аксиоматическая система любой конкретной теории получается присоединением специфических для этой теории аксиом к адекватной полной аксиоматической системе исчисления предикатов. Это не означает, что теорема исчисления предикатов обязательно остается теоремой в рассматриваемой теории.
Ведь язык этой теории, вообще говоря, более ограничен, чем язык исчисления предикатов. Очень часто он располагает лишь конечным числом различных предикатных и функциональных констант.
Польза теорий
К созданию и развитию формальной или неформальной теории могут приводить различные причины. В большинстве случаев теорию разрабатывают для отражения какой-то реальности (или того, что некоторые принимают за таковую), которая может быть более или менее конкретной или абстрактной (физика, химия, политика, астрология и т. д.). Тогда понятие истины предшествует теории и цель теории состоит в том (и ни в чем другом), чтобы вывести из множества истинных выражений, принятых за аксиомы, все касающиеся реальности истинные выражения.
Вполне естественно желание отделить их от ложных. Наоборот, неестественно тотчас вводить для этого некую теорию: может найтись средство попроще. Именно так обстоит дело с исчислением высказываний, для которого желаемое разделение осуществляется почти непосредственно (без привлечения таблиц истинности)—из рассмотрения самой реальности или по крайней мере ее модели (§ 1.1.4). Помимо этого прямого семантического средства можно использовать и алгоритмическое (например, алгоритм Куайна).
Аксиоматический подход будет применяться при невозможности или затруднительности использования прямого семантического и алгоритмического подходов. Даже в этом (увы, частом) случае цель аксиоматической теории — получше «отразить» семантику, т. е. изучаемую реальность.
Физика — пример неформальной теории, разработанной для лучшего понимания реальности. Физик прежде всего должен выработать подходящий язык и ввести понятия, например, массы, движения, силы и траектории. В принципе этот этап сравнительно прост, хотя уместность того или иного понятия не всегда легко осознать. Второй этап — сбор серии экспериментальных фактов и перевод их, насколько возможно, на язык физики. Третий этап самый деликатный. Он состоит в введении множества постулатов, из которых можно вывести все физические истины, и только их.
Многочисленные ловушки подстерегают физика. Первая состоит в несостоятельности или неадекватности: никакое противоречие, никакое ложное выражение не должно быть выводимым из множества предложенных постулатов. Отметим, что в неформальных теориях несостоятельность может быть как более, так и менее весомой. Высказывание о том, что Земля описывает круговую траекторию вокруг Солнца, несостоятельно (ибо она эллиптическая), но отчасти оно приемлемо (эксцентриситет этого эллипса мал).
Другая опасность менее серьезная, но которую труднее обойти, это неполнота: некоторые экспериментальные факты остаются- необъяснимыми, но не входят в противоречие с существующими постулатами. Например, равенство инертной и гравитационной масс не объясняется классическими теориями, однако это не отрицает пользу последних.
Наконец, физик сталкивается с критерием качества. Теории Кеплера и Ньютона учитывают относительное движение звезд. Однако теория Ньютона лучше, так как она более общая: в ней постулаты Кеплера становятся просто теоремами.
Теперь рассмотрим одну формальную теорию, разработанную для отражения некой априорной
реальности (семантики). У нас «первой теорией» является само исчисление предикатов. Его язык максимален, а сигнатура содержит все функциональные и предикатные константы. Очевидно, это множество бесконечно. Счетна эта бесконечность или нет, знать необязательно. Единственное ограничение состоит в том, чтобы была возможность эффективно решать, является ли данное выражение объектом языка или нет. Множество аксиом, наоборот, минимально, ибо пусто. Значит, ничего не должно добавляться к аксиоматической системе, приведенной в § 2.1.8.
. Польза аксиоматического подхода спорна. Действительно, конечная цель теории состоит в различении истинного и ложного. В этом плане аксиоматический подход не лучше алгоритмического, в частности представленного методом резолюций (§ 1.2.14).
Несколько иной случай с арифметикой (теорией натуральных чисел). Со времен греческих математиков множество натуральных чисел изучалось аксиоматически и никакой другой подход никогда не смог утвердиться. Очевидно, лучший способ убедиться в правильности теории чисел — доказать ее, т. е. логически вывести из подходящего множества постулатов. Поиски такого адекватного полного множества — обширная тема.
Проблема существования «идеальной аксиоматизации» теории чисел, задаваемой множеством постулатов, вызывает следующие вопросы:
Описывает ли множество постулатов натуральные числа, исключая любые другие структуры?
Будут ли «эквивалентны» все описываемые этими постулатами структуры? Точнее, будет ли всякое истинное в данной структуре выражение истинным (в силу самого установленного факта) во всех других структурах?
Кроме того, является ли любое выражение языка либо теоремой, либо ее отрицанием?
Можно ли по крайней мере определить для каждого выражения языка, является ли оно теоремой, т. е. логическим следствием постулатов?
Можно ли хотя бы гарантировать, что все теоремы действительно выражают истины теории чисел?
Далее мы увидим, что только на последний вопрос можно дать безоговорочно утвердительный ответ, что может сильно разочаровать читателя.
Аксиоматический подход к исчислению предикатов столь же ограничен, но это меньше разочаровывает. Действительно, это исчисление предназначено для описания не одной структуры, а всевозможных структур.
Иногда интересно изучать теорию саму по себе, не ставя первоочередной целью познание некой действительности. Например, пространственно-временные преобразования Лоренца были поначалу изучены по «эстетическим» причинам: они удовлетворяют (в отличие от классических преобразований Галилея) неким уравнениям. Не было обращения к действительности и в тот момент, когда Эйнштейн высказал предположение, что инвариантность этих уравнений должна быть законом природы. Это привело к созданию специальной «теории относительности.
Подобный подход распространен и плодотворен также и в математике. Сражаясь с классической проблемой решения «в радикалах» полиномиальных уравнений, Галуа натолкнулся на весьма специальную структуру (группу перестановок корней многочлена). Исследование этой структуры позволило в итоге не только прояснить первоначальный вопрос, но и положить начало автономному изучению обширной категории структур, похожих на исходную. Это было рождением теории групп, оказавшейся полезной в самых различных областях математики. В следующем параграфе мы рассмотрим теорию такого же типа: ее предмет — довольно обширная категория структур, возникающих в разнообразных контекстах.
Теория частичного порядка
Здесь мы описываем одну специальную теорию, так называемую теорию частичного порядка. Девается это по двум причинам. С одной стороны, она позволяет
ярко проиллюстрировать различные общие понятия, встретившиеся в наших рассуждениях. С другой стороны, она (вместе с некоторыми обобщениями) играет очень важную роль в логике, информатике и многих областях математики.
Мы хотим определить теорию, модели которой — в точности упорядоченные множества. Единственное специфическое понятие — отношение порядка. Сигнатура содержит единственную двуместную предикатную константу ^. По обыкновению префиксное обозначение ^ (х, у) заменяют на инфиксное х ^ у. Язык здесь очень прост. Термы — только переменные. Атомов два вида: предикатные формы х у и равенства * = У-
Отношение порядка описывается тремя классическими аксиомами:
Мх (х-^х),
^х^у^х < у К у < х) ZD X = у],
>#хМу>#2 [(х ^ у Л у ^ z) ID X ^ z].
Теперь мы располагаем формальным средством, позволяющим распознавать, является множество К упорядоченным или нет. Все предельно просто, если К — структура *': предикатная константа ^ интерпретируется как функция из КХ К в {И, Л}. Соответствующее этой функции бинарное отношение на К также обозначается символом ^. Структура К является моделью, если три указанные аксиомы истинны в К (иными словами, если отношение ^ рефлексивно, антисимметрично и транзитивно).
Классическими примерами упорядоченных множеств являются числовые множества N, Z, Q и R . Множество конечных последовательностей, составленных из конечного алфавита, упорядочивается лексикографически. Множества структурированных объектов упорядочены естественным образом: объект а предшествует объекту Ь, если а — есть конституента Ь. Множество теорем, выведенных в заданной аксио-
матической системе, тоже можно естественно упорядочить. Для этого фиксируем метод последовательного получения всех теорем и полагаем, что теорема А предшествует теореме В, если А получена раньше В.
Модели теории
Есть тесная связь между теорией Г, языком L и возможными моделями для Т. Справедлива следующая метатеорема.
Теорема 2.4. Теоремы теории Т это все те и только те выражения языка L, которые истинны во всех моделях для Т.
Доказательство. Результат мгновенно следует из определений понятий логического следствия (§ 1.1.6) и теоремы (§ 2.2.2). □
Замечание. Другое определение теоремы дано в § 2.1.1: теорема есть формула, выведенная в фиксированной аксиоматической системе. По теореме 2.4 два этих определения эквивалентны при условии, что выбранная система является адекватной и полной аксиоматической системой исчисления предикатов, к которой добавлено множество аксиом конкретной теории.
Это очень мощный результат. Если есть множество К и совокупность отображений из Кп в К или в {И, Л}, то всегда можно построить теорию, для которой К будет моделью. Взаимно все множество формул Т можно построить в рамках теории. Если Т выполнимо, то всегда можно задать модель для Г, например эрбранову (§ 1.2.9) или модель Хенкина. Общий метод построения последней изложен в [3].
Теория с бесконечным множеством аксиом Е выполнима, если все конечные подмножества из Е выполнимы. При этом существует модель, мощность которой не превосходит мощности Е. Это следствие теорем компактности и Лёвенгейма — Сколема (§ 1.2.9).
При всем том существуют различные проблемы, связанные с понятием теории. Коснемся некоторых из них.
Прежде всего, если Т — некоторая теория языка L и если А — формула, принадлежащая L, то (вообще
говоря) невозможно эффективно определить, является ли Л теоремой в Т. Точнее, если А в самом деле теорема, то ее можно доказать, например, пользуясь методом резолюций. Наоборот, если А не является теоремой, то, вообще говоря, мы не располагаем эф- феитивным методом, чтобы это установить. Такого рода вопросы важны в информатике: эффективный метод для информатика тот, который можно запрограммировать.
Можно также задаться вопросом о том, насколько полно теория описывается своими моделями. Действительно, теория задает их общие свойства, но не специфические для частных видов моделей. Примером свойства, присущего одним упорядоченным множествам и не присущего другим, служит тотальность 11 порядка:.•
VxVy [х <у V У OL
С другой стороны, если все модели некоторой теории имеют в точности одни и те же свойства, то это еще не означает их идентичности. Действительно, некоторое свойство принимается во внимание только тогда, когда ему соответствует какая-нибудь формула языка. Например, бесконечное упорядоченное множество может быть счетным или несчетным, но теореме Лё- венгейма — Сколема никакая формула языка не позволяет различить эти два случая. Впрочем, имея одну модель, всегда можно построить из нее другую, меняя имена составляющих. Полученные таким способом варианты изоморфны исходной модели.
Эти рассмотрения приводят к следующим определениям:
Теория разрешима, если существует алгоритм, позволяющий за конечное число шагов решить, является ли некая (произвольная) формула А теоремой или отрицанием таковой или же ни тем, ни другим.
Теория полна, если всякая формула языка есть теорема или отрицание теоремы.
Теория категорична, если она допускает един
*> Иное название — линейность. — Прим. ред.
ственную (с точностью до изоморфизма) модель.
Замечание. По теореме Лёвенгейма — Сколема конечные или счетные теории, допускающие несчетную модель, не являются категоричными. Отчасти по этой причине вводят следующее, более слабое, понятие. При заданной мощности а теория а-категорична, если она допускает не более одной модели мощности а.
Алгоритм решает некоторую проблему, т. е. отвечает на некоторый вопрос со многими (обычно двумя) альтернативами, допускающий несчетное множество конкретизаций. Например, вопрос, соответствующий решаемой алгоритмом Куайна проблеме, таков: «Является ли данная формула общезначимой, нейтральной или невыполнимой?». Множество конкретизаций — множество формул исчисления высказываний.
С каждой теорией органично связана проблема распознавания теорем. Конкретизации таких проблем — это формулы языка соответствующей теории. Вопрос ставится так: «Является ли данная формула теоремой?»
Некоторые проблемы не связаны прямо с теорией. Знаменитый пример — «десятая проблема» Гильберта. Множество конкретизаций — полиномиальные уравнения с целыми коэффициентами и многими неизвестными. Вопрос: «Имеет ли данное уравнение целочисленное решение?».
Подчеркнем тот факт, что проблема (в только что определенном смысле) имеет две существенные составляющие: вопрос со многими вариантами ответа и некоторое счетно-бесконечное множество конкретизаций. Это определение более ограниченное, чем широко распространенное понимание слова «проблема». Например, в этом смысле «великая теорема Ферма» проблемой не является, ибо имеет лишь одну конкретизацию. ’>
Заметим между тем, что большей частью «проблемы», затронутые в этой главе, действительно являются проблемами в техническом смысле этого термина.
’> Действительно, эта теорема выражается одной формулой, в которой все переменные связанные.
Впрочем, отметим, что подчас можно так переформулировать вопрос, что получится проблема. Эта тема освещена, например, в [36].
Понятия категоричности, полноты и разрешимости взаимозависимы. Справедлива следующая метатеорема.
Теорема 2.5. Любая категоричная теория а-кате- горична для всех мощностей а. Любая (не имеющая конечной модели) выполнимая и а-категоричная хотя бы для одного бесконечного кардинального числа а теория полна. Любая полная теория разрешима.
Доказательство. Первый пункт непосредственно следует из определений. Второй, принадлежащий Кантору, доказывается от противного. Пусть Т — выполнимая неполная и допускающая только бесконечные модели теория. Пользуясь неполнотой, можно написать на языке теории Т такую формулу А, что обе теории Т U (А) и TU]-1 Л} будут выполнимыми (модели обязательно бесконечные). По теореме Лёвен- гейма — Сколема каждая из теорий допускает модель мощности а. Так как А истинна в одной из этих моделей, но не в другой, Т не является «-категоричной. Третий пункт довольно прост. Пусть теория Т полна.* Для всякой формулы А, принадлежащей языку теории Т, одно и только одно множество из Г U (А) и Т (J {П Л} невыполнимо. Метод резолюций позволяет определить, какое именно, и, следовательно, решить за конечное число шагов, принадлежит ли А данной теории. □
Предметом теории моделей является в первую очередь построение моделей, соответствующих априорно заданной теории. Для этой цели были разработаны весьма общие методы построения [3], [13]. Данная тема выходит за рамки нашей книги.
Интересные теории никогда не бывают категоричными: это следствие теоремы Лёвенгейма — Сколема (§ 1.2.9). Создаваемые или используемые информатиками теории довольно редко оказываются полными. Действительно, не всегда полезно применять исчерпывающую теорию: часто предпочтительна рудиментарная, но зато удобная.
Наоборот, очень интересно знать, является ли (неполная) теория разрешимой. В какой-то мере это можно определить методами, используемыми для распознавания теорем. Например, для информатизации евклидовой геометрии предпочтительно использовать некую разрешающую процедуру (в духе аналитической геометрии). Напротив, для информатизации теории чисел, которая неразрешима [5], [3], [53], следует применять совсем иной метод, основанный на ИИ.
Замечание. Даже к разрешимым теориям иногда применяются методы ИИ, когда не известно никакого разрешающего алгоритма. В частности, именно так обстоит дело в области теории игр.
Можно захотеть пополнить неполную теорию за счет присоединения новых аксиом. Таковые должны быть достаточно сильны для достижения полноты, но довольно слабы, чтобы оставаться истинными в соответствующих моделях (по крайней мере в некоторых из них).
Алгоритмы и разрешимость
Понятие разрешимости существенно по двум причинам. С точки зрения логика, разрешимые теории достаточно многочисленны и поэтому их изучение представляет интерес. Это лишь в малой степени можно отнести к полным теориям, не говоря уже о категоричных. С точки зрения информатика, важно знать теоретические пределы программирования и понимать, что можно решить (вычислить) на ЭВМ. Важная ветвь логики, теория рекурсии, посвящена этому вопросу. Некоторые ее основные элементы будут здесь представлены.
Определение разрешимости из § 2.2.5 использует понятие алгоритма, никак формально не определенное. Перейдем к рассмотрению некоторых проблем, для которых разрешающие алгоритмы или процедуры уже упоминались.
Является ли данный набор символов формулой исчисления высказываний (предикатов)?
Является ли данная формула исчисления высказываний тавтологией? [Метод таблиц истинности, алгоритм Куайна.]
Является ли данное утверждение евклидовой геометрии теоремой? [Классический аксиоматический и аналитический подходы.]
Является ли данная формула исчисления предикатов общезначимой, нейтральной или невыполнимой? [Метод резолюций, натуральный вывод, аксиоматический подход.]
Является ли данная формула исчисления предикатов хорновским дизъюнктом? .
Является ли данное множество хорновских дизъюнктов выполнимым?
Для начала заметим, что все эти проблемы касаются символьных объектов (цепочек символов) и что предлагаемые методы сводятся к манипулированию с символами, подчиненному точным правилам (одни цепочки получены из других). Разумеется, символам и цепочкам приписано некоторое значение. Впрочем, правила манипулирования вводятся сообразно этому значению. Однако, будучи введенными, они применяются «вслепую»: знание значений объектов манипуляции больше не требуется и даже не используется. Значения вновь станут полезны лишь при интерпретации полученных результатов.
Многие повседневные дела можно описать алгоритмически: воспользоваться лифтом, состряпать, идти (поставить одну ногу впереди другой, затем повторить...). У нас будет алгоритмически описываться разве что манипулирование с символами. С точки зрения информатика (ибо функционирование ЭВМ— слепое манипулирование с символами), алгоритмическая задача программируема.
На этой стадии не требуется уточнять, какой язык программирования используется. На деле большинство этих языков равны по выразительности. Разумеется, задача численного анализа будет, например, решаться на Фортране, а для задачи ИИ предпочтут Пролог, но лишь соображения удобства и эффективности повлияют на этот выбор.
Очевидно, формальная строгость охраняет свои права. Если предлагается разрешающий метод для данной теории и утверждается, что он является алгоритмом, следует иметь возможность записи его на точном, совершенно определенном языке.
Было создано огромное количество алгоритмических языков как для теоретических потребностей логиков, так и для практических нужд информатиков. Язык Пролог, очень полезное практическое средство, будет представлен в гл. 6. Два теоретических языка появятся в двух очередных параграфах.
Есть каноническое средство установления равной выразительности алгоритмических языков Л и В. Сперва задают алгоритм перевода произвольной программы на языке А в эквивалентную на языке В, а затем алгоритм обратного перевода. Ничто не мешает писать эти алгоритмы на языках А или В.
Напомним, что две программы эквивалентны, если они дают одинаковые результаты для одних и тех же данных. В нашем контексте отсутствие результата («зацикливание») считается неким специальным результатом. Удобство и эффективность не учитываются.
Большинство рассматриваемых алгоритмов должны ответить на некоторый вопрос. Варианты ответа множественны (чаще всего дихотомичны). Именно так обстоит дело в примерах, приведенных выше. Собственно ни один из них не был представлен чисто формально. Впрочем, здесь это необязательно. Некоторые описаны точно (например, метод резолюций), а другие лишь упомянуты (как аналитический подход к геометрии). Любое описание алгоритма приемлемо, если переводимо в программу (на каком-то языке).
Важнее то, что среди затронутых методов одни всегда дают адекватный (положительный или отрицательный) ответ, а другие гарантируют лишь положительный (но не всегда отрицательный). Формально название алгоритм закрепим за первым типом. Методы второго типа суть полуалгоритмы (процедуры). Метод резолюций — это процедура исчисления предикатов (§ 1.2.14), при условии, что принята стратегия адекватного выбора [14].
По определению теория разрешима, если она допускает разрешающий алгоритм. Она полу разрешима или частично разрешима, если допускает разрешающую процедуру. Разрешимость теории можно установить построением более или менее формально представленного алгоритма. А вот для установления неразрешимости теории необходим формальный язык: надо доказать, что никакой алгоритм, который можно написать на этом языке, не предоставляет разрешающего метода для этой теории.
Иные проблемы просты с виду, но на самом деле неразрешимы. Одна из известнейших — проблема соответствия Поста. При заданном конечном алфавите хотя бы из двух элементов (например, {0, 1}) система Поста — это конечная последовательность занумерованных пар слов. Например:
{1: (101,0), 2: (1,11)}. '
Решение системы Поста — конечная последовательность номеров, где одно и то же слово получается пригонкой начал соответствующих пар, с одной стороны, и пригонкой концов этих же пар, с другой стороны. Последовательность (2, 1, 2)—решение системы из примера. Получается слово 11011. Для проблемы соответствия Поста множество конкретизаций — это множество систем Поста. Вопрос состоит в существовании решения. Неразрешимость этой проблемы о «головоломке» доказана, например, в [65].
Мы знаем, что исчисление высказываний разрешимо (но это немного выходит за рамки наших рассуждений, потому что речь фактически идет о теории «нулевого порядка», без квантификации) и исчисление предикатов полуразрешимо. Но имеет место и следующий результат, показывающий, насколько ограничено в своей основе то применение логики, которое может позволить себе информатик.
Теорема 2.6. Исчисление предикатов неразрешимо.
Доказать ее можно методом, называемым редукцией *>: проблема соответствия Поста редуцируема к
u Иное название — метод сведения. — Прим, ред.
проблеме разрешимости исчисления предикатов. Подробное доказательство см. в [65].
Замечание. Исчисление монадических (унарных) предикатов, в котором есть только одноместные предикаты (и нет никаких функций), разрешимо. Разрешающая процедура кратко описана в [72].
Алгоритмический язык Тьюринга
Тьюринг—автор простого и удобного алгоритмического языка, а также многих результатов из области разрешимости и вычислимости. Весьма полное изложение предложенного им языка можно найти в [73]. Мы же ограничимся здесь кратким очерком.
Неформально машина Тьюринга — очень примитивная программируемая вычислительная машина. Ее память состоит из бесконечной последовательности элементарных ячеек. Удобно полагать, что каждая ячейка помечена соответствующим целым числом. Она содержит символ из фиксированного конечного алфавита, содержащего п (не менее двух) элементов. Специальный элемент называется «пробел». Имеется головка, которая в каждый момент времени указывает одну из ячеек «ленты памяти». Третьей составляющей машины является программа.
Программа строится из конечного числа состояний, не принадлежащих упомянутому алфавиту символов. Единственное из них выделено как начальное. Нуль, одно или несколько состояний считаются заключительными. Каждому незаключительному состоянию соответствует инструкция, т. е. функция, сопоставляющая каждому символу алфавита тройку: символ алфавита, состояние и одну из констант + или —. Четвертая и последняя составляющая машины Тьюринга — специальная ячейка (регистр программы) с определенным состоянием. Обычно машину Тьюринга изображают схемой — как на рис. 2.1.
Теперь опишем работу (манипуляцию символами), осуществляемую этой машиной. Фиксируется начальная конфигурация ленты памяти, в которой лишь конечное число ячеек содержит непробельные символы алфавита. (Это гарантирует конечность описания
Лента памяти: а^ б алфабит
Рис. 2.1. Машина Тьюринга.
любой конфигурации ленты.) Головка указывает ячейку 0 на ленте. Регистр программы содержит начальное состояние. Манипуляция (действие, функционирование, работа) состоит из не более чем счетной последовательности шагов. Вот как выглядит описание шага.
Пусть i—номер указанной головкой ячейки, а— символ из этой ячейки и q — состояние из регистра программы. Пусть fq— инструкция, соответствующая q, и (0, q', А) —тройка образа для символа а при fq. Содержимое i-й ячейки заменяется на 0, содержимым регистра становится q', и головка теперь указывает iA 1-ю ячейку.
Если после выполнения шага в регистре появляется заключительное предписание, то работа машины прекращается (машина останавливается). Результат состоит из содержимого ленты, номера указанной головкой ячейки и содержимого программы в момент остановки.
Рассмотрим частный случай машины Тьюринга. Предположим, что для любого состояния q и любого элемента алфавита a fq (а) имеет вид (а, q', +). Иначе говоря, лента памяти никогда не модифицируется и проходится лишь однажды, с 0-й ячейки в положительном направлении. Такая машина Тьюринга называется конечным автоматом.
Язык конечных автоматов используется в различных формах и в весьма разнообразных областях (как теоретических, так и практических). Выразительные возможности этого языка относительно слабы, но именно поэтому разрешимы в самой общей постановке следующие задачи: об эквивалентности двух (произвольных) конечных автоматов и об остановке (завершении работы) конечного автомата. В § 2.2.11 мы подробнее узнаем о неразрешимости этих важных проблем (эквивалентности и остановки) для машин Тьюринга. Более детально о машинах Тьюринга и конечных автоматах говорится в разд. 5.2 (в рамках иерархии Хомского для формальных грамматик).
Проиллюстрируем понятие машины Тьюринга простым примером. Алфавит (0, 1, Ь{, множество состояний Vh. 41, qi. Чд». ^нет}. Начальное состояние q0, заключительные — ^да и ^нет. До начала функционирования машины все ячейки, пронумерованные отрицательными числами, содержат символ b (пробел). Сплошная последовательность ячеек (массив) с номерами от 0 до л (любое натуральное число) содержит только нули и единицы. Наконец, все остальные ячейки содержат Ь. Инструкции программы описаны в таблице на рис. 2.2. Пример работы машины:
...b _101О Оb...
qQ: ...b 1О1О Оb...'
д0: ...И01006...
qQ: . ..b101ООb...
q0: . ..b101ООb. ..
q0: ...b101ООb... .
^: .,.Н01006...
^да: ...b 1010 bb...
Каждая строка описывает машину в определенный момент ее работы. В первом столбце указаны текущие состояния, в остальных столбцах — содержимое ленты. Подчеркиванием выделены указываемые головкой ячейки.
А. Тейз и др. .,
1^. 1
а = 0
а = 1
а = 6
9 = 90 ]
(90,0,+)
(9о,1,+)
(91Л")
9 = 9т
(9да, Ь,~)
(92, Ь,~)
(<?нет , Ь, — )
9 = 92 [
(9нет,Ь,-)
(#нет » Ь, —)
(?нет > Ь, — )
Рис. 2.2. Инструкции программы.
Эта машина Тьюринга решает задачу выявления четности: если первоначально записанная на ленте последовательность нулей и единиц представляет четное двоичное число (т. е. с 0 в младшем разряде), то заключительным состоянием будет ^да, а иначе — ^„е/ Можно доказать, что работа машины всегда завершается, т. е. на некотором шаге обязательно появляется заключительное состояние. Таким образом, мы имеем настоящий алгоритм, а не просто процедуру. Более того, при положительном ответе заключительная конфигурация ленты дает частное от деления на 2 числа, представленного начальной конфигурацией. Это упрощенная версия примера из [36]. Разнообразные варианты изложения соответствующего материала и различные примеры можно найти в [49], [65] и [73].
Замечание. Представленный -выше язык не вполне отвечает обычному понятию языка программирования, ибо он описывает также «абстрактную машину» (воображаемую и с неограниченной памятью), выполняющую написанные на этом языке алгоритмы. Но это лишь видимость несоответствия: вполне возможно описать абстрактные машины, соответствующие, например, Фортрану и Прологу.
Язык машин Тьюринга кажется очень неразвитым по сравнению с обычными алгоритмическими языками (даже с языками Ассемблера примитивных компьютеров). Усовершенствования, осуществленные в обычных языках, безусловно, сделали их удобнее для применений, но ничуть не прибавили им выразительных возможностей. Ряд теоретических свойств языков программирования проясняется в рамках изрядно ободранного языка.
Алгоритмический язык Гёделя
Алгоритмический язык, который мы сейчас введем, принадлежит в основном Гёделю, еще одному пионеру изучения разрешимости. (Подробнее об этом см. в [5] и [96J.)
Пусть А и В счетно-бесконечные множества. Займемся функциями из А в В. Они образуют несчетное множество. Некоторые из них являются вычислимыми, т. е. могут быть запрограммированы. Вычислимые функции образуют очень важное подмножество, к изучению которого мы приступаем. Оно не более чем счетное. Действительно, при использовании' любого алгоритмического языка всякая программа состоит из конечной последовательности символов конечного или счетного алфавита. Отсюда следует, что множество программ счетно-бесконечное.
Удобно зафиксировать А и В. Подходящие кандидаты— множества натуральных чисел, целых чисел, конечных последовательностей над конечным алфавитом, конечных деревьев над конечным алфавитом, а также конечные декартовы произведения перечисленных множеств. Будем интересоваться главным образом функциями, отображающими множество А = N", где п — произвольное натуральное число, в множество В = N.
Идея Гёделя состояла в том, чтобы получить все вычислимые функции из существенно ограниченного класса базисных (исходных) функций с помощью элементарных алгоритмических средств. Базисные функции таковы:
константа О,
одноместная функция следования, сопоставляющая натуральному числу х натуральное число . X + 1,
функция проецирования pnt с параметрами (n, t"), где 1 ^ i ^ п; функция pni сопоставляет каждой n-ке натуральных чисел ее i-й элемент Д
11 Такую функцию часто обозначают через 1^ и называют селекторной или функцией выбора аргумента. — Прим. ред.
Гёдель ввел сначала два простых, но позволяющих получать нетривиальные вычислимые функции, механизма. Первый — обычная подстановка (композиция, или суперпозиция) функций. Это механизм: явно алгоритмический: для вычисления, например, суперпозиции и = Ц§(_х, у), h(z)) достаточно вычислить последовательно a = g^x, у), b = h^ и и = Ца, Ь1). Второй (несколько менее классический) механизм — примитивная рекурсия. Он действует так: из n-местной функции f и (п + 2)-местной функции g строится (n + 1)-местная функция h по следующей схеме:
A(xb . . ., Хп, O^defft-tjхпу
/г(хь . . ., Х„, у+ l)=defg(xb . . .,'
хп, У, М^ь ..., хп, у)).'
Такие определения нередки в математике. Классический пример — определение факториала:
О ! = def 1,
(X + 1) !=def (х + 1) * х!.■
Легко проверить, что это определение — конкретизация схемы примитивной рекурсии.
Две упомянутые схемы позволяют задать лишь всюду определенные отображения или тотальные функции (т. е. функции с областью определения М"). Может представить интерес рассмотрение также частичных функций, т. е. не всюду определенных. Такие функции порождаются с помощью третьего гёделева механизма. Схема минимизации позволяет получить «-местную функцию g из («-)-/)-местной функции f:
g<Xx, . .., xn)=def nyf (xlt . .., Xn, yY
Выражение p.xE означает наименьшее значение x, при котором Е обращается в 0. Например, целый квадратный корень с недостатком из натурального числах можно задать формулой
ГС (х) =def РУ [х + 1 — (У + I)2], где — означает вычитание в N: выражение а — Ь есть а — b при а > Ь, а иначе оно равно 0.
Очевидно, что даже если Е вычислимо и всюду определено, но нигде не обращается в 0, то рхЕ всюду не определено. В этом случае рхЕ приписывают специальное значение, обозначаемое ± или оо. Естественный путь вычисления рхЕ состоит в подсчете значения Е последовательно дл^ х = 0, 1, 2, ... до тех пор, пока не найдется х, обращающее Е в 0. Этот алгоритм «зациклится», если Е нигде не обращается в 0.
Кодирование и тезис Чёрча
Языки Тьюринга и Гёделя априори трудно сравнить, ибо данные и результаты в них записываются в разных формализмах. Это препятствие легко преодолеть.
Рассмотрим машину Тьюринга с алфавитом {0, 1, b, 4Н- Интерпретируем 0 и 1 как цифры двоичной системы счисления. Таким образом, конечные цепочки из 0 и 1 представляют натуральные числа. Символ b — 'пробел, а # — разделитель. Предполагаем, что в на; чальный момент отрицательная часть ленты памяти содержит только пробельные ячейки, а положительная содержит последовательность из п двоичных слов, отделенных друг от друга разделителем. За последним словом стоят две разделительные ячейки, что означает конец последовательности. Остальная лента пробельная. Понятно, что начальное содержимое ленты можно интерпретировать как элемент (xi, ..., хя) области определения некой вычислимой функции f, значение которой f(xb ..., хя) получается численной интерпретацией заключительного содержимого ленты.
В используемом формализме ничто не мешает численно интерпретировать вычисления, осуществляемые машиной Тьюринга. Алфавит, ввиду наличия хотя бы Двух элементов, позволяет осуществлять кодирование информации любого типа. Таким образом, кодирование — это соответствие между множеством слов и множеством объектов. Подчеркнем, что это соответствие должно быть алгоритмическим в обе стороны.
Информация в ЭВМ закодирована с помощью 0 и 1. Прежде всего, это числовые и символьные данные. Роль «вычислительной машины» понимается ши-« роко: ЭВМ — средство обработки любой (а не только числовой) информации. '
Это подсказывает способ доказательства вычислимости по Тьюрингу вычислимой по Гёделю функции. Сначала надо придумать машины Тьюринга для вычисления основных функций, используя, например, вышеупомянутое кодирование. Далее нужно выписать «алгоритмические рецепты» построения из машин для вычисления функций g и h, машины для вычисления f, получаемой из g и h по схеме примитивной рекурсии. Наконец, нужно выполнить подобное для подстановки и схемы минимизации. Доказательство технически нудновато, но не составляет непреодолимой теоретической проблемы. Заинтересованный читатель может обратиться, например, к книге [96], где приводится классическое изложение соответствующего материала, и к [5], где дается более современное изложение, в котором регистровая машина заменяет тьюрингову (что удобнее и ближе к реальным ЭВМ).
В ЭВМ кодируются не только данные, но и инструкции. Действительно, программа есть не что иное, как последовательность сообщений, которую можно подвергнуть двоичному кодированию. Ниже I* означает код 1.
Этот пункт узловой, ибо он подсказывает понятие универсальной машины Тьюринга. Такая машина принимает в качестве данных закодированное описание Т* машины Т, наряду с другими данными х и в качестве результата выдает значение fr(x), где fr— функция, вычисляемая на машине Т. Мы допускаем существование универсальной машины Тьюринга U (что формально и конструктивно доказано в [73]). Для любой машины Т имеем fu(T*, x) = fT(x).
Для доказательства вычислимости по Гёделю вычислимой по Тьюрингу функции достаточно доказать рекурсивность вычисляемой на универсальной машине U функции fu. Сначала надо снабдить Д «арифметикой». Для этого зададим функцию кодирования, сопоставляющую каждой конфигурации с машины U число с*. Это соответствие, а также обратное ему должны быть алгоритмическими. Зададим частичную функцию <р из N X N в N : <р (х, у) = z тогда и только тогда, когда существуют такие конфигурации с и d, что с* = х, d* = z и конфигурация d получается из с за
у шагов. Таким образом, <р описывает поведение U. Можно доказать, что <р рекурсивна. Можно также определить /у, исходя из <р, и доказать рекурсивность /у. Напомним, что функция fu частичная. Подробности см., например, в [73].
Понятие универсальной машины может дезориентировать. Однако оно близко к реальности информатики. Возьмем обычный язык программирования, например Фортран. Оснащенная им ЭВМ допускает «универсальную машину Фортрана», состоящую из компилятора, загрузчика и супервизора. Она принимает программу на Фортране с данными и выдает требуемый результат.
Напомним, что имеется прямое концептуально простое средство проверки равной выразительности двух языков программирования: достаточно написать «кросс-компиляторы», т. е. программы перевода с одного языка на другой. Не будем описывать эти программы. Лишь отметим, что для некоторых языков программирования (таких как Лисп) соответствие программы ее коду довольно очевидно. Возьмем, например, следующий текст:
<DEFUN FACTIN') tCOND^ZEROP N) 1)
(Т (J I MES N(FACT(SUBl M)))))).
Его можно рассматривать как программу вычисления факториала и как «символьное выражение», т. е. бинарное дерево, листьями которого являются атомы. Такие объекты — обычные данные программы на Лиспе. Следовательно, здесь почти полное тождество программы и ее представления в виде данных, возможно, полученных другой программой.
Изобретено великое множество алгоритмических языков. Можно установить, что у них одинаковые выразительные возможности. Это обстоятельство приводит к тезису Чёрча: вычислимые в интуитивном смысле функции вычислимы по Тьюрингу (или Гёделю). Очевидно, он недоказуем, ибо касается неформального понятия. (См. по этому поводу [5], 123] и [73].)
Класс вычислимых функций
Согласно тезису Чёрча бесполезно стремиться к расширению множества вычислимых функций. Напротив, желательно поточнее его очертить и поискать методы, позволяющие выяснить, вычислима ли функция, а в случае, когда Она вычислима, указывающие, как ее вычислить. Известно, что множество вычислимых функций содержит частичные функции, ибо существуют программы, функционирование которых завершается не для всех данных. Заманчиво располагать языком, программирующим тотальные (всюду определенны) вычислимые функции, и только их.
Увы, такого языка нет. Это легко доказать от противного. Допустим, язык L позволяет записывать все тотальные вычислимые функции, и только их. Множество программ счетно. Тем лучше, можно приписать каждой из них кодовый номер и задать алгоритмический способ перехода от программы к ее номеру и обратно. Итак, пусть Рх — программа с номером х и fx — функция, которую она вычисляет. Функция U, сопоставляющая паре (х, у) значение /х(у), очевидно, вычислима: сначала используется указанное выше алгоритмическое соответствие между х и Рх, а затем Рх применяется к у. Значит, вычислимы функция g(x) = U (х, х) и функция й(х) =g'(x) + 1. Функция h тотальна, следовательно, она программируема в L. Пусть ее номер п. Имеем: й(х) = fn(x) для всех х, в частности, й(ц) = /„(n). С другой стороны, из определения функции h вытекает, что Л(п) = Щп, п) + 1 =f„(n) + 1. Пришли к противоречию. Заметим, что функция U соответствует «универсальной машине» из § 2.2.8. Вывод таков: всякий язык, который является достаточно мощным, в том смысле, что допускает универсальную машину, описываемую самим этим языком, неизбежно допускает описание частичных функций. Вычислимая функция U непременно частичная.
Если язык Гёделя лишить схемы минимизации, тогда все выразимые в нем функции будут тотальными. Эти функции называются примитивно рекурсивными. Однако существуют тотальные вычислимые
функции, не являющиеся примитивно рекурсивными. Приведем пример такой функции. Сначала рассмотрим несколько важных функций из теории чисел:
SUCC (х) = defX + 1;
plus(x, 0)=defX.
plus (к, у + 1) =def succ (.plus (x, y));-
times (x, O)=defO.
times (x, у + l)=def plus^x, times (x, y)).
Очевидно, они примитивно рекурсивны. Построим далее последовательность функций:
expo =def times,_
ехрп+х (х, 0) =def 1,
ехр„+1(х, у + l)==defexp„(x, ехрп+х(х, у)).
Все эти функции примитивно рекурсивны. Функция ехрх — классическая экспонента. Построение функции ехрп требует (и + 2) применений схемы примитивной рекурсии. Легко проверить, что функция
f(x)=defexpx(x, х)
не является примитивно рекурсивной, хотя она вычислима и всюду определена. Действительно, она растет быстрее любой примитивно рекурсивной функции.
Немного о терминологии. Вычислимые функции называют также рекурсивными *> Подмножество в N рекурсивно1'* тогда и только тогда, когда его характеристическая функция рекурсивна. (Заметим, что характеристическая функция обязательно является тотальной.) Пусть f — рекурсивная функция. Соответствующее f Перечисление есть последовательность (f(n)), ne N. Множество Е рекурсивно перечислимо, если существует такая функция /, что f = (f(n)| n е N}.
*’ Или частично рекурсивными. — Прим. ред.
Или разрешимо. — Прим. ред.
Ясно, что множество Е, состоящее из натуральных чисел, рекурсивно тогда и только тогда, когда существует алгоритм решения проблемы принадлежности к Е. Если принять за определение этот критерий, то он показывает приложимость понятия рекурсивного множества не только к множествам натуральных чисел. Это уже использовалось в § 1.1.3, где формулы исчисления высказываний составили рекурсивное подмножество во множестве наборов символов. Тавтологии образуют рекурсивное подмножество формул исчисления высказываний (§ 1.1.5).
Понятие рекурсивно перечислимого множества обобщается аналогично. Множество Е рекурсивно перечислимо, если имеется алгоритм перечисления его элементов.1) В исчислении предикатов и вообще в любой теории первого порядка теоремы всегда образуют рекурсивно перечислимое подмножество формул. Однако оно рекурсивно лишь в случае разрешимости теории. -
Пусть А — рекурсивное множество, построенное с помощью конечного числа правил образования. (К этому типу принадлежат: множество всех натуральных чисел, языки исчисления высказываний и всех теорий первого порядка.) Ясно, что любое рекурсивное подмножество А рекурсивно перечислимо. Для установления разрешимости некоторых "теорий используется следующее частичное обращение.
Теорема 2.7. Если А — рекурсивное множество, В — рекурсивно перечислимое подмножество из А, то В рекурсивно тогда и только тогда, когда А\В рекурсивно перечислимо.
Доказательство. Если В рекурсивно, то Л\В также рекурсивно и, следовательно, рекурсивно перечислимо. Обратно: если В и Л\В рекурсивно перечислимы, то они .рекурсивны. Действительно, чтобы решить, принадлежит ли В элемент к из А, достаточно перечислять параллельно,.В и Л\В. Рано или поздно элемент х появится в одном из перечислений, что и решит вопрос. ' □
•> При этом повторения не исключаются. — Прим. ред.
Проблема остановки
Основополагающей теоретической и практической проблемой для информатика является проблема остановки. Она допускает множество вариантов. Вот три из них:
1.
Множество конкретиза
множествопро
грамм Р.
ций:
2.
Поставленный вопрос:
Множество конкретиза
завершится ли выполнение программы Р при отсутствии данных?
множество про
3.
ций:
Поставленный вопрос:
Множество конкретиза
грамм Р.
завершится ли выполнение программы Р для данных Р* (код Р) ?
множествопар
ций:
Поставленный вопрос:
(Р, X), где Р — программа и X— данные.
завершится ли выполнение программы Р для данных X?
Вариант 3 самый общий, но два других также интересны. Для варианта 2 интересен случай, когда Р — компилятор (или интерпретатор), а используемый для кодирования программы Р язык является входным для Р.
Неразрешимость проблемы остановки — прямое следствие того, что вычисляемая универсальной машиной U функция обязательно частичная. Точнее, в § 2.2.10 показано существование программы Р с кодом Р* = п, таким, что U (п, п) не определено. Это правило для вариантов 2 и 3. Наконец, если бы вариант 1 был разрешимым, то вариант 2 — тоже. Чтобы выяснить, завершается ли выполнение программы Р в применении к Р*, достаточно сконструировать программу QP, которая сперва применяет Р к
Р*, а затем принимает (бесполезные) данные D. Видно, что выполнение Р в применении к Р* завершается тогда и только тогда, когда выполнение Qp завершается в применении к D.
Существуют и другие неразрешимые проблемы относительно класса программ (вычислимых функций). Например, невозможно в полной общности решить, зацикливается ли программа Р или еще, эквивалентна ли Р программе Q. Если бы такое решение было возможно, то (в противоречии с предыдущим) решалась бы и проблема остановки.
Представление знанийи рассуждений
Логическое представление
Введение
Представление — это действие, делающее некоторое понятие воспринимаемым посредством фигуры, записи, языка или формализма. Теория знаний изучает связи между субъектом (изучающим) и объектом. Знание (в объективном смысле) — то, что известно (то, что знаем после изучения).
Представление знаний — формализация истинных убеждений посредством фигур, записей или языков. Нас особенно интересуют формализации, воспринимаемые (распознаваемые) ЭВМ. Возникает вопрос о представлении знаний в памяти ЭВМ, т. е. о создании языков и формализмов представления знаний. Они преобразуют наглядное представление (созданное посредством речи, изображением, естественным языком, вроде французского или английского, формальным языком, вроде алгебры или логики, рассуждениями и т. д.) в пригодное для ввода и обработки в ЭВМ. Результат формализации должен быть множеством инструкций, составляющих часть языка про- грам-мирования.
Представлению знаний присущ пассивный аспект: книга, таблица, заполненная информацией память. В ИИ подчеркивается активный аспект представления: знать должно стать активной операцией, позволяющей не только запоминать, но и извлекать воспринятые (приобретенные, усвоенные) знания ° для рассуждений -на их основе. Следовательно, истоки представления знаний — в науке о познании), а его конечная цель — программные средства информатики.
11 Точнее, знания, которые запомнились. — Прим, ред,
Во многих случаях подлежащие представлению знания относятся к довольно ограниченной области, например:
описание состояния Морфлота,
описание ситуаций в игре (например, расположения фигур в шахматах),
описание размещения персонала предприятия, • описание пейзажа.
Для характеристики некой области говорят об «области рассуждений» или «области экспертизы». Численная формализация таких описаний в общем малоэффективна. Напротив, использование символического языка, такого, как язык математической логики, позволяет формулировать описания в форме, одновременно близкой и к обычному языку, и к языку программирования. Впрочем, математическая логика позволяет рассуждать, базируясь на приобретенных знаниях: логические выводы действительно являются активными операциями получения новых знаний из усвоенных.
В силу всех этих причин математическая логика лежит в основе различных представлений в ИИ. Данный раздел посвящен представлению знаний с помощью логики предикатов. Для этого используются результаты разд. 1.2. Логическое представление служит также отправной точкой для других представлений (таких как «сетевые» и «объектные»), используемых в ИИ.
Синтаксис логики предикатов
Язык логики предикатов задается синтаксисом (§ 1.2.3). Для представления знаний базисные синтаксические категории языка изображаются такими символами, которые несут достаточно четкую информацию и дают довольно ясную картину об области рассуждений (экспертизы).
Логика предикатов, называемая также логикой первого порядка, допускает четыре типа выражений (§ L2.2):
Константы. Они служат именами индивидуумов (в отличие от имен совокупностей): объектов, людей или событий. Константы представляются символами вроде Жак_2 (добавление 2 к слову Жак указывает на вполне определенного человека среди людей с таким именем), Книга-22, Посылка-8.
Переменные. Обозначают имена совокупностей, таких как человек, книга, посылка, событие. Символ Книга-22 представляет вполне определенный экземпляр, а символ книга указывает либо множество «всех книг», либо «понятие книги». Символами х, у, z представлены имена совокупностей (определенных множеств или понятий).
Предикатные имена. Они задают правила соединения констант и переменных, например ' правила грамматики, процедуры, математические операции. Для предикатных имен используются символы наподобие следующих: Фраза, Посылать, Писать, Плюс, Разделить. Предикатное имя иначе называется предикатной константой.
Функциональные имена представляют такие же правила, как и предикаты. Чтобы не спутать с предикатными именами, функциональные имена пишут одними строчными буквами: фраза, посылать, писать, плюс, разделить. Их называют также функциональными константами.
Символы, которые применяются для представления констант, переменных, предикатов и функций, не являются «словами русского ° языка». Они суть символы некоторого представления — слова «объектного языка» (в нашем случае «языка предикатов]).
Представление должно исключать всякую двусмысленность языка. Поэтому имена индивидуумов содержат цифры, приписываемые к именам совокупностей. Жак-1 и Жак-2 представляют двух людей с одинаковыми именами. Эти представления суть
?1 В оригинале — французского, —Прим. ред.
конкретизации имени совокупности «Жак». Предикат — это предикатное имя вместе с подходящим числом термов. Предикат называют также предикатной формой (§ 1.2.3).■
Примеры
Проиллюстрируем синтаксис логики предикатов, сопоставляя нескольким русским фразам их переводы на язык логического формализма.
По-русски: Жак посылает книгу Мари, Логически: Посылка (Жак-2, Мари-4, К.нига-22).
. • По-русски: Каждый человек прогуливается, Логически: Vx (Человек(х) zo Прогуливается(х)).
По-русски: Некоторые люди прогуливаются, Логически: Зх (Человек(х) Д П рогуливается(х)).
(Сравнивая два последних примера, видим, что замена прилагательного «каждый» на «некоторые» влечет при переводе не только замену квантора V на 3, но и замену связки zd на А. Это иллюстрирует тот факт, что перевод фразы естественного языка на логический, вообще говоря, не является трафаретной операцией.)
По-русски: Ни один человек не прогуливается. Логически: ~1 (Эх ( Человек(х) Д Прогуливает- ся(х))).
Преобразование унарных предикатов в бинарные
Унарные и бинарные предикаты имеют соответствен-' но один и два аргумента. Фраза «Сократ есть человек» представима унарным предикатом Человек(Сократ), а «Жак любит Мари» — бинарным Любит (Жак-2, Мари_4). Бинарные предикаты играют особую роль в представлении знаний.
Любой унарный ■ предикат можно преобразовать в бинарный следующим образом. Унарный предикат состоит из предикатного имени и значения своего единственного аргумента. Следовательно, его формат такой: Предикатное_имя (значение-аргумента). Значение аргумента есть конкретизация предикатного
имени или переменной. Например, Человек(Сократ) указывает, что имя собственное «Сократ»—конкретизация имени совокупности «человек», а Человек(х) указывает, что х— человек (не что-либо иное). Точно так же Женщина (Мари_4) означает, что «Мари» — «женщина». Введем бинарный предикат Конкр (значение-1, значение-2) и придадим ему следующий смысл: значение первого аргумента — имя индивидуума или элемент вполне определенного типа, значение второго аргумента — имя совокупности этого типа. Фразу «Сократ — человек» можно представить бинарным предикатом Конкр(Сократ, человек).
Таким образом, введенный бинарный предикат эквивалентен исходному унарному в том смысле, что они оба представляют одну и ту же фразу. Преобразование следующее:
Унарный предикат—>■ Бинарный предикат,
Имя_совокупности—» Конкр(имя_индивиду-
(имя_индивидуума)ума, имя_совокуп-
ности).
Таким образом, предикатное имя Конкр означает: «является элементом некоторого типа». Иногда этот предикат обозначают так: Есть-Некий.
Примеры
Преобразуем унарные предикаты из примеров § 3.1.3 в эквивалентные бинарные. Во втором примере имеются несколько эквивалентных версий.
• По-русски:
Каждый человек прогуливается,
Логически:
Vx (Конкр(х, человек) zd Конкр(х,
• По-русски:
прогуливается)).
Ни один человек не прогуливается.
Логически-1:
“1 (Эх (Конкр(х, человек) Д Конкр
' Логически-2
(х, прогуливается))), "1 (ЗхЗу(Конкр(х, человек) Д Конкр(у, прогуливается) /\
Логически-3:
Суб-ьект(у, х))), ЧхЧу (П Конкр(х, человек) V . “] Конкр(у, прогуливается) V
Субъект(у, х)).
Предикат Субъект {у, х) означает: переменная х есть субъект события у; в данном случае «человек» — субъект события «прогуливается». Три логических представления эквивалентны. Они представляют синонимы одного и того же утверждения: «Неправда, что существует прогуливающийся человек»; «Неправда, что существуют х и у, где х — человек, у — прогуливается их — субъект события у», «Для всех х и всех у либо х не человек, либо у не означает прогуливаться, либо же х не субъект события у».
Преобразование m-арных предикатов в произведение бинарных
Фразу «Жак посылает книгу Мари» нетрудно представить тернарным (т. е. с тремя аргументами) предикатом:
Посылка {Жак_2, Мари_4, К.нига_22).
Определив новые предикаты, можно представить эту фразу произведением (конъюнкцией) бинарных предикатов:
Отправитель {Посылка, Жак_2) Л Получатель {Посылка, Мари_4) Л Объект {Посылка, Книга_22).
Данная логическая формула читается так: «отправитель посылки — Жак, получатель посылки — Мари и объект посылки — книга». '
Этот пример подсказывает правило преобразования /n-арных предикатов (с m аргументами) в эквивалентное произведение бинарных предикатов. Всякий /n-арный предикат состоит из предикатного имени и m значений аргументов:
Предикатное_имя {значение_1, значение_2, ...
.. ., значение_т').
В таких обозначениях подразумеваемые предикатом функциональные отношения выражены порядком аргументов. Например, предикат для описания посылки некоторого объекта отправителем получателю может иметь следующий формат:
Посылка {отправитель, получатель, объект).
функция «отправитель посылки» учитывается первым аргументом, функция «получатель посылки»— вторым, функция «объект посылки» — третьим. Первоначально выбранный порядок аргументов для соответствия «функция — аргумент» может быть произвольным, но должен сохраняться неизменным. Функциональную организацию m-арного предиката можно представить так:
Предикатное_имя (функция _1, функция_2, ...
..., функция_т).•
При записи m-арного предиката через бинарные предикаты используется специальное соглашение, позволяющее сохранить и явно указать соответствующие функциональные отношения. Каждая функция становится именем бинарного предиката, первый аргумент которого является именем исходного т-арного предиката, а второй — значением относящегося к этой функции аргумента. Функциональная организация исходного m-арного предиката и значения его аргументов представляются произведением бинарных предикатов:
Функция_1 (предикатное _имя, значение_1) /\
Л Функция_т (предикатное_имя, значение _т).
Таким образом, имеем следующее преобразование:
Предикатное _имя (значение_1 значение _т) ->
/\] Функция-] (предикатное _имя, значение-]).
Запись в терминах бинарных предикатов содержит в явном виде имена функциональных отношений, которые могли бы быть неявно представлены порядком следования аргументов при записи в терминах ш- арных предикатов. Пара <функция_], значение-]) называется слотом (по-английски slot). Слот состоит из своих имени (которое именует функциональное отношение) и ключа (который представляет значение Функционального отношения, то есть значение /-го аргумента исходного m-арного предиката). Соответствующие английские термины slot, slot-name, slot-value',
бинарный предикат вида Функция-) (предикатнов- имя, . значение-)) называется slot-assertion notation.:
Явное представление ссылок-
При представлении знаний в логической форме важно исключить двусмысленности, которые вообще имеются в любом неформализованном представлении. Именно поэтому мы дали имена каждому индивидууму, появляющемуся в логической формуле. Символы объектного языка, такие как Жак-2, Мари-4 и Книга-22, введены для того, чтобы избежать двусмысленности ссылок на вполне определенных людей и книгу.
Впрочем, можно постулировать, что фраза «Жак посылает книгу Мари» указывает определенное «почтовое событие» (или «действие отправления»), на которое желательно иметь возможность ссылаться в дальнейшем. Следовательно, придется дать ему имя индивидуума Посылка-8 и указать, что оно — часть множества событий с именем совокупности посылки. Перевод фразы на бинарные предикаты выглядит так:
Отправитель (Посылка_8, Жак_2) Л
Получатель (Посылка_8, Мари_4) Л
Объект (Посылка_8, Книга_22) Л Элем(Посылка_8, посылки).
Предикатное имя Элем означает «есть элемент такого-то множества» и является логическим переводом символа принадлежности е. Предикатное имя Элем не следует путать с предикатным именем Конкр из § 3.1.5. Принадлежность к типу — не то, что к множеству: Элем (Посылка-8, посылки) принадлежность к множеству «почтовых посылок», тогда как Конкр (Посылка-8, посылка) —к абстрактному типу «почтовая посылка». К этому важному различию мы еще вернемся.-
В этом параграфе высвечено явное построение множества «ссылок» некоторой фразы.
Представление функциями
Отношения между значением Посылка_8 и аргументами тернарного предиката Посылка (§ 3.1.6) можно выразить также функциями на множестве почтовых посылок (одной переменной). Функция называется также функциональной формой (§ 1.2.3). Фраза «Жак посылает книгу Мари] выражается в терминах функций следующей формой:
Равно {отправитель {Посылка_8), Жак_2') Л
Равно {получатель {Посылка_8), Мари_4) /\
Равно {объект {Посылка_8), Книга_22) Л Элем {Посылка_8, посылки).
Предикат Равно представляет отношение равенства. Эти выражения используют определенные на множестве «посылок» функции, значения которых представляют конкретизации, касающиеся Посылки-S.
Примеры
Рассмотрим фразы той же синтаксической формы, что и «Жак посылает книгу Мари», но с кванторами.
• По-русски:
Жак посылает что-то каждому (всем одно и то же).
. Логически:
3yVx Посылка {Жак_2, х, у)..
• По-русски:
Жак посылает что-то каждому (но не обязательно всем одно и то же),
Логически-1:
Vx3y Посылка{Жак_2, х, у),
Логически-2:
Vx3y3 посылка {Отправитель {посылка, Жак_2) А Получатель {посылка, х) А Объект {посылка,у)),
Логически-3:
Vx3y3z {Отправитель 2{Жак_2) А Получатель {z, х) А Объект {2, у)/\ Элем{2, посылки')').
Три представления фразы «Жак посылает что-то каждому» соответствуют трем представлениям фразы «Жак посылает книгу Мари» из §§ 3.1.6—3.1.7.
Семантика логики предикатов
Стратегия определения семантических значений компонент и формул логики предикатов базируется на понятии интерпретации логической формулы, введенном в §§ 1.1.4 и 1.2.5. Прежде всего задаем семантическое значение для каждого базисного выражения. Затем вводим семантические правила вычисления семантических значений сложных логических формул по известным семантическим значениям компонент. Иначе говоря, приписываем семантические значения все более и более крупным составляющим логической формулы, так что в конце концов семантическое значение будет приписано и всей формуле (§ 1.1.4). Этот процесс называется композиционным методом.
Предположим для определенности, что универсум рассуждения содержит лишь имена трех людей: «Жак Дюпон», «Мари Дюран», «Джордж Буль» ■— и название одной книги: «Законы мышления». С каждым именем индивидуума, используемым в логических формулах, можно следующим образом связать одно из перечисленных имен, которое станет семантическим значением:
Имена индивидуумов Семантические значения
Жак._2Жак Дюпон
Мари_4Мари Дюран
Джордж_5Джордж Буль
К.нига_22Законы мышления
Левый столбец составлен из лингвистических сущностей, т. е. из лексических компонент особой синтаксической категории некоего языка. Правый — из сущностей реального мира.
Подчеркнем, что следует приписывать уникальное семантическое значение каждому базисному выражению. Это устраняет лексические двусмысленности реального мира. Напротив, некоторые объекты реального мира могут вообще не получать индивидуального имени из языка или получать несколько имен. Итак, мы хотим определить функцию (в математиче-
ском смысле), отображающую имена объектного языка на сущности реального мира. Сами эти сущности выражены на так называемом метаязыке, роль которого играет здесь русский язык:
Фундаментальным понятием семантики является понятие истины реального мира. Более общее понятие — истина в модели. Здесь моделью является реальный мир (§§ 2.2.2—5). Состояние реального мира позволяет приписать семантические значения «истинно» или «ложно» предикатам и функциям.
Например:'
ПредикатСемантиче-
. скоезначение
Посылка (Жак_2, Мари_4, Книга_22^ истинно
Посылка (Мари_4, Жак_2, Книга_22) ложно
Написанное(Джордж_5, К.нига_22^истинно
Написанное (Жак_2, Книга_22)ложно
Композиционный метод гарантирует, что семантическое значение сложного выражения всегда является функцией его синтаксических составляющих и способа их комбинирования. Если семантические значения формул F и G известны, то можно определить семантические значения формул ~|Е, F Л G, F V G, FdGuFsGc помощью таблиц истинности логики высказываний (§ 1.1.4).
Например:
Формула■Семантиче
ское
значение
Посылка(Жак_2, Мари_4, Книга_22) Л
Д Написанное (Жак_2, Книга_22)истинно
Посылка (Жак_2, Мари_4, Книга_22^ /\
Написанное (Джордж_5, Днига_22)истинно
Основной задачей представления знаний является перевод неформальных выражений или описаний метаязыка в фразы объектного языка. Приведенные выше примеры показывают, что выбор предикатов, числа Их аргументов, констант и переменных в значительной мере отдан во власть аналитика. Исчисление
предикатов не предоставляет никаких возможностей обоснования этого выбора.
Модальная логика предикатов
В обыденном языке часто говорят о допустимости чего-либо, о гипотетических событиях, целях, которые можно пытаться достигнуть, догадках о будущем. Большая часть фраз языка может быть то истинной, то ложной в зависимости от обстоятельств, текущего момента, точки зрения каждого из нас. В естественных языках модальности «возможный», «необходимый» и «допустимый» выражаются вспомогательными глаголами, такими как «должен» и «могу»1’.
Возможность и необходимость называются алети- ческими модальностями или модальностями возможности. Так же, как кванторы «для всех» и «существует» вводились в синтаксисе логики первого порядка, можно построить формальный язык, используя пару понятий «возможно»/«необходимо» как кванторы, действующие на формулы. Логическая система, базирующаяся на операторах «возможно, что] и «необходимо, чтобы», называется логикой возможного, или алетиче- ской логикой.
Для обозначения модальности «необходимо» используется символ О. Формула О/7 читается «необходимо, чтобы F» или «Л необходимо». Двойственный □ оператор обозначается £>. Формула 0 F читается «возможно, что F» или «F возможно». Один из этих операторов принимается за основной, а другой определяется через него и отрицание (эквивалентность □ F = П О Д F можно установить, применяя доводы, подобные тем, которые можно использовать при доказательстве соотношения VxF = ~1 3* Д F).
В обыденном языке употребляются и другие модальные формы, которые важно перенести в логику. Деонтическая логика вводит модальности «разрешено» «обязательно», реализующие модальные языковые конструкции «разрешается» «надо, чтобы». Эпи-
'> Далее следует фраза, которой авторы поясняют применение модальности во французском языке. — Прим, персе.
стемическая *> логика, или логика знания, > исследует модальности «знания» и «веры», тогда как временная логика вводит модальности «иногда» и «всегда» (в «будущем» и «прошлом») вместе с их отрицаниями «часто» и «никогда».
Ввиду формального сходства между этими логическими системами их часто изучают все вместе или хотя бы по группам. Часто используют термин модальная логика для обозначения совокупности этих логик. Старейшая среди них — логика возможного. Часто именно ее называют модальной.
Название модальная логика происходит от того, что модальные логические системы вводят такие операторы над логическими формулами, которые позволяют модифицировать их интерпретацию. Например, в утверждениях «Возможно, что F», «Поль думает, что F», «Часто правда, что F», «В будущем, возможно, будет правда, что F>, предшествующие логической формуле F выражения являются модальными операторами. Они могут относиться к какой угодно логической формуле F. Значение истинности этих формул зависит не только от значения истинности формулы F, которую они содержат, но и от момента провозглашения модальной формулы (временные логики), от человека, который думает, что F, или верит, что F (логики веры), или от необходимого, возможного или случайного характера некоторого факта (логики возможного).
Модальные операторы
Имеется сходство между определениями каждой из пар операторов (вроде «возможно»/«определенно», «иногда]/«всегда» и т. д.) и определением пары кванторов существования/общности в логике первого порядка. Это подсказывает следующее общее определение модальных операторов.
Модальный оператор общности А является:
либо имеем модального оператора,
Или иначе — эпистемологическая. — Прим, перев.
либо выражением, состоящим из имени модаль- i ного оператора, за которым следует список
(t\, ..., tn) термов ti (i = 1, . .., п).
Модальный оператор существования V определяется через отрицание модального оператора общности:
Vf =def 1 А 1 Л(3.1)
Примеры модальных операторов .
Алетические операторы: '— □ : необходимо;
□ А истинно тогда и только тогда, когда А не- или А абсолютно истинно,(Ь)
обходимо истинно,(а)
или А истинно во всех возможных мирах. (с) — <0: возможно;
О А истинно, если А может оказаться истинным,(а)
или если А условноистинно,(Ь)
или если А истиннов некоторомвозможном
мире.(с)
(Интерпретации (а), (Ь)и(с) для□иОсоответ
ственны; в каждой из пар (а), (Ь) и (с) сгруппированы двойственные интерпретации.)
Временные операторы:
'— G: всегда (в будущем);
GA истинно, если А останется истинным навсегда.
— Н; всегда (в прошлом);
НА истинно, если А всегда было истинным.
— F : иногда (в будущем);
FA истинно, если А иногда будет истинным.
— Р : иногда (в прошлом);
РА истинно, если А иногда оказывалось истинным.
— U : до тех пор, пока;
U (А, В) истинно, если А истинно (начиная с Текущего момента) до тех пор, пока В не станет истинным в некоторый момент в будущем. (G, F и Н, Р двойственные операторы в смысле
FA = ~) G ~1 А и РА = П И П А. Некоторые временные логики учитывают только будущее. В этом случае часто употребляют обозначения □ и 0 соответственно для операторов G и F.)
Эпистемические операторы:
— верит(а)
верит (а) Л истинно, если индивид а верит в формулу А. .
Очевидно, что модальные формулы бесчисленны. Философы предложили и использовали их в огромном количестве. Все эти формулы представимы с помощью модальных операторов.
Синтаксис модальной логики предикатов
Пусть Mi, М2, ..., Мп—модальные операторы. Правила образования модальных формул таковы:
Все правила построения из логики предикатов (первого порядка) являются также правилами построения в модальной логике предикатов.
Если F — формула и М;— модальный оператор, то MjF — формула.
И опять основной задачей представления знаний является перевод фраз или описаний, относящихся к области экспертизы, в формулы модальной логики предикатов. Семантическое значение этих модальных формул должно соответствовать истинам области экспертизы.
Примеры
По-русски: Возможно, что Жак посылает ^ книгу Мари,
Логически: 0 Посылка ^Жак_2, Мари_4,
. Книга_22).
По-русски: Не было возможным, чтобы Жак посылал что-нибудь каждому,
Логически: Р (“] (0 (Vx3t/32
Отправитель (z, Жак_2) А Получатель (z, х) А.
Объект (z, у) А
Элем^г, посылки)))).
• По-русски:
(Словесное прочтение этой формулы таково: в прошлом (Р) не является (~1) возможным С0), чтобы! Жак посылал что-нибудь каждому.^ Если Жак верит данному выска*
Логически:
зыванию, то он верит, что верит^ ему (аксиома позитивной интро-^ спекции),<
верит (Жак_2) р zd верит (Жак_2) (верит (Жак_2) р).
• По-русски:
Если Жак не верит данному выс
Логически:
казыванию, то он верит, что не верит ему (аксиома негативной интроспекции),
Л верит (Жак_2) р то верит (Жак_2) (“| верит (Жак-2) р).
• По-русски:
Если факт, что Жак верит данному высказыванию, влечет, что оно истинно, то Жак знает это высказы
Логически:
вание,
(верит (Жак_2) р то р) то (знает (Жак_2) р). (Во многих случаях желательно, чтобы убеждения людей были истинными. Это приводит к
• По-русски:
понятию скорее знания, чем веры.) Жак верит, что он послал книгу (а не что-нибудь иное) Мари,
Логически:
верит (Жак_2)(РЗх(Посылка(Жак_2, Мари_4, х)ДЭлем(х, книги))).
• По-русски:
Жак верит, что он послал книгу (вполне определенную) Мари,
Логически:
Зх (верит(Жак_2)(РПосылка(Жак_2, Мари_4, х)) А Элем (х, книги)}. ■
(Последнее выражение показывает, что в системе убеждений Жака имеется формула типа (Р Посылка (Жак-2, Мари-4, х) Л Элем (х, книги) ]. Но ее окончательный вид зависит от конкретного объекта, к которому относится переменная х. Предпоследнее выражение показывает, что в системе убеждений Жака содержится формула (РЗх Посылка Л Элем).)
Трехзначная семантика для модальной логики предикатов
Семантику для модальной логики предикатов можно определить, как для классической (§ 1.2.5). Простоты ради временно проигнорируем более сложные языки, основанные на модальной логике. Проиллюстрируем модальную семантику, введя аппроксимацию некоторых форм логики возможного с помощью трехзначной логики. Бинарная логика с двумя значениями {Л или О, И или 1} самая элементарная. Истина и ложь — это два множества высказываний, и законы (классической) логики утверждают, что любое высказывание — есть элемент хотя бы одного из этих множеств (закон исключенного третьего) и что никакое высказывание не является элементом сразу двух этих множеств (закон противоречия).
Какие изменения надо внести в эту теорию, если вводятся модальности «возможно» и «необходимо»? Надо рассмотреть несколько классов высказываний [75]. Обозначим через N класс «необходимых» высказываний, через Р — «возможных», через 7 — «невозможных» (или «абсурдных») и через С — «нейтральных» (или «возможно (случайно) ложных»). Никакое высказывание не принадлежит одновременно N и С или 1 и Р. Это закон противоречия. Далее, класс N содержится в Р, а класс 7 — в С. Это отражено в законах следования возможного из необходимого и нейтрального из абсурдного:
любое необходимое высказывание возможно, любое абсурдное высказывание не является необходимым.
Существуют высказывания, которые являются возможными и нейтральными одновременно. Их называют «проблематичными». Множество таких высказываний обозначим через U. Имеет место закон исключенного четвертого:
любое высказывание принадлежит либо N, либо U, либо 7.
Посмотрим, как эту теорию модальности можно перевести в алгебраическую форму. Каждому из классов
FAG FVG FdG F = G
F
-F
F\G
0 12
0 12
0 12
0 1
2
0
2
0
ООО
0 12
2 2 2
2 1
0
1
1
1
0 11
1 1 2
12 2
1 2
1
2
0
2
0 12
2 2 2
0 12
0 1
2
Рис. 3.1. Таблица трехзначных функций (связки Лукасевича).
F
OF
df
0
1
2
0
2
2
0
0 2
Рис. 3.2. ТрехзначнаяРис. 3.2. Трехзначнаятаблица модальных операторов.
Рис. 3.2. Трехзначная
Рис. 3.2. Трехзначная
N, U, I соответствует своя интерпретация: «необходимо», «проблематично», «невозможно». Возьмем три символа 2, 1, 0. Это логические значения, сопоставляемые указанным интерпретациям. Каждому высказыванию можно приписать логическое значение. Эта трехзначная логика предложена Лукасевичеес [64].
В логике Лукасевича каждое высказывание обладает одним из значений 0, 1 или 2 (интерпретируемых как семантическое значение высказывания). Семантическое значение модальной формулы можно находить, используя таблицы, приведенные на рис. 3.1 и 3.2. Они задают семантику для аппроксимации модальной логики возможного с помощью трехзначной логики. Иное описание этой семантики дается в следующем параграфе.
Семантика возможных миров
Множество истинных событий можно разделить на «случайно истинные» (которые истинны, но могли бы оказаться ложными, если бы развитие мира шло иначе; таковы исторические события) и «необходимо истинные» (которые нельзя отрицать, не ставя под сомнение нормальный смысл слов языка; таковы математические и логические истины). Точно так же лож-
истинное выражениеложное выражение
не нейтральноенейтральноене нейтральное
3 Г 2 j 1 jj 7=
необходимо ложноенеобходимо ложноеслучайно истинное
необходимо ложное
необходимо ложное
необходимо истинноенеобходимо истинное(= не необходимо ложное)
необходимо истинное
необходимо истинное
случайно ложное
(=не необходимо истинное)
Рис. 3.3. Семантика возможных миров.
ные события делят на «случайно ложные» и «необходимо ложные». Будем предполагать, что «необходимая истина» (в существующем мире) связана с событием, подтверждающимся не только в существующем, но и во всех возможных мирах. Таким же образом «возможная истина» будет связана с событием, подтвердившимся в существующем, но не во всех возможных мирах. «Необходимо ложное» событие не подтверждается ни в каком из возможных миров, тогда как «случайно ложное» ложно в существующем, но не во всех возможных мирах. Это деление событий можно изобразить в виде диаграммы (см. рис. 3.3).
Интерпретациям необходимо истинно, нейтрально истинно, нейтрально ложно, необходимо ложно можно сопоставить соответственно логические значения 3, 2, 1, 0. Итак, модальная логика, связанная с операторами необходимо и случайно, оказалась погруженной в четырехзначную логику [91], [22].
Предположим, что семантика возможных миров сводится к семантике с двумя возможностями: существующий мир X и возможный У. Каждому высказыванию припишем одно из логических значений 0, 1, 2 или 3 в соответствии с тем, какому из приводимых ниже условий оно удовлетворяет:
ложно в X и в У (необходимо ложно),
ложно в X и истинно в У (случайно, но не необходимо ложно),
F ^G
F
F\G
0
1
2
3
□ F
OF
0
3
0
0
0
0
0
0
0
1
2
1
0
1
0
1
0
3
2
1
2
0
0
2
2
0
3
3
0
3
0
1
2
3
3
3
(а)(6)(с)№
Рис. 3.4. Четырехзначные логические операции и модальные опе- " раторы.
истинно в X и ложно в У (случайно, но не необходимо истинно),
истинно в X и в У (необходимо истинно).
Указанная интерпретация логических значений приводит к таблицам, представленным на рис. 3.4 для отрицания, конъюнкции и операторов □ и 0. Это задает некоторую модальную семантику для четырехзначной логики.
Заметим, что операторы отрицания и конъюнкции, описанные таблицами на рис. 3.4, являются прямым произведением двух экземпляров аналогичных операторов из бинарной системы (0, 1}. Это легко проверяется с использованием следующего двоичного кодирования логических значений 0, 1, 2, 3:
0 = (0,0), 1=(0, 1), 2 = (1,0), 3 = (1, 1). ;| 3.1.18. Ламбда-исчисление 1
Обогатим модальное исчисление предикатов новым оператором над логическими переменными — ламбда- оператором, (или, короче, Х-оператором). Читатель, несомненно, знаком с таким способом задания множеств, как в нижеследующих примерах:
(х|х является преподавателем университета}, {х | — 1 < х < 1, х — действительное число}.
При таком определении конкретного множества двусмысленности нет (§ 1.2.4); нужно только явно указать ту переменную, на которой основано определение
множества. Можно поискать замену неформального определения формально логическим. Это приводит к обозначениям Х-исчисления, в котором множество описывается следующим образом:
Хх (логическая формула, содержащая переменную х].
Например, рассмотрим русскую фразу «Кто-то посылает что-то Мари» и ее перевод на язык логики предикатов Посылка (х, Мари_4, у).
Выражение (называемое Х-выражением или Х-аб- стракцией^
Ху [Посылка(Жак_2, Мари_4, г/)] (3.2) определяет характеристическую функцию множества объектов, посылаемых Жаком Мари, тогда как выражение
Хх ^Посылка^х, Мари_4, Книга_22^\ (3.3) определяет характеристическую функцию множества индивидов, посылающих указанную книгу Мари. Точно так же выражение '
Хх, у \Посылка^х, Мари_4, z/)] (3.4) определяет характеристическую функцию множества пар (отправитель, посылаемый объект), для которых Мари является, получателем.
Если F— формула, то XxF указывает описанное с помощью F множество, на элементах которого (являющихся конкретизациями для х) F истинна. Выражения (3.2) и (3.3) можно интерпретировать и как унарные предикаты с аргументами у и х соответственно. Оператор X, как и кванторы общности и существования, служит для связывания вхождений переменной.
Дадим более формализованное определение Х-вы- ражения.
n-арное Х-выражение Хх\, . . . , xnF состоит из логической формулы F, называемой телом выражения, и множества п переменных Xi, ..., хп формулы F, являющихся формальными параметрами выражения.
6 А. Тейз и др.
Следующий за X список параметров служит для того, чтобы отличить формальные параметры от других аргументов (или концептов) формулы F.
Телом Х-выражения является формула логики предикатов. Как только будут заданы значения п формальных параметров, Х-выражение станет п-арным предикатом, принимающим значения «истинно» или «ложйо» в зависимости от того, какие индивидуальные значения (конкретизации) присвоены формальным параметрам. "
Синтаксис и семантика Х-выражения проистекает из его определения.
Синтаксис Если F — логическая формула их — переменная, то XxF — Х-выражение,
Семантика Значения Х-выражения Хх{xnF есть значения п-арного предиката, полученного присваиванием конкретизаций формальным параметрам.
Выражение (3.4) становится бинарным предикатом, который можно обозначить, например, Ламбда- посылка^х, у). Он примет значение И или Л в зависимости от осуществленного присваивания конкретизаций переменным х и у. В некоторых системах баз данных Х-выражения используются для постановки вопросов. Выражение (3.4) соответствовало бы вопросу (запросу): «Назовите посланные для Мари объекты и соответствующих отправителей».
Рассуждения, использующие логические формулы
Исчисление предикатов содержит правила вывода, применимые к одним логическим формулам для получения других. Особенно важны правила «modus ponens» и «обобщения» (§§ 2.1.3, 2.1.8). Правила вывода порождают некое множество формул из примитивных (исходных, первоначальных) формул. В исчислении предикатов выведенные формулы называются «теоремами», а последовательность примененных для их получения правил вывода ° — «доказатель-
u С указанием используемых в них формул. — Прим. ред.
ством теоремы». Многочисленные приложения исчисления предикатов к ИИ можно толковать как методы доказательства теорем.
При доказательстве теорем обычно используют процедуры опровержения. Множество гипотез {///}, Подходящих для доказательства теоремы, добавляют к множеству присущих области экспертизы аксиом {А,}. Затем стремятся получить опровержение (или прийти к противоречию), присоединяя {ПС} — отрицание утверждения теоремы — к системе {Я/, А,} и пытаясь доказать формулу .
Л Ht Л Л At Л П С zd Л.
Эта формула логически эквивалентна формуле
А Л^(Л Hj^c^.
Процедуры, позволяющие строить доказательства формул такого типа, называются «доказательствами посредством опровержения». Они помогают избегать менее перспективных направлений поиска. Системы доказательства теорем во многих приложениях включают формулы логики предикатов с переменными, связанными кванторами существования. В таких случаях доказательства позволяют находить конкретизации для этих переменных.
Например, интересно выяснить, можно ли формулу ЗхС (х) логически вывести из гипотез и аксиом. Если да, то хотелось бы знать конкретизацию для х в терминах вывода. Попытка доказательства ЗхС (х) из ^Hf, Ai} должна быть конструктивной. Проиллюстрируем подобное доказательство следующим примером.
Пример
Аксиом нет, гипотезы:
Н[: таможенники возвращают всех, кто въехал в страну без паспорта,
Н2: люди на машинах въехали в страну и были возвращены лишь другими людьми на машинах, Н3: ни один человек на машине не имел паспорта.
Тезис (или заключение):
С: некоторые таможенники были на машинах. Рассмотрим пять следующих предикатов.
Е (х)". х въехал в страну,
Р (х)'. х с паспортом,
R^x, у): у возвращает х, М(х) : х на машине, D(x): х — таможенник.
Можно перевести гипотезы Н, и тезис С в термины логики предикатов:•
Hv : Vx ^Е (х) Л п Р (х)) о ЗУ (R (X, у) Л D (у))),
Н2: Зх ((М (х) Д Е (х)) Д Vy (R (х, у) о М (у))),„
Н3: Vx (M (х) zd П Р (х)),?
С :3x(M(x) A D(x)).
Запишем гипотезы и отрицание тезиса в сколемово11
форме (§§ 1.2.7—1.2.8) и исключим импликации:
Нх :-\E^V Р (х) V (/? (х, f (х)) ADO (х))),
Н2 -.М^ДЕ (a) A^R («, У) V М (у)),
На : П Р (х) V ~1 М (х), ПС:ПМ(х) V Ю(х).
При доказательстве теоремы в качестве правила вывода можно использовать неклаузальную резолюцию (§§ 1.1.15, 1.2.14). Вог одна из последовательностей операций, составляющих доказательство теоремы (обозначения из §§ 1.1.15 и 1.2.14):
Вх :Р(а) V (R(a), f (a)) A D(f(a)) ±Е {(х, о)) (Н2, Нх)
В2 • П Р (ct)Е м {(х, ay) (Н2, Н^)
Ba'.R(a, f(a)) AD(f(a))1P(BV, В2)
B4:M(a)A£(a)AM(f(a))1R № f (a))) (B3, H2)
Bs-^D^fift±m {(*, f (a))} (B4, ПС)
B3: Лj_ n (B3, B6)
Рассуждения по поводу знаний
В большинстве встречающихся в ИИ систем относящиеся к области экспертизы знания делятся на две категории: «факты» и «правила» (§ 1.1.16). Факты — это данные (представленные предикатами), касающиеся области экспертизы. Например, данные о персонале некоего университета составляют множество фактов.
Факт(1).
По-русски: Жак — профессор факультета информатики,
Логически: Проф^Инфо, Жак_2У
е Факт (2).
По-русски: Мари — студентка математического факультета,
Логически: Ст уд (Мат, Мари_4).
Правила — это данные, представленные с помощью импликации (или в иной эквивалентной логической форме). Они представляют собой обобщающие знания об области экспертизы.
Правило (1).
По-русски: Если у — профессор факультета х и w — студент(ка) факультета z при х #= z, то у может служить внешним экзаменатором для w.
Логически: Проф^х, у) Д Студ^г, щ) Д ~I Равно (х, z) лэ Экзам (у, щ).
Задача доказательства (обоснования) теоремы состоит в установлении выводимости из фактов и правил некой формулы («предложения-цели», «заключения»), представляющей некоторый вопрос.
Предложение-цель (1).■
По-русски: Может ли Жак служить внешним экзаменатором для Мари?
Логически: Экзам (Жак_2, Мари_4\
Можно применять различные приемы для выработки стратегий доказательства теоремы. -
Системы прямой дедукции
В системах прямой дедукции новые знания получают, применяя выводы к фактам и правилам. Алгоритм завершает работу при получении некоторого знания, . эквивалентного цели (или непосредственно влекущего ее). Для иллюстрации системы прямой дедукции обратимся снова к примеру из § 3.1.21. Докажем теорему
(Факт (1) Д Факт (2) Л Правило (1)) о Цель (1).
Этап (1):
Преобразуем ФактЦ) и Правило (1) в дизъюнкты, чтобы применить затем метод резолюций (§§ 1.1.12, 1.2.14). С помощью резолюции выводим новое Правило (2), используя обозначение■
Факт(1) Правило (1).
Правило (2)‘1
Факт (1):Правило (1):|
Проф {Инфо, Жак_2) “1 Проф (х, у) V|
Д Студ (z, ty) V|
Равно (х, z) V Экзам {у,
Правило(2): "ДСтуд{г, w) X/ Равно {Инфо, z) V V Экзам {Жак_2, w)
Этап (2): из Факта (2) и Правила (2) резолюцией выводим новый
Факт (3):
Факт (2):Правило (2):
Студ {Мат, Мари_4) “] Студ {г, w) V Равно {Инфо, z) V Экзам {Жак_2, гу)
Факт(З): Экзам {Жак_2, Мари_4) V
V Равно {Инфо, Мат) = JI
(Отношение Равно {Инфо, Мат) = Л должно быть явно указано в БД)
Этап (3):
Факт(З) соответствует Цели(1). Следовательно, она подтверждена. Аналогично выведем утверждение Л из Факта (3) и отрицания Цели(1):
Факт (3):~] Цель(1):
Экзам^Жак_2, Мари_4) ~] Экзам^Жак_2 ,Мари_4^
Л
Систему прямой дедукции можно толковать как систему, в которой применяется теорема о прямой дедукции (см. § 1.1.9): Если Fi, ..., Fn, G— логические выражения, то G является логическим следствием из Fi, ..., Fn тогда и только тогда, когда логическое выражение (Fi /\ . .. Д Fn Д ~| G) тождественно ложно, т. е. невыполнимо. Правила вывода и стратегии, используемые в системах прямой дедукции, графически представимы И/ИЛИ-деревьями [83]. Эти деревья будут введены в § 5.1.10 в рамках описания стратегии, используемой языком логического программирования Пролог.
Системы обратной дедукции
В системах обратной дедукции выводы применяют к цели и к правилам, чтобы построить новые частичные цели. Алгоритм завершает работу, когда все частичные цели соответствуют фактам. Такую систему можно толковать с логической точки зрения как систему, в которой применяется теорема об обратной Дедукции, которая гласит (см. § 1.1.9):
Если Fx, ..., Fn, G — логические выражения, то G является логическим следствием из Еь .. ., Fn тогда и только тогда, когда логическое выражение (~l Fx V ... V —1 Fn V G) тождественно истинно, т. е. общезначимо.
В системах обратной дедукции правила и цели преобразуют в конъюнкты, чтобы применить затем правило согласия (§ 1.2.14).
Этап(1): из Цели(1) и отрицания Правила(1), используя правило согласия, выводим новую Цель (2):
Цель(1):Ц Правило (1):
Эхзам (Жак_2, Мари_4) Проф (х, г/) Д
А Студ (z, zy) Д ~|
■Равно (х, z) Д П Экзам
'(У, ю)■
Цель (2): Проф(х, Жак_2) /\Студ(г, Мари_4)/\ Равно (х, z)
Этап (2): Из Цели (2) и отрицания Факта (1) с помощью правила согласия выводим Цель(З).
Цель (2):|Факт(1):
Проф (х,Жак_2) А~\ Проф (Инфо, Жак_2)
Студ (z, Мари_4) N•
“1 Равно (х, у)
Цель(З): Студ(г, Мари_4) Д "\ Равно (Инфо, z)
Этап(З): из Цели(З) и отрицания Факта (2) .выводим теорему:
Цель(З):~] Факт (2):
Студ (г, Мари_4) Д “) Студ (Мат, Мари_4)
Ц Равно (Инфо, z)
~I Равно (Инфо, Мат) = И
4Т4ТСетевое представление
4Т
4Т
Введение
В разд. 3.1 описано использование исчисления предикатов для представления знаний. Исчисление предикатов можно комбинировать с такими сравнительно эффективными механизмами вывода, как резолюция (§§ 1.1.12, 1.2.14). Таким образом, логические формализмы представления знаний охватывают проблему рассуждений достаточно изящно.
Недостаток логического формализма — его не- структурированность: например, для сбора всей информации по одному объекту (конкретизации) прихо-
дится пробегать все множество логических формул некой базы данных (БД). Графические представления, к которым мы переходим, служат глобализации и структурированию информации. Граф собирает вокруг одного узла всю информацию по некоторому объекту. Графические представления, такие, как концептуальные графы и семантические сети, позволяют визуализировать модель мира, которому принадлежит решаемая проблема. Такой тип представления интересуется в большей мере описанием мира проблем, чем правил, относящихся к самому этому миру.
Концептуальный граф представляет логическую формулу. Имена и аргументы предикатов представлены в нем соответственно двумя типами узлов. Дуги графа соединяют имена предикатов с их аргументами. Эти графы близки к моделям, используемым специалистами по БД. Одна из проблем при создании БД — учет структуры области экспертизы. Возьмем, к примеру, структуры, существующие в недрах некоего предприятия. Различные отделы, секции, бюро и субъекты, их заполняющие, образуют иерархическую структуру. Ее можно представить набором концептуальных графов. .
Семантические сети представляют более сложные структуры. Такая сеть состоит из множества концептуальных графов, представляющих логические формулы. Она позволяет визуализировать множество отношений между концептуальными графами, ее составляющими. Ею описывается также универсум, в который погружены концептуальные графы (что является глобальной областью экспертизы).
Концептуальные графы и семантические сети составляют графическую версию исчисления предикатов. '
Концептуальные графы
Логика предикатов — это язык, который можно интерпретировать в терминах области рассуждений (экспертизы): логические формулы представляют Фразы метаязыка. Аргументы предикатов и логических Функций существенно используются для представления
атрибутов, событий и состояний. Имена предикатов указывают способ увязывания этих понятий. В частности, эти имена представляют правила соединения, правила грамматики и процедуры.
Концептуальные графы содержат прямоугольники для представления аргументов и круги для имен предикатов. Круг соединяется стрелкой с прямоугольником, если они представляют соответственно имя и аргумент одного и того же предиката.
Предикаты могут иметь несколько аргументов. Следовательно, круги могут иметь несколько входящих и/или выходящих стрелок. Большинство предикатов, используемых для представления знаний, обладают двумя аргументами (бинарные предикаты). Тогда круги соединены с прямоугольниками двумя стрелками: входящей и выходящей. Проиллюстрируем эти понятия на примере.
Пример и терминология
Снова обратимся к примеру из § 3.1.6. На рис. 3.5 изображен концептуальный граф предиката Посылка (Жак-2, Мари-4, Книга-22), формализующего фразу «Жак посылает книгу Мари». На рис. 3.6 приведен концептуальный граф логического представления той же фразы бинарными предикатами, т. е. граф, соответствующий формуле
Отправитель (Посылка_8, Жак_2) /\
Получатель фосылка_8, Мари_4) Д
Объект (Посылка_8, Книга_22) /\ (3.5)
Элем (Посылка-8, посылки).
При графическом представлении бинарных предикатов круги иногда опускают, а имена предикатов указывают на стрелках. В § 3.1.6 было описано общее правило преобразования m-арного предиката (т ^ ^ 2) вида
Предикатное_имя(значение_1, значение-2, ... ..., значение-m) в произведение m бинарных предикатов
Л Функция-} (предикатное_имя, значение-}).
Жак_ 2Жак_ 2Мар и _4Мар и _4(1)(1)ПосылкаПосылка(2)(2)(3)(3)Книга-22Книга-22Рис.Рис.3.5.3.5.Концептуальный граф.Концептуальный граф.представления би-представления би-Рис. 3.6. Концептуальный граф логического иарными предикатами.Рис. 3.6. Концептуальный граф логического иарными предикатами.ОБЪЕКТОБЪЕКТАТРИБУТАТРИБУТЗНАЧЕНИЕЗНАЧЕНИЕРис. 3.7. Концептуальный граф бинарного предиката.Рис. 3.7. Концептуальный граф бинарного предиката.
Жак_ 2
Жак_ 2
Мар и _4
Мар и _4
(1)
(1)
Посылка
Посылка
(2)
(2)
(3)
(3)
Книга-22
Книга-22
Рис.
Рис.
3.5.
3.5.
Концептуальный граф.
Концептуальный граф.
представления би-
представления би-
Рис. 3.6. Концептуальный граф логического иарными предикатами.
Рис. 3.6. Концептуальный граф логического иарными предикатами.
ОБЪЕКТ
ОБЪЕКТ
АТРИБУТ
АТРИБУТ
ЗНАЧЕНИЕ
ЗНАЧЕНИЕ
Рис. 3.7. Концептуальный граф бинарного предиката.
Рис. 3.7. Концептуальный граф бинарного предиката.
Свяжем с каждым бинарным предикатом концептуальный граф — как показано на рис. 3.7. Стрелки предикатов направлены от первого аргумента
предиката ^предикатное_имя^ к имени предиката (Функция-j) и от имени предиката ко второму аргументу ^значениеЦу В записи, называемой по-английски slot-assertion (§ 3.1.6), имя предиката соответствует «имени слота», а значение — «значению слота». Вообще в концептуальных графах «значение слота» соответствует некоторому концепту.
Графическое представление m арных предикатов основано на следующем соглашении. Стрелка, соответствующая m-му аргументу, направлена к прямоугольнику, представляющему этот аргумент. Все остальные стрелки направлены от прямоугольников к кругу, представляющему имя предиката. Стрелки помечены от 1 до т, чтобы явно показать соответствие между стрелкой и аргументом (рис. 3.5).
В дальнейшем нас интересует исключительно представление бинарных предикатов. Добавим несколько штрихов по поводу терминологии, широко используемой для концептуальных графов бинарных предикатов. Вообще имя бинарного предиката представляет некую функцию. Узел концептуального графа, указывающий это имя, называется связывающим узлом, ибо он связывает два концепта, представленных двумя аргументами бинарного предиката. Функция, представленная этим связывающим узлом, носит по той же причине название концептуального отношения. Термины «имя бинарного предиката» и «аргумент», представляющие соответственно функцию и концепт, часто заменяют на «связывающий узел» и «узел-концепт» в графическом представлении.
Семантические сети
В § 3.2.1 указывалось, что каждый концептуальный граф представляет одну логическую формулу. Семантическая сеть гораздо сложнее. Она представляет не только набор (соединение) формул, но также описывает их взаимосвязи и погружение их в контекст области рассуждений. Семантические сети получаются из концептуальных графов по правилам соединения, которые будут введены посредством примеров. '
Правила конъюнкции и упрощения
Рассмотрим набор из трех фраз:
Фраза 1: Жак пишет книгу, -
Фраза 2: Жак посылает эту книгу Мари,
Фраза 3: Мари читает книгу (которую Жак ей прислал).
Каждую из этих фраз можно представить либо формулой исчисления предикатов, либо концептуальным графом. Первый этап построения семантической сети основан на использовании двух следующих формальных правил получения концептуального графа g из двух графов gi и g2.
Правило конъюнкции. Если узел-концепт сх в gx идентичен узлу-концепту с2 в g2, то g получается удалением с2 и соединением с ^ всех связывающих узлов, которые были связаны с с2 в g2.
Правило упрощения. Если концептуальный граф g содержит два идентичных (соединенных с одними и теми же узлами-концептами) связывающих узла, то можно удалить один из них вместе со связанными с ним стрелками.
Применим правило конъюнкции к приведенному только что примеру. «Книга, которую написал Жак, которую он послал Мари и которую Мари читала» представляется конкретизацией Книга_22. Эта конкретизация «книги» появляется в концептуальных графах, представляющих рассмотренные выше фразы 1, 2 и 3. Группирование конкретизаций Книга_22, Жак_2 и Мари-4 порождает концептуальный граф, изображенный на рис. 3.8. На нем рамками выделены •графы фраз 1, 2, 3 и граф группы фраз (1, 2, 3).
Представление контекста
Сам по себе концептуальный граф несет немного информации, тогда как включение в семантическую сеть позволяет связать его концепты и функциональные связи с областью рассуждений (экспертизы). Например, Книга-22—конкретизация слова «книга», которое представляет абстрактное понятие (или, иначе, типу Отношение принадлежности типу представлено
|npo^eccqiM|f^^^
। Фразы 1,2,3
проф-.
Фраза 1 ]
Фраза 2
• Жак-2 ।
Письмо-7 -
ш)бъект
письмо
Конкр
посылка ЦКонкр
I
студенты dnodMnV студтиуниб студ-униб
Посылка-8^к(объек^И Ккига.22 —
Читата
у V Фраза 3
Объект
Книга-из.биб-уни6
Злей )(Элем U Конкр
ПолучУи MapuS |
Чтение.9
w(oHKp
Конкр
Чтение
собьбпие
книга
70-тысяч *4 Число)(Возр
20-лет
Рис. 3.8. Концептуальный граф н контекстное представление.
связывающим узлом (именем предиката) Конкр (от слова «конкретизация»).
Кроме факта, что Книга_22 относится к типу «книга», мы хотим показать, что она принадлежит некоторому «множеству книг» (например, из библиотеки некоторого университета). Отношение принадлежности множеству представлено связывающим узлом (именем предиката) Элем (от слова «элемент»). На рис. 3.8 конкретизации Жак_2, Книга-22 и Мари-4 связаны с различными типами и множествами, которым они принадлежат. Отметим, что «тип» употребляется в абстрактном смысле (абстрактный тип). Утверждения о типах — аналитические, например: средний возраст студентов университета двадцать лет. Наоборот, свойства множеств — синтетические: число студентов университета равно десяти тысячам.
Используем связывающий узел, представляющий имя предиката Подмн для представления отношения между двумя множествами, из которых первое — подмножество второго. Как Элем объявляет о принадлежности элемента множеству, Подмн означает включение одного множества в другое. Элем и Подмн отражают принадлежность множеству.
Связывающий узел Это используется для представления отношения между первым типом и более общим вторым. Напомним, что предикат Конкр когда-то использовался нами для представления принадлежности индивида типу. Это и Конкр отражают принадлежность типу.
Концепты в семантических сетях обладают различными свойствами, делящимися на аналитические (свойства «типа») и синтетические (свойства «множества»), Важно учитывать это различие при построении сетей, чтобы избежать некорректных выводов.
Представление «совокупность б-ссылка»
Существует графическое представление (эквивалентное рассмотрение в предыдущих параграфах) с
** В оригинале: родовой (generique).—Прим. ред.
Узел-ссылкаУзел-ссылкаКонцепт-сеВокупмостьКонцепт-сеВокупмостьПредставление полей совокупности и ссылкиПредставление полей совокупности и ссылкиУказатель типа:Указатель типа:Рис. 3.9. Поля ссылки и совокупности.Рис. 3.9. Поля ссылки и совокупности.конкретизацияконкретизация
Узел-ссылка
Узел-ссылка
Концепт-сеВокупмость
Концепт-сеВокупмость
Представление полей совокупности и ссылки
Представление полей совокупности и ссылки
Указатель типа:
Указатель типа:
Рис. 3.9. Поля ссылки и совокупности.
Рис. 3.9. Поля ссылки и совокупности.
конкретизация
конкретизация
узлами, представляющими типы и называемыми «узлами-совокупностями», или «родовыми узлами», и узлами, представляющими конкретизации типов и называемыми «узлами-индивидами» или «узлами- ссылками».
Семантическая сеть образуется последовательностями из трех узлов, соединенных так: за узлом-ссщл- кой (например, представляющим конкретизацию Книга_22^ следует связывающий узел Конкр, сопровождаемый уздом-совокупностью (например, представляющим тип «книга»).
Используя метод Совы [102], эти три узла можно сгруппировать и представить одним «узлом-прямоугольником», состоящим из двух полей: из «поля совокупности», содержащего некоторый тип, и следующего за этим полем «поля ссылки», например, с конкретизацией типа из первого поля (рис. 3.9). Здесь поле ссылки (справа от двоеточия) представляет конкретизацию Книга_22. Помимо конкретизации его содержимым может быть переменная. Поле совокупности (слева от двоеточия) представляет тип. Представление [книга : Книеа-22) (или, короче, [книга : 22]) означает вполне определенный объект типа
Рис. 3.10. Пример концептуального графа.
«книга». Представление [книга: х] означает просто какой-то объект типа «книга». Отметим, что наличие переменной в правом поле вообще необязательно. Например, можно заменить представление [книга: х] эквивалентным ему представлением [книга] (рис. 3.9).
Пример■
Фразы
Жак посылает (вполне определенную) книгу Мари,
Жак посылает (какую-то) книгу Мари представляются двумя графами, которые можно выделить на рис. 3.10: первая фраза — графом без элементов с (2), вторая фраза — графом без элементов с (1).
Пример введения кванторов -
Введем графическое обозначение кванторов на примере трех фраз.
(1): Жак посылает (какую-то) книгу каждой женщине,
(2): Жак посылает всякую книгу каждой жен-| щине,J
(3): Жак посылает (одну и ту же) книгу каж-5 дой женщине.;
Запишем эти фразы в логике предикатов.:
(1): Vx3y32 [Отправитель (z, Жак_2) /\ Получатель (z, х) Л Объект (z, у) Д Конкр (z, посылка) Д Конкр [у, книга) Д Конкр (х, женцина)),
(2) : Чх'^уЗг [Отправитель (z, Жак_2) /\ Получатель (z, х) Л Объект (z, у) Д Конкр (z, посылка) Д Конкр [у, книга) Д Конкр (х, женцина)),
(3): Зу^хЗх [Отправитель (z, Жак_2) /\..
Получатель (z, х) /\ Объект [z, у) Д Конкр (z, посылка) Д Конкр (у, книга) Д Конкр (х, женцина)).
Перевод с логического языка на графический осуществляется по следующим правилам.
Прежде всего концептуальный граф делят на иерархическое множество зон, каждая из которых соответствует области действия одного или нескольких кванторов. Например, рассмотрим логическую форму фразы (1). Соответствующий граф изображен на рис. 3.11 (элементы с (2) удалить). Для графического изображения нужно ввести обозначение области действия квантора общности по переменной х. С этой целью установим иерархию прямоугольников концептуального графа. На рис. 3.11 и 3.12 жирно выделены прямоугольники наивысшего порядка. Они содержат конкретизации (Конкр) концепта совокупности «формула под квантором общности» (на рис. 3.11 и 3.12 этот концепт обозначен V Квант-форм). Каждая переменная под квантором общности в этих формулах представлена связывающим узлом со знаком V.
Читатель может проверить, что с учетом этих соглашений относительно записи рис. 3.11, без элементов с (2), изображает формулу (1), что он же, но
Рис. 3.11. Концептуальный граф (формул 1 и 2) с квантором.
Рис. 3.12. Концептуальный граф (формулы 3) с квантором.
вместе с элементами, помеченными знаком (2), изображает формулу (2) и что рис. 3.12 представляет формулу (3).
Временные и модальные операторы
Используемые в логике знания глаголы (например, «полагать» и «знать») относятся к объектам, которые могут быть целыми фразами. Эти глаголы пронизывают иерархическую графическую структуру, в которой целые графы можно интерпретировать как узлы графов высшего порядка.
Фразу «Жак посылает книгу Мари» изображают классическим концептуальным графом в отличие от
Рис. 3.13. Концептуальный граф логики знания.
фразы «Поль полагает, что Жак посылает книгу Мари», отраженной (с пометкой (с)) в центральной части графа на рис. 3.13. Из этого рисунка видно, что Мысль_8 принадлежит типу мысль. Объект Мысли-8 — концепт типа (точнее, с «меткой типа») высказывание. Ссылка Мысли-8 — граф фразы «Жак посылает книгу Мари». Полагающий это человек — Поль-6.
Любую формулу модальной логики можно рассматривать в духе этого примера. В модальной логике всегда можно отделить пропозициональную часть фразы (выразимую в логике предикатов) от собственно модальности. При изображении концептуальных графов пропозициональная часть поля ссылки концепта обозначена типом высказывание. Такие модальности, как О, □, полагает, знает, суть концеп-
туальные отношения графа. На рис. 3.13 фраза «Не могло быть такого, чтобы Поль полагал, будто Жак посылает книгу Мари» представлена в виде концептуального графа.
Канонические графы -
В концептуальном графе есть узлы-концепты и узлы- связи (связывающие узлы). Каждая входящая в связывающий узел стрелка (или выходящая из него) соединена с узлом-концептом. Однако некоторые комбинации узлов бессмысленны. Например, можно изобразить графом' фразу «удалитй последнее слово следующей строки» (какого-то текста). С позиций грамматики эта фраза синтаксически и семантически корректна. Напротив, фраза «удалить последнюю строку следующего слова» синтаксически корректна, но абсурдна (семантически некорректна). Чтобы исключить графы нереальных (невозможных) ситуаций области рассуждений, Сова [102] определил канонические (семантически корректные) графы разрешенных комбинаций слов. Каждый составляет представление о мире, выразимом каноническими графами, исходя из личного опыта.
Таким образом, возможный путь построения таких графов следующий: мозг вырабатывает систему концептов, базируясь на поступающих ощущениях, и так расставляет сформированные концепты, чтобы они отражали реальную ситуацию. Следовательно, можно считать, что мозг строит канонические графы, представляющие, вообще говоря, очевидности (другими словами, тавтологии исчисления предикатов). Новые канонические графы строятся из имеющихся по определенным правилам построения. Эти правила формируют порождающую грамматику для концептуальных графов точно так же, как это делается посредством правил переписывания Хомского в случае порождающих грамматик для синтаксических структур естественных языков (см. разд. 5.2 и [112]).
Рис. 3.14. «Жак срочно посылает книгу кому-то».
Правила построения
Сова [102] предложил, четыре правила построения для конструирования Нового канонического графа g из имеющихся графов g\ и g2 (которые могут совпадать) :
Правило конъюнкции: определено в § 3.2.5.
Правило упрощения: определено в § 3.2.5.
Правило копирования: граф g есть копия графа gi. Правило ограничения: Для любого концепта с концептуального графа g тип(с) можно заменить неким подтипом. Если с — концепт совокупности, то ее ссылку можно заменить индивидуальным указателем (какой-то конкретизацией). Такие замены разрешены лишь тогда, когда ссылка для с соответствует типу(с).
Проиллюстрируем эти правила на концептуальных графах, представленных рис. 3.14. Граф без элементов с (2) — для фразы «Жак срочно посылает книгу кому-то». Граф без элементов с (1)—для фразы
«Жак посылает почтой книгу Мари». Применение правила конъюнкции к этим двум графам дает весь граф, изображенный на рис. 3.14. Можно было бы далее применить к последнему графу правило ограничения, заменяя обозначенную х совокупность «кому-то» меньшей совокупностью «женщина». Однако прежде надо убедиться в свойстве «Мари — женщина». Предыдущие правила являются фактически правил' ми сужения: ограничение сужает концепты, а кон донкция добавляет условия на графах. Аналогично ножно определить правила расширения, которые представляют собой правила, обратные к правилам суж< ия (см. [102]). Вникать в подробности мы не буде..
Унаследованные свойства
Форма различных концептов, типов и множеств во многих приложениях иерархическая. Классификация животных по родам, видам, семействам, отрядам и т. д. — классический пример иерархии. Другой пример — множество слов в словаре. Книги, транспортные средства и постройки образуют иерархически упорядоченные множества. Можно иерархически классифицировать и абстрактные концепты действий, состояний, свойств, убеждений. Используемые в обыденных рассуждениях классификации, как правило, сложнее биологических: индивид принадлежит, вообще говоря, не одному типу и не одному множеству. Однако в большинстве случаев для ИИ используются сравнительно простые иерархии.
Сначала проиллюстрируем иерархию типов на примере, а затем дадим формальное определение. Рассмотрим иерархию, изображенную на рис. 3.15. Если известно, что Жак (представленный конкретизацией Жак-2) — профессор университета, то можно сделать заключение о наличии у него докторской степени и о том, что он работает в университете. Информация «Жак—профессор университета» предоставила нам целую цепочку сведений о Жаке. Унаследованными *> называются такие свойства, которые
можно вывести подобным образом. Особых причин детально останавливаться на них нет. Ясно, что кое- какие характеристики профессоров университета можно описать, исходя из принадлежности к профессуре; некоторые характеристики профессуры выводятся из того факта, что она содержится в совокупности работников умственного труда, и, в конечном счете, в совокупности всех людей. Соображения эффективности побуждают нас не связывать с Жаком все общие свойства профессоров университета, вообще профессоров и, наконец, всех людей. Весьма общее свойство, как, например, «У Жака две руки и две ноги», сопоставляется узлу, характеризующему всех людей. Это дает возможность не провозглашать наличие указанного свойства отдельно для каждого индивида.
Решетки типов; иерархии типов
Рассматривая рис. 3.15, замечаем, что иерархия типов определяет частичный порядок на множестве меток (ярлыков) типов. Обозначим его символом ^. Пусть /1 и /2—метки типов. Если Л ^/2, то t\ — подтип типа t2, а /2 — надтип типа Л. Типы «профессор» и «студент» имеют много общих надтипов: «работник умственного труда», «человек», «высшее млекопитающее». В графе, изображенном на рис. 3.15, «работник умственного труда» — наименьший общий надтип для «профессора» и «студента». Типы «профессор» и «сотрудник университета» имеют общий подтип «профессор университета». В графе, приведенном на рис. 3.15, «профессор» и «студент» не имеют общего подтипа. ' '
Для преобразования иерархической формы на рис. 3.15 в решетку (§ 1.1.9) надо ввести две особые метки типов соответственно в высшей и низшей точках иерархии — универсальный тип U (надтип всех типов) и абсурдный тип А (подтип всех типов). Иерархия типов даст решетку типов со всеми свойствами решетки:
любая пара меток tx и t2 имеет наименьший обилий надтип,
Рис. 3.16. Связывающие узлы и узлы-концепты.
любая пара меток t\ и h имеет наибольший общий подтип, -
для любого типа t выполняется соотношение А < t U.
Данное отношение порядка представляется функциональным отношением Это. Конкр означает принадлежность индивида типу (§ 3.2.6).
Решетки множеств и решетки типов
Можно также ввести отношение порядка для множеств (подмножество множества) с помощью предиката Подмн или связывающего узла с тем же именем. При одноэлементном подмножестве Подмн заменяется на Элем (§ 3.2.6). Иерархия типов позволила упорядоченно классифицировать свойства типов, а иерархия множеств — свойства множеств. Рис. 3.16 иллюстрирует различие составных частей двух иерархий. Введем на концептуальных графах .(в духе классики) несколько функций и операторов, действующих над множеством типов. Прежде всего—■
функция тип. Она отображает множество концептов на множество Т, элементы которого называются метками {ярлыками) типа. Концепты с, и Сг имеют один тип, если тип{с\) = тип{с2). Денотатом типа t называется множество всех тех сущностей, которые являются конкретизациями некоего концепта типа t. Оператор, сопоставляющий типу t его денотат, обозначается через Денот. Тип профессор-университета есть подтип профессора. Следовательно, "денотат Денот {профессор_университета) является подмножеством Денот {профессор).
Каждой конкретизации (например, Жак_2) сопоставлено два вида узлов: узел описания типа конкретизации и узел описания множества, которому принадлежит эта конкретизация. Таким образом, имеем три вида узлов: узел, представляющий индивида (конкретизацию), который через промежуточные связывающие узлы соединен с узлами типа (Конкр) и множества {Элем). Естественно ввести четвертый вид: {х|гил}— для произвольного индивида (х) определенного типа {тип).
Профессор х (о котором больше ничего не известно) обозначен {х)проф}. Этот узел соединен с узлом, представляющим множество профессоров, через связывающий узел Элем. С другой стороны, он соединен с узлом, представляющим тип профессора, через связывающий узел Абст. Оператор Абст определяет тип (абстрактный концепт) по описанию какого-либо элемента этого типа. Наконец, можно определить оператор «прототип_для», который можно считать приблизительно обратным оператору Абст. Оператор «прототип.для» {Протот) представляется связывающим узлом, который соединяет тип с описанием этого типа, даваемым «прототипом». Последний позволяет сжато описать мир, разделенный на типы объектов. Описание, даваемое прототипом, можно рассматривать как описание некоторого типичного представителя множества. Следовательно, прототип — разновидность мифической константы. Узел прототип отличается от узла {х|гил}, который доставляет множество общих свойств объектов одного типа или одного множества. В этом смысле операторы
Абст и Протот не являются взаимно обратными. Операторы и объекты, о которых шла речь, схематически изображены на рис. 3.16 (связывающими узлами и узлами-концептами).1
Сова [Ю2] доказал, что решетки типов не изоморфны решеткам множеств. Естественное соответствие между ними ни инъективно, ни сюръективно. Рассмотрим иерархию, изображенную на рис. 3.15. С абстрактным концептом «профессора университета» связано свойство обладания докторской степенью. С другой стороны, вполне вероятно, что каждый индивид из множества «профессоров университета» имеет докторскую степень. Следовательно, соответствующие иерархии типов и множеств, приведенные на рис. 3.15, изоморфны.
Определение типа посредством рода и различия
Фраза «Жак посылает книгу Мари» представлена графом на рис. 3.5 и логической формулой (3.5). Граф на рис. 3.10 представляет ту же фразу в обозначениях вида совокупность — ссылка; соответствующая запись ее логической формулой такова:
Отправитель (посылка : 8, мужчина : Жак_2) Д Получатель (посылка : 8, женщина : Мари_4) Д (3.6) Объект (посылка : 8, книга : 22).
В таком представлении каждое значение аргумента типизировано, т. е. ему приписана некая метка типа. Исходя из этого представления, введем некую канву для определения типов. Определение типа должно задавать множество необходимых и достаточных условий, характеризующих тот факт, что рассматриваемый объект является объектом типа.
Можно определить метки типов, используя так называемый аристотелев подход, — через род (genus) в различие (differentia). Тип определяется исходным типом род и высказыванием, называемым различие и отделяющим новый тип от исходного. Например, Посылка — «событие (род), которое происходит, когда два человека, отправитель и получатель, обеспечи-
тип ресторан(х) естьтип ресторан(х) естьРис. 3.17. Определение типа для ресторана.Рис. 3.17. Определение типа для ресторана.вают перемещение предмета по почте Формально:
тип ресторан(х) есть
тип ресторан(х) есть
Рис. 3.17. Определение типа для ресторана.
Рис. 3.17. Определение типа для ресторана.
тип Посылка {х) есть
Конкр (х, событие) Л
Отправитель {х, Человек_1) Л
Получатель (х, Человек_2) Л
Объект (х, Письмо) Л
Способ (х, Почта) К
Конкр {Человек_1, человек) Л
Конкр {Человек_2, человек) Л "7) Равно {Человек_1, Человек_2)
(различие)».(различие)».(род)(род){различие){различие)Определение типов можно формализовать с помощью Х-выражений (§ 3.1.18). Пусть t — метка типа, XxF— ^-выражение. Тогда тип t{x) есть F, где тело F этого ^-выражения является различием метки t, a t{x) — ее родом. На рис. 3.17 приведено определение типа ресторана [102] с использованием концептуального графа.
(различие)».
(различие)».
(род)
(род)
{различие)
{различие)
Прототипы '
Определить какой-либо тип можно еще путем демонстрации нескольких примеров индивидов «некоего типа» и утверждая, что все, чем похожи индивиды, относится к обсуждаемому типу. Прототип — это конкретизация типа или, иначе, типовая конкретизаЦия (§ 3.2.15). Метод прототипов описывает скорее
типичного индивида некоего класса, чем произвольного представителя этого класса с набором характерных свойств.
Прототип указывает свойства, истинные в типичном, но не обязательно в каждом отдельном случае. Он позволяет гибко определять класс объектов. Прототип содержит фиксированную часть (соответствующую тому общему, что есть у всех конкретизаций этого класса) и переменную часть (обязательную или нет, свою для каждой конкретизации). Формальное определение прототипа в терминах объектных представлений дано в разд. 3.3. Сова [102] определил прототип, используя Х-выражения (§ 3.2.18).
Схемы и схематические кластеры
Концептуальный граф служит для представления знаний. Его можно также использовать для рассуждений и вычислений. Для этого введем понятие схемы, увязав его с правдоподобными и имеющими смысл рассуждениями. Схему можно определить, вводя последовательно ограничения на концептуальный граф.
В произвольном Концептуальном графе не накладываются никакие ограничения на расстановку узлов.
Канонические графы имеют семантические ограничения, представляя нечто «семантически корректное» или «понятное».
Схемы включают «специфические знания» об области рассуждений (экспертизы), представляя всё правдоподобное.
Понятие схемы подразумевает не только определение, но и способ применения. Для иллюстрации этого аспекта сначала сравним определения схемы и типа. Формальное определение схемы дадим потом. Каждый концепт имеет ровно одно определение его типа, дающее необходимые и достаточные условия принадлежности конкретизаций определенному типу.
Каждому типу можно сопоставить несколько схем, каждая из которых будет представлять один из способов применения концепта данного типа. Это приво-
дит к понятию «множества схем» как возможного источника информации, эквивалентной определению типа. А сам концепт можно определить «множеством его возможных применений».
Для формализации описания концепта Патнем (85] ввел понятие кластера или набора схем. Каждая из них указывает способ применения данного концепта. Набор всех возможностей применения типа называется его схематическим кластером.
Каждую схему можно формализовать с помощью Х-выражений, действуя так, как в § 3.2.16. Пусть XxF — представляющее схему Х-выражение. Формальный параметр х будет представлять концепт того типа, который требуется определить, а тело F укажет один из способов применения этого типа. Здесь F — логическая формула или представляющий ее канонический граф.'
Определим схематические кластеры с помощью Х-выражений. Схематический кластер для типа t есть множество {XxiAi, ..., XxpFp^ ^-выражений, где каждый формальный параметр xt принадлежит типу t и каждое выражение Xx.Fi — схема для типа t.
В отличие от определений типа, выражающих необходимые условия, схема не обязательно истинна при всяком применении. При заданном схематическом кластере соответствующий концепт применим, если хотя бы одна схема из этого кластера окажется истинной для этого применения.
Теперь сравним определения понятия схемы и прототипа. Схемы показывают типичные способы использования концептов. Они не описывают типичных конкретизаций для этих концептов. Напротив, прототип— это типичная конкретизация (§ 3.2.17). Понятия схемы и схематического кластера позволяют более формали юванно определить прототип.
Прототип р для типа t есть Х-выражение XxF со следующими свойствами;
Формальный параметр х принадлежит типу t.
Прототип р получается сочетанием {по правилу . конъюнкции^ одной или нескольких схем из / схематических кластеров для t и ограничением
(по правилу ограничения) части или всех концептов этих схем только концептами-совокупностями (без индивидов).
При подходящих реализациях схемы соответствуют созвездиям [12], фреймам (кадрам) [74] и сценариям (предписаниям) [98]. Различные примеры схем для иллюстрации этих соответствий даны в разд. 3.3, где вводится объектное представление (в частности, фреймы). Примеры рассуждений с умолчаниями, использующих понятие фрейма, будут приведены в § 3.3.12.
Рассуждения, использующие семантические сети
В книге Совы [102] можно найти строгое описание графовых эквивалентов для правил вывода, таких, как modus ponens и правило обобщения. Ограничимся одним примером рассуждения, относящегося к данным об иерархически организованных фактах. Таким структурам присущи наследственные свойства.
Одна из ключевых проблем организации памяти — эффективное управление данными и запросами. При иерархической организации индивидуальные свойства связаны с именами индивидов. Например, на рис. 3.15 индивидуальные свойства Жака (возраст, адрес, семейное положение и т. д.) связаны с именем Жак_2. Кроме того, наследственное свойство связывает Жака с (абстрактным) концептом профессора университета. Выходящие из узла Жак_2 стрелки представимы набором (конъюнкцией) бинарных предикатов: ■
Возр (Жак_2, 45_лет) Л
Адрес (Жак _2, ул_буля_7) Л (3.7)
Сем_пол (Жак_2, холост) А
Конкр (Жак_2, проф^унив). '
Эти предикаты указывают, что Жаку 45 лет, что он проживает по улице Буля дом 7, холост и принадлежит типу профессоров университета.
Различные имена предикатов, связанные с узлами-индивидами, образуют первое множество гипотез (некой теоремы, какой — уточним потом). Например, вопрос об адресе Жака выражается предикатом Адрес (Жак-2, х). Этот предикат составит цель (заключение) теоремы, достоверные гипотезы которой — названные выше свойства Жака. Доказательство сводится к поиску конкретизации для х, позволяющей вывести названное заключение из гипотез. Проверка показывает, что таковой является ул-буля-7.
Иначе обстоит дело с вопросом: «Какой диплом у Жака?», ибо мы не находим гипотезы вида
Диплом (Жак_2, ...).
Но если воспользоваться связью Конкр, можно получить подходящую гипотезу. Связанная с узлом проф_унив часть графа представима логической формулой:
Конкр (х, проф_унив) щ> ^Диплом (х, доктор) Д Место (х, унив) Д Это (х, проф) К
Это^х, сотр^унив)) (3.8)
Если добавить эту логическую формулу к множеству (индивидуальных) гипотез, то можно, используя обычную технику доказательства теорем, вывести, что Жак имеет докторскую степень. Таким образом, новое множество гипотез и поставленный вопрос составляют формулировку логической теоремы. Исходя из этой формулировки и применяя обычный механизм доказательства, получаем ответ на вопрос.
Механизм доказательства теорем в иерархической среде можно смоделировать следующим образом. Вопрос (составляющий заключение или цель доказываемой теоремы) имеет следующую общую форму.
По-русски: Каково значение некоего индивида по отношению к некоторому свойству?
Логически: Свойство^ (индивидД, х).
Ожидаемый ответ — конкретизация, представляющая некоторое значение для х.
Сначала попытаемся доказать эту теорему, пользуясь лишь гипотезами, прямо связанными с узлом индивид-j в соответствующем графе. Эти гипотезы имеют следующую форму.
По-русски: Значение некоего индивида по отношению к некоторому свойству есть ...
Логически: Свойство^ (индивид-), значение_1).
Если так доказать не удается, используем связь Конкр, исходящую из узла, представляющего индивида и указывающего на новое множество гипотез, ко^ торое имеет следующий общий вид.
По-русски: Если индивид принадлежит типу t, | то он имеет дополнительное - А множество значений по отношению ’ к дополнительному множеству свойств.
Логически: Чх (Конкр (х, TUM-t) td ■ Л^СвойствО-Цх, значение_1^\.
Из этой логической формулы и предиката Конкр (индивид-j, тип-t) выводим новое множество свойств относительно данного индивида. Если эти новые гипотезы позволяют доказать нашу теорему, то доказательство закончено. Если же нет, то связь Это укажет на тип повыше, который в свою очередь даст новое множество гипотез. Эта процедура с последовательными множествами гипотез заведомо эффективнее общего метода доказательства теорем, не использующего иерархической структуры данных. Процедура вывода схематически изображена на рис. 3.18.
Заключение
Основанное на семантических сетях представление знаний может заменить представление, базирующееся на логике предикатов. Мы доказали, что в отличие от логического представления сетевое дает сгруппиро-. ванную вокруг конкретизаций информацию. Кроме того, видение этой информации более глобальное. Се-
Рис. 3.18. Схема процедуры вывода.
мантическис сети принадлежат к моделям, используемым специалистами по БД. Они отражают структуру некой области и реализацию этой структуры на ЭВМ.
В наше время семантические сети используются в системах распознавания естественных языков. Они вмонтированы также в более сложные формализмы, где служат для поддержки описания и классификации сущностей (экспертные системы). Достоинство концептуальных графов — в возможности прямого обобщения на модальные системы и другие формализмы, трудно представимые логикой первого порядка.
Семантические сети могут сосуществовать с другими обозначениями, а также служить для промежуточного представления. Графические обозначения широко используются в качестве промежуточных между естественным языком и каким-нибудь языком программирования. ■
Объектное представление
Введение ' .
Из § 3.2.17 известно, что класс объектов может определяться Одним типичным объектом. Объектное представление можно получить как из логического, так и из сетевого. При объектном представлении собирают из логических формул, содержащих одни и те же конкретизации, более крупные структуры, называемые фреймами. Последние строятся вокруг конкретизаций области рассуждения. Если нужен доступ к информации по одному из этих объектов, то обращаются к соответствующему фрейму и уже внутри блока находят свойства и факты относительно рассматриваемого объекта.
Бинарная версия исчисления предикатов (§§ 3.1.4, 3.1.6) привела к графическим обозначениям через семантические сети (см. разд. 3.2). Бинарный предикат можно представить тройкой вида
(Объект, атрибут_j, значение-]). •
Собрав все тройки с данным объектом, получим объектное представление области рассуждений относительно этого объекта. Общая форма этого представления такова:
Объект, (атрибут-], значение-]), U=L . . ., m).
Значит, вместо построения различных независимых формул строим некую структуру с полной информацией об объекте (§ 3.2.3).
Эти объектные обозначения приняты в новом семействе языков программирования, особенно хорошо приспособленных к выражению знаний в ИИ — объектно-ориентированных языков (§ 3.3.7). ,
Сцепки
Предположим, что мы хотим представить фразы из примера § 3.2.5, т. е. фразы (в компактной форме) «Жак пишет книгу, посылает ее Мари, которая ее читает». В БД с этими фразами использовались конкретизации Жак_2, Мари-4, Посылка_8 и Книга_22 для ссылок в объектном языке на имена концептов метаязыка, упомянутые в этих фразах. Если расширить БД, то добавятся новые концепты и дополнительная информация о них.-
Для использования знаний полезно собрать все факты о данном концепте в одно множество, называемое сцепкой'"> (по-английски unit). В нашем элементарном примере сцепкам Жак-2, Мари-4 и Книга-22 будут соответствовать логические формулы:
Жак „2
Пишет (Жак_2, Книга_22)
Посылает (Жак_2, Мари_4, Книга_22)
Мари_4
.Посылает (Жак_2, Мари_4, Книга_22)
Читает (Мари_4, Книга_22)
Книга_22
Пишет (Жак_2, Книга_22)
Посылает (Жак_2, Мари_4, Книга_22)
Читает (Мари_4, Книга-22)
Фреймы и слоты
Если выразить эти фразы бинарными предикатами то сцепки будут называться фреймами. Из § 3.1.6 известно, что тернарный предикат'
Посылает(Жак_2, Мари_4, Книга_22)
преобразуется в произведение бинарных предикатов
Отправитель (Посылает, Жак_2) Л
Получатель (Посылает, Мари_4) Д
Объект (Посылает, Книга_22).
11 Другие названия — единица, секция.—Прим, перев.
Концепту «посылает» фрейм:
соответствует следующий
ФРЕЙМ
Посылает
{объект)
Отправитель Получатель Объект {атрибуты или имена слотов')
Жак_2(слот-1)
Мари_4(слот-2)
Книга_22(слот-3)
(значения или значения слотов)
Каждая пара (атрибут, значение') фрейма называется слотом или {имя-слота, значение-слот а). Сам фрейм по-английски — slot-and-filler notation. В этих обозначениях различные слоты сгруппированы вокруг объекта, охарактеризованного фреймом.
В обозначениях slot-assertion (§ 3.1.6) соответствующие бинарным предикатам слоты используются как изолированные сущности без группировки в объемлющем их фрейме.
Явные фреймы
В § 3.1.7 показано, что часто бывает полезно представление знаний с явным указанием всех ссылок. Именно поэтому мы постулировали в нашем примере существование вполне, определенной Посылки-8. Фраза «Жак посылает книгу Мари» бинарными предикатами представляется так:
Посылка_8
посылкиЖак_2 Мари_4 Книга _22посылкиЖак_2 Мари_4 Книга _22Элем
посылки
Жак_2 Мари_4 Книга _22
посылки
Жак_2 Мари_4 Книга _22
Отправитель Получатель Объект
Следовательно, в процессе выявления ссылок можно не только дать явные значения аргументов и имена предикатов, но также имена представляющих высказывания логических формул. Например, Посылка^ —■ имя высказывания Посылает (Жак-2, Мари-4, Кни- га.22). Такой формализм называется явным фреймом (по-английски case-frame').
Функциональные фреймы
В § 3.1.8 показано, что представление бинарными предикатами легко можно выразить в функциональной форме. Отношения между Посылка^ и первоначальными аргументами для посылает можно выразить функциями на множестве посылок. Введем следующие функциональные обозначения для фреймов:
Посылка_8
элемотправитель получатель объектэлемотправитель получатель объект(элем_из посылок)
элем
отправитель получатель объект
элем
отправитель получатель объект
Жак_2
Мари_4
Книга_22
Форма «элемент.из» в слоте имеет имя «элем» для указания того, что описанный фреймом объект является элементом некоторого множества (в нашем примере это множество посылок). Определенный таким способом фрейм называется функциональным.
У-квантификация
Посмотрим, как можно осуществлять V-квантификацию переменных при оперировании с фреймами. Фраза «Жак посылает книгу каждой женщине» (§ 3.2.9 и рис. 3.11) записывается бинарными предикатами в следующем виде:
УхЗуЭз ^Отправитель (z, Жак_2) А Получатель (z, х) Д Объект (z, у) А Элем (z, посылки) А Конкр^у, книга) Л Конкр^х, женщина)].
элемотправитель получатель объектэлемотправитель получатель объектМножество представленных переменной г посылок описано функциональным фреймом:'
элем
отправитель получатель объект
элем
отправитель получатель объект
: ]элем_из посылок)
■ yW■ yW: Жак „2'
■ yW
■ yW
Этот фрейм целиком образует область действия квантора общности. Важно отметить, что все представленные фреймами логические формулы записаны в
предваренной сколемовской форме (§§ 1.2.7—1.2.8): отрицания выражены явно, переменные стандартизованы по отдельности, переменные, которые были связаны кванторами существования, замещены и кванторы общности применяются ко всей формуле.
Рассуждения, использующие объектное представление
Объектные представления были введены фактически по прагматическим причинам. Эти представления часто связаны с вполне определенными классами проблем. Объектно-ориентированные языки (известнейший из них Смолток) характеризуются взаимопроникновением структур данных и процедур. Связанные с этими представлениями законы вывода, вообще говоря, лишены формальной строгости правил вывода логики предикатов. Концепция объектных представлений больше направлялась заботой об эффективности исчисления, чем стремлением к его полноте. Очевидно, можно было бы развить для них системы выводов, эквивалентные использованным в логике предикатов. Такой синтаксис был бы весьма громоздок, и его применение лишило бы объектное нредставление его прагматических достоинств. Вместо того чтобы покоиться на полном множестве законов дедукции, различные используемые в ИИ системы используют сокращенные версии классических законов вывода. Попозже мы дадим несколько примеров.
Паросочетание
Определить (аналогичную унификации в логике предикатов) операцию паросочетания (по-английскй matching operation) настоятельно необходимо, если мы хотим использовать объектное представление в качестве БД для запросной системы (query system). До задания свойств операции паросочетания напомним, что объектное представление — альтернатива логическому формализму.
Нильсон [83] предложил следующее определение.
Два объектных представления паросочетательны тогда и только тогда, когда логическую Формулу для
первого можно унифицировать с логической формулой для второго. Слово «унифицировать» означает здесь, что существуют подстановки для переменных, делающие логические формулы идентичными. См. § 1.2.13.
Если наша цель — построить «язык запросов» (query language) для извлечения информации из БД, то нужно более ограниченное определение паросоче- тания. Операция паросочетания вообще не должна быть симметричной в том смысле, что она связывает заключение (объект-цель) с гипотезами (объектами- фактами). Объект-цель «паросочетается» с объектом- фактом, если влекущая объект-цель логическая формула унифицируема с одним из сомножителей объекта-факта (представленного конъюнкцией гипотез и аксиом).
В терминах доказательства теорем это означает, что операция паросочетания может осуществляться тогда и только тогда, когда цель можно доказать из гипотез и аксиом (фактов).
Рассмотрим фрейм-факт ^гипотезу) из § 3.3.5:
Посылка_8
элем:(элем_из посылок)
отправитель : Жак_2.
получатель: Мари_4
объект ,:Книга_22
Можно установить паросочетание этого фрейма-факта с фреймом-целью из § 3.3.6:
z(y) элем:^элем_из посылок)
отправитель:Жак_2
получатель:х
объект:у^х)
Фрейм-цель интерпретируется как вопрос: «Кому Жак послал книгу?» Паросочетание фрейма-цели и фрейма-факта приводит к подстановке {(г, Посылка^), (х, Мари_4), (у, Книга-22)), которую можно интерпретировать как ответ на вопрос (определение подстановки см. в § 1.2.6).
Функциональные атрибуты
Атрибуты описывают множество характеристик, связанных с функциями функционального фрейма. Атрибут не обязательно является конкретизацией некоторых данных вроде Жак„2; с тем же успехом он может быть функциональным выражением. Рассмотрим фразу «Жак посылает книгу Мари, а Поль получает письмо от человека, которому Жак послал книгу». Ее первая часть выражается фреймом из § 3.3.5:
Посылка_8
элем
: ^элем_из посылок)
отправитель
: Жак_2
получатель
: Мари_4
объект
: Книга_22
Вторая часть представляется фреймом, для которого некое функциональное выражение является атрибутом «отправителя»: ■
Посылка_9
элем: ^элем_из посылок)
отправитель: получатель (Посылка_8)
получатель:Поль_6
объект: Письмо_3
Мари_4 и получатель (Посылка-8)—два разных способа представления одного и того же лица.
Если пытаемся установить паросочетание между фреймами, содержащими функциональные выражения в качестве атрибутов, то следует предположить, что эти выражения получат значения сразу, как только это будет возможно. Присваивание значений осуществляется посредством ссылки на объект, указанный аргументом этой функции.
Предположим, что поставлен вопрос: «Посылала ли Мари что-нибудь кому-нибудь?», представимый фреймом-целью:
z(x)
элем .". ^элем-из посылок) .
отправитель : Мари_4 получатель : х объект :у'
Множество фреймов-фактов содержит Посылку-8 и Посылку-9. Так как получатель (Посылка-8) может получить значение Мари-4, то фрейм Посылка-9 получит Мари-4 в качестве значения функции отправитель. Ответ на вопрос даст паросочетание фрейма Посылка-9 с фреймом z.
С помощью подстановки, {(х, Поль-6), (у, Пись- моЛ)} можно получить ответ «да, Мари отправила письмо Полю». ’
Автоматические рассуждения, использующие фреймы
Из § 3.3.9 известно, что атрибуты функций во фреймах не обязательно константы или конкретизации, но могут также быть функциональными выражениями. Сделаем еще шаг и рассмотрим еще одну возможность для атрибутов (представляющих множество связанных с объектами характеристик)—быть процедурами или подпрограммами. Это приводит нас к понятию объектно-ориентированных языков, предназна ченных для автоматических рассуждений на основе объектного представления.
Язык KRL *> [8] — объектно-ориентированный, основанный на представлении знаний фреймами. В нем все знания описаны в терминах UNITS-KRL. Ограничимся двумя примерами ([92] с. 397—401):
[Путешествие UNIT Абстрактное
(SELF. (Событие))
^способ (ИЛИ Авиа Авто Поезд))'
(назначение (Город))]
[Путешествие UNIT Абстрактное
(SELF (Взаимодействие))
(визитер (Человек))
(визит (Множество из (Человек)))] .
Первую часть можно интерпретировать следующим образом. «Путешествие — абстрактное понятие, связанное с самолетом, машиной или поездом и имеющее
4) «Язык представления знаний». — Прим, перев.
некий город пунктом назначения». Вторую часть можно интерпретировать аналогично. KRL материализует некоторый процесс рассуждений, управляемый правилом паросочетания (§§ 3.3.8—3.3.9).
Иерархические рассуждения, использующие фреймы
Операция паросочетания аналогична унификации из логики предикатов. Можно также связать объектное представление с более мощными правилами вывода, такими как теорема дедукции. Нильсон [83] и Сова [102] предложили общие операции дедукции, использующие объектный формализм и базирующиеся на логической импликации и правиле modus ponens.
Рассмотрим лишь частный случай одного нередко используемого закона дедукции, в соответствии с которым с помощью импликации приписываются свойства каждому элементу определенного множества. Речь идет о свойстве наследования, уже рассмотренном в § 3.2.13. Займемся иерархией, приведенной на рис. 3.15, где типы «профессор университета» и «профессор» заменены соответствующими множествами. Концептуальный граф, окружающий узел Жак-2, представляется объектно и логически (см. § 3.2.19) следующим образом:
Объектные обозначения
Жак_2
элем: ^элем_из проф_унив)
возр' 45_лет
одр: ул_буля_7'
сем_пол : холост
Логические обозначения (Факт).
Элем (Жак_2, проф_унив) /\
Возр ^Жак_2, 45_лет) Д'(3.9)
Адр ^Жак_2, ул_буля_7) Д
' Сем_пол ^Жак_2, холост)
Мы видели, что вопросы наподобие «Сколько лет Жаку?» или «Кто проживает по улице Буля дом 7?»
представимы фреймом-целью или логическим заключением:'-
Объектные обозначения Логические обозначения (Цель)
• Жак_2'
возр: х ■Возр (Жак_2, х)
• У
адр : ул_буля_7Адр(у, ул_буля_7)
Из §§ 3.3.8—3.3.9 мы знаем, как получить ответы на эти вопросы, используя операцию паросочетания (для объектных обозначений) или унификацию (для логических).
Далее рассмотрим вопрос «Какой диплом у Жака?», формализованный следующим образом:
Объектные обозначения Логические обозначения
(Цель)
Жак_2.(3.10)
дипл : уДипл (Жак_2, у)
Нельзя получить немедленного ответа на этот вопрос. Придется обратиться к объектным и логическим обозначениям, описывающим свойства индивида х из множества преподавателей университета (см. рис. 3.15 и §3.2.19): '
Объектные обозначения{х | проф_унив) дипл : доктор место: у нивОбъектные обозначения{х | проф_унив) дипл : доктор место: у нивЛогические обозначения(Правило)Элем (х, проф^унив) zd ^Дипл (х, доктор) Л . Место (х, у нив))(3.11)Логические обозначения(Правило)Элем (х, проф^унив) zd ^Дипл (х, доктор) Л . Место (х, у нив))(3.11)
Объектные обозначения
{х | проф_унив) дипл : доктор место: у нив
Объектные обозначения
{х | проф_унив) дипл : доктор место: у нив
Логические обозначения
(Правило)
Элем (х, проф^унив) zd ^Дипл (х, доктор) Л . Место (х, у нив))(3.11)
Логические обозначения
(Правило)
Элем (х, проф^унив) zd ^Дипл (х, доктор) Л . Место (х, у нив))(3.11)
Осуществим паросочетание и унификацию целей (3.10) с правилами (3.11) для получения новой цели .(3.12): ■
Объектные обозначенияЖак_2 элем : (элем_из проф_унив)Объектные обозначенияЖак_2 элем : (элем_из проф_унив)Логические обозначения(Цель)Элем (Жак_2,'.проф_унив) (3.12)Логические обозначения(Цель)Элем (Жак_2,'.проф_унив) (3.12)
Объектные обозначения
Жак_2 элем : (элем_из проф_унив)
Объектные обозначения
Жак_2 элем : (элем_из проф_унив)
Логические обозначения
(Цель)
Элем (Жак_2,'.
проф_унив) (3.12)
Логические обозначения
(Цель)
Элем (Жак_2,'.
проф_унив) (3.12)
Эта новая цель точно соответствует фразе «Жак — профессор университета», что является фактом. Ответ «Жак имеет степень доктора» также найден. Такой вид доказательства отвечает системе прямой дедукции (§3.1.22).
Если нельзя ответить на вопрос, рассматривая свойства индивида ^Жак_2) или содержащего его множества (проф_унив), то обратимся к новому множеству (проф), подмножеством которого является прежнее. Подмножество профессоров университета связано с множеством профессоров следующим образом:
Объектные обозначения Логические обозначения
проф_унив
элем : (подмнож в проф) Подмн (проф_унив, проф) (3.13)
Рассуждения с умолчаниями
Изучавшиеся до сих пор представления уязвимы для следующего упрека. Они предполагают строгие рассуждения, тогда как не всегда можно опереться на формально точные знания. Используемые экспертами в большинстве областей правила лишь приблизительно точны и не всегда применимы. Многочисленные описания вида «все х имеют свойство Р» надо считать лишь приблизительно истинными. Например, можно говорить, что «все птицы летают (за исключением страусов, пингвинов и т. д.)».
Вообще интересно использовать знания, вроде «все птицы летают», и подвергать рассуждения сомнению лишь в некоторых заранее известных исключительных случаях. Это называется рассуждениями с умолчаниями. Предложены многочисленные формализации для выражения «все х имеют свойство Р, за исключением тех случаев, когда явно указано противное для некоторых конкретизаций переменной х».
Изложим формализм, основанный на объектном представлении [83, с. 408] и допускающий построение рассуждения с умолчаниями. Рассматриваемый нами подход сохраняет определенную простоту рассужде-
ний. Он состоит в разрешении осуществлять исключения в рассуждениях, проведенных по правилу у-квантификации, действующему на формулы с импликацией. Утверждение вида «все преподаватели университета имеют степень доктора» можно поначалу сделать без всяких исключений. Из него выводим, что «Жак Имеет степень доктора, если Жак преподает в университете». Если в дальнейшем выяснится, что Жак не имеет степени доктора, то мы аннулируем нашу дедукцию и так изменим универсальное утверждение о преподавателях университета, чтобы Жак оказался исключенным.
Способ, которым операция паросочетания использует наследственное свойство, может дать автоматический механизм обработки исключений такого рода. Управляющий операцией паросочетания механизм может использовать наследственное свойство для вывода некоего свойства объекта, только если специфическая информация об этом свойстве не появляется в соответствующем этому объекту фрейме. Например, мы интересуемся, какой диплом у Жака. Для ответа на вопрос сначала попробуем установить паросочета- ние фрейма-цели с фреймом-фактом. Если фрейм- факт по Жаку имеет вид
Жак_2
элем : ^элем_из проф_унив) дипл : магистр
то паросочетание вовлекает унификацию (у, магистр) и ответ таков: магистр (Жак имеет диплом магистра). Наоборот, если фрейм-факт по Жаку говорит лишь, что он профессор университета;
Жак_2'
элем ". ^элем_из проф_унив)
то механизм паросочетания использует фрейм
{х | проф_унив},
дипл: доктор
и ответ — доктор.
-w
208208Представление знаний и рассуждений.
208
208
Заключение
Логика предикатов применима для представления знаний, используемых некоторыми системами ИИ. Однако существуют специфические виды знаний, с трудом представимые языком логики предикатов. Поэтому мы ввели неклассические (модальную и временную) логики и альтернативные (сетевое и объектное) представления. '
С другой стороны, мы указали различные методы рассуждений, связанных с логическим, сетевым и объектным представлениями. Кроме того, определили рассуждения с умолчаниями в рамках объектного представления.
Это подвело нас к введению других видов рассуждений (таких как рассуждения здравого смысла, нестрогие рассуждения по поводу предположений и модифицируемые рассуждения), формализация которых дается в гл. 4.
. 4. Логика
и модифицируемые рассуждения
Многочисленные роли логики
Введение
В гл. 3 введены различные элементарные формы представления знаний: логическая, сетевая и объектная. Две последние часто являются альтернативой первой. Было показано, что их можно переписать и переинтерпретировать с помощью логического формализма. Таким образом, мы подошли к вопросу о реальной роли логики в методах представления знаний и рассуждений.
В действительности форма вклада, который математическая логика должна вносить в развитие методов представления знаний и рассуждений, остается предметом нескончаемых дебатов. В этой связи возможны различные, не исключающие друг друга, точки зрения:
Логика может рассматриваться как средство, хорошо подходящее для представления знаний и рассуждений.
Логика может рассматриваться как формализм для ссылок.
Логика может рассматриваться как метод подтверждения рассуждений и семантического анализа представленных знаний..
В параграфах этого раздела будут развиты эти различные точки зрения на роль логики.
Логика как средство
Для представления знаний и рассуждений
Предмет формальной логики — корректные формы рассуждений. Она предоставляет различные средства Формализации и анализа правильности дедуктивных
рассуждений. Эти средства рассмотрены в гл. 1: системы семантической оценки и системы вывода формул.
Методы формализации и обоснования рассуждений были привиты на различные языки, позволяющие представлять знания. Важнейшее свойство этих языков состоит в том, что они предоставляют пользователю строгий синтаксис. Второе свойство заключено в существовании средств связи с семантикой. Это позволяет установить однозначное соответствие между миром и его представлением в языке. Более того, они обеспечивают обоснование выводов, которые можно сделать из представленных знаний.
Таким образом, логическая система будет состоять из языка, формальной семантики и системы вывода *>. Эти логические средства можно применять довольно непосредственно. Логические языки служат опорой для выражения знаний, которые также представлены декларативно в виде логических выражений. Рассуждение определяется как операция доказательства общезначимости или выполнимости логического утверждения. Напомним, что логическая формула общезначима, если все ее интерпретации являются моделями, и выполнима, если допускает хотя бы одну модель (§§ 1.1.6, 1.2.5). Рассуждения осуществляются окольным путем, посредством манипулирования дедуктивными компонентами рассматриваемой логической системы. Например, такими компонентами являются классические аксиоматические системы (§§ 2.1.3, 2.1.8), системы натурального вывода (§§ 2.1.7, 2.1.9) или семантика рассматриваемой логической системы. Так как процесс доказательства должен быть автоматизирован, то это очень часто реализуется методами поиска, причем производится систематическая манипуляция с дедуктивной компонентой.
Этот способ действий ведет к методу логического программирования [58], [63], который можно прямо использовать для представления знаний и рассужде-
*> Это верно для большинства обычных логических систем, но некоторые из названных средств могут отсутствовать у отдельных систем. Например, интенсиональные логики Монтегю [76] лишены системы вывода.
ний. Наиболее распространенной системой такого сорта является язык Пролог [19], [18] — соединение метода резолюций (§§ 1.1.12, 1.2.14), языка хорновских дизъюнктов (§ 1.1.6), метода поиска вглубь типа обратного вывода (§ 3.1.23) и использование отрицания для получения противоречия [17].
Подобные системы будут описаны в гл. 5 и 6. Здесь мы ограничимся анализом их пригодности для представления знаний и рассуждений. Он имеет три аспекта: эпистемический, дедуктивный и связанный с алгоритмической эффективностью.
Эпистемический аспект
Поскольку конечная цель — представление знаний, основным критерием адекватности используемого логического языка является его выразительность. Системы ИИ чаще всего ограничиваются применением логических языков порядков 0 и 1: логики высказываний и логики предикатов. Логика предикатов служит эталоном выразительности для альтернативных систем [44]. Кстати, она достаточно выразительна для решения многих проблем представления знаний в ИИ, но не универсальна. Некоторые знания формализуемы лишь в логических языках высших порядков. Например, квантификация формул не представима в логике порядка 1.
Была отмечена трудность формализации некоторых знаний в обычных логических языках. Типичные примеры — пространственно-временные отношения, для которых лучше приспособлены специфические логики, в частности модальные (§ 3.1.11).
С другой стороны, основные логические системы не оснащены средствами структурирования и агрегирования знаний. Применение систем классификации и типизации объектов через механизм ассоциированного доступа прямо не предусмотрено. Иногда ищется компромисс через соединение чисто логических методов с объектным и сетевым представлениями (разд. 3.2, 3.3). Системы классификации и механизмы доступа объектного формализма используются для иерархического таксономического ° представления термов, на *' Или, иначе, классификационного. — Прим, перее.
которые ссылаются логические утверждения (§§ 3.2.19, 3.3.11). Логический язык дополняющим образом используется для представления позитивных знаний об этих термах. Реализованный в системе KRYPTON [9] союз между логической и сетевой системами опирается не только на эпистемический аспект, но и на аспект эффективности. Чтобы оттенить сказанное, заметим, что недавние применения систем логического программирования (вроде распространенной системы Пролога LOGIN [2]) направлены на внесение в логику систем классификации с наследованием свойств (§ 3.2.13).
Дедуктивный аспект .
Формальная логика связана с формализацией и обоснованием корректных рассуждений. Последние также называются общезначимыми; их правильность несомненна при всех интерпретациях. Дедуктивные системы логики специально приспособлены для формализации этого класса рассуждений. А распространяется ли их полезность на другие классы?
Рассуждения, которые желательно моделировать в приложениях ИИ, не все общезначимы. Часто они приблизительны и неопределенны по сути или от неполноты, или неопределенности предпосылок. Выведенные из неопределенных рассуждений заключения должны допускать возможность отказа от них, если предпосылки, приведшие к принятию предположения о возможности этих заключений, больше не подтверждаются или если новая информация блокировала эту дедукцию. Дедуктивные системы логики не позволяют прямо формализовать модифицируемые рассуждения. Симптом этой ограниченности — свойство монотонности всех обычных логических систем: множество теорем такой системы лишь растет с увеличением множества основных аксиом. Различные логические системы, формализующие модифицируемые рассуждения, будут введены и подробно описаны в последующих разделах этой главы.
Аспект эффективности
Эффективность важна во всех практических применениях дедуктивных принципов логики. Особое внимание следует обратить на стратегию проведения преобразований в дедуктивной системе. Ей грозит комбинаторный взрыв пространства поиска, могущего подчас стать бесконечным. Существенное неудобство — неразрешимость логических систем, наблюдаемая с тех пор, как она поразила логику предикатов (§2.2.11). ' .
Логика как формализм ссылок
Если можно считать логику средством представления знаний и рассуждений (возможно, в сочетании с более адекватными альтернативными системами), то можно признать за ней и другие роли. Можно интерпретировать логику как формализм ссылок, полезный на разных уровнях в определении других эффективных методов представления. Прежде всего, она может служить их строгому определению. Переписыванием языков и законов в логический формализм можно уточнить семантику этих методов. Логика предикатов широко используется для этого [44], но не всегда дает достаточно выразительную систему. Например, системы множественного наследования с исключениями (§ 3.3.12) позволяют выразить немонотонные формы рассуждений. Их нельзя прямо переписать в логику предикатов, но можно строго определить в более развитых логических языках [110].
Так как многочисленные формализмы можно переписать на логический язык, то последний — эталон выразительности. Альтернативный формализм можно строго определить путем переписывания его языка и законов в рамках логики. Сам он, вроде бы, и не нужен. Однако объективно уступающие логике предикатов методы представления бывают привлекательны приростом некой эффективной выразительности. С Паскаля можно все перевести на язык ассемблера. Тем не менее Паскаль обладает в некоторых отношениях превосходящей эффективной выразительностью. Так же как и некий формализм, сводимый к логике предикатов.
Особенно это относится к сетевым (разд. 3.2) и объектным (разд. 3.3) представлениям. Ранее мы продемонстрировали перевод zn-арных предикатов в бинарные и их интерпретации в сетевом и объектном представлениях. Таким образом, эти представления «эквивалентны» логическому в смысле возможности взаимного преобразования. Между тем было показано, что сетевое и объектное представления дают «структурный» образ мира, чего логическое представление само не делает.'
Логика может также выполнять роль блюстителя логических принципов и правил во всех системах, кроме явно оговоренных исключений. Соблюдение этих принципов в данном формализме можно проверить переписыванием их в логический или простым сравнением с ним.
Неизбежность логики
Иногда утверждают, что некоторые проблемы представления знаний и рассуждений решаемы лишь с помощью логических языков и ассоциированных дедуктивных систем (как бы то ни было с ролью логики как системы ссылок или средства точного определения других формализмов). В частности, благодаря точному определению принципов применения операторов и связок (вроде конъюнкции, дизъюнкции, отрицания, равенства, кванторов существования и общности) логика позволяет задать некоторые часто полезные парадигмы рассуждений [77].
Например, логика предикатов с равенством (§ 2.1.10) дает возможность:
выразить, что нечто обладает определенным свойством, не указывая, что именно (роль 3- квантификации),
выразить, что каждый элемент некоего класса обладает определенным свойством, без указания, что представляет из себя каждый такой элемент (роль У-квантификации),
выразить, что хотя бы одно из двух утверждений истинно, не говоря, какое именно (роль дизъюнкции),
явно сказать, что нечто ложно (роль отрицания),
утверждать или оставлять неустановленным тот факт, что два различных выражения означают один и тот же объект (роль равенства).
Даже если бы дело дошло до задумывания нелогического формализма, опирающегося на эти функциональные средства выразимости и дедуктивности, то естественно возник бы вопрос о возможности обретения вновь некой разновидности логики.
Эти парадигмы полезны и подчас необходимы при решении многих проблем (в частности, требующих рассуждений в условиях неполной информации). Вот пример [77]. Три блока А, В и С расположены в линию (рис. 4.1). Известно, что А зеленый и С синий. Цвет В неизвестен. Находится ли зеленый блок рядом с незеленым? Ответ «да»: если В зеленый, то он рядом с незеленым С. Если В незеленый, то он рядом с зеленым А.
Согласно Муру, три трудно познаваемых в нелогическом формализме логических фактора вплетены в рассуждения для обретения возможности:
увидеть истинность 3-квантифицированного высказывания, не зная, какой объект делает его истинным,
распознать подтверждаемость некоего высказывания, либо его отрицания,
рассматривать ряд случаев по отдельности.
Анализ знаний и рассуждений
Иные авторы приписывают логике в основном функции семантического анализа знаний и обоснования выводов [43], [82].
Представить знания — это значит выразить в некотором формализме имеющийся у нас образ мира.
А В С
Рис. 4.1. Пример.
представлениемпредставлениемСоответствие между миром и его
представлением
представлением
устанавливается семантическим анализом. Такой анализ имеет целью определить объекты представления и уточнить образ мира, определяемый представлением. Следовательно, оно должно позволить осуществлять анализ истинности высказываний о мире. Иначе говоря, для плодотворности представления нужно, чтобы оно могло быть предметом анализа, использующего информацию из этого представления для выявления того, что свойственно миру, а что нет. С этой точки зрения обоснованный вывод или дедукция «подтверждаются» видением мира, который опре
делен семантическим анализом представления.
Сказать, что Р. Рейган все еще жив и является президентом США,— это значит вообразить мир, где истинно, что Р. Рейган жив, но и равным образом ложно, что он мертв и что другой человек является президентом США, если известно, что у власти может находиться лишь один президент.
Семантический анализ представленного в некотором формализме знания должен позволять определить, что в этом воображаемом мире влечет истину, а что —ложь. Даже если анализ облечен другими аспектами, подобная операция относится по определению к компетенции логики и делает особенно полезным обращение к теории моделей [43], [77], [82]: «...нелогический анализ знаний — такая же чушь, как программирование без программистов...» [82, с. 17].
Итак, логику можно считать преимущественно средством анализа знаний и. рассуждений. В свою очередь это вызывает другие рассмотрения.
Заключение
Роль логики в проблематике представления знаний и рассуждений многообразна.
Логику можно прямо использовать для представления знаний и рассуждений.
Она может пригодиться для ссылок и как эталон выразительности, модель компетенции, гарант элементарных логических принципов. Мо-
жет помочь в точном определении альтернативных методов.
Она определяет принципы и законы, незаменимые при решении многих проблем.
Она позволяет анализировать смысл некоего представления знаний и обоснованность выводов.
В этом отношении она является преимущественно средством анализа знаний и рассуждений как таковых.
Логика и модифицируемые рассуждения
Формализация модифицируемых рассуждений
Классическая логика формализует строго корректные рассуждения. Моделирование встречающихся в ИИ рассуждений не должно ограничиваться формализацией непогрешимого интеллекта. Наш интеллект часто способен вырабатывать разумные рассуждения в условиях неопределенности. Имея дело с неполной, неточной или изменчивой информацией, наши рассуждения часто предположительны, всего лишь правдоподобны и должны подвергаться пересмотру. Рассмотрим пример. «Зная, что большинство птиц может летать и что Тити — птица, я заключаю, что Тити может летать». Этот вывод кажется приемлемым. Между тем он не является абсолютно корректным и общезначимым, ибо не учитывает возможных исключений. Следовательно, он неточен и подлежит пересмотру. Если уточнено, что Тити — страус, то утверждение «Тити может летать» отвергается.
Априори ясно, что логическая система для формализации модифицируемых рассуждений должна быть немонотонной. Численность теорем, которые можно получить, может уменьшаться при росте числа основных аксиом или предпосылок.-.
Классическая логика и общезначимые рассуждения.
Дедуктивные системы классической логики ограничиваются формализацией общезначимых рассуждений
(разд. 2.1). Следовательно, как таковые они не подходят для формализации нестрогих и модифицируемых рассуждений. Фундаментальные свойства формальных систем дедукции ясно свидетельствуют об этой ограниченности.
Формальная система дедукции классической логики состоит из множества схем аксиом и правил вывода (разд. 2.1). Она позволяет делать заключения из предпосылок. Таким образом, между формулами определено отношение выводимости Н, которое [35]:
. • рефлексивно: {рь ..., рп, 9} Н q,
монотонно: если {р,, . .., pn}\-q, то (Рь • •■, Рп, r}\-q,
транзитивно: если {р1, ..., pn} I— г и }Р\рп, г} Hq, то
. {piрп} и q. ■
Здесь рь ..., рп, q, г — формулы рассматриваемого логического языка. Эти фундаментальные свойства формализуют требования к общезначимым рассуждениям:
Вывод заключения, идентичного одной из посылок, есть общезначимая операция.
Полученный результат не опровергается дальнейшими.
Промежуточные результаты можно использовать для установления общезначимости заключения.
Формальные системы дедукции классической логики предстают как алгебраические системы переписывания с учетом этих требований. Свойство монотонности препятствует прямой формализации модифицируемых рассуждений. Следовательно, с чисто синтаксической точки зрения построение немонотонной системы вывода делает необходимым ослабление свойств дедуктивных систем классической логики. Классическое определение отношения семантического следования непригодно для формализации модифицируемых рассуждений.
Семантическая характеризация логической системы состоит в приписывании семантических значений выражениям языка посредством интерпретации. Если последняя истинна, то она есть модель (§ 1.2.5). Эта характеризация осуществляется посредством приписывания. семантических значений основным выражениям языка и определения правил семантической оценки *> более сложных выражений. Например, таков композиционный принцип, который был описан в §§ 1.1.4, 3.1.10.
Отношение семантического следования |= (§ 1.1.6) между множеством посылок А и заключением р классически определяется так:
А |= р, если любая модель для А является моделью для р. В этом определении слово «любая» влечет, что из А можно вывести лишь «точные» («общезначимые») следствия.
Модифицируемое рассуждение не является в классическом смысле общезначимым. Вывести р из множества посылок А и отказаться от р, как только информация q будет добавлена к А, означает, что допустимо вывести р, в то время как существует модель для A (J (у) (которая тем более является моделью для Л), не подтверждающая р.
Для построения немонотонной логики нужно определить отношение вывода, позволяющее получать заключения, которые подтверждаются не во всех моделях для посылок.
Неадекватность систем дедукции классической логики для формализации модифицируемых рассуждений объясняется также тем, что их правила вывода являются лишь позволяющими [74]. Они всегда имеют вид: «q— теорема, если pi, р^рп— теоремы». Это позволяет лишь получать новые теоремы, но не отказываться от ранее полученных теорем. Моделирующая модифицируемые рассуждения система должна была бы содержать также ограничивающие правила вида: «q— теорема, если рь рг, ..., рп — не теоремы».
11 Или, иначе, означивания. —<Др«ж. перев.
Характеристики немонотонных логик
Немонотонные логики должны иметь системы вывода для моделирования модифицируемых (следовательно, необщезначимых в классическом смысле) рассуждений. Формализующая эти рассуждения система вывода должна давать «правдоподобные» формулы. С семантической точки зрения это' сводится к выводу выполнимых вместе с посылками формул (в смысле их подтверждения хотя бы в одной модели). В этом предположении моделируют разумного субъекта, заключения которого выполнимы вместе с множеством исходных сведений. Например, заключение «Тити летает» не является общезначимым следствием из множества двух посылок: «Большинство птиц летает» и «Тити — птица». Оно просто выполнимо с этим множеством. Следовательно, заключение принадлежит к. возможно выполнимому на основе двух своих посылок образу мира.
С другой стороны, кажется разумным потребовать, чтобы невыполнимые в совокупности заключения не выводились бы все вместе. Даже от способного лишь на правдоподобные заключения субъекта можно потребовать согласованности утверждений. Недопустимо ему утверждать одновременно «Тити летает» и «Тити не летает».
Требование выполнимости связано с модифицируемостью. При поступлении новой информации предположения могут стать невыполнимыми с новым множеством посылок и будут отвергнуты. Узнав, что Тити — страус, и зная, что страусы не летают, мы отвергнем утверждение: «Тити летает».
Немонотонная логика даст возможность выводить формулы, выполнимые как сами по себе, так и с данным множеством посылок. В этом контексте нужно выяснить ряд логических вопросов.
Каков статут для формул, которые могут быть выведены?
Они больше не тавтологии и не общезначимы, (в классическом смысле) по отношению к своим посылкам, но лишь выполнимы с ними (§§ 1.1.6, 1.2.5).
Какова структура множеств выведенных формул?
В классической дедуктивной системе растущее множество образуют все заключения, выводимые из множества посылок. Множество посылок можно увеличить лишь вместе с увеличением множества заключений. Немонотонная система* не обязана обладать этим свойством. Из нее можно получить, используя правила вывода, различные несовместные множества формул. Отдельно взятое множество заключений существенно зависит от порядка применения правил вывода. Если выведена всего лишь правдоподобная формула, то следует запретить дальнейшее выведение других прав’доподобных (но невыполнимых вместе с первой) формул. Например, если выведено «Тити летает», то нельзя выводить «Тити не летает». И наоборот. Таким образом, в зависимости от порядка применения правил вывода можно получить два разных множества формул.
Как избежать наличия нескольких несовместимых множеств возможных заключений?
Можно ослабить монотонность (§ 4.2.2) до ограниченной" монотонности [35]:
если VPi, • ■ •, Рп) 1~ г и{Р1рп} |~ 9. то {рь...
•••> Рп, И |~ 9
(где |~ есть символ отношения выводимости в рассматриваемой системе).
Заметим, что ограниченная монотонность не позволяет моделировать взаимно несовместимые альтернативы рассуждений.
Как охарактеризовать множества возможных заключений?
Когда формулы сначала выводят, а потом отвергают, утрачивается простая итеративная структура классических аксиоматических систем (§ 2.1.2), позволяющая строить и перечислять множества возможных заключений.
Охарактеризуем множества выводимых формул с помощью «неподвижных точек» соответствующих операций. Неподвижная точка представляет собой устойчивое множество предположений, из которого нельзя вывести никакую новую выполнимую формулу. Этот метод непосредственно применяется в немонотонных логиках Мак-Дермотта (разд. 4.5). В логиках умолчаний Рейтера (разд. 4.3) он предстает в виде расширений с умолчаниями, а в автоэпистемических логиках Столнекера и Мура (разд. 4.6) — в виде устойчивых расширений, полных и легальных множеств заключений идеально разумного субъекта, выведенных из множества посылок.
Что станет с понятиями теоремы, общезначимого вывода и доказательства?
Мнения расходятся. В классической логике теорема — это тавтология и результат общезначимых выводов. В теории формальных языков теорема понимается шире, как утверждение, выводимое с помощью системы подстановок термов (которая не обязательно дает общезначимые выводы). В немонотонной логике за «теоремы» можно принять формулы, присутствующие во всех выводимых устойчивых множествах утверждений. Можно также поинтересоваться строением одного из этих множеств. Тогда будут представлять интерес и все утверждения, которые могут выражать картину мира, нарисованную неким субъектом с использованием исходных предположений и с соблюдением свойства выполнимости. В последнем случае доказательство сводится к установлению существования для данной формулы устойчивого выполнимого множества предположений. Оно должно быть выводимым из рассматриваемых посылок и содержать нашу формулу.
Что будет с классическими метатеоремами?
Без монотонности большинство метатеорем классической логики станут необщезначимыми. Например, метатеорема дедукции (§ 2.1.4) неверна в немонотонных логиках Мак-Дермотта (разд. 4.5).
Зацикливание правил немонотонного вывода
Если немонотонная система должна сама обеспечивать отказ от своих выводов, то ее правила вывода должны быть модифицируемыми. Их применение может динамически блокироваться. Для этого они оснащаются условиями применения, проверка которых динамически изменяется вместе с множеством посылок. Эти правила будем называть правилами немонотонного вывода. Их условия (называемые предусловиями) позволяют проверять (до вывода) выполнимость некоего утверждения вместе с уже выведенными утверждениями в этой системе из существующего множества посылок.
Рассмотрим правило «если х птица, то х летает». Сделаем его правую часть выводимой, когда она всего лишь выполнима вместе с посылками и другими (уже выведенными) формулами. Для этого преобразуем наше правило в «если х птица и если выполним вывод, что х летает, то х летает». Условие выполнимости само может ставиться в форме невыводи- мости некоего утверждения: «Если выполним вывод, что х летает» можно заменить на «если нельзя вывести, что х не летает».
Проверка такого рода предусловий может динамически изменяться вместе с множеством формул, уже выведенных системой, успешно сокращая множество утверждений, выполнимых при данном состоянии системы. ■
Как интерпретировать условия выполнимости и выводимости, используемые в этих предусловиях? В самом деле, интерпретация этих условий должна апеллировать к отношению выводимости, заданному системой, которая содержит эти правила с предусловиями. Интерпретация понятия выводимости, входящего в предусловие «нельзя сделать вывод, что х не летает», должна учитывать то, что можно вывести с помощью оснащенных этим предусловием правил.
Есть опасность зацикливания в определении и интерпретации отношения выводимости. Для проверки невыводимости некоего утверждения модифицируемые правила должны апеллировать к содержащей их
системе вывода. Таким образом, для проверки предусловия «нельзя сделать вывод, что х не летает» придется рассматривать все правила вывода системы, включая немонотонные.’
Следовательно, нельзя определить независимые отношения выводимости, чтобы задать проверку условий применения модифицируемых правил, с одной стороны, и охарактеризовать оснащенную правилами с предусловиями систему вывода, с другой стороны.
Рассмотрим эту проблему ближе. Пусть р — высказывание, А — множество высказываний, считающихся посылками. Определим примитив UNLESS [97], [59] следующим образом:
• UNLESS (р) истинно тогда и только тогда, когда р недоказуемо с использованием множества посылок А в логике высказываний.
Этот примитив можно применять в определении правил немонотонного вывода перед разрешением получить новое утверждение, исходя из предположения о невыводимости некоторых других утверждений.
Для этого применим UNLESS к высказываниям данного языка как оператор истинности. Дедуктивная система логики высказываний, пополненная новыми правилами с этим оператором и примененная к множеству посылок А, немонотонна. Но она не обладает желаемыми свойствами. В частности, противореча уже изученному, она не запрещает вывести одновременно р и UNLESS (р), ибо UNLESS не зависит от нового отношения выводимости (как хотелось бы), но лишь от дедуктивной системы логики высказываний.
Действительно, вообразим немонотонное правило UNLESS (q) |~ р.
Предполагая недоказуемость р из множества посылок А в логике высказываний, выводим UN LESS (р), опираясь прямо на определение UNLESS. С другой стороны, если q недоказуемо из множества посылок А в логике высказываний, то получаем UNLESS^q). Из последнего по правилу немонотонного вывода следует р.
Итак, годная для проверки условия немонотонного правила система выводы должна содержать это правило.
Полирасширяемость немонотонной системы
Проиллюстрируем проблему полирасширяемости немонотонной системы. Для этого предположим, что UNLESS корректно определен и зависит не только от исчисления высказываний, но и от всех других правил и аксиом данной системы. Последние могут и сами использовать примитив UNLESS.
Пусть 2?р — пополненный оператором UNLESS язык исчисления высказываний. А — множество {а, а Л UNLESS(b) zd с, а Л UNLESS (с) zd 6}, где а, b и с — высказывания из 2?р. Очевидно, либо Ь, либо с выводимы из А, но не оба сразу. Действительно, если b невыводимо в этой системе, то имеем UN LESS (b). Откуда можно вывести с. Но тогда нельзя вывести UN LESS (с). Совершенно симметрично, если невыводимо с, то выводимо Ь. Так можно получить различные несовместные множества заключений из одного множества посылок.
Различные формы немонотонных рассуждений
Природа модифицируемых рассуждений различна. Причины модификации знаний самые разные. Для выбора наиболее адекватных методов моделирования надо понимать явления и гипотезы, участвующие в рассуждениях.
Выделим два класса модифицируемых рассуждений.
Рассуждения, модифицируемые из-за неопределенности и гипотетичности: Вообще объекты типа X имеют свойство Р. Если А — объект типа X, то я делаю вывод, что А ^по-видимо- му) обладает 'свойством Р. Пример: «Если ■ 'Тити—птица, то я вывожу, что (по-видимому)
Тити летает».
8 А. Тейз и др.
Знание, которое позволяет выводить подобные заключения, принадлежит к типу «большинство птиц летает» или «типичная птица летает». Это рассуждение неточно и дополнительная информация может привести к его модификации.
Рассуждения, модифицируемые по интроспективной •> природе:
Исходя из состояния моих знаний, я могу сделать вывод, что...»
Пример: «Мне ничего не известно о старшем брате, и отсюда я делаю вывод, что у меня нет ' старшего брата».
Утверждение о том, что у меня нет старшего брата, сделано не потому, что «правдоподобно», что его у меня нет. Механизм рассуждения иной. Он интроспективен и основан на предположении о том, что все знания, имеющиеся по этому вопросу, таковы: «если бы у меня был старший брат, то я бы об этом знал».
Можно потребовать от этих рассуждений, чтобы они осуществлялись «определенным образом», в предположении наличия и корректности всей соответствующей информации, полагая при этом, что все, что не дано, ложно. Иначе говоря, можно потребовать от рассуждений «общезначимости» относительно этого состояния знаний [80]. Модифицируемый характер рассуждений проистекает из зависимости от состояния знаний. Оно присуще рассуждающему субъекту и может изменяться.
Попутно заметим, что многие модифицируемые от неопределенности рассуждения моделируемы интроспективно. Но различие между двумя классами модифицируемых логик важно для понимания областей применимости разных немонотонных логик. Последние перечислены ниже и описаны далее в этой главе.
Логики умолчаний (разд. 4.3) — это логические системы, в которых немонотонность обусловлена необщезначимостью правил вывода, присущих области применения. Правила выражают
•> Зависящей от текущего состояния знаний субъекта. — Прим, перев.,
знания типа «большинство птиц летает» в виде: «если вывод, что птица может летать, является - выполнимым, то выводимо, что она летает». Таким образом, эти приемы вывода позволяют выразить правила с исключениями, не перечисляя ;. исключений.
Немонотонные логики Мак-Дермотта ■ (разд. 4.5). Их назначение — предложить универсальную (независимую от области применения) аксиоматическую систему оценки «выпол- :нимых» множеств утверждений, выводимых из
множества посылок.
Автоэпистемические логики (разд. 4.6) — это реконструкции немонотонных логик Мак-Дермотта. Они моделируют чисто интроспективные - рассуждения. Идеально разумный субъект рассуждает на основе своих предположений. Рассуждения модифицируемы, ибо зависят от изменчивого состояния знаний.
Методы, основанные на принципе замкнутого мира и принципе ограничения. Предполагается наличие в системе всей информации по данной проблеме. Соответствующие методы развива' ются и обосновываются теорией моделей (разд. 2.2). Они определяют (часто неявным образом) правила вывода истинных выражений из посылок в некоторых моделях. Эти ме- . тоды будут представлены во втором томе.
Логики умолчаний
Введение
Логики умолчаний ° введены и развиты Рейтером {88] для формализации рассуждений, являющихся всего лишь выполнимыми. При неполной информации мы вынуждены получать всего лишь правдоподобные предположительные заключения. Иногда мы считаем абсолютно общими правила, которые правильны
° Другое название — логики типичного. — Прим, перев.
в большинстве случаев, но допускают некие исключения. ■
Если Тити птица, то выводимо, что Тити летает. Не все птицы летают. Но можно без особого на то разрешения заключить «Тити летает», если это не запрещено. Так как «Тити летает» выполнимо вместе с моими представлениями, то я заключаю «Тити летает» (ибо это наиболее естественно). Это рассуждение с умолчаниями.
Логики умолчаний позволяют формализовать такие рассуждения в виде правил вывода, называемых умолчаниями:
а: Aip
V
Интуитивный смысл таков. Если мы верим в а и если р выполнимо вместе со всем, во что мы верим, то можно верить и у.
Итак, правило «птицы вообще летают» выразимо в виде:
Птица (х): М Летает (х)
Летает (х)
Интуитивно: если х птица и если выполнимо «х летает», то выводимо «х летает». Общее правило с исключениями гласит, что типичные птицы летают. Это правило умолчания позволяет обрабатывать исключения без их предварительной идентификации.
Система логики умолчаний представляется теорией с умолчаниями (или подробнее: с правилами с умолчаниями), состоящей из некоторого множества особо выделенных формул и правил вывода. В ней содержатся формулы логики предикатов, представляющие основную информацию о системе, обрабатываемую в соответствии с имеющимися аксиомами. Содержатся также правила умолчаний, отражающие различные утверждения, касающиеся исключений.
Для такой системы существует несколько (нуль или больше) множеств выводимых предположений. Эти множества представляют различные картины мира, которые можно вообразить, исходя из теории с умолчаниями. .
Теории с умолчаниями
Обозначим через S язык предикатов первого порядка (разд. 2.2).■
Правило умолчания (сокращенно: умолчание) 3) — это выражение вида
а (х): Л40, (х)М^т (х) у (х)•
где
а(х), Pi(x), ..., рт(х) и у(х)— формулы языка S, свободные переменные у которых выбраны среди х =(хь ..., хп),
а(х) называется требованием умолчания Ф, РДх) — обоснованием умолчания Ф, i=l, ... ..., пг.
у(х)—следствием умолчания Ф,
М—некий символ метаязыка.
Умолчание Ф называется замкнутым тогда и только тогда, когда а(х), РДх), . .., pm(x) и у(х) не содержат свободных переменных. При этом можно использовать более простые обозначения: а, Рь ..., рт и у соответственно.
Свободные переменные умолчания считаются V- квантифицированными. Область действия этих кванторов простирается на все члены умолчания. Незамкнутое умолчание называется открытым. Оно представляет общую схему вывода. Его конкретизацией является замкнутое умолчание, полученное заменой всех свободных переменных открытого умолчания на константы языка $ (с соблюдением неявного закона.об области действия свободных переменных умолчания).
Теория с умолчаниями А— это пара ф,Р), где • D — множество умолчаний,
F—множество замкнутых формул из $.
Она называется замкнутой тогда и только тогда, когда все умолчания из D замкнуты.
Примеры применения умолчаний
Для начала рассмотрим пример представления неполных знаний (этот пример заимствован из [88]).
Пусть неполные знания представлены двумя умолчаниями:
По-русски: "Человек обычно живет вместе со своей семьей"
Логически: (Семья (х, у) А (Живет (p) = z): М Живет (х) — z)
Живет (х) = z
По-русски: "Человек обычно живет в одном городе с нанимателем"
Логически: Наниматель (х, у)Д(Город (p) = z):
.М (Живет(х) = г)
Живет (х) = z
Предположим, что супруг Мари живет в Брюсселе, а ее наниматель — в Париже. Два наших правила вывода дают два невыполнимых совместно заключения. Если сперва применить первое правило, то нужно воспрепятствовать всем выводам, приводящим к «Мари живет в Париже». «Мари живет в Брюсселе» и «Мари живет в Париже» — два (невыполнимых совместно) расширения данной теории с вышеуказанными умолчаниями.
Следующий пример [32] иллюстрирует возможность использования умолчаний в иерархических структурах с исключениями. Утверждения:
) моллюски являются раковинными,
) головоногие — моллюсками, но не раковинными,
) наутилусы — головоногими и раковинными представимы теорией А с двумя умолчаниями и тремя формулами.
п . Mo (х): М (Ра (х) А Д Го (х))
Умолчание Dx- —"'—-
Ра. (х)
По-русски: Если х—моллюск и выполнимо «х раковинный и не головоногий», то х раковинный.
ж vп Го(х):М(~1Ра(х) Л Д На(х))
Умолчание Dy ——■ —:—LL
И Ра (х)
По-русски: Если х головоногий и выполнимо «х не раковинный и не наутилус», то ■' х не раковинный. •
Формула Ft : Ух(Яа(х) zd Го(х))
По-русски: Наутилусы являются головоногими.
Формула F2: Чх (Го (х) zd Мо (х))
По-русски: Головоногие являются моллюсками.
Формула F3: Vx(Afa(x) zd Ра(х))
По-русски: Наутилусы являются раковинными. Если х наутилус, то эти три формулы дают: «х— головоногий, моллюск и раковинный». Этот вывод определяет единственное расширение данной теории объединением теории А и утверждения «х наутилус».
Если х головоногий и не наутилус, то из формулы Г2 следует: «х моллюск», а из правила D2 следует: «х не раковинный». Этот вывод определяет единственное расширение данной теории — объединение А и утверждения «х головоногий и не наутилус». Формальное определение расширения см. в § 4.3.4.
Расширения теорий с умолчаниями
Теория с умолчаниями А = (D, F) подразумевает некоторое (нулевое или большее) число множеств предположений, которые выводимы с использованием множества формул F, и удовлетворяет свойству выполнимости. Эти множества предположений называются расширениями данной теории с умолчаниями.
Расширения теории с умолчаниями явно определены здесь лишь для замкнутых теорий. Открытую теорию можно преобразовать эффективным образом в замкнутую, заменяя каждое открытое умолчание множеством всех его конкретизаций, получаемых посредством применения открытых умолчаний к эрбрановой области (§ 1.2.9) данной теории. Используя это преобразование, полученные для замкнутых теорий с умолчаниями результаты можно распространить на открытые теории (когда они конечны). Заметим, что теории, содержащие функциональные символы ненулевой арности, имеют бесконечную эрбранову область.
Прежде чем приступать к формализации, охарактеризуем интуитивно свойства, которыми должно
обладать расширение замкнутой теории с умолчаниями. Расширение — это надмножество основных сведений системы, включающее все выводимое (по правилам классической логики и/или логики умолчаний).
Пусть X—подмножество из S, ТЬу{Х}~ множество замкнутых формул, общезначимо выводимых из X по классическим правилам вывода из S:
Thy (Х) = {w\w ^ S, ш замкнута и X Н щ}.
Пусть Д=(Л, F)—теория с умолчаниями, S — подмножество в S. Обозначим через Г(5) наименьшее подмножество в S, удовлетворяющее следующим трем условиям:
Fsr(S),
ТА,(Г(5))^Г(5),
если “ ■-^^‘v •^-ЛЁ'?- Gp о е Г (S)
и• -ipm^S, то уеГ(5).
Множество формул Е £ S является расширением, для Д тогда и только тогда, когда Г (£)=£' (т. е. Е — неподвижная точка оператора Г).
Расширение Е можно охарактеризовать так. Строим последовательность формул Ei, полагая Ео — F и•
£, + 1 = Thx (Е^ U { Y | а-:М-’ --•’№ е D или
a^Et и ”1 рь ..., ”1 pm ^ Е) 1
для i = 0, 1, 2Множество Е есть расширение для Д тогда и только тогда, когда
1=0-
Примеры расширений теорий с умолчаниями
Теория с умолчаниями иногда позволяет вывести несколько расширений из одного множества посылок.
Пример 1 [70].
П ЛП ( • МА : MP :
Пусть Д = (£, Е), где D ="^j
и F = 0.
Эта теория обладает расширением
E = Th«t^P1 is»-
Пример 2.
и F — 0.и F — 0.П Лn f -МА
и F — 0.
и F — 0.
Пусть А = (О, F), где D = < "=Г7Г
Эта теория не имеет расширений.
Пример 3 [70].
Пусть А = (О, F), где D = <, —-г > и
( I Л 1/11
F= 0.
У этой теории два расширения: Ех = Th<e ({“1 Л}) и £2 = 7^({n В}).'
Пример 4 [88].
п кп (А:МЗхРУх)
-.МА-.МАПусть A = (D, F), где £ = 1^^—
-.МА
-.МА
и F=0.
Расширений два:
fi ==ГА^({—I Л)) и E2 = Th2^A, ЗхР(х)}).
Например, первым умолчанием из D можно формализовать «большинство профессоров университета имеет степень доктора»:
Проф_унивУх) : М (Зу Конкр (у, доктор) Д '
Л Имеет Ух, у))
Зу Конкр Уу, доктор) Д Имеет Ух, у)
Нормальные теории
Как показывает пример 2 из § 4.3.5, некоторые теории с умолчаниями не обладают расширениями. Существование расширений гарантировано, если следствие и обоснование одного и того же умолчания совпадают [88]. Такие теории называются нормальными. Они
состоят из нормальных умолчаний: '
а (х): Л1р (х) PW ■
Кроме интересного свойства допускать хотя бы одно расширение нормальная теория с умолчаниями обладает свойством полу монотонности: если увеличить множество умолчаний, то полученная теория допускает расширение, включающее какое-то расширение исходной теории [88]. Практически важное следствие этого свойства состоит в возможности построения такой теории доказательств, в которой использованные умолчания проявляются локальным образом.
Теория доказательств для нормальных теорий
Можно ли построить теорию доказательств для логик умолчаний? В частности, для замкнутых нормальных теорий? Точнее, даны замкнутая нормальная теория А и замкнутая формула f из S. Существует ли метод проверки наличия для А расширения Е, содержащего Р
Для получения ответа Рейтер [88] определил доказательство в теории с умолчаниями следующим образом. Пусть A=(D, Д)—замкнутая нормальная теория и f — замкнутая формула из S. Конечная последовательность Do, ..., Dk конечных подмножеств из D есть доказательство для f в А тогда и только тогда, когда
FU{KC(D0))Hf,
Д U {КС (D.)} Ь КТ (£>,_!) для i=l, 2, ..., к,
Dk = 0,
F (J [КС (О,)| 0 ^ z^ к^ выполнимо,
где КС (Dz)— конъюнкция следствий и КТ (D,)— конъюнкция требований умолчаний из D,.
Итак, доказательство есть последовательность подмножеств умолчаний. Его можно интерпретировать следующим образом. Первое подмножество (D^) выбирается пустым. Последовательно строятся
Dk-\, - - •, Du Do. Множество основных аксиом с добавленной к нему конъюнкцией следствий из всех умолчаний Do должно обеспечивать доказательство f классическим образом. Из построения подмножества Dt-i вытекает, что множество F (с добавленной к нему конъюнкцией следствий из D,) должно позволять доказывать классическим образом требования из Dt-i и, следовательно, гарантировать применимость умолчаний из Di_x. Глобальная применимость всех умолчаний устанавливается проверкой выполнимости объединения F и конъюнкций следствий всех использованных умолчаний.
Заметим, что в определении не говорится, как строить подмножества Di, и не приводится разрешающей процедуры для используемого отношения доказательства (из классической теории предикатов первого порядка). Более того, оно предполагает проверку выполнимости некой формулы из $, тогда как множество замкнутых выполнимых формул из $ не является рекурсивно перечислимым.
Метод Рейтера [88] сочетается со свойством пол* ноты. Пусть f — замкнутая формула из 2?. Нормальная теория А (замкнутая и выполнимая) обладает расширением Е (содержащим f) тогда и только тогда, когда f обладает доказательством в А.
К сожалению, во всей общности проблема проверки существования расширения с данной замкнутой формулой не полуразрешима (§ 2.2.6). Это не столь неожиданно. Тем не менее в некоторых случаях она поддается практическому решению (особенно когда ограничиваются рамками высказываний).
Можно определить особые теории с умолчаниям ми, разрешимые с помощью метода полного доказательства. Например, Бенар, Кинью и Кинтон [6] применяют метод насыщения, позволяющий реализовывать метод полного доказательства для разрешимых теорий, содержащих только так называемые «свободные» умолчания:
: МР (х) лэ R (х)
P^tdR^ .
Полунормальные теории
Нормальные умолчания выглядят достаточно привлекательными при представлении многих форм рассуждений. Свойства формальных систем, составляющих нормальные теории, особенно выигрышны в силу следующих обстоятельств.
Следствие и обоснование нормального умолчания совпадают. Следовательно, нормальные умолчания неприменимы, когда ложность их следствий доказана. Эти умолчания не могут вводить невыполнимости, опровергать обоснования из других ранее примененных нормальных умолчаний и своих собственных. Итак, нормальные теории полумонотонны, всегда обладают хотя бы одним расширением и представляют довольно простую теорию доказательств.
Между тем в ходе применения нормальных умолчаний могут возникать неприятные осложнения. В частности, взаимодействие различных нормальных правил может приводить к нежелательным заключениям [89]..
Поэтому иногда необходимо блокировать транзитивность между умолчаниями. Например, рассмотрим нормальную теорию А = ф, F), где D содержит два нормальных умолчания:
«обычно студент университета является взрослым», или в символьном виде:
С (х): МВ (х)
В(х)
«обычно на работу берут взрослых», или в символьном виде:'
В (х): МП (х)
nw
и где F—множество из одного элемента {С(Эрик)}.
Правила из D позволяют по умолчанию вывести, что студента университета взяли на работу. Это нежелательный вывод. Осложнение предотвращается с помощью третьего нормального умолчания: «обычно студента не берут на работу». Таким образом, получается нормальная теория \'=ф\ F) где D' — мно-
жество умолчаний:
( С (х): МВ (х) В (х): МП (х) С (х): М ”1 П (х) }
I В (х)* П (х)’"1П (х) J "
Для данного студента множество D' может дать два расширения теории Д' (соответствующих различной занятости студента):
Th^ ({С (Эрик), В (Эрик), ~1 П (Эрик))) и
Th» ((С (Эрик), В (Эрик), П (Эрик))).
Тем не менее разумно потребовать блокирования транзитивности между двумя первыми правилами из D. Следовало бы также выделить априори расширение, соответствующее ситуации, когда студента не принимают на работу. Это можно осуществить модификацией второго правила: чтобы оно не могло быть применено в исключительном случае — «взрослый является студентом».
Итак, для теории К" = (D", F), где D" есть
Г С(х):МВ(х) С (х): М И П (х)
I В(х) ' ДЛ(х) *.
В ^хУ М (П (х) Л Д С (х)) |
П(х)J 1.
получаем желаемое расширение
Th^ ((С (Эрик), В (Эрик), ~1 П (Эрик))).
Третье умолчание D" полунормальное [89], т. е. имеет вид
яДху.М (£ (х) л у (х))
PW ‘
Таким образом, полунормальное умолчание явно управляется дополнительным условием в обосновании. Теория с полуормальными умолчаниями (полунор- мальная теория) не обязательно обладает расширением. Она теряет некоторые достоинства нормальных теорий, в частности полумонотонность.
Наследственные системы с исключениями
Системы сетевого и объектного представлений часто позволяют выразить наследование свойств с исклю-
чениями и встроить механизмы вывода, связанные с Этими методами (§ 3.3.12). Поведение такой системы редко бывает корректным и полностью охарактеризованным. Соответствующие методы довольно плохо освоены [НО], [29].
Если наследственные свойства между классами и подклассами можно относительно легко охарактеризовать в классической логике (§ 3.3.11), то исследование исключений требует ухищрений. Логика умолчаний очерчивает естественные рамки для формализации систем представления знаний и рассуждений с исключениями.
Между тем прямое обращение к теории с умолчаниями (в частности, к нормальной) простым не является. Наследственная система обеспечивает передачу свойств по транзитивности (§ 3.2.19). Когда к системе добавляются исключения, транзитивность свойств должна допускать возможность блокирования.
В литературе предложены различные формализмы систем представления с механизмами наследования свойств.
Можно использовать полунормальные умолчания [27], [29]. Исключения для наследования свойств явно перечислены в умолчаниях. Этерингтон [29] определил подкласс полунормаль- ных умолчаний (связанных отношением зависимости), для которых соответствующие полу- ■ нормальные теории всегда обладают хотя бы одним расширением. Он предложил процедуру эффективного построения полунормальных теорий.
Можно использовать нормальные умолчания с неявным порядком, подчиненным иерархии моделируемой структуры [ПО]. Можно не упоминать явно исключения в умолчаниях.
Можно использовать таксономические теории с умолчаниями (не являющиеся ни нормальными, ни полунормальными). Они обладают единственными расширениями [33], [34].
Модальные логики знания и веры
Введение
Первейшей функцией модальной логики является формализация модальностей «возможность» и «необходимость». Другое ее применение — моделирование и анализ парадигм «знание» и «вера». Для этого логические системы используют формальные языки с модальными операторами «веры» и «знания». Системы сочетают различные схемы аксиом и правила вывода для формализации свойств этих операторов. Модальные системы снабжены специфической семантикой. Различные модальные логики, которые мы рассмотрим, являются расширениями логики первого порядка. В частности, они заимствуют оттуда аксиомы, правила вывода и теоремы.
Некоторые элементарные модальные системы
Ограничимся неквантифицированными частями модальных языков с синтаксисом из § 3.1.14. Пусть S —■ модальный язык высказываний, р и q — метапеременные, представляющие формулы в языке 2?. Модальные операторы в 2? обозначим символами L и М (в модальной логике необходимости и возможности это D и О). Операторы общности L и существования М двойственны: L s ~I М —1.
В логиках веры и знания оператор L принимает соответственно значения «предполагается» и «известно». Значения оператора М — соответственно, «противоположное ие предполагается» и «противоположное не известно».
Нормальная модальная система — это четверка, состоящая из:
Множества всех теорем логики высказываний (разд. 1.1), область действия которых распространена на формулы модального языка высказываний 2?.
Схемы аксиомы дистрибутивности
. L (р zd q) то (Lp td Lq\ -
обозначаемой буквой К. В соответствии с толкованием модальности «необходимость» схема К утверждает, что «если необходимо, что р влечет q, то из необходимости р вытекает необходимость q».
Правила modus ponefis,
pp^q
q '
Модального правила вывода необходимости
Р
' Lp
(«р необходимо истинно» при условии, что «р истинно»).
Можно получить модальные системы и поизощреннее — обогащая нормальную модальную систему различными схемами аксиом, вроде нижеследующих:
Схема аксиомы знания
Lp-=>p.
Ее обозначают буквой Т. По определению зна- ' ние — информация. Таким образом, схема Т утверждает: «то, что известно, — верно». Эту схему добавляют к нормальной модальной системе, чтобы оператор L означал «известно». Напротив, схемы Т не будет в системе аксиом, формализующих «предположение», ибо оно может быть ошибочным.
Нормальная модальная система, пополненная схемой Т, перенимает имя от двух входящих в нее схем модальных аксиом: она обознчается через КТ (иногда просто через ST).
Схема аксиомы позитивной интроспекции-.
Lp zd LLp.
Она обозначается цифрой 4. Когда модальный оператор L означает «известно», то схема 4 утверждает: «если мне известно р, то я знаю, что известно р». Если же модальный оператор L означает «предполагается», то схема 4 гласит: «если я предполагаю, что р подтверж-
дается, то я предполагаю, что я предполагаю, что р подтверждается».
Описанная схемой 4 возможность интроспекции нужна для формализации совершенного интроспективного интеллекта. Нормальная модальная система, пополненная схемами аксиом 7 и 4, обозначается КТ 4 (или, в более классической манере, S4).
Схема аксиомы негативной интроспекции
Мр zd LMp.
Она обозначается цифрой 5 и в логиках знания и веры формализует совершенную негативную интроспекцию. Схема 5 эквивалентна такой:
■"1 Lp zd L —1 Lp. Когда оператор L означает
' «известно», то схема 5 утверждает: «если я не знаю, что р подтверждается, то я знаю, что я не знаю, что р подтверждается». Если же оператор L означает «предполагается», то она гласит: «если я не предполагаю, что р подтверждается, то я предполагаю, что я не предполагаю, что р подтверждается».
Это свойство, конечно, чрезвычайно обременительное. Оно выражает совершенное понимание пределов нашего знания или веры. Нормальная модальная система, пополненная схемами аксиом 7, 4 и 5, обозначается 7(7'45 (или, в более классической манере, S5).
Выбор модальной системы зависит от моделируемого понятия. Если хочется охарактеризовать знания разумного субъекта, обладающего совершенной способностью к логической интроспекции относительно того, что «известно» и что «неизвестно», то следует выбрать модальную систему S5 (разд. 4.5). Если желательно моделировать предположения идеально разумного субъекта (некоторые предположения которого могут оказаться ошибочными, но который обладает совершенной способностью к логической интроспекции относительно того, что он предполагает и чего не предполагает), то лучше выбрать систему
К45, называемую также слабой 85-системой (разд. 4.6).
Каждая из этих различных модальных систем индуцирует присущее ей синтаксическое отношение выводимости. Оно обозначается Нз, где S— имя рассматриваемой модальной системы.
Семантика возможных миров
Модальность увеличивает выразительность классической логики и позволяет выявлять некоторые понятия с помощью специфических операторов. Семантический анализ модального выражения зависит от параметров, неявно вносимых этими операторами. Например, выражения на языке временной логики используют модальные операторы с неявной переменной, отражающей временную эволюцию (§ 3.1.13). Формула □р эквивалентна формуле V/:p(/). Семантический анализ этой формулы должен осуществляться с учетом неявно подразумеваемого параметра / в модальном операторе □.
Для этого Крипке [60] ввел метод специфического семантического анализа: семантику возможных миров. Модальная формула будет оцениваться в лоне некоего «универсума» различных «возможных миров» (§ 3.1.17). Точнее, анализ истинности некой модальной формулы зависит от рассматриваемого возможного мира. В примере с временной логикой различные возможные миры представляют состояние мира в различных его конкретизациях. Некое «отношение доступности» свяжет эти возможные миры между собой и укажет последовательность различных моментов, в которые рассматривается мир. Опишем кратко эту семантику.
Универсум W есть множество возможных миров, связанных отношением доступности R. Пусть а и b — два мира из универсума W, тогда факт доступности мира b после мира а обозначается aRb. Пара (W,R^ называется структурой. Свойства отношения R индуцируют различные схемы модальных аксиом, общезначимых в рассматриваемой логике. Оценка У — это отображение из IV X $ в {И, Л), которое для каж-
дого мира w из универсума IF сопоставляет каждой пропозициональной константе из $ определенное значение истинности. Тройка (У/, R, Т^ называется моделью.
Для семантической оценки формул из S' желательно иметь в виду конкретный мир из универсума W вместе с рассматриваемой оценкой Т. Рекурсивно определяют отношение семантического следования |= между моделями и формулами языка. Запись (У/, R, T^\=wf означает, что / истинно в мире w для модели (У/, R, ТУ Основные правила следующие:
VW,R,T^w и,
(IF, R, Т)^ Л,
(У/, R, Т) |=„/, если T{w, /) = И и / — пропозициональная константа из S’,
№. R, T)\=wf^g, если (IF, R, T)\=wf только тогда, когда (IF, R, T)\=wg,
(У/, R, Т^\=№Ц, если для любого мира х универсума IF при wRx имеем (У/, R, T)\=xf.
Смысл последнего правила: формула Lf подтверждается в мире w для некой модели (У/, R, Т), если формула / подтверждается во всех мирах универсума IF, доступных из мира w. Оно учитывает желательные значения модального оператора L. Действительно, в логике необходимого формула Lp представляет необходимость формулы р; «р необходимо в данном мире» интуитивно означает подтверждаемость р во всех мирах, доступных из данного. С другой стороны, в логике знания формула Lp означает «р известно» и, следовательно (интуитивно), что р подтверждается во всех возможных мирах, какие только можно вообразить на основе некоего множества знаний и предположений.
Из двойственности М = Д L ~] непосредственно вытекает правило
(IF, R, Т)^=ш Mf, если существует мир х из универсума IF, такой что wRx и (W, ^ ^^xf- Прежде чем заняться анализом истинности модальной формулы в каждом из возможных миров, введем ряд понятий.
Формула / из S’ общезначима в модели (UP, R, ■ У) тогда и только тогда, когда f подтверждается во всех мирах этой модели, т. е. если V\w, f) = И для всех миров ад из UP, или, в символьной записи (UP, R, У)^?.~
Формула f из S' общезначима в структуре (UP,/?) тогда и только тогда, когда f общезначима в любой модели (UP, R, Т). Символьная запись выглядит так: (IT, R)\=f.
Формула f из S' общезначима тогда и только тогда, когда / общезначима в любой структуре (UP,/?). Символьная запись такова: |= f.
Укажем на связь между семантическим отношением |= и синтаксическим отношением Н. Существует соответствие между выбором схем основных аксиом данной формальной системы и свойствами отношения доступности между возможными мирами семантической характеристики этой системы.
Можно показать, что конкретизации
схемы аксиомы дистрибутивности, т. е. схемы К, общезначимы,
схемы аксиомы знания (схемы 7) общезначимы в любой структуре с рефлексивным отно- ’ шением доступности R,
схемы аксиомы позитивной интроспекции (схемы 4) общезначимы в любой структуре с транзитивным отношением доступности R,
схемы аксиомы негативной интроспекции (схемы 5) общезначимы в любой структуре с евклидовым ° отношением доступности R.
Из факта «f — формула S’» доказуемо вытекают утверждения:
Нк/ тогда и только тогда, когда f общезначима в любой структуре,
V-rtI тогда и только тогда, когда f общезначима в любой структуре с рефлексивным R,
о Отношение R называется евклидовым, если из aRb и aRc вытекает bRc.1
\-кт4 тогда н только тогда, когда f общезначима в любой структуре с рефлексивным н транзитивным R,
' Pkts} тогда и только тогда, когда f общезначима в любой структуре с рефлексивным и евклидовым R.
Структура возможных миров семантически характеризует различные модальные системы в зависимости от свойств отношения доступности.
Например, если выбрать систему КТ45 (она же S5) для аксиоматизации свойств модального оператора L, то соответствующая семантическая характеризация будет состоять из множества возможных миров, связанных между собой отношением доступности R, являющимся отношением эквивалентности. Как только что указывалось, R должно быть рефлексивно, транзитивно и евклидово (то есть отношением эквивалентности) .
Немонотонные логики Мак-Дермотта
Введение
Немонотонные логики Мак-Дермотта и Дойла [70], [71] отличаются от логики умолчаний Рейтера (разд. 4.3) в основном по следующим трем пунктам:
Рамки этих логик такие же, как и у модальных систем необходимости и возможности.
'В Предлагаемые логические системы не формали' ' ■ зуют множество немонотонных правил, присущих данной области применения. Системы Мак-Дермотта и Дойла являются универсаль' ными аксиоматическими системами.
Интересуются не построением отдельного расширения теории, а присутствующими во всех ее расширениях формулами.
Мак-Дермотт и Дойл предложили изящный метод, позволяющий избежать зацикливания при "задании правил немонотонного вывода (см. § 4.2.4). Они
предложили неконструктивную характеризацию устойчивых множеств взаимно выполнимых формул, немонотонно выводимых из некоего набора посылок.
Эти множества суть решения некоторого уравнения, являющиеся неподвижными точками и связанные с отношением выводимости, определяемым данной немонотонной системой. Соответствующая система может рассматриваться как классическая модальная аксиоматическая система, пополненная правилом вывода выполнимых утверждений.
В настоящем разделе представим эту систему с критических позиций. Для начала уточним формальный язык системы вывода, предложенной Мак-Дермоттом (прежде чем представить и прокомментировать ее первое описание). Вторая версия аксиоматического описания этой системы позволит исключить зацикливание в определении немонотонного пра,- вила1). В заключение раздела будут очерчены достоинства и недостатки данного подхода.
Язык логики Мак-Дермотта
Строим модальный язык первого порядка $. Он является основанием немонотонной аксиоматической системы, подлежащей определению (см. также §§ 1.1.3 и 1.2.3).
Пусть 43, V, 9" и ^—множества символов индивидных констант, переменных, функций и предикатов соответственно.
Множество термов из S определяется по индукции следующим образом. Терм из $ — либо константа из ‘IF, либо переменная из У, либо выражение fn(tt, ..., /п), где f„— п-ме- стная функция из ^", /ь .... /„— термы из S'.
Атомарная формула из $ — это выражение вида Pnktv ..., /„), где Рп— n-местный предикат из ^ а 6, ..., tn — термы из 2?.
11 Мы ограничимся подробным- рассмотрением второй немонотонной логики Мак-Дермотта [71]; которая лучше первой, оказав1 шейся слишком слабой.- ■
Множество формул из $ определяется по индукции: формула из $ — либо атомарная формула из S, либо выражение (~1р), либо выражение ^р zd q), либо выражение Мр, либо выражение (Vu)p. Здесь р и q— формулы из S’, Л1 — модальный оператор, и — переменная из Т.
Будем использовать обозначения ^Р V q) для G-1 Р) ^ Р), ^Р Л q) для “I ((П р) V (“I q^, (р = q) для ((Р => <?) Л (<7 ^ р)), (Зи)р для П((Уу)(Пр)) и Lp для “1 М~Л р, а также обычные соглашения по использованию и опусканию скобок.
Относящаяся к высказываниям часть языка S’ будет в разд. 4.6 взята в качестве языка автоэпистеми- ческой логики.
Пример немонотонной аксиоматической системы
Эта немонотонная аксиоматическая система содержит три вида элементов:
«нелогические сведения», являющиеся формулами из S со статусом дополнительных аксиом,
, • схемы логических аксиом,
логические правила вывода.
Совокупность схем логических аксиом будет состоять из схем формул, аксиоматизирующих логику предикатов (см. разд. 1.2), а также из обсуждавшихся в разд. 4.4 схем модальных аксиом.
Множество правил вывода будет содержать (кроме обычных правил: modus poiiens, универсального обобщения и модальной необходимости) специфическое правило немонотонного вывода.
Главная ценность исследований, проведенных МакДермоттом, заключена в этом изящно сформулированном специфическом правиле. Какую модальную систему выбрать? Этот вопрос является поводом для дискуссии. К ней мы перейдем в разд. 4.6 — после представления автоэпистемической логики.
Пусть L и М — двойственные модальные операторы. Рассмотрим следующие схемы и правила, где р, q и г — произвольные формулы из $.
Схемы классических аксиом ([53], § 2.1.9):
р =d (</ => р),
(р ZD (q ZD г)) ZD ((Р ZD </) ZD (Р ZD г)),
(“I q ZD 1 р) ZD ((-I q ZD p) ZD p),
W (Vo) p zd pvJt (где терм t свободен для и в р), (е) (Vu) (р zd р) zd (р zd (Vo) q), если и не фигурирует в р н не связана в q.
Схемы модальных аксиом (разд. 4.4):
схема аксиомы знания: LpTD р,.
схема аксиомы дистрибутивности: £(pzDp)z)
ZD ^Lp ZD £p),'■
схема Баркан: ((Vu) £p) zd L (Vo) p,
схема позитивной интроспекции: Lp^LLp, (e) схема негативной интроспекции: Mp^LMp.
Правила вывода:
modus ponens-. р, р zd q I— q,
правило универсального обобщения: pH (Vo)pt (с) правило необходимости: р Н Lp,J
правило немонотонного вывода: "нельзя Я
вывести ~1 р" Н Мр.я
Выбирая разные подмножества из списка схем модальных аксиом, получаем различные системы немонотонного вывода. Система, включающая лишь две первые схемы, будет называться немонотонной $Г-системой. Системы, содержащие соответственно четыре первые модальные схемы и всю их совокупность, назовем немонотонной 54-системой и немонотонной 55-системой. Эти названия вполне соответствуют названиям модальных классических систем (разд. 4.4). Если из перечисленных немонотонных систем удалить правило немонотонного вывода, то получатся модальные классические системы 9", 54 и 55. Сформулированное выше правило немонотонного вывода приемлемым, вообще говоря, не является. Оно зацикливает определение отношения выводимости (§ 4.2.4). До
{изложения способа решения этой проблемы отметим, 'что первоначальная формулировка правила немонотонного вывода хорошо высвечивает тройственную
роль, предположительно им выполняемую:
Оно позволяет выводить, что некоторое утверждение возможно, т.е. выполнимо с точки зрения логики. Применяя его, можно вывести формулы вида Мр. Искомое значение для формулы Мр , есть «р возможно» или же «р выполнимо». Для осуществимости этого надо, чтобы ~1 р не было выводимо, что обеспечивается проверкой условия правила немонотонного вывода.
Между тем для эффективной реализации этого приписанного модальному оператору М значения надо, чтобы оно обладало свойствами модальных операторов, выраженными схемами модальных аксиом этой системы.
Оно ■ косвенно позволяет принять как «истинные» всего лишь выполнимые формулы. (Например, если Мр выведено по правилу немонотонного вывода и если в данной системе содержится дополнительная аксиома МРтзр, то по modus ponens можно вывести р.) Применение этого метода означает также переход от констатации выполнимости некоего выражения к его утверждению. Данной системе присуща в некотором смысле способность воспринимать как истинные формулы с установленной выполнимостью.
Оно придает данной системе немонотонный характер. Например, если эта система позволяла вывести формулу Мр (или вообще формулу q, вытекающую из Мр) и если добавлена новая аксиома, позволяющая в этой системе вывести ~\р, то формулу q надо отвергнуть.
Для решения проблемы зацикливания в определении правила немонотонного вывода, а также проблемы характеризации множеств выводимых формул опишем неподвижные точки отображения системы вывода в множество посылок А. Интуитивно эти не-
подвижные точки представляют собой такие множества формул, что никакую дополнительную (т. е. не входящую в рассматриваемое множество) формулу нельзя вывести с соблюдением свойства выполнимости.
Возьмем одну из аксиоматических систем вывода Ф — немонотонную ^-систему, либо немонотонную 54-систему, либо немонотонную 55-систему. Обозначим через соответствующую модальную классическую систему, получаемую удалением из Ф немонотонного правила (т. е. 5 есть либо 3", либо 54, либо 55). Определим сначала Ths^A) как множество формул из 3?, выводимых в системе 5 из множества дополнительных аксиом А, т. е.
Ths (Л) = {р е 2> | А Н $ pV
Итак, речь идет о множестве модальных теорем, монотонно доказуемых в модальной классической системе 5 с использованием множества посылок А.
Пусть В — подмножество формул из $. Обозначим через НурА(В) множество формул, предположительных относительно множества В (т. е. множество формул, выполнимых вместе с формулами из множества В, но не доказуемых в модальной системе 5 с использованием множества посылок Л).
НурД (В) = ^Mq \q е S (q не имеет свободных переменных) и
П q ^ В} \ Ths (Л).
Нас интересуют такие множества В формул из 3, которые являются неподвижными точками оператора Гй5(Ли НурА()), т. е. решениями рекуррентного уравнения
B = Ths (А[) НурА(В)).
Правая часть этого уравнения есть множество всех модальных следствий, выводимых из объединения множества посылок А и формул, предположительных относительно искомого множества В. Множество В является неподвижной точкой этого уравнения и называется Немонотоннымл. Значит, оно устойчиво и
состоит из всех модальных следствий, выводимых из объединения множества дополнительных аксиом Л и множества формул, предположительных относительно этого Немонотонногод множества.
Таким образом, решения приведенного выше рекуррентного уравнения дают (неконструктивно определяемые) максимальные множества формул, выводимых с использованием множества посылок А и с сохранением свойства выполнимости. Эти множества содержат все логические следствия из множества посылок А, а также все предположительные относительно них формулы.
Обозначим через THs(A') множество теорем, получаемых в результате применения к множеству дополнительных аксиом А системы немонотонного вывода ф, причем применение это осуществляется в соответствии со следующим соотношением:
THS(A) = 3? П(П Немонотонное д').
Таким образом, статус теорем придается формулам, принадлежащим всем неподвижным точкам из Ф. При отсутствии неподвижных точек THs^A) определяется как множество всех формул из $. В этом еще одно отличие от логики умолчаний, где «теоремами» были формулы из отдельной неподвижной точки (расширения) некоего множества умолчаний (см. разд. 4.3).
Отношение немонотонной выводимости, соответствующее системе вывода Ф, обозначается через |~ и определяется следующим образом. Пусть Qi и Qa подмножества из 9?. Имеем Qi| ~sQz тогда и только тогда, когда Q2 ^THs(Qt^. Множество Qa формул становится с данного момента множеством теорем для множества посылок Qi, если и только если любая формула из Qa принадлежит всем неподвижным точкам множества Qb
Как говорилось в разд. 4.2, эта логическая система позволяет построить различные множества за* «лючений (неподвижных точек) посредством варьирования порядка применения выводов. При этом буДет ноль, одна или больше неподвижных точек. ■
Примеры
Для иллюстрации изложенных выше понятий и положений приведем два примера, взятых из [70].
Пусть А = {Мр о ~I q, Mq zd П р), где р и q — пропозициональные константы. У этого множества посылок две неподвижных точки —• F\ и F2. Неподвижная точка Ft содержит И р, • но не включает —I q. Аналогично F2 содержит И q, но не включает И р. Действительно, если Ft не содержит ~I q, то она содержит Mq, от- ■ куда по правилу modus ponens с дополнительной аксиомой Mq zip вытекает, что она содержит —I р. Подобное рассуждение можно применить и к F2.
Пусть А = {Мр zd ~1 р}. Неподвижных точек здесь нет. Действительно, если бы неподвижная точка не содержала —1 р, то она содержала бы Мр. Следовательно, она содержала бы ~I р в противоречии с предположением. Если бы она содержала “I р, то содержала бы и Мр. Поэтому формула Мр zd ~Л р была бы выполнимой. Приходим к противоречию, ибо При Мр не могут одновременно фигурировать в одном выполнимом множестве.
Ценность логики Мак-Дермотта
Основная ценность немонотонной логики Мак-Дермотта заключена в методе неподвижной точки, используемом для характеризации устойчивых множеств заключений немонотонной системы, а также в применении модальной логики для формализации модифицируемых рассуждений.
Впрочем, выбор подходящей для рассмотрения модальной системы остается проблематичным. Желая сопоставить модальному оператору М значение быть выполнимым, Мак-Дермотт заметил, что наиболее приемлемой модальной логикой является та, которая соответствует немонотонной 55-системе. Однако эта
логическая система обнаруживает неожиданное свойство [71]:
если A|~S5p, то ЛН$5р.
Иначе говоря, нет теоремы в немонотонной 55-системе, которая нс была бы теоремой в соответствующей монотонной классической системе 55. Мак-Дермотт подверг тогда сомнению полезность немонотонной 55-системы и посоветовал (не приводя абсолютно убедительных аргументов) выбрать для формализации немонотонности немонотонную 54-систему.
В следующем разделе мы покажем, как можно перестроить логику Мак-Дермотта, привлекая моделирование идеально разумного субъекта, интроспективно рассуждающего об исходном множестве предположений. Тогда удовлетворительно решится проблема выбора модальной системы. •
4.6. Автоэпистемические логики
Введение
Автоэпистемические логики имеют своим предметом формализацию интроспективных и идеально разумных рассуждений об исходном множестве предположений. Они позволяют осуществить формализацию выражений вида: «если я не предполагаю, что р подтверждается, то подтверждается у».
Под идеально разумными понимаются рассуждения, идеализированные в двух аспектах: можно выводить только ожидаемые логические следствия из исходного'множества предположений и все эти логические следствия надо принять во внимание. Таким образом, для рассуждений нужны неограниченные ресурсы.
Подобные рассуждения немонотонны, ибо множество основных предположений субъекта может со временем меняться, что чревато противоречиями для некоторых выводов. Такими интроспективными рассуждениями можно моделировать многочисленные виды модифицируемых рассуждений (§ 4.2.6).
Модальные логики знания и веры (разд. 4.4) подходят для формализации такого вида рассуждений. Они позволяют определить и аксиоматизировать различные эпистемические понятия (предположение, знание, обоснованное знание и т. д.) и их свойства. .
Столнекер [103] и особенно Мур [78], [79], [80] развили основанный на модальной логике метод для формализации немонотонных, интроспективных и идеально разумных рассуждений.
Эту автоэпистемическую логику можно рассматривать как результат реконструкции немонотонной логики Мак-Дермотта (см. разд. 4.5), состоящей, в замене парадигм выводимости и выполнимости на формализацию интроспективных способностей рассуждений. В этом контексте модальный оператор М и двойственный ему оператор L формализуют соответственно «обратное не предполагается» и «предполагается» (вместо выполнимого и выводимого).
Отметим, наконец, что автоэпистемическая логика и логики умолчаний (см. разд. 4.3) имеют одинаковую формальную выразительность [57], хотя их области применения могут быть различными.
Язык и семантика
Рассматриваемый здесь язык $Р получается ограничением модального языка $, описанного в § 4.5.2, на свою пропозициональную компоненту и использованием модального оператора L (двойственного М) для построения модальных формул. Формула вида Lq интерпретируется следующим образом: «предполагается, что q подтверждается».
Назовем теорией множество формул языка $р, автоэпистемической теорией — подмножество Т из $р, представляющее какое-то полное и легальное множество предположений, которое идеально разумный субъект может построить на основе множества Л исходных предположений. Для начала уточним, каковы семантические свойства, которыми должно обладать подобное множество формул Т.
Для этого введем следующие определения [79].
Интерпретация высказываний автоэпистемиче-
.ской теории Т приписывает значения истинно
сти формулам множества Т. Приписывание 4подчиняется классическим правилам оценки
сложных формул логики высказываний. Оно придает произвольное значение истинности (пропозициональным константам и формулам
вида Lp («предполагается р»),
Модель высказываний автоэпистемической теории Т—это интерпретация высказываний из Т, в которой подтверждаются все формулы тео'рии Т.
Автоэпистемическая интерпретация автоэписте- 'мической теории 7 — это интерпретация выска-
■ зываний из Г, для которой всякая формула вида Lp подтверждается тогда и только тогда, когда р принадлежит Т. Таким образом, при автоэпистемической интерпретации формула Lp («предполагается р») подтверждается в том и только в том случае, если р принадлежит множеству Т предположений данного субъекта.
Автоэпистемическая модель автоэпистемической теории Т — это автоэпистемическая интерпретация, в которой подтверждается всякая формула из Т.
Привьем на эти семантические рассмотрения понятия полноты и легальности (вместо выполнимости), приспособленные к автоэпистемичности [79].
Автоэпистемическая теория Т семантически - полна тогда и только тогда, когда она содержит все формулы, подтверждающиеся во всех ■ автоэпистемических моделях Т. (Интуитивно: Т полна тогда и только тогда, когда Т содержит все формулы, которые данному субъекту семантически позволено вывести в предположении истинности всех его гипотез.)
. .• Автоэпистемическая теория Т легальна относительно множества А основных предположений, тогда и только тогда, когда любая автоэписте-
мическая интерпретация Т, являющаяся моделью А, является также и моделью теории Т. (Интуитивно: это позволяет гарантировать, что предположения некоего субъекта, составляющие автоэпистемическую теорию, истинны тогда и только тогда, когда истинны основные предположения из множества Л.)
Характеризация синтаксиса
Посмотрим, как дать синтаксическую характеризацию автоэпистемическим теориям Т, обладающим семантическими свойствами полноты и легальности относительно множества А исходных предположений.
Ввиду трудности конструктивной характеризации множеств выводимости формул немонотонной системы (проблема уже обсуждалась в §§4.2.3—4.2.4) дадим неконструктивное определение автоэпистемиче- ских теорий Т, таких, что их максимальные и легальные множества предположений идеально разумный субъект в состоянии построить на основе множества Л исходных предположений.
В этом ключе будем говорить, что автоэпистемиче- ская теория Т устойчива, если Т есть множество формул из $р, удовлетворяющее следующим условиям: 1. Если \р рД ^ Т и {рь .. ., рД Н q (где Н представляет отношение выводимости в логике высказываний), то qET.
Если р е Т, то Lp е Т.
Если р^-Т, то ~] Lp е Т.
Первое правило утверждает, что мыслящий субъект предполагает все логические следствия и уже предполагаемого (это обязательно, если требуем идеальной разумности субъекта). Второе правило гарантирует, что формула «предполагается р» принадлежит множеству Т предположений этого субъекта, если р — предположение этого субъекта. Последнее правило утверждает, что формула «р не предполагается» фигурирует в множестве Т предположений того же субъекта, если формулы р там нет.
Двойственным образом определяется следующее понятие: автоэпистемическая теория Т называется теорией, основанной на множестве дополнительных аксиом А, если все формулы из Т фигурируют среди тавтологических следствий из множества A U {Lp | р е еЛП ПЬр\р^П.
Справедливы следующие утверждения [79]:
Автоэпистемическая теория Т семантически полна тогда и только тогда, когда она устойчива.
Автоэпистемическая теория Т легальна относительно множества А основных предположений тогда и только тогда, когда она основана на А.
Наконец, назовем устойчивым расширением множества исходных предположений А множество предположений Т, которое устойчиво и основано на А. Устойчивые расширения являются максимальными легальными множествами предположений, которые идеально разумный субъект в состоянии вообразить на основе исходного множества предположений.
4.6.4. Анализ немонотонной логики
Построенная Мак-Дермоттом теория немонотонного вывода обнаруживает некоторые странные особенности, а именно: каждая теорема из немонотонной 55- системы является теоремой из монотонной системы 55 (§ 4.5.5). Этот факт можно объяснить, привлекая автоэпистемическую логику. Мак-Дермотт рассматривает неподвижные точки Т системы вывода своей немонотонной логики, приложенной к множеству А дополнительных аксиом. Эти точки можно сравнить с максимальными легальными множествами предположений идеально разумного субъекта.
Определение Мак-Дермотта, ограниченное на пропозициональную компоненту, в сущности эквивалентно следующему.
• Т является неподвижной точкой относительно А тогда и только тогда, когда Т есть множество модальных следствий (в системе 5 = ^
- 54 или 55) из A U{~1 Lp\p ^ Т}.
9 А. Тейз и др. '
Правило немонотонного вывода позволяет вывести формулу вида Мр, если формула П р не принадлежит ■ рассматриваемой неподвижной точке Т. Иначе говоря, опираясь на отношение двойственности между модальными операторами М и L, можно с помощью этого правила осуществить вывод формулы вида ~1 Lp, если формула р не принадлежит рассматриваемой неподвижной точке. Но тогда в логике МакДермотта неподвижная точка состоит из всех модальных следствий из объединения множества формул Lp с указанной характеризацией и множества Л дополнительных аксиом.
Напротив, устойчивое расширение Т определяется следующим образом:'
• Т является устойчивым расширением А тогда и только тогда, когда Т есть множество тавтологических следствий из Ди{Тр|реТ)и U OLp\p^ Т}.
Легко заметить, что в определении неподвижной точки, данном Мак-Дермоттом, в совокупности аксиом нет (!) множества ^1р\реТу Мур [79] описывает природу этой неполноты следующим образом: «при авто-эпистемическом видении модального оператора L мыслящий субъект, использующий немонотонную логику Мак-Дермотта, всеведущ относительно всего им не предполагаемого, но может полностью игнорировать им предполагаемое». В самом деле, он не включает в число аксиом формулы вида «я предполагаю, что р подтверждается», которые квалифицируют положительные предположения субъекта.
Теперь относительно того, что любая теорема немонотонной 55-системы является теоремой в монотонной системе 55. Это можно объяснить следующим образом. Немонотонная 55-система содержит схему аксиомы знания, т. е. Lpzop (см. § 4.4.2). Для авто- эпистемического анализа немонотонности эта схема кажется слишком обременительной, так как она утверждает: «все, что предполагается, истинно». Это было бы приемлемо в логике знания, но не в логике веры.■
Если мы хотим построить немонотонную систему, то использование логики знания представляется неподходящим. Все выведенное не имеет больше статуса общезначимого в классическом смысле, ибо есть возможность модификации. Это кажется трудно совместимым со схемой аксиомы, требующей истинности всего предполагаемого. Поскольку ничто не позволяет выделить в системе Мак-Дермотта общезначимые утверждения и утверждения со статусом всего лишь выполнимых формул, эту схему аксиом, видимо, надо исключить.
С другой стороны, немонотонная 55-система содержит также схему аксиомы Мр то LMp, применяя которую совместно со схемой аксиомы знания, можно обосновать предположение в любой формуле [79].
Следовательно, нет дакой формулы, которая отсутствовала бы во всех неподвижных точках множества вспомогательных аксиом, получаемого с помощью немонотонной 55-системы. В частности, не существует теоремы вида П Lp (эквивалентной 44 П р) ни в какой теории, базирующейся на немонотонной 55-системе, ибо такая теорема имела бы обоснование, построенное с помощью правила немонотонного вывода из логики Мак-Дермотта. Мур [79] следующим образом толкует этот факт: «идеально разумный субъект, который предполагается не совершающим ошибок, склонен предполагать всё таким образом, что внешний наблюдатель не может сделать никаких выводов относительного того, что этот субъект не предполагаете.
Предлагается и еще один путь: не отвергать схему аксиомы Мр =d LMp, чтобы тем самым получить немонотонную 54-систему, а лучше отбросить схему аксиомы знания Lp td р, что приведет к немонотонной системе, основанной на модальной слабой 55-системе(§ 4.4.2).
Впрочем, Мур показал, что система вывода, содержащая произвольное подмножество схем модальных аксиом, присущих слабой 55-системе, дает всегда одни и те же устойчивые расширения (независимо от
11 Эта система иногда обозначается через К45 [15].
аавыбора указанного подмножества). Таким образом, автоэпистемическая логика может обойтись без явного упоминания схем модальных аксиом;
а
а
Семантика возможных миров
Описанная в § 4.6.2 семантика автоэпистемической
логики имеет то достоинство, что используя ее, можно характеризовать предположения субъекта, не ависи- мо от того, разумен он или нет. Между тем она оказалась неудобной для использования, будучи неконструктивной в том смысле, что в ней нет правил, позволяющих оценивать предположения субъекта о сложных формулах исходя из его предположений и/нли непредположений о составных частях формул. Это положение вещей вполне приемлемо для случая неразумного субъекта, ибо нельзя априори установить никакой связи между его предположениями. Напротив, предположения разумного субъекта подчиняются неким отношениям, из которых можно попы
таться извлечь пользу.
С этой целью Мур [78] предложил альтернативную семантическую характеризацию своей автоэпистемической логики. Эта новая семантика, основанная на понятии возможных миров, позволяет построить конечные модели для автоэпистемических теорий. Она дает возможность доказать существование полных и легальных относительно некоторого множества посылок автоэпистемических теорий, что было бы трудно осуществить с помощью первоначально указанной семантической характеризации.
Основным результатом, на котором базируется эта новая характеризация, является следующее утверждение:
Т есть множество формул, подтверждающихся во всех мирах 35-полной структуры (т. е. структуры (см. § 4.4.3) относительно системы 35, для которой любой возможный мир доступен из другого, неважно какого, возможного мира) тогда и только тогда, когда Т является устойчивой автоэпистемической теорией [78]..
Таким образом, любая автоэпистемическая интерпретация 3 устойчивой автоэпистемической теории 7 может характеризоваться структурой 36 типа S5 и некой оценкой Т. Структура возможных миров специфицирует предположения идеально разумного субъекта, тогда как оценка определяет то, что действительно подтверждается в реальном мире.
Точнее, автоэпистемическая интерпретация 3 автоэпистемической теории Т есть пара 3 ={Ж, У), где
3f— 55-полная структура (представленная множеством своих возможных миров, каждый из которых символизирован множеством подтверж- . дающихся позитивных и негативных пропози- ' циональных констант),
V оценка истинности в реальном мире для пропозициональных констант из Зр. .
Автоэпистемическая теория Т является множеством всех формул, истинных во всех мирах из ЗС.
Рассмотрим пример автоэпистемической интерпретации 3 ={Ж, Т} с 36 = {{</, /?}, {q, Пр}} и T = {p,qy 55-полная структура .%” составлена из двух возможных миров. В первом формулы q и р истинны. Во втором истинны формулы q и —I р. Оценка Т указывает, что р и q истинны в реальном мире. 3 — автоэпистемическая интерпретация автоэпистемической теории Т, содержащей все формулы, истинные во всех мирах структуры ЗС из 3. В данном случае Т сводится к единственной формуле q.
3 называется автоэпистемической моделью теории 7, составленной из, множества формул, истинных во всех мирах из ЗС, когда любая формула из Т подтверждается в 3.
Второй результат дает средство проверки, является ли автоэпистемическая интерпретация 3 для Т автоэпистемической моделью для Т.
Если 3 = {Ж, V^—автоэпистемическая интер- • претация для 7, то 3 является автоэпистемической моделью для 7 тогда и только тогда, когда Т — элемент из ЗС, что означает выполнимость
оценки Т вместе с данной оценкой, задаваемой в одном из возможных миров структуры УС (т. е. что реальный мир — один из миров, совместимых с предположениями данного субъекта) [78].
В нашем примере 3 — автоэпистемическая модель для Г, ибо оценка V реального мира выполнима вместе с оценкой, заданной в первом возможном мире структуры УС.
Эти две теоремы интересны тем, что они индуцируют метод проверки принадлежности формулы к устойчивому расширению исходного множества посылок..
Напомним, что устойчивое расширение Т множества А основных предположений (посылок) есть устойчивое множество предположений, основанное на А (§ 4.6.4).
В силу первой теоремы, автоэпистемическая теория Т устойчива, если ее можно представить 55-пол- ной структурой возможных миров. Чтобы автоэпистемическая теория Т была устойчивым расширением, нужно еще, чтобы Т была основана на множестве Л исходных предположений (следовательно, чтобы Т была легальна относительно Л). Иначе говоря, любая автоэпистемическая модель посылок А должна также быть и моделью для Т. В силу второй теоремы, оценка реального мира каждой из этих автоэпистемиче- ских моделей посылок должна быть выполнимой вместе с оценкой в одном из возможных миров структуры УС для автоэпистемической интерпретации.
Таким образом, можно предложить разрешающую процедуру для автоэпистемической логики [80]. Приведем один простой ее вариант.
Пусть А — множество посылок.
Строим все оценки, возможные для пропозициональных констант, появляющихся в А. Они будут характеризовать 35-полные структуры возможных миров языка для А.
Выбираем структуры возможных миров, для ко. торых любая формула из А подтверждается во . всех мирах.
Для каждой из этих структур ЭС строим все автоэпистемические интерпретации ^ЭС, VY соответствующие в,сем оценкам У пропозициональных констант, которые появляются в Л.
Проверяем для каждой автоэпистемической интерпретации (ЭС, У^ выполнение или невыполнение утверждения «любая формула из Л истинна в (,%”, У( тогда и только тогда, когда У принадлежит ЭС». В случае выполнёния ЭС характеризует некое устойчивое расширение для Л.
Чтобы проверить принадлежность данной формулы устойчивому расширению, представленному посредством ЭС, выясняем, подтверждается ли эта формула в ЭС.
Пример
Пусть множество исходных предположений Л = = (~1 Lp о <?}. Оно содержит только одну формулу, означающую «если я не предполагаю р, то q подтверждается». Докажем, что:
идеально разумный субъект, имеющий множество исходных предположений Л, состоящее из одного элемента, получит устойчивое расширение Т, содержащее высказывание q, но не р,
не может существовать ни устойчивого расширения, содержащего р, но не q, ни устойчивого расширения, содержащего одновременно р и q.
Предположим, что какое-то устойчивое расширение Т для Л содержит q, но не р. В этом случае 55-полной структурой, связанной с множеством предположений Т, будет 3C=Vkq, pY {</, И pY- (Эта структура отражает два возможных мира: в первом подтверждаются q и р, во втором — q и Пр. Истинные формулы во всех мирах этой структуры соответствуют формулам, предполагаемым данным субъектом. Таким образом, Т — устойчивая автоэпистемическая теория.)
Рассмотрим все автоэпистемические интерпретации для Т. Они составлены из структуры возможных
миров, отражающей предположения данного субъекта, и из произвольной оценки У истинности в реальном мире. В рассматриваемом языке лишь две пропозициональные константы; значит, оценок — четыре: Vp.qY (р, ”19}, Op, qY {1р, ”19}-
Из четырех автоэпистемических интерпретаций 3 = О, У) только первая и третья превращают в истинное основное предположение —I Lp о q. Так как оценка У для каждой из этих интерпретаций совпадает с оценкой возможного мира данной структуры, то теория Т основана на множестве посылок А (и, следовательно, является устойчивым расширением Л).
Предположим, что Т содержит р, но не q. Структура возможных миров будет тогда Х={{р, q}, {р, ”1 ^}}. Рассмотрим оценку У = ^~\р, qY Она служит основой автоэпистемической интерпретации 3=0, У} теории Т, подтверждающей А. Так как У не соответствует оценке какого бы то ни было мира этой структуры, то Т не может быть устойчивым расширением А.
Предположим, что Т содержит р и q. Единственно возможным является мир \р, q}. Так как существует автоэпистемическая интерпретация, подтверждающая А и заданная этим возможным миром и оценкой У = О Р, ”19}, Для которой У не соответствует единственному возможному миру данной структуры, то Т не может быть устойчивым расширением А. '
Вообразим, что субъект увеличил свое множество основных предположений за счет присоединения формулы р. Множество посылок А теперь такое: Vp, ”1 Lp^ qY Осуществим тот же анализ, что и выше.
Предположим, что Т содержит q, но не р. Тогда теория Т наверняка не является устойчивым расширением А, ибо Т даже не надмножество А.
Предположим, что 7 содержит р, но не q. Структура возможных миров, связанная с Т, будет такой: {{р, qY (Р, ”1 9}}- Автоэпистемическими интерпретациями для Т, подтверждающими эти две формулы из А, будут лишь те, которые заданы оценками
V = {р, </} и ^ = {р, ~]р}- Так как каждая из этих оценок соответствует оценке одного из возможных миров этой структуры, то Т является устойчивым расширением Л.
Предположим, что 7 содержит р и q. Соответствующая структура возможных миров есть {{р, р}}. Так как автоэпистемическая интерпретация ({{р, р}}> {р, ~1 р}) подтверждает основные предположения без того, чтобы ее оценка {р, —1 р] соответствовала оценке единственно возможного мира этой структуры, то Т не может быть устойчивым расширением А.
Области применения
Области применения автоэпистемической логики весьма разнообразны. Она позволяет характеризовать заключения, ожидаемые от системы, способной к совершенной интроспекции. Это особенно полезно, когда запрашивают базу данных или базу знаний об их собственных пределах знаний (см., например, альтернативную формализацию в [61]).
Между тем эффективное применение автоэпистемической логики ограничено возможностями языка высказываний и громоздкостью разрешающей процедуры. .
Подчеркиваем, что автоэпистемическая логика формализует идеально разумные рассуждения и является, таким образом, моделью способности к совершенному интроспективному рассуждению. В некоторых приложениях оказывается, что свойства формализуемого знания не требуют применения полных и выполнимых логических способностей. В свете подобных приложений автоэпистемическая логика выступает в роли такой модели компетенции, к которой могут сходиться используемые модели [38] _
Формальные грамматикии логическое программирование
Формальные грамматики и логика
Введение
Русская фраза есть конечная последовательность русских слов. Какова бы ни была грамматическая форма этих слов, они считаются неделимыми элементами. Кроме того, множество этих слов конечно. Следовательно, фраза есть конечная последовательность элементов данного конечного множества. Однако разрешены не все сочетания слов: надо, чтобы сочетания были корректны (в соответствии с некоторым синтаксисом) и имели смысл (в соответствии с некой семантикой) .
Мы способны говорить.или писать корректные и даже осмысленные фразы, не выслушивая или не прочитывая предварительно уже выраженные нами фразы. Таким образом, существует механизм построения фраз по мере наших надобностей (механизм порождения). С другой стороны, существует механизм признания корректными и понимания впервые встреченных фраз (механизм распознавания). Если бы можно было точно описать этот механизм, имелся бы общий эффективный метод отбора русских фраз среди произвольных последовательностей слов. Это была бы некая теория русского языка.
Для естественных языков и поныне не удалось вполне формализовать обсуждаемый механизм, но построены его приближения. Самое.известное, «грамматики структуры фразы», принадлежит Хомскому [16]. Среди них наиболее употребительны КС-грамматики (по-английски context-free), особенно для определения синтаксиса языков программирования. Подход таков:.
имеется словарь Т,
некоторые последовательности слов (элементы
замыкания Т* словаря Г) не являются «правильно составленными»,
мы хотим описать язык L, удовлетворяющий условию L <^ Т*, как множество правильно составленных фраз.
Используем «правила переписывания» («продукции»), Например, фраза составлена из подлежащего, сказуемого и определения. Подлежащее образовано местоимением и существительным, и т. д. Пишем формулы вида:
— Фраза-Подлежащее, Сказуемое, Определение. — Подлежащее-Местоимение, Существительное.
Далее задаем словарь (список существительных и т. д.) этого языка.
КС-грамматики образуют разрешимые формальные системы (§ 2.2.6). Это значит, что если язык L определен КС-грамматикой, то можно построить общий алгоритм распознавания фраз языка L.
Такой подход применяют при формализации логического языка. В логике синтаксис языка обычно определяется по инструкции. Это определение порождает правильно составленные выражения (формулы) языка. Сначала задается список исходных (базисных) выражений по категориям (см. § 1.1.3 — язык высказываний, § 1.2.3—язык предикатов). Эти исходные выражения соответствуют словам словаря различных синтаксических категорий (таких, как глагол, прилагательное, существительное) естественного языка, а также терминальным символам и синтаксическим категориям формальных грамматик и языков, вводимых в этой главе.
В логике принято выделять множество «правил построения», устанавливающих способы сочетания различных синтаксических категорий для образования более сложных выражений. Эти правила применяются рекурсивно и дают рекурсивное определение бесконечного множества формул, составляющих язык (порожденный по правилам из базисных выражений) Правила построения соответствуют правилам грамматики естественного языка (вроде такого правила:
«подлежащее, за ним сказуемое и определение — есть фраза») и правилам (продукции) формальных грамматик. .
В этом разделе мы введем понятия, связанные с формальными грамматиками и языками. Будет показано, что фразы этих языков можно считать приближениями (в определенном далее смысле) фраз естественного языка. Продукции формальных грамматик можно интерпретировать, как логическую формализацию правил грамматики естественного языка, а фразы— как подмножество множества логических формул. Подмножество это мы получим, используя синтаксис исчисления высказываний или синтаксис исчисления предикаГов и задавая множество базисных выражений (словарь) и правила построения.
Итак, формальные языки и грамматики будут преподнесены с одной стороны как некий результат, получаемый при формализации естественных языков и грамматик, а с другой — как частный случай логических языков и их синтаксисов. ■
Замечание. Мы используем следующие обозначения. Если 2— множество (алфавит или словарь), то 2* — замыкание множества 2 (или, иначе, свободный моноид, порожденный 2), т. е. множество всех конечных последовательностей (наборов, слов), составленных из элементов множества 2, включая пустую последовательность. 2+ — это положительное замыкание множества 2 или, иначе, свободная полугруппа, порожденная 2, т. е. множество непустых последовательностей элементов из 2.
КС-грамматики
Обычный способ определения языка, будь то естественный (естественная речь) или язык программирования, состоит в задании множества правил (продукций), образующих грамматику. Эти правила описывают те последовательности слов, которые считаются корректными (допустимыми) фразами языка. Грамматика позволяет осуществлять грамматический анализ фразы, а значит, и явно описать ее структуру.
Проявление интереса к КС-грамматикам было обусловлено стремлением формализовать естествен1
ные языки. КС-грамматики состоят из правил. При мер:
(1)
фраза
-* глагол, группа_сущ
(2)
группа_сущ
-* местоимение, прилага-
' тельное, существительное
(3)
групп.а_сущ
—>• местоимение, прилагательное, существительное, предлог, группа_сущ
(4)
глагол ' '
-* "печатать"
(5)
глагол
—» "стереть"
(6)
местоимение
-* "этот"■
(7)
местоимение
-> "эта"
(8)
прилагательное °
-*"вторая"
(9)
прилагательное
-» "первый"
(Ю)
прилагательное
—► "последний"
(И)
существительное
-*"пароль"
(12)
существительное
-* "строка"
(13) предлог
-> "в"'
Правило «фраза ->• глагол, группа-сущ» гласит: «для формирования фразы взять слово синтаксической категории глагол и поставить за ним последовательность слов синтаксической категории группа- сущ».
Множество из правил (2) и (3) указывает два возможных способа формирования «группы_сущ». В (3) использована рекурсия. «Базовый случай» рекурсии (2) позволяет завершить определение. Правило глагол -> «стереть» указывает на принадлежность слова из словаря к соответствующей синтаксической категории. Эта грамматика подтверждает грамматическую корректность последовательности (цепочки) слов ]стереть, этот, последний, пароль, в, этой, второй, строке]. Действительно, эту фразу можно построить из продукций:
*’ Рассматриваемые формальные грамматики беднее русской: среднего рода нет, числительные включены в прилагательные, а -пары предлог-местоимение в местоимеиия. Будь средний род, вместо «пароль» писали бы просто «слово».. Это относится И к последующим примерам. — Прим, перев. -
фраза-> "стереть", группа^сущ
группа _сущ —>"этот", "последний", "пароль", "из", группа._сущ
группа_сущ —>"эта", "вторая", "строка"
Помимо краткости представление языка грамматическими правилами очень гибко. Введение в язык нового множества фраз осуществляется путем добавления новых продукций к грамматике. Если к грамматике, описанной выше, добавим продукции:
местоимение —>"некий"
местоимение -"в этом"
прилагательное —> "третий"
существительное —> "символ"
существительное —>"страница"
то к языку присоединятся новые допустимые фразы, например:
[стереть, некий, первый, символ]
[стереть, этот, первый, символ, в этом, третьем, пароле]-
Формальное определение КС-грамматики
Формализуем интуитивное понятие КС-грамматики. КС-грамматика представляет собой четверку G = = (У, Т, Р, S), где ■
V — конечное множество переменных, часто называемых синтаксическими категориями или нетерминальными символами,
Т — конечное множество (непересекающееся с У) терминальных символов (слов),
Р — конечное множество правил (продукций) вида Л -> а, где А — элемент из У и а — последовательность (цепочка) символов множества У U Т,
В нашем примере:
У = ^группа_сущ, глагол, местоимение, прилагательное, существительное, предлог, фраза},
Т = ^печатать, стереть, этот, эта, некий, первый, вторая, третий, последний, символ, пароль, строка, страница, в, в этом},
'• S = фраза.
Язык строится с помощью грамматики и интерпретации каждой из его продукций как правила переписывания °. Продукция состоит из заголовка (слева от символа ->) и тела (справа от ->). Переписать формулу — это значит «заменить в формуле заголовок продукции ее телом». Продукции грамматики из § 5.1.2 можно интерпретировать следующим образом:
— (1) переписать ^фраза} на \глагол, группа- СУЩ},
■ — (5) переписать \глагол, группа.сущ} на [«стереть», группа_сущ}
— (2) переписать [«стереть», группа_сущ} на [«стереть», местоимение, прилагательное, существительное},
;— (6), (10), (11) переписать [«стереть», местоимение, прилагательное, существительное} на [«стереть», «этот», «последний», «пароль»] .'
На множестве (Уи^)* введем отношения) => и =>. Если Л—> р— продукция из Р, а и у— последовательности из множества (УОТ’)*. то аЛу=Ф-ару. Иначе это можно сформулировать так: «продукция Л -> р применяется к последовательности аЛу для получения последовательности ару» или «аРу получается непосредственно из аЛу в соответствии с
” Иное название — правило подстановки. — Прим, перев. -
грамматикой О». Две последовательности связаны отношением ф, когда вторая получается из первой применением некой продукции.
Пусть а,=>с^ а2=>а3, . . ., am_x=^am, '
где а], а2, ..., ат — последовательности из (KU?’)* Эта последовательность отношений =ф записывается
короче: ах=^ат. Таким образом, отношение => —это рефлексивное и транзитивное замыкание отношения =>.
Последовательность слов можно считать синтаксически корректной фразой (по отношению к правилам грамматики), интерпретируя каждую продукцию как правило обратного переписывания: «заменить в формуле тело продукции ее заголовком». Только что отмеченная двойственность порождения и распознавания является классической в теории автоматов и языков (разд. 5.2).
Язык L, порождаемый (распознаваемый) КС- грамматикой, есть множество последовательностей (слов), которые:
состоят лишь из терминальных символов,
можно породить, начиная с S.
Формально:
L = [w\weT* и S=>w}.■
Это множество образует КС-язык, порождаемый грамматикой G.~
Следующие последовательности являются фразами языка, порождаемого КС-грамматикой из § 5.1.2.'.
[стереть, этот, второй, пароль], [печатать, эту, вторую, строку], [стереть, этот, второй, пароль в, этой, третьей, строке],■
[стереть, эту, вторую, строку, в, этой, третьей, строке].
ФРФРРис. 5.1. Синтаксическое дерево.Рис. 5.1. Синтаксическое дерево.
ФР
ФР
Рис. 5.1. Синтаксическое дерево.
Рис. 5.1. Синтаксическое дерево.
Полезно представлять порождаемые продукциями фразы в виде синтаксических (или грамматических) деревьев. Каждый узел синтаксического дерева помечен либо переменной, либо терминальным символом грамматики. На рис. 5.1 изображено грамматическое дерево фразы «стереть этот последний пароль в этой второй строке». Вершина дерева называется корнем и помечена начальным символом грамматики. Листья (или висячие узлы) дерева помечены терминальными символами. Порождаемая фраза соответствует последовательности терминальных символов, сопоставленных листьям, причем листья проходятся слева направо. Все промежуточные узлы представляют продукции, используемые при построении правильных выражений, начинающихся с символа, приписанного корню. Таким образом, синтаксическое дерево описывает процесс построения правильного выражения. Если внутренний узел помечен символом А, а следующие за ним имеют метки Хь Х2, ..., Хр, то это означает, что- при построении правильного выражения была применена продукция А-^ХЬ Х2, ...
Хр.
Дерево на рис. 5.1 представляет последовательность продукций, примененных для построения фразы, начиная с символа фраза. Его еще можно записать д виде выражения со скобками (как список):
фр (г(стереть), гс(м(этот), п(последний), с (па, роль), гс(м(в этой), п(второй), с (строке))).
Этот список состоит из метки фр, за которой идут списки для следующих за ней узлов (здесь это узлы г и гс). Например, подсписок (гс(м (в этой), п (второй), с (строке))) представляет поддерево группы существительного гс.
Если переменные формальной грамматики соотнесены синтаксическим категориям грамматики естественного языка, то синтаксическое дерево отражает грамматический анализ фразы. Дерево на рис. 5.1 дробит фразу на глагол и две вложенные группы существительных, каждая из которых содержит местоимение, прилагательное и существительное. Грамматический анализ является основой семантического анализа.
Для КС-грамматики G = (V, Т, Р, S) синтаксическое дерево удовлетворяет следующим условиям:
каждый узел помечен символом из V (J Т,
корень помечен символом S,
внутренние узлы помечены элементами из V, ,
листья помечены элементами из Т,
•' если узел п н следующие за ним узлы П\, п2, . . ., пр — помечены соответственно символами А, Х\, Х2, ..., Хр, то А -> Xi, Х2, ..., Хр. является продукцией из Р, где категории Хь ..., Хр упорядочены так же (слева напра-
. во), как узлы П\, п2пр в рассматриваемом дереве.,
Синтаксическое дерево позволяет легко описать построение фразы в грамматике G. Некоторые фразы можно анализировать многими различными способами. Фраза двусмысленна, если ей может соответствовать несколько синтаксических деревьев.
КС-грамматика и хорновские дизъюнкты
В § 1.1.17 множество хорновских дизъюнктов интерпретировалось как КС-грамматика. Напомним, что хорновский дизъюнкт — это дизъюнкция литер, в которой не более одной позитивной литеры, например:
s V 1 р V "1» V г.'
Запишем эту формулу в импликативной форме:
s:-p, q, г
т. е. «8 истинно, если р, q и г истинны». Из этой записи видна аналогия между приведенным хорнов- ским дизъюнктом и нижеследующим правилом грамматики:
s^P, q, г
(т. е. «8 правильно построена, если р, q и г правильно построены»). Действительно, проинтерпретируем эту продукцию как логическую формулу; символ переписывания-> соответствует импликации «:—» (=э), а запятые—конъюнкциям. Элементы множества VU Т этой грамматики интерпретируются как атомы логики высказываний. Однако есть важное отличие: в продукции фиксирован порядок элементов (тела), а в дизъюнкте нет. Например (см. § 5.1.2), смь(сл продукций
фразаглагол, группа_сущ фразам группа_сущ, глагол
различен: в соответствии с первой продукцией фраза состоит из глагола, за которым следует группа существительного, а вторая продукция говорит о том, что во фразе сначала идет группа существительного, а за ней — глагол. В логике обе эти продукции интерпретируются одним дизъюнктом '>:
фраза V П глагол V П группа_сущ
Чтобы сделать логический формализм эквивалентным грамматическому, нужно ввести связку «следует за», присущую правилам грамматики. Формализовать эту связку можно с помощью понятия «списка», рекурсивное определение которого выглядит так: список состоит из первого элемента (головы) и следующего за ним, возможно пустого списка (хвоста). Список можно записывать в виде последовательности
11 Ибо конъюнкция (обозначения запятой выше) и дизъюнкция (присутствующая ниже) коммутативны (см. группу формул (1.4) ® § 1Л‘9).— Прим, перед. '
Рис. 5.3. Построение списка L = [1,2,[3,4] [L"].
символов (элементов списка), помещенных в квадратные скобки и разделенных запятыми, например L = = [1, 2, 3, 4].
Используются и другие обозначения. Пусть | обозначает символ построения списка из головы и хвоста. На рис. 5.2 список [1, 2, 3, 4] представлен в виде L= [1|L'], где L' = [2, 3, 4] —хвост списка L. На рис. 5.3 оператор | строит список L = [1, 2, [3, 4] [L"] из элементов 1, 2, [3, 4] и списка L".
Оператор | построения списка можно непосредственно использовать для формализации связки «следует за» для тел продукций, составленных из терминальных символов и завершаемых единственным нетерминальным. (В § 5.2.2 показывается, что такое: правило характеризует «регулярные грамматики».);
В § 6.4.2 исследуется общий случай правил с произвольным порядком терминальных и нетерминальных символов в теле продукции.
Например, «следование за» формализуется глаголом группы существительного посредством списка из головы (глагол Г) и хвоста (группа-сущ ГС): [Г|ГС].
Понятие списка подсказывает нам мысль связать с правилом грамматики
фраза —> глагол, группа_сущ
хорновский дизъюнкт из логики предикатов
фраза (Г | ГС):— глагол ([Г]), группа_сущ (ГС)
Он состоит из предикатов и его аргументы учитывают следование группы существительного за глаголом. Словесное описание его таково: «список [Г] ГС] является фразой, если Г — глагол, а ГС — группа существительного». Итак, переход от хорновских дизъюнктов логики высказываний к хорновским дизъюнктам логики предикатов завершает интерпретацию правил КС-грамматики в логических терминах.
Продукции (1) — (13) из § 5.1.2 переходят в хор- новские дизъюнкты логики предикатов (Г)— (13'). Каждый нетерминальный символ грамматики замещается предикатом, аргумент которого обозначается частью того выражения, которое он представляет. Всякий терминальный символ грамматики появляется в качестве аргумента предиката, отвечающего левой части правила. Правая часть соединяет аргументы левой части в порядке их появления в эквивалентной продукции:
(Г) фраза([Г | ГС]):— глагол ([Г]),группа_
сущ, (ГС)
(2х) группа_сущ ([Л4, П, С]) :— местоимение (\М\), прилагательное ([ /7 ]), существительное ([С])
(3х) группа_сущ((М, П, С, :— местоимение ((М(), Пред) ГС])прилагательное (\П\),
■существительное ([С]),
предлог ((Пред)), группа_сущ (ГС)
■(4') глагол [печатать])
(5') глагол ([стереть])
. (6') местоимение ([этот})
(7х) местоимение ([эта])■
(8х) прилагательное ([вторая]),
(9') прилагательное ([первый])■
(10') прилагательное ([последний])'
(11х) существительное ([пароль])
(12') существительное ([строка])
(13х) предлагав])
ОК-грамматики -
В § 5.1.4 мы представляли КС-грамматику набором хорновских дизъюнктов логики предикатов (с одним аргументом). Была установлена следующая эквивалентность:
.Продукции КС-грамматики
Хорновские дизъюнкты из одноместных предикатов
КС-грамматики имеют ряд ограничений. В частности, как подсказывает их название, они не позволяют «учитывать контекст». Поясним сказанное на примере из § 5.1.2. Правила переписывания из § 5.1.3, примененные к продукциям нашей грамматики, порождают фразы
— стереть эту последнюю строку,
' — стереть эту вторую строку в этой второй строке.
Первая синтаксически некорректна: нарушено согласование родов. Вторая синтаксически корректна, но семантически абсурдна (бессмысленна). Есть средство избежать фраз-паразитов, оставаясь в рамках формализма КС-грамматик. Однако для оздоровления ситуации часто приходится вводить много дополнительных правил учета всех согласований, исключений и т. д. Разумнее модифицировать формализм КС- грамматик в более мощный, позволяющий учитывать
контекст и сохраняющий простоту исходного формализма.
Введем формализм грамматик определенных клауз (OK-грамматик, ОКГ °, по-английски definite clause grammar, DCG). Покажем, как переход от КС-грамматик (КСГ) к ОКГ позволяет исключить из языка нежелательные фразы наподобие цитированных. Затем формализуем понятие ОКГ.
Напомним, что КС-правило
группа^сущ -» местоимение, прилагательное, существительное
представимо дизъюнктом
группа_сущ ([Л4, /7, С]):— местоимение ([Л4]), прилагательное ({//]), существительное ([С])
Введем согласование родов (женский или мужской) во фразах языка. Для этого введем контекстуальный аргумент (К) в элементах правила:
группа_сущ -» местоимение (К), прилагательное (К), существительное (К), группа^сущ
Этот аргумент является логической переменной, пробегающей некое множество значений. Для случая согласования родов это множество состоит из элементов «женский» и «мужской», рассматриваемых как логические константы. Иными словами, при переписывании переменная К заменяется на константу, что обеспечивает согласование родов в трех членах продукции. Эта замена соответствует правилу унификации логики предикатов (§ 1.2.13).
Таким образом, добавление аргументов в правило КС-грамматики приводит к правилу ОК-грамматики. Значит, правила переписывания ОКГ соответствуют таковым в КСГ (§ 5.1.3), но при этом добавляется логическая унификация. Подобное уже встречалось в гл. 1, когда резолюция исчисления предикатов (§ 1.2.14) получалась из резолюции исчисления высказываний (§ 1.1.12) посредством добавления унификации.
п Или, иначе, грамматик определенных дизъюнктов (ГОД).—• Прим, перед.
В свою очередь продукцию OK-грамматики можно представить хорновским дизъюнктом
группа_сущ ((М,П,С]):— местоимение (К,[М]), прилагательное (К, [/7]), существительное (К, [С]).
Отметим, что хорновские дизъюнкты, составлении из многоместных предикатов, интерпретируются ка| продукции ОКГ..
Перепишем пример из § 5.1.2, используя правил!
ОКГ, обеспечивающие согласование родов:1
глагол,глагол,(1") фраза
глагол,
глагол,
(2") группа_сущ(3") группа_сущ(2") группа_сущ(3") группа_сущгруппа_сущ
(2") группа_сущ
(3") группа_сущ
(2") группа_сущ
(3") группа_сущ
-> местоимение (К), ;
прилагательное К) существительное (К)
—> местоимение (К), прилагат ельное(К) существительное (К)
группа_сущ-* (печатать)—>• (стереть)—> [этот]■-* [эта]—> (второй)—> (вторая)—>• (последний) '—> (последняя)-> (символ)—> (пароль)->(строка)—>(страница)группа_сущ-* (печатать)—>• (стереть)—> [этот]■-* [эта]—> (второй)—> (вторая)—>• (последний) '—> (последняя)-> (символ)—> (пароль)->(строка)—>(страница)предлог,•
группа_сущ
-* (печатать)
—>• (стереть)
—> [этот]■
-* [эта]
—> (второй)
—> (вторая)
—>• (последний) '
—> (последняя)
-> (символ)
—> (пароль)
->(строка)
—>(страница)
группа_сущ
-* (печатать)
—>• (стереть)
—> [этот]■
-* [эта]
—> (второй)
—> (вторая)
—>• (последний) '
—> (последняя)
-> (символ)
—> (пароль)
->(строка)
—>(страница)
(4") глагол
(5") глагол,
(6") местоимение (мужск)
(7") местоимение (женск)
(8") прилагательное (мужск)
(9") прилагательное (женск)
(10") прилагательное (мужск)
(11") прилагательное (женск)
(12") существительное (мужск)
(13") существительное (мужск)
(14") существительное(женск)
(15") существительное (женск)
(16") предлог '
Терминальные символы, употреблявшиеся с кавыЧ’ ками в КС-грамматике из § 5.1.2, здесь помещены! в квадратные скобки как списки (одноэлементные)! формализма ОКГ. Правило местоимение (мужск) -И [этот] соответствует дизъюнкту местоимение (мужск! [этот]). Синтаксическая категория группа-суиа должна удовлетворять согласованию родов. Поэтому
в самой полной общности в продукциях (2") и (3") следовало бы писать группа_суиЦК) вместо груп- па_су!Ц. Этого можно избежать, используя неопределенную форму глаголов (как в нашем примере).
Фраза «стереть эту последнюю строку» не может быть построена по правилу (2"), ибо невозможно осуществить унификацию аргументов, сопоставленных местоимению эта, прилагательному последний и существительному строка: одно слово мужского рода, два другие — женского.
. Аргументами в правилах OK-грамматик можно моделировать синтаксические контексты не только для согласований рода или числа. Подчас можно учесть и семантические контексты. Обогатим формализм ОКГ для исключения абсурдных фраз. С этой целью обобщим формализм КГС в ином направлении. Помимо списков переменных и терминальных символов, правые части продукций будут содержать «обращения к процедурам», записываемые в фигурных скобках. Эти обращения налагают на продукции условия применимости для введения контекстуальных сведений в грамматику.
Проиллюстрируем обращение к процедуре на примере из § 5.1.2, когда КС-грамматика порождала и распознавала такие фразы, как следующая: «стереть эту вторую строку в этой второй строке». Эта фраза грамматически допустимая, синтаксически корректная,но семантически абсурдная. Заменим часть правил КС-грамматики на соответствующие правила ОК-грамматики:„
(Г") фраза—»глагол,
•группа_сущ (X)
(2'") группа_сущ (У])-» местоимение (К),
прилагательное (К), существи-
'тельное^К, ZJ,
.{Г, < ZJ
(3"') группа_сущ(У<^-» местоимение (К),
прилагательное (К), существительное (К, Z^),
{Г2 < Z2}, предлог, ' группа^сущ (Z^ (12"') существительное (муже, 1) > [символ] (13"') существительное (муже ,2) > [пароль} (14'") существительное (жен,3) ->[строка] (15'") существительное (жен, 4) —» [страница] ■
Первоначальная ОКГ приобрела две новые характеристики. Во-первых, в правиле (2"') появилось условие {У1 <. Zi}. Оно проверится для аргументов У1 и Z] до применения правила. Во-вторых, аргумент (со значениями 1, 2, 3, 4) формализует семитическую иерархию следующей последовательности элементов: символ, пароль, строка и страница — их вложенность друг в др>га.
Покажем, что эти характеристики дают возможность предотвратить порождение и/или распознавание абсурдных фраз, таких, как «стереть эту последнюю строку в этой последней строке». Пусть в продукции группа-сущ (У2) переменные местоимение, прилагательное и предлог заменены константами:
группа сущ(У2) [эта,последняя], существительное (жен, Z2), [Y2 < Z2}, [а[, группа_сущ (Z2)
По правилу переписывания существительное (жен, 3) -> [строка] меняем выше существительное (жен, Z2) на строку, поскольку Z2 приним. т значение 3. После переписывания имеем:
группа_сущ(у2) -*[эта, последняя, строка], [Y2 < 3}, [в], группа_сущ (3)
По правилу переписывания гpynna_cyщ(Y \) -> [эта, последняя], существительное (жен, Zx), {К; < ZJ меняем группу-Сущ(3) на [[эта, последняя], существи- тельное(жен, Zi), {3<Zi}], ибо У1 принимает значение 3. Имеем:
группа_сущ (У2) -> [эта,последняя,строка], (У2 < 3}, [в, этой, последней], существительное (жен, ZJ, {3 < ZJ
Наконец, ищем замену в словаре для существительного ^жен, Zi) с учетом соотношения Zx > 3. Единственно подходящее правило переписывания существительное (жен, 4) -> [страница^ дает:
группа_сущ (К2) -► [эта,последняя,строка^, (К2 < 3}, [в,этой,последней,странице\ 11
Эта продукция порождает или распознает лишь фразы вида: глагол | [эта, последняя, строка, в, этой, последней, странице^. Вызов процедуры {3 < ZJ исключил абсурдные фразы.
Итак, формализм OK-грамматик превосходит формализм КС-грамматик в двух направлениях:
синтаксические категории могут быть многоместными предикатами,
в телах продукций допустимы несколько обращений к процедурам (заключенные в фигурные скобки).
Расширение формализма ввело в грамматику кое- какую зависимость от контекста. Кроме того, ОК- грамматики представляют структуру фразы благодаря аргументам и унификации. Они не только воспринимают и порождают фразы, ио и представляют синтаксические составляющие в форме дерева для «понимания» (помимо «распознавания») фраз. Пример построения синтаксического дерева см. в § 5.1.7.
5.1.6. OK-грамматики и логика
Переход от КСГ к множеству дизъюнктов осуществляется непосредственно. В § 5.1.4 правило
группа-сущ -*■ местоимение, прилагательное, существительное
мы уподобили дизъюнкту
группа_сущ ([М, /7,С]):— местоимение ([Л4]), прилагательное ([/7]), существительное ([С])
*> Собственно no-русски следовало бы писать «на ... странице», но мы стеснены заданными формальными рамками. — Прим, перед._
Формализм ОКГ и логика тоже связаны непосредственным образом. Правило (3") из § 5.1.5
группа_сущ (У2) -> местоимение (К), прилагательное^), существительное (К, Z2), (y2<Z2),предлог, группа_сущ (Z2)
подобно хорновскому дизъюнкту
группа-сущ (У2, [Af, П, С, Пред\ГС\):— местоимение ^К, [Л4]), прилагательное (К, [/7]), существительное (К, Z2 [С]), У2 < Z2, предлог (Пред), гpynna_cyщ(Z2, ГС)
Синтаксические категории, вроде существительное (К, Z2) и группа-сущ (У2) интерпретировались нами, как логические предикаты. Обращение к процедуре К2 < Z2 тоже можно интерпретировать как логический предикат, принимающий значение И при У2 < < Z2, J1 в противном случае.
Этот предикат неравенства не получает дополнительных аргументов, когда правило ОКГ берется в~ клаузальной форме (т. е. в виде дизъюнкта). Предикаты в фигурных скобках не соответствуют никаким словам или частям фразы. Их единственное назначение— наложить ограничения на управляемые грамматикой параметры. Перевод формализма ОКГ в формализм хорновских дизъюнктов логики предикатов является непосредственным и его можно автоматизировать:.
каждая продукция соответствует хорновскому дизъюнкту;
заголовок продукции становится позитивным предикатом хорновского дизъюнкта;,
каждый член тела продукции становится нега тивным предикатом; этот предикат получает дополнительный аргумент, если член продук ции не заключен в фигурные скобки;
позитивный предикат получает новый аргумент в виде списка дополнительных аргументов в по! рядке появления соответствующих членов в теле продукции.
Этот активный механизм грамматического формализма устроен по принципу переписывания. Именно этот механизм порождает или распознает фразы языка, описанного данной грамматикой.
Покажем, что переход от грамматики к логике преобразует это переписывание в дедукцию, точнее, в резолюцию (§§ 1.1.12, 1.2.14).
Каждое правило грамматики интерпретируется как хорновский дизъюнкт. Множество таких дизъюнктов представляет грамматику как множество гипотез, необходимых для доказательства некой логической теоремы, например: данный список слов есть фраза языка. Более строго: данный список слов есть логическое следствие правил грамматики.
Если GiGn — правила грамматики, записанные в виде хорновских дизъюнктов, a L — логическое выражение списка слов, то Доказательство теоремы сводится к логическому подтверждению общезначимости следующих (эквивалентных) формул (см. § 1.1.9):
(О] Л ... Л G„) zd L„
№Л ... Л6„ДП/>Л,
(ПО, V • •• VnG„VL) = H.
Запишем КСГ из § 5.1.2 на языке дизъюнктов логики предикатов в соответствии с § 5.1.4. Затем преобразуем импликативную форму хорновских дизъюнктов в эквивалентную дизъюнктивную. Получим следующие выражения:
фраза ([Г |ГС|) V И глагол ([Г]) V
V П группа_сущ (ГС)
группа^сущ ([M,/7,C])V ~дместоимение (К ДМ)) V У И прилагательное (К ДЩ) V П существительное (К ,[С])
глагол ((стереть))
местоимение (муже, [этот])
прилагательное (муже, (последний))
существительное (муже, (пароль)) и т. д.
Убедимся в том, что: список слов [стереть, этот, последний, пароль] является грамматически допустимой фразой. Это сводится к проверке того, что дизъюнкт
фраза ([стереть, этот, последний, пароль]) является логическим следствием данной грамматики,, т. е., в нашем случае, дизъюнктов (1) — (6). Таким образом, надо доказать, что конъюнкция (произведение) дизъюнктов (1) — (6) и отрицания дизъюнкта (7) ложна (равна нулю). Для каждого этапа доказательства выпишем последовательно
— результат резолюции,
— используемые в резолюции дизъюнкты,
— примененные унификации (в случае необходимости).
(8) —I глагол ([стереть]) Л ~1 группа_сущ ([этот, последний,пароль]); резолюция: (1) и “1 (7), унификация: {(Г, стереть), (ГС,[этот, последний, пароль])};
е (9) ~1 группа_сущ([этот,последний,пароль]); резолюция: (3) и (8);
(10) —I местоимение (К, [этот]) V ~I прилагательное (К,[последний]) V —^существительное (К, [пароль]);
. резолюция: (2) и (9), унификация: ((М,этот), (П, последний),
'(С, пароль)};.-
(11) ~I прилагательное (муже, [последний]) V
V ~! существительное (муже .[пароль]); резолюция: (4) и (10), унификация: (К,муже);
(11) Л, резолюция: (5), (6) и (11).
Эта процедура подтверждает равенство нулю произведения дизъюнктов (1)— (6), П (7). Следовательно, список
[стереть, этот, последний, пароль]
является допустимой фразой грамматики, представимой дизъюнктами (1) — (6).
5.1.7. Построение синтаксического дерева
В § 5.1.3 синтаксическое дерево на рис. 5.1 представлено списком со скобками:
фр (г (стереть), гс (м(этот), п (последний), с (пароль), гс (м (в этой), п (второй), с (строке)))).
Опишем процесс получения списка и (следовательно) дерева в OK-грамматике из § 5.1.5, используя новые обозначения для аргументов. Синтаксическое дерево получится из последней унификации процедуры доказательства, приведенной в § 5.1.6. Начнем с пе
реписывания нашей uivi некоторые аргументы:фраза(фр(ГГ ,Гс))группа_сущ (Kj,гс (Мс, Пл ,СС))реписывания нашей uivi некоторые аргументы:фраза(фр(ГГ ,Гс))группа_сущ (Kj,гс (Мс, Пл ,СС))группа^сущ (У2, гс (Мс ,Пл,СС, П редл., гс (Г с))группа^сущ (У2, гс (Мс ,Пл,СС, П редл., гс (Г с))глагол (г (стереть))глагол (г (печатать)) .(6) местоимение (муже, м (этот))местоимение (жен, м (эта))прилагательное (муже ,п (второй))прилагательное (жен, п (вторая))прилагательноеглагол (г (стереть))глагол (г (печатать)) .(6) местоимение (муже, м (этот))местоимение (жен, м (эта))прилагательное (муже ,п (второй))прилагательное (жен, п (вторая))прилагательное(муже, п (последний))(муже, п (последний))замматики, дооавляя к ней>глагол(Г Г),груп- па_сущ (0,Гс)> местоимение (К, Мс), прилагательное (К, Пл), существительное(К, Z.cojr. < ZJ .> местоимение (К, Мс), прилагательное (К, Пл), существительное (К,Z2,CC), {Y2<Z2}, предлог (Предл), группа_сущ (Z2, Гс)> [стереть]>[печатать]> [этот]'> [эта]> [второй]> [вторая]> [последний] .замматики, дооавляя к ней>глагол(Г Г),груп- па_сущ (0,Гс)> местоимение (К, Мс), прилагательное (К, Пл), существительное(К, Z.cojr. < ZJ .> местоимение (К, Мс), прилагательное (К, Пл), существительное (К,Z2,CC), {Y2<Z2}, предлог (Предл), группа_сущ (Z2, Гс)> [стереть]>[печатать]> [этот]'> [эта]> [второй]> [вторая]> [последний] .
реписывания нашей uivi некоторые аргументы:
фраза(фр(ГГ ,Гс))
группа_сущ (Kj,
гс (Мс, Пл ,СС))
реписывания нашей uivi некоторые аргументы:
фраза(фр(ГГ ,Гс))
группа_сущ (Kj,
гс (Мс, Пл ,СС))
группа^сущ (У2, гс (Мс ,Пл,СС, П редл., гс (Г с))
группа^сущ (У2, гс (Мс ,Пл,СС, П редл., гс (Г с))
глагол (г (стереть))
глагол (г (печатать)) .(6) местоимение (муже, м (этот))
местоимение (жен, м (эта))
прилагательное (муже ,п (второй))
прилагательное (жен, п (вторая))
прилагательное
глагол (г (стереть))
глагол (г (печатать)) .(6) местоимение (муже, м (этот))
местоимение (жен, м (эта))
прилагательное (муже ,п (второй))
прилагательное (жен, п (вторая))
прилагательное
(муже, п (последний))
(муже, п (последний))
замматики, дооавляя к ней
>глагол(Г Г),груп- па_сущ (0,Гс)
> местоимение (К, Мс), прилагательное (К, Пл), существительное(К, Z.cojr. < ZJ .
> местоимение (К, Мс), прилагательное (К, Пл), существитель
ное (К,Z2,CC), {Y2<Z2}, предлог (Предл), группа_сущ (Z2, Гс)
> [стереть]
>[печатать]
> [этот]'
> [эта]
> [второй]
> [вторая]
> [последний] .
замматики, дооавляя к ней
>глагол(Г Г),груп- па_сущ (0,Гс)
> местоимение (К, Мс), прилагательное (К, Пл), существительное(К, Z.cojr. < ZJ .
> местоимение (К, Мс), прилагательное (К, Пл), существитель
ное (К,Z2,CC), {Y2<Z2}, предлог (Предл), группа_сущ (Z2, Гс)
> [стереть]
>[печатать]
> [этот]'
> [эта]
> [второй]
> [вторая]
> [последний] .
прилагательное
(жен,п (последняя)) —> [последняя]
существительное
(муже, 1, с (символ1)) —> [символ]
существительное
(муже, 2, с (пароль)) -> [пароль]
существительное
(жен, 3, с (строка)) -> [строка] '4
существительное '.
(жен, 4, с (страница)) -> [страница]
предлог (пред (в))—> [в]
Если докажем, что дизъюнкт
фраза (X, [стереть.этот,последний,пароль]) является логическим следствием правил этой грамматики, то результатом последней унификации для переменной X будет скобочное представление синтаксического дерева списка [стереть, этот, последний, пароль]. Перепишем некоторые правила грамматики на логический лад:-
О') фраза(фр (ГГ ,Гс),]Г \ГС]) V 1 глагол(ГГ, [Г]) V
—I группа_сущ (0,Гс, ГС)
(2') группа_сущ(Гх,гс(Мс,Пл,СС), [M,/7,C])V
местоимение (К, Me, [М]) V —। прилагательное (К, Пл,[П]) V ^существительное(К ,ZX ,СС, [С]) V Г, < Z,
(4') глагол (г (стереть), [стереть])
(6х) местоимение (муже, м (этот), [этот])
(10х) прилагательное (муже ,п (последний), [последний])
(13х) существительное (муже ,2, с (пароль), [пароль
О 7х) фраза (X, [стереть, этот, последний, пароль])
Этапы доказательства следующие:
(18х) группа_сущ(Ух,гс (Мс ,Пл,с (пароль)),
[Л1 ,П, пароль]) V ~1 местоимение (муже, Мс [Л4]) V ~1 прилагательное (муже, Пл ,[П л]) \ ^<1, резолюция: (2х) и (13х),
унификация :{К, муже), (Zx, 1),;
(СС, с (пароль)), ([С], [пароль])};чj
(19') группа_сущ(У],гс(Мс,п (последний), с (пароль)), [М, последний, пароль]) V V ~। местоимение (муже, Мс ,[М]) V Yt < 1, •' резолюция : (10') и (18'),
. унификация : ((Пл,п (последний)), ([П], [последний])};
(20') группа_сущ(Ух,гс (м (этот), п (последний),
с (пароль)), [этот, последний, пароль]) V Yt < 1, резолюция : (6') и (19'), унификация : {(Мс,м (этот)),([М],(этот])};
. • (21') фраза (фр (ГГ,гс (м (этот),п (последний),
'с (пароль))),[Г [[этот .последний, пароль] ]) V
V глагол (ГГ, [Г]) V0< 1,
. ' резолюция : (1') и (20'),
унификация : {(Гс,гс(м (этот), п (последний),
' с (пароль))), (У।, 0), (ГС, [этот,последний, пароль])};‘
(22') фраза(фр(г(стереть),гс(м(этот), , п (последний), с (пароль))), [стереть, этот, последний, пароль]),
■ . резолюция : (4') и (2Г),
. ' унификация : {(ГГ,г (стереть)), ([Г], [стереть])};
(23') Л,
резолюция : (17') и (22'), унификация : ((X ,фр (г (стереть) ,гс (м (этот), п (последний), с (пароль))))}
Этот пример иллюстрирует построение синтаксического дерева фразы с помощью процедуры доказательства теоремы.
Резюмируем наш подход. Логическая формула С является следствием набора логических формул Fi, ... ..., Fn тогда и только тогда, когда логическая формула ((F] А... A F„) zd С) общезначима. Здесь Ft — гипотезы, С — заключение. В нашем примере гипотезами являются продукции грамматики G, а заключением теоремы «данный список слов есть допустимая фраза данной грамматики» — логическая формализация тестируемого списка слов. Теорема формально
10 А. Тейз и др.
выражается следующей тавтологией:
|= (Л (продукции из G) о ((список слов)^э
zd (фраза из G))).
Для получения алгоритма автоматического доказательства надо к логической резолюции добавить некую стратегию. Стратегия — это алгоритм, указывающий порядок просмотра дизъюнктов при применении метода резолюций. Такая стратегия существует, например, для языка Пролог. В § 5.1.8 мы продемонстрируем, как ОКГ может быть реализована в виде программы на Прологе. В § 5.1.10 будут рассмотрены понятия стратегии вообще и Пролога в частности.
OK-грамматики в Прологе
Язык Пролог — плод трудов Колмероэ [20], применившего хорновские дизъюнкты и резолюцию в информатике для создания нового языка программирования задач исследования естественного языка. Основой Пролога (одного из самых привлекательных языков ИИ) является логика первого порядка, ограниченная хорновскими дизъюнктами и снабженная резолюцией как единственным правилом вывода. Важнейшие аспекты Пролога и введение в программирование на нем приводятся в гл. 6. Здесь же мы лишь установим связь между ним, ОК-грамматиками и формализмом хорновских дизъюнктов. Программа на Прологе представляет собой набор правил ОК- грамматики. Следовательно, продукции
фраза-> глагол,2руппа_су1ц^ (5.1)
фраза кфр (Г, Гс)) —> глагол (Г), группа_сущ (0, Гс)
(5-2)
можно толковать как инструкции, допускающие реализацию на Прологе. Примеры реализаций инструкций и программ на Прологе даются в гл. 6. Пока же достаточно знать, что «реализация» или, иначе, «выполнение», подразумевает управление правилами переписывания, т. е. резолюцией, применяемой к продукциям (которые интерпретируются как хорновские дизъюнкты).
Внутренний механизм Пролога переводит продукции (5.1) и (5.2) в следующие инструкции:
фраза (Х,У):— глагол ^Х ,Х^,группа_су1ц (О.^.К) (5-3)
фраза ^фр (Г ,Гс),Х,У): — глагол (Г ,Х,Хх), ' группа^сущ $,Гс,Хх ,У)
(5.4)
Логическая интерпретация хорновских дизъюнктов требует аргумента для учета следования (см. § 5.1.4). Замена символа переписывания -> символом проло- говской импликации «:—» требует двух аргументов- списков. Пусть (для определенности инструкций), (5.3) и (5.4) проверяют, что некий список слов есть фраза языка. Тогда аргумент X предиката глагол ДХ^ является этим списком слов, а Хх— тем же списком без заголовка, если заголовок является глаголом. Следовательно, Х\ — соответствующая группе существительного часть списка, ибо [фраза] = [гла- гол\ группа-сущ]. Наконец, аргумент У соответствует списку слов без глагола и слов, представляющих группу-сущ. Таким образом, следование слов (или вообще связка «следует за» для продукций) представляется разностью «—» двух списков (см. § 6.3.6). В рассматриваемом сейчас примере
Xi = [X — [глагол} ].
Каждый тип инструкций прологовских программ интерпретируется двумя различными способами: декларативно и процедурно. Если инструкция (дизъюнкт) имеет непустые заголовок и тело, то она произносится так:
Декларативное произнесение: список X— У является фразой, если список X—Хх является глаголом, а список Хх — У — группой существительного.
Процедурное произнесение: чтобы найти список X—У, являющийся фразой, надо найти список X— Хх, являющийся глаголом, и список Хх — У, являющийся группой существительного.
Прочтения дезъюнкта Р: — Q, R, S таковы:
Декларативное: утверждение Р истинно, если утверждения Q, R и S истинны.
Процедурное: чтобы достичь цель Р, надо достичь цели Q, R и S.
Процедурный аспект Пролога состоит в интерпретации каждого дизъюнкта как некой процедуры:
заголовок дизъюнкта представляет имя и формальные аргументы процедуры,
тело дизъюнкта может содержать обращение к другим процедурам.
Дизъюнкты с терминальными символами в телах записываются на Прологе следующим образом: .
глагол —> [стереть].(5.5)
глагол (г (стереть)) -> [стереть].(5.6)
Внутренний механизм Пролога преобразует эти инструкции в:
глагол ([стереть | S], S).,(5.7)
глагол (г (стереть), [стереть | 3], S).(5.8)
Обозначение [стереть|S] представляет список с заголовком из терминального символа стереть и телом *> из списка S. Дизъюнкт с пустым телом (например, (5.7)) интерпретируется как факт. Выражения (5.7) и (5.8) можно использовать вместо (5.5) и (5.6) и интерпретировать следующим образом:
Декларативно: для всех S истинно, что заголовок списка [стеретб|5] является глаголом.
Процедурно: цель состоит в нахождении глагола, с помощью которого строился бы список с заголовком стереть.
Фактами являются дизъюнкты с телами И, например:
глагол ([стереть \S], S):— И.
■ Если заголовок дизъюнкта пустой, то дизъюнкт содержит лишь члены с отрицаниями. Тогда он тол-
*> В § 5.1.4. заголовок и тело списка были определены соответ- ственио как голова и хвост. — Прим, перев.
куется как «вопрос» (или «цель»). Заголовок у вопроса— ложный. Например:
Л:—фраза (фр (ГГ,Гс), X, Y).
Используя прологовский симврл «?—», перепишем этот вопрос в следующем виде:
?— фраза(фр(ГГ ,Гс), X, Y).
Он интерпретируется двумя способами:
Декларативно: Существует ли список X—У, представляющий фразу с синтаксическим деревом фр(ГГ, Гс)?-
■• Процедурно: Построить список X—Y, пред
' ставляющий фразу с синтаксическим деревом
' фр(ГГ,Гс).
Итак, программа на Прологе состоит из дизъюнктов, являющихся фактами или правилами. Обращение к программе осуществляется посредством постановки вопроса, т. е. путем присоединения к ней «цели» (дизъюнкта с пустым заголовком).
Пример
Описываемая ниже программа на Прологе может распознавать допустимые фразы некой грамматики в множестве последовательностей ее слов и строить синтаксические деревья для исследуемых фраз.
фраза (фр (ГГ,Гс))~*глагол (ГГ),
группа_сущ (0, Гс)
-(2) группа_сущ (У],
гс (Мс, Пл, СС)) -* местоимение (К, Мс), прилагательное(К,,Пл), ■существительное (К,
Zt,CQ, (Yv<Zty
груапа_сущ(У2,гс(Мс,
Пл ,СС,П редл, Гс))-> местоимение (К,Мс),
прилагательное(К ,П)л, "существительное (К,
Z2,CC), (Y2<Z2), предлог (Предл), ■гpynna_cyщ(Z2,Гc).
глагол (г (стереть))■
глагол (г (печатать))
местоимение (муже,
-> [стереть).
—»[печатать].
м (этот))
(7) местоимение (жен,
-> [этот].
м (эта))
—>[эта].■
прилагательное (муже, п (второй))
прилагательное (жен.
—> [второй].
п (вторая))
—> [вторая].
(10) прилагательное (муже,
п (последний))
-> [последний].
(11) прилагательное (жен.
п (последняя))
[последняя]
(12) существительное
(муже, 1, с (символ))
-> [символ].
(13) существительное
(муже ,2, с (пароль))
-> [пароль].
(14) существительное (жен,
3,с (строка))
-> [строка].
(15) существительное (жен,
4,с (страница))
—> [страница].
(16) предлог (пред (в))
->И.
Внутренний механизм Пролога преобразует эти инструкции в следующие:
(Г) фраза (фр (ГГ,Гс),Х,Y)
: — глагол(ГГ ,Х ,Z), группа_сущ(О ,Гс ,Z,Y). (2') группа..сущ (У^гс (Мс,Пл,СС)Д ,У)
: — местоимение(К, Me, Z, W),прилагательное (К,ПлД,Ю, существительное (K,ZX,CC,R,Y), YX<ZV
(3') группа_сущ (У2,гс (Мс ,П л ,СС ,Предл,Гс) ,Z , К) :— местоимение (К, Me ,Z Д), прилагательное (К, Пл Д ,R), существительное (R,Z2,СС, R,T), У2 < Z2, '.предлог (Предл,Т,U),группа_сущ Д2,Гс,
U ,У).
(4') глагол (г (стереть), [стереть | S], S)..
(5') глагол (г (печатать), [печатать | S], S).
. (6') местоимение (муже, м (этот), [этот| 3], S).
.(7') местоимение (жен, м (эта), [эта| S], S).fl
(8') прилагательное (муже, п (второй), [второй |S], 3).
(9х) прилагательное (жен, п (вторая), [вторая] S], 3).
(10х) прилагательное (мужс,п (последний), ■ [последний 13], S).
(11х) прилагательное (жен, п (последняя), [последняя | 3], 3).
(12х) существительное (муже,1 ,с (символ), ' [символ |3], 3).
(13х) существительное (муже ,2, с (пароль), [пароль! 3], 3).
(14х) существительное (жен,3,с (строка), [строка | 3], 3).
(15х) существительное (жен ;4, с (страница), [страница! 3], 3).
(16х) предлог (пред (в), [в| 3], 3).
Рассмотрим пример. Для синтаксического анализа фразы «стереть этот последний пороль в этой второй строке» ставим этой программе, состоящей из 16 инструкций, Следующий вопрос:
(17х) ? — фраза (Ф, [стереть, этот, последний, пароль, в, этой, второй, ст роке],[ ]).
Смысл этого вопроса таков: «найти фразу с синтаксическим деревом Ф, исходным списком слов (до анализа) [стереть, этот последний,пароль,в,этой,второй, строке] и пустым заключительным (после анализа) списком [ ]». Инструкция (17х) задает обращение к программе. Выход программы — результат операций, последняя из которых дает нижеследующую конкретизацию переменной Ф:
Ф = фр (г (стереть), гс (м (этот), п (последний), с (пароль), пред (в), гс (м (этой), п (второй), с (строке)))).
Графическое представление и стратегии
Программа на Прологе представляет собой множество инструкций, которые можно проинтерпретировать как правила некоторой OK-грамматики. Пролог
использует резолюцию как элементарный механизм выполнения. Стратегия задает выбор последователь ности выполнения инструкций.
Определим графический формализм И/ИЛИ-де- ревьев для представления грамматик и, следовательно, программ на Прологе, а также стратегий их выполнения. В И/ИЛИ-дереве узлы помечены именами предикатов, входящих в правила грамматики.
Каждое правило изображается в виде, двухуровневого дерева. Корнем дерева является узел, помеченный заголовком продукции. Листья (узлы второго уровня) помечены предикатами из тела правила. Для удобства порядок расположения листьев согласован с порядком предикатов в теле правила. Если корень помечен символом Р, а листья — символами Хь Х2, . .. ..., Хп, то Р-*ХЬ Х2, ..., Хп есть продукция (правило) грамматики. Листья называются И-узлами относительно корня, ибо продукция требует выполнения всех предикатов, содержащихся в его теле (в логической терминологии — «резолютивности»).
На рис. 5.4 изображены двухуровневые деревья продукций (правил грамматики) из § 5.1.2. Цифры в круглых скобках указывают номера продукций. За корнями Деревьев, соответствующих продукциям (1) — (3), следуют множества И-узлов, отмеченные дугами окружностей, пересекающих отрезки прямых, представляющих дуги графа. Множество двухуровневых деревьев определяет грамматику. Прежде чем определять понятие И/ИЛИ-дерева и описывать стратегии, уточним терминологию. Пакет представляет собой множество продукций, имеющих одно и то же имя предиката в заголовке. ИЛИ-узлы пакета соответствуют предикатам его заголовка. Например, на рис. 5.4 таковы.два узла группа^сущ у пакета груп- па-сущ.
Чтобы построить И/ИЛИ-дерево грамматики (программы) из двухуровневых деревьев продукций (инструкций), надо соединить между собой листья и корни всех двухуровневых деревьев, имеющие одинаковые метки.
Перейдем к описанию стратегии выполнения (резолютивности) программ. Для выполнения инструкции
нужно выполнить все предикаты его тела (т. е. все И-узлы, следующие за корнем двухуровневого дерева этой инструкции). Каждый из них выполняется по одной из инструкций пакета с меткой данного предиката (т. е. выполняется один из ИЛИ-узлов пакета). Выполнение программы осуществляется путем простой итерации выполнения инструкций: сначала выполняется инструкция, соответствующая корню И/ИЛИ-дерева, затем — инструкции из И- и ИЛИ- узлов (как указывалось выше) и, наконец, инструкции, соответствующие листьям.
Стратегия выполнения должна осуществлять выбор порядка исполнения инструкций.
Выполняются все И-узлы, являющиеся листьями одного двухуровневого дерева; на рис. 5.4 они соединены дугой окружности. Но надо выбрать порядок их выполнения. Стратегия Пролога выбирает узлы в текстуальном ° порядке, начиная с самого левого узла и проходя до самого правого узла (стратегия слева направо).
Пакетом продукций выполняется только один ИЛИ-узел. Две простейшие стратегии — вширь и вглубь. Стратегия вширь пытается выполнить все ИЛИ-узлы разом. Это соответствует выдвижению разом всех гипотез в доказательстве. В конце выполнения (приход в некоторый лист И/ИЛИ-дерева) будут оставлены только гипотезы, приведшие к резолютивности. Стратегия вглубь отрабатывает одну гипотезу, спускаясь как можно ниже по дереву; затем переходит к рассмотрению другой гипотезы. Успехом в процессе выполнения называется такая ситуация, когда гипотеза довела до листа. Спуск по дереву осуществляют до получения резолютивности для всех И-узлов. Неудача — это такая ситуация, когда гипотеза не доводит до листа. Новую гипотезу проверяют, начиная спускаться по дереву из любого, еще не выполненного ИЛИ-узла. Если использование всех ИЛИ-уз-
11 По тексту прологовской программы. — Прим, перев.
лов успеха не дает, то это означает неудачу программы. Возврат9 (по-английски backtracking)— это подъем по дереву после успеха или неудачи. Пролог использует стратегию вглубь с возвратом. ,
Стратегию Пролога слева направо и вглубь с возвратом при неудаче легко понять, рассматривая ее как обход И/ИЛИ-дерева. На рис. 5.4 стрелками указан обход дерева, соответствующий распознаванию фразы «печатать этот последний пароль». Вопрос «?— фраза (Ф, [печатать,этот, последний, пароль], [])» инициализирует программу. Он унифицируется с инструкцией «фраза -> глагол, группа-Сущ», определяющей И/ИЛИ-дерево программы. Это дерево резолюции для данного вопроса. На выходе из. программы — унификации, осуществленные при обходе. Приведшие к неудаче унификации отсутствуют (от начала возврата до прихода в новый ИЛИ-узел).
Иерархия Хомского
Введение
В § 5.1.2 было введено понятие КС-грамматики. Поместим такие грамматики в иерархию Хомского и опишем соответствующие им автоматы. Подробности можно найти в [49]. В конце главы будет установлена эквивалентность OK-грамматик (см. § 5.1.5) самым общим грамматикам Хомского.
Грамматики часто рассматривают как формальные порождающие системы. «Правильно построенные предложения» (фразы языка) получаются («порождаются») из исходного символа применением продукций (правил построения). Об этом говорилось в §5.1.3 (для КСГ).
Автомат — это формальная воспринимающая система (акцептор). Она начинает с некой фразы. Правила автомата позволяют проверять, принадлежит или не принадлежит эта фраза данному языку. Автомат
*' Иные названия: процесс возврата, обратный шаг, бэктрекинг, поиск с возвратом, возврат при поиске и др. — Прим, перев.
эквивалентен данной грамматике, если он воспринимает весь порожденный ею язык и только этот язык.
Грамматики Хомского (называемые также грамматиками структуры фразы) делятся на четыре типа с номерами от 0 до 3 в порядке убывания их общности. Наименее общими являются регулярные грамматики. Эквивалентные им акцепторы — конечные автоматы. На втором уровне общности находятся КС-грамматики и стековые автоматы. Этажом выше — грамматики типа 1 (чувствительные к контексту *>) и линейно ограниченные автоматы. На вершине иерархии Хомского расположились грамматики типа 0 и машины Тьюринга.
Как и в частном случае КС-грамматик (см. § 5.1.3), грамматики Хомского — это четверки (V, Т, Р, S). Продукции (элементы из Р) имеют вид ф -ф, где фе(К1) Т)+ и фе(У U Т)*. Тип грамматики определяется ограничениями, наложенными на ф и ф. Например, для КС-грамматик ф состоит из единственного символа-переменной: фЕ V. Порожденный грамматикой Хомского язык L представляет собой множество последовательностей слов, которые можно получить, исходя из исходного символа S. Формально:
L = {w е Т*| S=>w}
где отношение =>такое же, как определенное в §5.1.3.
Регулярные грамматики
Грамматика Хомского называется регулярной (или типа 3), если ее продукции имеют вид А>а или А-^ЬВ, где А и В — переменные, а и b— терминальные символы.
Из определения следует, что речь идет о регулярной справа грамматике. Существуют эквивалентные понятия грамматик: регулярных слева, линейных сле-
ва или линейных справа. Линейная справа грамматика имеет продукции видов А -> х или А ->• уВ, где А и В — переменные, х и у — непустые последовательности слов (х, у г Т+).
Язык называется регулярным, если он порождается регулярной грамматикой. Чтобы указать место нахождения этих языков в иерархии, отметим два следующих факта:
любой конечный язык регулярен,
существуют нерегулярные КС-языки.
Последний факт говорит о существенном различии между типами 2 и 3.
Конечные автоматы
Как и грамматики, автоматы определяются конечными алфавитами (словарями, глоссариями) и правилами переписывания. Конечный автомат — это пятерка (Q, 2, 6, qo, F), где
■ Q — конечное множество состояний,
— конечное множество, называемое входным / словарем,
" б —отношение ^ между QX2 и Q, элементы которого называются правилами (переписывания) и обозначаются qtak-+qj, где qt и qt — / СОСТОЯНИЯ, йк—входной символ,
. q0 — элемент из Q, называемый начальным состоя' нием,
F — подмножество из Q, элементы которого назы- ■ ' ваются заключительными состояниями.
Конечный автомат можно рассматривать как машину, которая в каждый момент времени находится в некотором состоянии q е Q и читает поэлементно последовательность w символов из 2, записанную на конечной слева ленте. При этом либо читающая головка машины двигается в одном направлении (слева направо), либо лента перемещается (справо налево)
11 В литературе широко распространено название функция переходов. — Прим, перев.-
Входная лента: входные символы а^бЕ
■ Рис. 5.5. Конечный автомат.
(см. рис. 5.5). Если автомат в состоянии q, читает символ ак и правило qiak~+qt принадлежит 6, то автомат воспринимает этот символ и переходит в состояние q, для обработки следующего символа.
Конфигурация конечного автомата — это элемент множества Q X 2*, т. е. последовательность вида qw, где q — состояние из Q и w — элемент из 2*. Отношения => и => между конфигурациями определяются с использованием отношения 6, так, как это делалось для грамматик (см. § 5.1.3):
q^kW^- qtw, если qtak-> q, — правило из б (оно применяется к q^w для получения q]W\
Сх=*-Сп, если существует последовательность Сь С2Сп, где Сь =>Ci + i для Z = 1, 2, ..., п — 1.
Следовательно, отношение => есть рефлексивное и транзитивное замыкание отношения =>. Пусть е — пустой элемент из 2*. Воспринимаемый конечным автоматом (Q, 2, 6, Цо, F) язык L определяется как множество
Z- = (® е 2' | qow =>■ q^, где q$ е ру
Значит, фраза w воспринимается автоматом, если, начиная функционирование из начального состояния,
этот автомат читает все слова фразы и в некоторый момент времени приходит в заключительное состояние.
В частности, если все «заголовки» q^ правил из 6 различны, то отношение б является частичной функцией (вообще говоря, определенной на Q X 2 и принимающей значения из Q). Ее можно продолжить до функции, определенной на множестве конфигураций Q X 2*. При этом получится частичная функция со значениями из множества Q (множества состояний). Соответствующий автомат является детерминированным; к любой конфигурации qtw применимо не более чем одно правило. Оказывается, что недетерминированные автоматы не более общи, чем детерминированные, ибо справедливо следующее утверждение:
■ • Для любого конечного недетерминированного . автомата можно построить эквивалентный ему конечный детерминированный автомат.
Мы определили регулярные языки, порожденные регулярными грамматиками, и, кроме того, языки, воспринимаемые конечными автоматами. Следующее утверждение говорит о том, что эти два определения эквивалентны:
Язык воспринимается конечным автоматом тогда и только тогда, когда он порождается регулярной грамматикой.
Это свойство допускает также «конструктивную» формулировку:
По любой регулярной грамматике строится эквивалентный ей конечный автомат, и наоборот: по всякому конечному автомату можно построить эквивалентную ему регулярную грамматику.
Бывает удобно представлять конечный автомат ориентированным графом ^диаграммой состояний или, иначе, диаграммой переходов). Узлы орграфа соответствуют состояниям автомата. Если входной символ Од вызывает переход из q, в q; (т. е. 6 содержит
Рис. 5.6. Диаграмма состояний конечного автомата.
правило qiak-^ q/), то в диаграмме дуга с пометкой ак направлена из qt в qp Пример будет рассмотрен в § 5.2.4 (см. рис. 5.6).
Пример
Пример, который будет сейчас рассмотрен, подсказывает идею доказательства эквивалентности грамматики и соответствующего ей автомата. Язык L = = {0(10)л|п ^ 0} состоит из фраз 0, 010, 01010 и т. д. Он порожден регулярной грамматикой (V, Т, Р, S), где:
К = {5, А, В},
= (0, 1},
Р = {5->0, $->0Л,'.
А-^ 1В, В->0, В^ОА}.
Он же воспринимается следующим (недетерминированным) конечным автоматом:
= {0, 1},
Q = {S, А, В, qf),
Яо = S,.
F = ^.
б = {80-></,,
80->А, А\-*В, B0-^qh BQ-+A}
Проследим, каким образом строится этот автомат из приведенной выше грамматики. Рассматриваем порождение некоторой фразы:
8=> 0А => 01В => 010А => 0101В =^01010.
Затем выясняем, как она воспринимается автоматом:
801010 =^ А1010=> ВОЮ =^ АЮ => ВО =^^f.
После этого можно построить фрагмент диаграммы соответствующего конечного автомата (от 8 к А, затем к В, потом к А, снова к В и после этого к q;). Полная диаграмма состояний изображена на рис. 5.6.
КС-грамматики и стековые автоматы
Существуют КС-языки, не порождаемые никакой регулярной грамматикой. Классический пример — язык, порожденный следующими КС-продукциями:
8->081
8->01
Очевидно, что L = {0л1л[/г ^ 1). Покажем, что L не порождается никакой регулярной грамматикой.
Интуитивно ясно, что никакой конечный автомат не воспринимает L. Для восприятия фразы из L надо проверять равенство длин последовательностей нулей и единиц, что требует неограниченной памяти. Конечный автомат, память которого ограничена числом состояний в Q, не может быть акцептором языка L.
Как мы установим, память автоматов, эквивалентных КСГ, не ограничена. Стековые автоматы соотносятся с КС-грамматиками (т. е. грамматиками типа 2) так же, как конечные автоматы с регулярными
грамматиками. Стековый автомат имеет неограниченную память, называемую стеком ’^ В стеке можно записать произвольное число символов. Функционирование стека мы сейчас опишем. Формально стековый автомат представляет собой семерку М = (Q, 5, Г, 6, q0, Zo, F), где
Q — конечное множество состояний (управляющее устройство),■
X — конечный входной словарь,
Г — конечный стековый словарь,
. q0 — элемент из Q (начальное состояние),
Zo — элемент из Г (начальный символ стека),
F —подмножество из Q (множество заключительных состояний),
б — множество правил переписывания, имеющих следующий вид:
Я i^jZk ~* Я iNmi
- где qt и qi — состояния, а; — входной символ или пустая входная последовательность е, Zk— символ из стека и ут — последовательность символов из стека, возможно, пустая (в этом случае она обозначается через е').
Интерпретация применения правила (см. рис. 5.7): автомат в состоянии qi, читая входной символ а;, обозревая в верхней ячейке стека символ Zk, воспринимает а, и заменяет Zk на последовательность ут в верхней ячейке стека. Если Uj — пустая последовательность е, то чтение входного символа не осуществляется.
Конфигурация для стекового автомата имеет вид qwy, где я — состояние, w — выражение из 5* (последовательность входных слов) и у — выражение из Г* (последовательность символов из стека). Для описания процесса переписывания определим отношения
и => между конфигурациями:
qfijwZkV => qiwymy. если правило q^^Zk -► qtym принадлежит б.
*’ Иное название магазин. — Прим, перев.'
Рис. 5.7. Стековый автомат.
(Заметим, что в случае ут = е' содержимое стека уменьшается.)
Сх=^-Ст если существует последовательность конфигураций Сь С2С„ с С;=>-С; + 1 для i = 1, 2п — 1.
Есть два способа определить язык, воспринимаемый стековым автоматом. Во-первых, множеством входных цепочек, для которых существует опустошающая стек последовательность операций (такой язык называют языком, воспринимаемым пустым стеком). Формально:
L = ^w еТ \gowZo=^ дее.', где д е Q}.
Во-вторых, множеством входных цепочек, для которых существует последовательность операций, приводящая автомат в заключительное состояние (это язык, воспринимаемый заключительным состоянием):
L = {да е S*| gQwZQ=^g^, где д^ е F и у е Г*}.
Определения эквивалентны: из одного автомата строится другой, воспринимающий тот же язык.
Сформулируем основную теорему данного параграфа;
Язык воспринимается стековым автоматом тогда и только тогда, когда он порождается КС-грамматикой.
Эта теорема допускает также «конструктивную* формулировку.
Стековый автомат называется детерминированным, если все заголовки правил (т. е. gidjZk) различны. Тогда к любой конфигурации применимо не более чем одно правило. Упомянутая выше эквивалентность детерминированных и недетерминированных конечных автоматов не обобщается на случай стековых автоматов: существуют порожденные КС- грамматиками языки, не воспринимаемые никакими детерминированными стековыми автоматами.
Пример
Рассмотрим язык L = ^xdxR\xe {0, 1}*}, где xR получена из последовательности х в результате применения операции инвертирования. Очевидно, что L порожден КС-грамматикой с продукциями
S->0S0
S-^1S1
S->d
Построим стековый автомат, воспринимающий (пустым стеком) язык L. Управляющим устройством (УУ) автомата будет множество состояний {</о, <7i}, а стек может получать символы А, В и С. Функционирование автомата:
Автомат начинает работу в состоянии до с символа
А в верхней ячейке стека.
Если в состоянии д0 на вход поступает 0, то в стек помещается В. Если же поступит 1, то в стек поместим С. В обоих случаях УУ останется в состоянии до.
Если в состоянии q0 на вход поступит символ а, то УУ переходит в состояние qx, а содержимое стека не меняется.
Если в состоянии qx с В или С в верхней ячейке стека на вход поступит 0 илн 1 (соответственно), то символ из верхней ячейки убирается. В обоих случаях УУ остается в состоянии qx.
Если в состоянии qx в верхней ячейке стека находится символ А, то он из этой ячейки убирается без ожидания поступления входного слова.
В остальных случаях состояние и содержимое стека не меняются.
■ Формальное описание автомата (Q, 2, Г, 6, q0, Zo, 0) таково:
Q = {<7о, <711.'
2 = {0, 1, а),. „
Г = {Л, В, С),
Zo= А,
t d =VqoOA->qoBA,•
. q<AA->q0CA, .
qoOB—>qoBB,'
q0\B—»qQCB,
:qoOC -> qQBC,
q0\C—»qQCC, .
•q^A-^-qxA,
'q^B-^qxB,
'qoaC -> qxC, :-
qxQB — qxb', qx\C-^qxe, qx£A->qxe'}.
(Символ e', употребляемый в продукциях справа как стековое выражение, означает устранение символа из верхней ячейки стека, а символ е. записываемый в продукциях слева, как входной символ, указывает на то, что на входе ничего не читается.) Заметим, что речь здесь идет о детерминированном стековом автомате.
В качестве примера работы этого автомата укажем последовательность Сх => Сг ... => Сп,
описывающую восприятие фразы w = 011 а ПО:
С1 = 9оО11а11ОЛ,
С2 = 901 lai 10ВЛ,
С3 = 9о1а11ОСВЛ,'
С4 = 90а110ССВЛ,
С5 = 91110ССВЛ,■
С6 = <7110СВЛ,
C4 = qxOBA, Cs = qxsA, .
Сд — 9186 .
Грамматики и языки Хомского типа 1
Существуют языки, не порождаемые никакой КС- грамматикой. Простой пример — язык £ = {0п1"0”| п ^ 1}, который является языком структуры фразы типа 1 (в строгом смысле). Продукции ф -► ip грамматики Хомского типа 1 таковы, что в зр не меньше символов, чем в ф. Значит, последовательные конфигурации фь ф2 и т. д., полученные в цепочке S =ф- => Ф1 =>...=► Фл, не уменьшаются по длине. Поэтому языки типа 1 (а значит, и типов 2 и 3) являются рекурсивными множествами (см. § 2.2.10). Можно показать, что язык L = {0п1',0п | п ^ 1} порожден грамматикой типа 1 с тремя переменными и нижеследующими продукциями:
5 ->0В0
В ->1
В ->0ВС
СО -> 100
С1 -> 1С
Заметим, что, в силу данного выше определения ’>, язык типа 1 не содержит пустой фразы е. Следовательно, не все КС-языки являются языками типа 1. Однако справедливо следующее свойство:
• Если L — КС-язык, то £\{е} — язык типа 1.
Грамматикам типа 1 эквивалентны линейно ограниченные автоматы (машины Тьюринга с входной лентой ограниченной длины).
*> Существуют другие определения, эквивалентные приведенному.
Машины Тьюринга и грамматики типа О
Грамматики типа О (или неограниченные грамматики)— самые общие грамматики структуры фразы. В таких грамматиках на продукции накладывается только одно ограничение: <р =й= е в <р->т|). Языки типа 0, вообще говоря, не являются рекурсивными множествами. Другими словами, проблема выявления принадлежности выражения w языку, порожденному грамматикой типа 0, где w е Т*, в общем случае неразрешима (см. § 2.2.6). Автоматы, воспринимающие языки типа 0, помещаются на самом верхнем уровне иерархии Хомского. Они и являются машинами Тьюринга. Эти «машины» были первой формальной моделью для понятия вычислимости (§ 2.2.7). Подробности см. в [49].
Машина Тьюринга — это семерка (Q, 2, D, G, В, 6, </о), где:
Q — конечное множество состояний,
— входной словарь,
D и G — «правый» и «левый» символы (ие входящие в Q (J 2),
В — «пробельный» символ из 2.
— множество правил следующих видов:
д^1-^дкаи
q^j > qkD, ■■
qiai-*qkG,
где q, и qk— состояния, as и а, — входные символы. Заголовки правил попарно различны. Значит, 6 есть отображение некоторого подмножества из Q X 2 в QX (X U {^, G}). Следовательно, машины Тьюринга являются детерминированными преобразователями.,
qo — начальное состояние, элемент из Q.
Конфигурации машины Тьюринга представляют собой элементы множества 2* X Q X 2+, т. е. последовательности вида WiqiajWi, где w, и ш2 е 2*, а, е е2 и </, е Q (см. рис. 5.8). Правила из 6 задают Последовательные переходы от одной конфигурации
Рис. 5.8. Машина Тьюринга..
(до тех пор, пока не будет достигнута «заключительная» конфигурация). Конфигурация WxqiQjW^ называется заключительной, если к ней не применимо ни одно из правил 6 (т. е. правил с заголовком qta^. Существуют и другие, эквивалентные данному, определения понятия машины Тьюринга.
На рис. 5.8 машина Тьюринга представлена в виде конечного автомата (управляющего устройства; короче, УУ) и ленты, разбитой на ячейки и выступающей в качестве внешней памяти машины. УУ связано с лентой головкой, обозревающей в каждый дискретный момент времени одну ячейку. В процессе работы машины головка может:
читать содержимое ячейки, обозреваемой головкой в текущий момент времени,
печатать в обозреваемой ячейке соответствую- ■ щий символ из входного словаря,
перемешаться в соседнюю ячейку, находящуюся слева или справа от обозреваемой ячейки.
Итак, на каждом шаге работы машина действует следующим образом: находясь в состоянии qt и прочитав символ aj в обозреваемой ячейке, она переходит в состояние q^ и либо печатает в этой ячейке символ at, либо перемещает головку в соседнюю
ячейку (влево или вправо). Подробности см. в [73].
Отношение => на множестве конфигураций выражает простое переписывание и определяется следующим образом:
для правила qtaj-^ qtai имеем
Й WxqtajUL^^WxqtiCiiW!
/ (смена11 состояния и входного символа), • для правила qta, -► qkD возможны два случая:
, w1qiajalW2=>wiajqkalW2
■ (смена состояния с перемещением вправо) илн
■ ■ Wxqiaj^WxttjqfcB
' (то же с удлинением цепочки символов присо- \ единением В справа),
для правила qiai^q^G имеем аналогичные возможности:•
wxaiqia1W2 W\qllalajW2,’
qta^ =^ qk^jW2. ■
Пусть =^— рефлексивное и транзитивное замыкание отношения =>. Могут существовать конфигурации С, для которых никакая заключительная конфигурация С[ не удовлетворяет соотношению С=*-С^. В таком случае говорят, что машина «не останавливается».
Воспринимаемый машиной Тьюринга язык L определяется следующим образом:
L = {w е 2*| qow =>Cf, где Cf — заключительная конфигурация.}
Если w — фраза языка, то машина «находит» за конечное время (единственную) заключительную конфигурацию С;. Если же w не принадлежит языку, то
машина не останавливается. Это обстоятельство приводит к неразрешимости проблемы распознавания принадлежности данного выражения заданному языку. В действительности приведенные сейчас рассуждения служат неким обоснованием неразрешимости так называемой «проблемы остановки»: не всегда можно предусмотреть, остановится данная машина или нет.
В таблице на рис. 5.9 дано компактное описание грамматик Хомского и эквивалентных им автоматов.
Грамматика
Автомат
Пример
Тип 0
Неограниченная
Машина Тьюринга
Тип 1
Чувствительная к контексту
Ф -> -ф
/ (ф)< Z (ф)
Машина Тьюринга с конечной лентой
(о'То" \п> 1}
Тип 2
Контекстно-свободная
А > а
Стековый
{0"1" [«^ 1}
Тип 3
Регулярная А^-ЬВ А > а
Конечный
{0 (10)"( « > 0}
Рис. 5.9. Иерархия Хомского.
Формализм усиленных сетей переходов
Введение
Кратко изложим формализм усиленных *> сетей переходов или, короче, УП-сетей, УСП (по-английски Augmented Transition Network, ATN), предложенный
в работе [114]. Будем строить его постепенно из формализма конечных автоматов (§ 5.2.3). Формализм УСП включает несколько классов сетей — сообразно типам грамматик иерархии Хомского (разд. 5.2). Элементарнейшие — базовые сети переходов, или, короче, БП-сети, БСП (английский термин — Basic Transition Network, BTN) соответствуют конечным автоматам. (Иногда «сеть» и «автомат» хозначают «класс сетей» и «класс автоматов».) С помощью БП- сетей регулярные языки определяются более сжато, чем с использованием конечных автоматов. Это достигается посредством интерпретаций синтаксических категорий грамматик с привлечением входных и терминальных символов сети. У конечного автомата входными символами являются только слова, построенные из символов входного словаря.
Второй тип сетей в иерархии образуют рекурсивные сети переходов, или, короче, РП-сети РСП (в англоязычной литературе — Recursive Transition Network, RTN). Такая сеть получается из БСП добавлением рекурсии. РП-сети соответствуют стековому автомату и воспринимают КС-языки (§ 5.2.5). На верхнем уровне иерархии находятся УСП. Такая сеть получается из РСП добавлением регистров. Любая УП- сеть эквивалентна подходящей машине Тьюринга, и наоборот — любая машина Тьюринга эквивалентна подходящей УСП (другими словами, множество языков, воспринимаемых УП-сетью, совпадает с множеством языков, воспринимаемых машинами Тьюринга). УП-сети соответствуют ОК-граммати- кам (§ 5.1.5). Они являются основой языков программирования Лисп и Пролог соответственно. Ниже мы опишем некоторый метод перевода УП-сетей в ОК-грамматики.
Конечные автоматы и диаграммы переходов
Мы уже видели, как можно описать язык грамматикой. Другой подход состоит в перечислении всех фраз языка (если множество фраз конечное). Грамматику, представленную в §§ 5.1.2 и 5.1.4, можно «заменить» множеством фраз порождаемого языка. Приведем
Рис. 5.10. Недетерминированная диаграмма переходов.
поясняющий пример. На рис. 5.10 изображена диаграмма переходов конечного автомата, воспринимающего подъязык следующих двух фраз:
«стереть этот шервый символ»
«стереть этот второй символ в этой первой строке»
Этот автомат недетерминированный, ибо одно из его состояний является таким узлом, из которого выходят две дуги, помеченные одним и тем же входным символом. Если автомат в состоянии qx получает слово (входной символ) «этот», то он переходит в состояния q2 и q3. Как указывалось в § 5.2.3, понятия конечного детерминированного автомата и конечного недетерминированного автомата эквивалентны в том смысле, что оба эти множества автоматов воспринимают регулярные языки. Однако недетерминированные автоматы значительно удобнее при описании языков.
Базовые сети переходов
Заменив входные символы диаграммы переходов, изображенной на рис. 5.10, соответствующими синтаксическими категориями, получим диаграмму, представленную на рис. 5.11. Применим эту диаграмму для описания соответствующего языка. При работе с исходной диаграммой переходов автомат сравнивает текущее слово фразы с меткой дуги перехода. Язык состоит из фраз, переводящих автомат из начального состояния в одно из заключительных. Диаграмма, изображенная на рис. 5.11, подсказывает мысль заменить проверку равенства слов проверкой на принадлежность текущего слова фразы синтаксической
пред
Рис. 5.11.. Диаграмма переходов с проверками иа принадлежность синтаксическим категориям.
категории, соответствующей текущему переходу. Мы получаем, таким образом, базовую сеть переходов (БСП).
Для определения формализма OK-грамматик (см. § 5.1.5) использовалась запись, близкая Прологу. Сейчас мы поясним формализм БП-сетей, применяя близкие Лиспу обозначения. Команды БСП запишем следующим образом:
WRD: сравнивать полученное слово со словом- меткой,
CAT: проверить принадлежность полученного слова категории-метке,
JUMP: перейти в следующий узел без учета полученного слова.
Команда CAT специфична для формализма БП-сетей. Команда WRD — проверка соответствия конечных автоматов. Лисп используется для выполнения команд из формализма БСП. Он содержит набор функций для обработки списков команд и создания новых процедур [113].
Регулярный язык L = {0(10)п|п ^ 0}, воспринимаемый автоматом из § 5.2.4, можно описать с помощью БСП. Представим каждый узел сети списком, голова (первый элемент) в котором является меткой, а хвост состоит из команд, соответствующих переходам. Правила из множества 6, приведенного в § 5.2.4, перейдут в списки команд:
(M (S (WRD 0 ТО Л)
(WRD 0 ТО ^f))
Л (WRD 1 ТО В)).
(В (WRD О ТО Л)
(WRD О ТО <?,))(^ ( )))
Например, в узле S правила SO^-q; и 50^-А заменятся на команды (WRD О ТО q^ и (WRD О ТО Л). Тем самым мы отразим тот факт, что автомат может перейти в узлы q; или А при получении слова 0. Пустой список ( ) соответствует заключительным узлам (здесь — qf). Результирующая БС-сеть кратко описывает язык в терминах грамматики, ибо диаграмма переходов исчерпывающе перечисляет фразы языка (§ 5.3.2). Например, сеть на рис. 5.11 представляет две продукции регулярной грамматики:
фраза -> глагол, мест, прил, сущ
фраза -> глагол, мест, прил, сущ,пред л, мест,.
прил,сущ
Ниже приводится пример посложнее — чтобы лучше отразить связь формализма БСП с Лиспом.
Пример
Модифицируем грамматику, описанную в §§ 5.1.2 и 5.1.4, так, чтобы можно было осуществлять согласование слов по родам. Например, «Мужской» и «женский» род синтаксической категории группа_сущ представим выражениями через «геи» и «геле» соответственно. Обогащенная грамматика выглядит так:
(1)
фраза
—> глагол, группа_сущ
(2)
группа_сущ
—> "этот", гем
(3)
группа_сущ
—> "эта", геж
(4)
гем
->пм,см.
(5)
гем
->ПМ,СМ " в этом",гсл<
(6)
гем
-> ПМ,СМ"в этой",геж
(7)
геж
->пж,сж.
(8)
геж
-> ПЖ,СЖ,"в этом", гем
(9)
геж
-+ПЖ,СЖ,"в этой", геж
(Ю)
глагол
—> "печатать"|"стереть"
(И)
ПМ
-> "первый" ["второй" ["последний"
ПЖ-> "первая" | "вторая" | "послед
няя"
СМ->"символ"|"пароль"
СЖ ->"строка"|"страница"
Чтобы, например, достичь цель продукции (2), надо использовать одну из продукций пакета гсм\ (4), (5) или (6). В формализме БСП продукции (1) — (9) выразимы следующим списком:
((фраза (CAT глагол ТО группа_су1ц)) (группа_сущ (WRD этот ТО гем)
(WRD эта ТОгеж))
(гем(CAT ПМ ТОСМ))
(гож(CAT ПЖ ТОСЖ))
(CM(CAT СМ ТОконец))
(СЖ(CAT СЖ ТОконец))
(конец(WRD в этомТО гем)
(WRD в ТО мест) ( ))
(мест (WRD эта ТО геж)))
Соответствующая БП-сеть изображена на рис. 5.12. Узлы сети соответствуют элементам основного списка, каждый из которых является списком с головой-
меткой узла и с хвостом из меток переходов, разрешенных данным узлом. Например, узел группа-сущ допускает два перехода: (WRD этот ТО гем) и (WRD эта ТО гсж). Если извлечено местоимение мужского (соответственно женского) рода, то переход осуществляется в узел группы существительного мужского (соответственно женского) рода.
Переход в БСП описывается списком из четырех элементов:
команда WRD, CAT или JUMP,
параметр команды (для команд WRD или CAT) или пустая последовательность е (для команды JUMP),
символ ТО,
узел назначения.
Имеется заключительный узел (в рассмотренном примере — конец) со специальным переходом <выход из сети», представленным пустым списком ().
Рекурсивные сети переходов
Будучи эквивалентной конечному автомату, БСП не воспринимает КС-язык L = {0nln|/i ^ 1}, упоминавшийся в § 5.2.5. Напомним, что этот язык L порождается продукциями
S -* 01
S->OS1
и воспринимается стековым (но не конечным) автоматом.
Построим сети-акцепторы для КС-языков. Эти сети обобщают БП-сети, аналогично тому как стековые автоматы обобщают конечные. КС-язык лучше всего характеризует рекурсия, отраженная в правилах задающей его грамматики наличием одного и того же синтаксического символа в заголовке и теле некоторых продукций (таков символ S в приведенном выше примере). Рекурсию обрабатывают РП-сети.
Главное в формализме БСП-проверка принадлежности к синтаксической категории (§ 5.3.3). Подлежащие выполнению проверки указываются метками
на дугах БП-сетей. Проверяемые синтаксические категории соответствуют таковым в телах продукций. Каждому заголовку продукции отвечает узел БП- сети. В продукциях КСГ синтаксические категории в заголовках и телах одинаковые. Поэтому при моделировании рекурсии продукций в соответствующих сетях метки дуг и узлов должны совпадать. Зададим поведение РП-сети следующим образом.
Когда на дуге встречается имя узла, то последовательное выполнение операций прерывается и осуществляется переход к этому узлу. Он становится начальным узлом новой сети. Если некая последовательность операций приведет новую сеть в заключительное состояние, тб мы вернемся к выполнению прерванной последовательности операций в исходной сети. Ясно, что эта процедура может стать рекурсивной. Новая сеть может потребовать перехода к другой новой сети, и так далее.
По сути это — обращение (возможно, рекурсивное) к подпрограммам. Встреча на дуге с именем узла приостанавливает выполнение программы обращением к подпрограмме, для которой этот узел представляет начальную инструкцию. Введем новую команду, связанную с дугами сети.
Команда PUSH, примененная к синтаксической категории S, прерывает текущие операции, за, поминает местонахождение (состояние) систе- . мы и переходит в узел с меткой S. По достижении заключительного узла, операции возобновляются с того состояния, где были прерваны этой командой.
Итак, РП-сеть получается из БП-сети добавлением команды PUSH.
КС-грамматики эквивалентны стековым автоматам (см. § 5.2.5), а РП-сети — КС-грамматикам и, следовательно, тем же автоматам. Команда PUSH соответствует добавлению элементов в верхнюю ячейку стека. Множество этих элементов представляет состояние сети при встрече с PUSH. Заход в заключительный узел и возобновление прерванных
1 А. Тейз н др.
операций соответствуют удалению всех элементов из верхней ячейки стека.
На рис. 5.13 изображена РП-сеть для языка L = = {0л1л|п^ 1}, построенная с использованием двух продукций грамматики, указанных в начале параграфа. Предположим, что поступила фраза ООН. Первое слово 0 переводит сеть из начального состояния q0 = 3 в 9Ь а команда PUSH S переводит ее в q2 и создает новую подсеть, идентичную исходной сети. Второе слово 0 переводит подсеть из qo = 3 в 9ь первое слово 1 переводит подсеть из 91 в заключительное состояние F. Исходная сеть продолжает работу (реактивируется) с узла q2, где она была покинута обращением к команде PUSH 3. Последнее слово 1 влечет переход из состояния q2 в заключительное и, в свою очередь, восприятие фразы.
Рассмотрим кратко частный случай — регулярные, или линейные справа, грамматики. Здесь синтаксическая категория в теле правила — крайняя справа (см. § 5.2.2). Команда PUSH заменяется другой, идущей от конца тела одного правила к заголовку другого. Фактически команда PUSH нужна нерегулярным КС- грамматикам. Например, порожденный продукциями
3-^01
3->013
простейший регулярный язык £={01}+ воспринимается РП-сетью (рис. 5.14(a)) и эквивалентной БП- сетью (рис. 5.14(6)).
РП-сети и их подсети переводятся в процедуры Лиспа одной функцией и двумя командами:
функция DEFATN (от английского define ATN [ИЗ]) создает РП-подсеть компиляцией РП- - сети в Лисп. Так, продукции ОК-грамматики путем добавления аргументов переводились в хорновские дизъюнкт-инструкции, выполнимые Прологом (см. § 5.1.8);
команда PUSH с аргументом-именем РП-под- " сети инициализирует эту подсеть, запомнив текущее состояние;
команда POP (без аргументов) находит конец подсети и реактивирует основную сеть с места прерывания.
На рис. 5.15(a), лисповской версии рис. 5.13, приведена РП-сеть восприятия фраз 0п1п. На рис. 5.15(6) дан ее перевод в список команд.
Пример
На рис. 5.16 БСП с рис. 5.12 описана четырьмя РСП. Группы существительных мужского и женского рода описываются подсетями гем и геж, обращающимися к встроенной сети гсв. Списки команд;
(DEFATN фраза
(фраза (CAT глагол ТО ас))
И*
(S
(WRD
0
TO S/0))
(S/0
(PUSH
s
TO s/s)
(WRD
1
to s/D)
(S/S
(WRD
1
TO S/l))
(5/1
(POP )))
(б)
Рнс. 5.15. РСП и программа на Лиспе для L = {0”1” | n ^ 1 ).
(гс (WRD этот ТО гсмж))
(WRD эта ТО гсжн))
(гсмж (PUSH гем ТО конец))
(гсжн (PUSH гсж ТО конец))
(конец (POP)))
(DEFATN гем.' . .
(гем (CAT ПМ ТО гс/н))
(гс/н (CAT СМ ТО гс/с))
(гс/с (PUSH гее ТО конец))
(конец (POP)))■
(DEFATN гсж
(гсж (CAT ПЖ ТО zejn))
(гс/п (CAT СЖ ТО гс/с))
(гс/с (PUSH гсв ТО конец))
(конец (POP)))
(DEFATN гсв
(гсв (WRD (в этом) ТО СМ) (WRD (в этой) ТО СЖ))
(CM(PUSH гем ТО конец))
(СЖ(PUSH гсж ТО конец))
(конец (POP)))
Модульность способствует наглядности большой сети с повторяющимися компонентами.
Усиленные сети переходов
Язык L = {0"1п0п|п ^ 1} не порождается КС-грамматикой (§ 5.2.7). Поэтому язык L не воспринимается РП-сетью. Он порождается грамматикой типа 1 и воспринимается машиной Тьюринга с конечной лентой.
Ограниченность РСП хорошо видна на примере языка, порожденного грамматикой из § 5.1.4 и (затем) очищенного от семантически некорректных фраз. Он конечен, поэтому регулярен, а следовательно,
является КС-языком. Но КСГ эффективно не отсекает абсурдные фразы вроде: «стереть эту вторую строку в этом первом пароле». Придется перейти к более мощным ОК-грамматикам (§ 5.1.5). Последние эквивалентны грамматикам типа 0 и соответствуют машинам Тьюринга.
Порожденные OK-грамматиками языки типа 0 воспринимаются УП-сетями, получаемыми из РП-сетей (§ 5.3.5) присоединением регистров и действий над ними. Так OK-грамматики получаются из КС-грамматики присоединением аргументов и связанных с ними проверок. Например, продукция ОК-граммати- ки (§ 5.1.5)
группа_сущ{Ч)-> М ,П ,С (Z), {Y<Z}, группа_су1ц (Z)
позволяет исключить возможность порождения и/или распознавания некоторых абсурдных фраз путем введения проверки условия {У < Z}.
Каждую команду перехода в РП-сети снабдим проверкой и последовательностью действий над регистрами. Например, WRD будет иметь вид
(WRD (слово) (проверка) {действие}* ТО {узел}), где символ {действие}* означает последовательность элементарных действий.
Переход осуществится, если (проверка) даст «истинно» и если {слово} совпадает с рассматриваемым. Регистры выполнят действия {действие}* до перехода в состояние, указанное ТО {узел}.
Основные элементарные действия над регистрами следующие:
(GETR{регистр}} : получить значение из регистра с именем (регистр),
(SETQ{регистр}{знач}) Загрузить регистр с именем (регистр) (локальной сети) значением {знач),
(SENDR {регистр}{знач}): загрузить (регистр) подсети значением {знач} (используется только с командой
.PUSH).
Проверки — лисповские, например:
(GETR рег/) = b : значение регистра рег! будет 6, : булево значение истинно.
Для иллюстрации рассмотрим несколько переходов (функции, приписываемые дугам) УП-сети [4]:
(WRD{слово} (проверка) (действие)' ТО {узел}) (CAT(категория}(проверка)(действие}* ТО (узел}) (PUSH(подсеть)(проверка){действие}* ТО (узел)) (JUMP ■ {проверка) (действие)*) (POP (знач) (проверка)(действие)*)
Если {проверка} дает И, то выполняются переход, команда и действия (действие)*. Для POP вычисляется значение (знач) и пересылается в сеть, указанную содержимым специального регистра *.
Регистры можно использовать для согласований в языке между местоимением, прилагательным и существительным, местоимением и глаголом. Местоимение записывает свой род в регистр. Этот регистр проверяется для выбора дуги перехода сообразно группе существительного мужского или женского рода.
Пример
Накажем, что язык {0Чп0п|п ^ 1} распознается УП- сетью, изображенной на рис. 5.17 и состоящей из основной сети L и подсети S, где S есть РП-сеть для языка {0" 1л|п > 1} с добавленным регистром N, служащим для запоминания числа п. Пусть сеть L получила фразу 001100. Два встроенных обращения к S дают восприятие четырех первых слов. Число обращений (здесь 2) к S запоминается в N. При каждом выходе из S команда POP узла S/1 загружает регистр * вызываемой сети значением регистра N, увеличенным на 1, как команда Лиспа (+М1). Регистр N инициализирован нулем с помощью действия, соответствующего дуге (WRD1 t (SETQ N 0) ТО S/1). После каждого перехода (PUSH S t (SETQ N *) TO S/S) регистр N как при команде Лиспа (SETQ N *) получит через S значение из регистра *.
Сеть перешла в узел L/S. Регистр N содержит число п обращений к S (указанное выше в оп еделе-
(wrd1t(setq N 0)тоS/l))
(S/S(wrd1*t)TOs/i))
(S/l(pop(+^l)t())))
DEFATN £-
(£(pushSt(setqN ♦)to£/S))
(£/S(wrd0(> N 0)(SETQN (- N1))) TO£/S)
(jump(=W0)()))
(££(pop()t())))
Рис. 5.17. УСП для языка {О^РО" | л ^ 1).
нии языка). Пока значение регистра N положительно, выбирается дуга (WRD 0 (>М 0) (SETQ ЛЦ—N 1)) ТО L/S), а в узле L/S выбирается петля. При каждой петле из входной фразы извлекается слово 0 и значение регистра N уменьшается на 1 командой Лиспа (SETQ N (—N 1)). Когда регистр N обнулится, то подтвердится лисповская проверка (=М0). Тогда будет выбрана соответствующая команде JUMP дуга и система перейдет в заключительный узел LL.
Построение синтаксического дерева
Добавим регистры к РП-сети из примера § 5.3.6 для построения синтаксических деревьев анализируемых фраз. В § 5.1.7 для этого добавлялись аргументы к КС-грамматике из § 5.1.4. Действие BUILDQ произведет тот же эффект в УП-сети:
(BUILDQ (структура) (элементы))
Рис. 5.18. Синтаксическое дерево.
Синтаксическое дерево строится в виде списка посредством собирания (элементов) сообразно (^структуре').
Грамматика, соответствующая сетям, изображенным на рис. 5.16, анализирует фразу «стереть этот первый пароль в этой третьей строке» и дает дерево, представленное на рис. 5.18. Это дерево задается следующим списком:
(фр (Г (стереть) (гс (М этот) (П первый) (С пароль)
(ес(Ме этой)
(П третьей) (С строке))))
Благодаря регистрам и команде BUILDQ дерево строится автоматически в ходе синтаксического анализа. Команда
(BUILDQ (гс(М+)(П+) (С +)) РМ РП *)
заменяет три последовательных знака + значениями регистров РМ, РП и *. Спецрегистр * содержит очередное слово фразы. Если в РМ, РП и * соответственно этот, первый и пароль, то вышеуказанное BUILDQ строит список: (гс(М этот) (П первый) (С пароль)).
Вот представление в формализме УП-сетей грамматики, соответствующей рис. 5.16:
(DEFATN фр 3
(фр(CAT Г t (SETQ РГ*) ТО гс))
(гс(WRD этот t (SETQ РМ *) ТО м)
(WRD эта / (SETQ РМ *) ТО ж))
(м (PUSH гсмже (f ((SENDR PM (GEIR МР)) (SETQ Ргс *)) ТО конец))
(ж ' (PUSH гсжн t ((SENDR PM (GETR MP)) (SETQ Ргс*)) TO конец))
(конец (POP (BUILDQ (фр(Г+)+)РГ Ргс) Ц )))) (DEFATN гсмже
(гем(CAT ПМ t (SETQ РП *) TO гс/п))
(гс/п(CAT CM t (SETQ PC*) TO rc/c))
' (rc/c (PUSH гевм t (SETQ Ргс*) TO конец))
(конец (POP (BUILDQ (гс (M+) (П+) (0+)+)
PM РП PC Ргс) t ( ))))
(DEFATN гсжн'
(геж(CAT ПЖ г (SETQ РП *) TO rc/n))
(rc/n(CAT СЖ t (SETQ PC*) TO rc/c))
(rc/c (PUSH гевм t (SETQ Ргс*) TO конец))
' (конец (POP (BUILDQ (гс (M+)(П+) (C+)+)
PM РП PC Ргс1())))
(DEFATN гевм
(гсв (WRD (в этом) t (SENDR PM*) TO CM) (WRD (в этой) t (SETQ MP*) TO СЖ))
(CM (PUSH гсмже t ((SENDR PM (GETR MP)) (SETQ Ргс*)) TO конец))
(СЖ (PUSH гсжн t (SETQ Ргс * ((TO конец)) (конец (POP Ргс t ( ))))
Текущее слово запоминается в некоем регистре посредством SETQ (регистр). На выходе из сети (команда POP) действие BUILDQ строит список, комбинируя содержимое этих регистров. Команда SENDR загружает регистр нижнего уровня РМ. На выходе из подсетей гемж и гсжн содержимое этого регистра можно поместить в список, построенный действием BUILDQ, хотя «местоимение» уже обработано вне подсети.
УП-сети и ОК-грамматики'
Как мы видели, формализм УП-сетей тесно связан с Лиспом и переводится в формализм ОК-грамматик (основу Пролога). Формализм УП-сетей базируется на сетевых модели^. Формализм ОК-грамматик использует продукции (правила переписывания). Для перевода УП-сетей в ОК-грамматики достаточно про-
интерпретировать сети и подсети как нетерминальные символы продукций, а дуги извлечения слов — как терминальные символы. Продукции соответствуют различным путям между начальным и заключительным узлами. Петли указывают на рекурсивные обращения к продукциям. Используя такую терминологию, можно сказать, что РП-сети переводятся в КС- грамматики, а регистры — (из УП-сетей) представляются аргументами в продукциях ОК-грамматик.
Связанные с дугами проверки и действия выразимы Прологом, каждый вид дуги в УП-сети представляется последовательностью прологовских целей [84] :
успокг
(САТ(кат)(проверка)(действме)*...) ч [Af], [проверка, кат(М), действие}
(WRD{слово} {проверка){действие}*...} [слово], [проверка, действие}
(JUMP {проверка} {действие}*}[проверка,
действие}
(PUSH{сеть}{проверка)(действие}*...) [проверка}, сеть, {действие}
(POP {проверке^ {действие}*}[проверка,
действие}
Предикаты Пролога проверка и действие соответствуют меткам дуги {проверка} и {действие}*. Предикат кат(М) проверяет принадлежность слова М к синтаксической категории кат. Предикаты помещены в фигурные скобки формализма ОКГ, ибо выражают условия применимости продукций. Следовательно, при переводе продукций ОКГ на Пролог два дополнительных аргумента не понадобятся (см. § 5.1.10) УП-сетям, изображенным на рис. 5.16, соответствуют следующие продукции ОК-грамматики:
фр [фр (г (Г), ГС}} -* глагол (Г), гс (ГС} гс (ГС)-> [этот], гем (этот, ГС)
гс (ГС)-> [эта], гсж (эта, ГС)
гем (М, гс (м (М),п (77), с (С),ГС)) -> пл (77),см (С),асе (ГС) гсж (М, гс (м (М),
п (77), с (С), ГС))пж (П), сж (С), гсв (ГС)
гсв (ГС)—> [а, этом], гем ([в, этом], ГС)
гсв (ГС)-> [а, этой], гсж ([в, этой], ГС).
мм (этот)-> [этот]
мм ([а,этого])—>-[в,этом].
мж (эта)-> [эта]
мж ([в, этой]) [в,этой] пм (первый)—> [первый]
пм (второй)-> [второй]
пм (третий)—► [третий]
пж (первая)—► [первая]
пэю(вторая)—► [вторая]
Регистры заменены здесь аргументами предикатов, действие BUILDQ — построением списка в заголовке продукции. Переменные сразу появляются в нужном месте списка (§ 5.1.7). Для предикатов фр значение переменной ГС вставляется в прологовский список дерева.
Действием SENDR УП-сеть пересылает очередное слово из узла гс в подсети гем и гсж. Формализм Пролога посылает текущее слово в нетерминальные символы гем и гсж посредством дополнительного аргумента. .
Приведенный выше словарь представлен последними продукциямия OK-грамматики с телами из одного терминального символа, соответствующего слову словаря. Заголовок продукции отвечает предикату кат(М), указывающему синтаксической категории слова, а аргумент М — регистру * УП-сетн с текущим словом для синтаксического дерева.
Дополнительные аргументы могут, если надо, учесть особенное, личное, переходное, одушевленное, нарицательное и т. д. для слов словаря.
Прологи логическое программирование
Основы языка
Введение
Эта глава посвящена Прологу — средству написания выполнимых на'ЭВМ программ. Само название Пролог говорит о том, что это язык логического программирования, и оно навеяно формальной логикой (см. гл. 1). На Прологе написано громадное число программ, связанных с искусственным интеллектом (ИИ). Поэтому здесь вполне уместно хотя бы кратко описать этот язык. Приводимое нами описание познакомит читателя с основами Пролога, и, используя руководство программиста, он сможет написать свои первые программы.
У языка логического программирования два главных отличия от классических алгоритмических языков, предназначенных для численных расчетов.
Это символьное программирование: данные в нем суть символы, представляющие только самих себя и не подлежащие интерпретации при . выполнении программ.
Алгоритмы получения определенных результатов, непосредственно не задаются, но описываются, объекты, их свойства и отношения между объектами, говорится о фактах, правилах получения новых фактов, вопросах, выясняющих установленность или возможность установления фактов.
Три вида выражений (факты, правила и вопросы) интерпретируются как логические предикаты, и тогда этот язык является подмножеством формальной логики (§ 1.1.17, 3.1.21). В то же время Пролог является языком программирования: для получения ответа на
вопрос выполняется некоторый алгоритм. В дальнейшем проявятся (иногда противоречиво) два аспекта: декларативный аспект формальной логики и процедурный аспект языка программирования.
Очарование Пролога в том, что он определенным образом олицетворяет логику в действии, а именно «выполнение» логических формул.
Например, рассмотрим аксиомы:
О — натуральное]) число, если N — натуральное число, то s(N)—натуральное число.
Программа на Прологе, описывающая эти аксиомы, такова:
натуральное (0).
натуральное (s(N)): — натуральное (N).
Она не только порождает, но и распознает натуральные числа соответственно поставленному вопросу. Например:
?— натуральное (s (s (s (0)))). .
> да
?— натуральное (мед).
> нет■'
?— натуральное (X).
> X = 0;
— — >X = s(0);
— —> X = s (s (0));
' — — > X = s (s (s (s (0))));
Первый вопрос таков: «Является ли три натуральным числом?» Последний вопрос формулируется следующим образом: «Что такое натуральные числа?» Ответы ясны. Но чудеса здесь исключены: если хотим, чтобы s(s(s(0))) записывалось числом 3, то это надо также запрограммировать.
Программа символьного дифференцирования полиномов должна содержать факт
дифф(Х,Х,1).
(производная от X по X есть 1), И содержать еще правила
дифф(11 + V,X,A + В): — дифф(и,Х, А), дифф(У,Х,В).
дифф(11 — V,X,A — В): — дифф(и,Х,А), дифф(¥,Х,В).
(производная от U ± V по X есть А + В, если А — производная от U и В — производная от ¥). В таких выражениях Пролога проглядывает образ тернарного отношения «производная ... по .. . есть .. .». Это логический аспект, или декларативное прочтение, Пролога (§ 5.1.8). Аспект языка программирования, или процедурное прочтение Пролога, соответствует описанию вычислений, которые должны быть выполнены: «для получения производной от U ± V вычислить производные от U и от V (А и В соответственно), а затем построить выражение А ± В».
Причины двойного прочтения далеко искать не нужно: система Пролога есть средство доказательства теорем, использующее логический аспект языка. Она пытается обосновать противоречие между отрицанием поставленного вопроса и множеством фактов и правил. Удавшееся опровержение дает контрпримеры, представляющие собой ответ на поставленный вопрос (§§ 1.1.17, 1.2.14, 3.1.19, 5.1.9). Эта стратегия доказательства проще общего метода поиска доказательства и вполне осуществима. Поэтому пользователи принимают ее, руководствуются ею и программируют с ее помощью (см., например, [11], [105]).
Термы и объекты
В Прологе объекты (т. е. элементы) универсума рассуждения представляются с помощью термов так же,
11 Здесь понятие система означает автомат, реализующий Пролог. На практике это ЭВМ, снабжениаи компилятором или интерпретатором.
как в логике (§§ 1.2.2—1.2.3). В силу того что язык эти термы не интерпретирует, объекты сами являются термами — синтаксическими объектами одной из следующих категорий:
индивидные константы (атомы),
переменные,
функции (функциональные термы), состоящие из имени функции и списка аргументов-термов.
Синтаксис различает атомы, переменные и функции. Используемые соглашения сообразны конкретным применениям. Здесь мы используем синтаксис Си-Пролога. Однако выбор конкретной версии языка Пролог не влияет на различие между переменной (именем нарицательным) и константой (именем собственным) .
Атом записывается тремя способами:
— как идентификатор, начинающийся со строчной буквы
жаклин генрих_4
(допускается использование подчеркивания) — как число
123 1.23
— как произвольную последовательность символов, расположенную между апострофами:
’Что Вы говорите?’ ’Больше ничего не знаю/
Переменная — это идентификатор, начинающийся с прописной буквы
X Имя Король_Франции
Функция — это имя функции, за которым следует список термов, помещенных в скобки и разделенных запятыми. Имя функции — это нечисловой атом.
автор (книга, 1987) f(X)’Что ты говоришь?’ (штука)
На практике прологовская программа представляет собой некую действительность, а термы — реальные объекты (разд. 3.1). Например, при описании
библиотеки атомами будут имена авторов и/или издателей, годы издания, названия и т. д., а функциями—издательства и/или книги:
издат (дюно, 1987)
книга (жюль_верн, мишель_строгофф, 'издат (этцель, 1876))
Каждый атом — это отдельный объект, считающийся элементарным. Предпочтительны мнемонические идентификаторы, а не анонимные (вроде х2 и bb). То же относится и к функциональным термам: лучше взять издат (,), а не и (,). Отметим, что в программе на Прологе функциональный терм является структурой данных, сложным объектом, который можно эффективно построить или анализировать (§ 6.3.9). Это не функция, сопоставляющая результат набору аргументов.
Данные (константы) Пролога — это термы, не имеющие переменных. В логике они. называются индивидными термами (а также константными термами). Числовые атомы — это константы для программирования численных расчетов (§ 6.3.2).
Факты и элементарные вопросы
Простые предикаты (атомарные формулы и/или предикатные формы, см. § 1.2.1) формальной логики, такие, как
Автор (Эрнанл, Гюго)
принимают значения истинности И или Л. Почти то же самое имеет место для фактов и вопросов Пролога, не содержащих переменных. Простой предикат Пролога записывается в виде функционального терма, например:
автор (эрнани.гюго) дифф(Х,Х,1)
Предикат от функции отличают по контексту. Простые предикаты являются составляющими базы фактов и вопросов. Приведем пример небольшой программы, представляющей собой множество фактов:
^ /* библио*/
' книга(грэм,’рассуждать,чтобы программировать’,
. издат (дюно, 1986)).
книга (кондиляк, ’пролог’, издат (дюно, 1986)).
книга (дьедонне, ’математика’, издат (эрман, 1986)).
книга (гюго, ’отверженные’, издат (пош, 1984)). книга (гюго, ’эрнани’, издат (галлимар, 1974)). книга (хартман /параллельный паскаль’, издат(шпрингер, 1977)).■
библиотекарь (эмиль).
начальник (эмиль, анри).
начальник (жозеф, анри).-
. идет_дождь.
Точка, стоящая после предиката, указывает на то, что рассматриваемое выражение является фактом. Первая строка — это комментарий-, любая последовательность символов, записанная между парой ограничителей /*и*/, пр#и выполнении игнорируется. Каждый факт, содержащийся в программе, имеет соответствующее значение истинности и порождает (определяет) отношение между, термами. Например, двухместное отношение (предикат) начальник установлено между термами эмиль и анри, а трехместное отношение КНИГА— для 6 троек термов и т. д. Последний факт в приведенном примере — идет дождь.— является нульместным отношением (не имеющим аргументов) .
Множество фактов можно рассматривать как реляционную БД. Впрочем, мы употребляем понятие базы данных для обозначения множества фактов и правил некой программы.
Из простых предикатов строят также вопросы, например:
?—начальник(эмиль, анри).
Это выражение нового факта не устанавливает, но «система запрашивается» о том, установлен или нет данный факт. Значение вопроса (т. е. ответ) зависит от БД. В нашем примере вопрос простой, переменные и правила отсутствуют. Значение есть И, если в БД содержится факт с предикатом вопроса. В противном случае значение есть Л. Все это интуитивно ясно. На
практике задается последовательность «вопрос-ответ»: ?— начальник (эмиль, анри). > да
Таким образом, простейшие программы на Прологе регистрируют элементарные факты в БД и отвечают на вопросы, связанные с этими фактами (§ 5.1.8). Сама же БД определяет некие расширения содержащихся в ней отношений. Например: идет_дождь, начальник (,), библиотекарь () и книга (,,). Простые вопросы, не содержа
щие никаких переменных, называются да-нет-вопросами. Они допускают лишь два возможных ответа в соответствии с тем, имеется или отсутствует подходящий факт в БД. Семантика вопроса определяется состоянием БД. при поиске ответа. Для БД библио имеем:
?—книга(грэм,’рассуждать,чтобы программировать’, издат(дюно, 1986)).'
> да
?— книга (рассуждать, чтобы программировать, издат(дюно, 1986)).
> нет’
?— начальник (эмиль, генри).
> нет
- ?— идет_дожд«(сейчас). ■> нет ■
Так как в Прологе *> нет объявления и контроля типов, то нет и ошибок программирования. Неверно написанное пользователем имя для системы является новым атомом: анри и генри — два атома, которые не имеют ничего общего. Бинарное отношение не годится в качестве тернарного, зато тернарное отношение задает три бинарных отношения с одинаковыми именами — для трех пар из трех аргументов: отношения книга (,) и книга (,,)
для системы различны, чем и обусловлен ответ на второй приведенный выше вопрос.
11 Но не в Турбо-Прологе. — Прим, перев.
Конъюнкция
В логических формулах используются связки и простые предикаты (§ 1.1.2). То же самое имеет место в Прологе. Самую ходовую связку — конъюнкцию — обозначают запятой:
?— начальник(эмиль,анри), начальник (жозеф, анри).
Это выражение соответствует такой логической формуле:
' Начальник (Эмиль, Анри) Д"
А Начальник (Жозеф, Анри).
Конъюнкция в Прологе, как и в логике, истинна только при истинности всех компонент. Однако имеется важное отличие: в Прологе семантика учитывает порядок оценки компонент (слева направо).
Переменные
Использование переменных в Прологе аналогично, но не идентично использованию их в логике. Вопросы, включающие переменные, носят перечислительный характер (в отличие от да-нет-вопросов): ответы в этом случае представляют собой списки термов. Например, вопрос «Кто в подчинении у Анри?» является вопросом «перечислительного» («списочного») типа. Ответ на него должен быть списком имен. Ответом БД библио мог бы быть [эмиль, жозеф].
Прологовским эквивалентом местоимения «кто» является переменная:
?— начальник (X, анри).
Ответ здесь хотелось бы получить посредством замены X на такую константу, для которой в БД найдется подходящий факт. Взяв константу эмиль, получаем:
?— начальник (X, анри). > Х = эмиль
Система ответила одним значением переменной, преобразовав вопрос в истинный предикат. Но почему не
жозеф и не [эмиль, жозеф] ? Для объяснения произвольности выбора вникнем в алгоритм получения ответа. Факты и правила БД — это не множество, а список. Обычно они текстуально упорядочены. Для получения ответа система просматривает БД в соответствующем порядке и выбирает первое удовлетворяющее предикату вопроса выражение.
Предикат вопроса представляет собой цель. Здесь это
начальник(Х.анри).
Цель достигнута, если в БД удалось найти факт или правило, который (которое) удовлетворяет этому предикату ’> (т. е. превращает его в истинное высказывание). Чтобы удовлетворить приведенному только что простому предикату, нужно иметь факт вида начальник ( ,анри), т. е. факт, содержащий:
такое же имя предиката (начальник),
• • столько же аргументов (два),
те же константы на тех же местах (анри на вто:ром месте).
При выполнении этих условий факт соответствует (следовательно, удовлетворяет) предикату. В нашем примере годится факт
начальник(эмиль, анри).
Переменная X примет значение той константы, которая стоит на соответствующем месте в найденном факте. Хотя объяснять несколько долго, но это именно то, что подсказывает интуиция.1
Еще один способ выразить семантику рассмотренного выше вопроса состоит в формулировании следующего запроса: «Можно ли сопоставить (присвоить, назначить) переменной X такой терм, чтобы результатом была формула из БД?» Утвердительный ответ обеспечивает назначение X = эмиль. Это лишь одно из возможных назначений-ответов. Си-Пролог в интерактивном режиме даст все ответы, если после
’) Будем говорить также:, предикат удовлетворяется (удовлетворен) фактом (или правилом), — Прим ред.
каждого ставить точку с запятой:
?— начальник (X, анри).
•>Х = эмиль;'
> X = жозеф;
—' — > иет
Нет означает исчерпание возможностей.
Если' вопрос
' ?—начальник(X,анри).
считать обращением к процедуре, то константа анри будет входом, а переменная X — результатом. Это взгляд пользователя, но не Пролога. В выражениях, содержащихся в БД, различие между аргументами не проводится. Лишь в вопросах переменные «заказывают» значения для ответов, например:.
?— начальник (жозеф, Y).
> Y = анри;
> нет
?—начальник (X,Y).
■>Х = эмиль, У = анри;'
>Х = жозеф, Y = анри;
> нет
Переменные можно также использовать в фактах:
начальник (X, адемар).
Это выражение является записью ria Прелоге фразы «Адемар — большой начальник»
и логической формулы
Vx Начальник (х, Адемар).
Цель вида начальник (.адемар) достигается в том случае, если в БД содержится факт начальник (X, адемар).
При использовании переменной в конъюнкции переменная устанавливает связь между сомножителями конъюнкции. Разумеется, все вхождения переменной принимают одно и то же значение. Ответ на вопрос
?—начальник (X, анри), библиотекарь (X)..
(«Над какими библиотекарями Анри начальник?») получается путем последовательного удовлетворения двух частей (достижения двух частичных целей, подцелей) конъюнкции. Первая часть
начальник(X,анри)
удовлетворяется фактом
начальник (эмиль, анри).-
реализующим присваивание (назначение)
X = эмиль.
Если бы первая подцель не достигалась, то ответ на весь вопрос был бы — нет. Присваивание значения переменной X преобразует вторую подцель
библиотекарь(X) в
библиотекарь (эмиль)
которая достигается. Полный ответ:
> X = эмиль.
Для получения второго ответа система сперва ищет второе достижение второй подцели. Это всегда
библиотекарь (эмиль).
при дальнейшем пробегании по БД в предписанном порядке. (Дублирование выражений запрещено.) Подцель теперь нр достигается вновь. Система возвращается к предыдущей подцели
начальник (Х,анри).
т. е. осуществляется возврат (см. § 6.2.3). Подцель вновь достигается при использовании факта '
начальник (жозеф, анри).
Отсюда получаем присваивание
X = жозеф.
и т. д. В рассмотренном нами примере только один ответ, ибо недостижима цель
библиотекарь (жозеф).
средствами (фактами) БД библее.
Анонимные переменные
Переменные, которые рассматривались выше, имели имена. Существуют и анонимные переменные. Допустим, что мы интересуемся наличием в БД библио хотя бы одной книги Виктора Гюго. Вопрос
?— книга (гюго, X, У).
вызовет последовательность ответов
> X = отверженные, У = издат(пош, 1984);
.>Х = эрнани, У — издат(галлимар, 1974);
> нет
Это не совсем то, что надо: — предполагалось получить «да» или «нет». Однако, заменяя X и У анонимными переменными (знак подчеркивания), получаем то, что хотели: на вопрос'
?— книга (гюго, ,).
ответ будет■
> да
Для получения списка авторов, книги которых имеются в наличии, ставим следующий вопрос:
?— книга (А, ,)
Это дает нам такой список1
> А = грэм;
> А = кондиляк;
> А = дьедоние;- ■
> А = гюго;
> А = гюго;.
> А = хартмаи;■
> нет
Анонимные переменные не отличаются от обычных при поиске соответствий, но не принимают значений и не появляются в ответах. Отметим, что различные вхождения знака подчеркивания означают различные анонимные переменные.
Правила
Последним и самым мощным видом выражений в Прологе являются правила ° (обобщающие понятие факта). Например, для построения семейной БД можно перечислить родительские отношения при помощи списка фактов:
мать (каролина, юлия).
мать (каролина, альбертина).
Выражать фактами отношения внуков с дедами необходимости нет, ибо они могут быть выведены из отношений предшествования «X является дедом Y, если существует субъект Z, отец которого X и который сам отец или мать У». На Прологе это высказывание записывается в виде двух правил:
дед (X, Y): — отец (X, Z), мать (Z, Y).
дед (X, Y): — отец (X, Z), отец (Z, Y).
где символ «:—» читается «если» («при условии, что»). Этот символ уже использовался и имел похожий смысл (§§ 1.1.17 и 5.1.4).
Вообще правило выглядит так:
Н:—Р1,Р2,...,Рп.
где Н, Pl, Р2, ..., Рп— простые предикаты (§ 6.1.9). Это выражение читается следующим образом: «Н, если (Р1 и Р2 .... и Рп)». Предикат Н называется заголовком правила, а последовательность предикатов Pl, Р2, ..., Рп — телом правила (см. § 5.1.3). Такие правила похожи на хорновские дизъюнкты, которые рассматривались в логике (§§ 1.1.17, 5.1.4).
Приведенное только что правило является аналогом) предложения
Н, если (Р, А Р2 ... А Р„),
*) В литературе правила называют также импликациями. —• Прим, персе.
или выражения
№ А Р, ... А Р„) н, или формулы
П Р, V И Р2 ... V И Рп V Н, которые суть различные записи хорновских дизъюнктов. Приведенное правило похоже, кроме того, на объявление процедуры в языке программирования.
Заголовок правила
дед(Х.У) ■
объявлен как и тело правила отец (X, Z), мать (Z, Y).
Это правило указывает на то, что вопрос, имеющий форму
?—дед (андре, каролина). преобразуется в вопрос
?— отец (андре, Z), мать (Z, каролина).
Наличие правила (как и факта) в БД означает общезначимость соответствующей формулы. Считается, что все переменные в правиле связаны кванторами общности. Например, правило
дед (X, Y):— отец (X, Y), мать (Z, Y). толкуется как
VxVz/Vz [Отец (x,z) Д Мать (z,у) о Дед (х,у)]. Правила — самые общие выражения Пролога, факт представляет собой правило без правой* части, а вопрос— без левой (§ 5.1.8):
Н истинно, если Р1 и Р2 и ... и Рп истинны (правило),
Н истинно (факт или правило без тела), Р1 и Р2 и ... и Рп истинны? (вопрос или правило без заголовка).■
Рассмотрим следующую БД:■■
/* семья*/ мать (каролина, юлия).
мать (каролина, альбертина).
мать (мари, проспер).
мать (анна, каролина)..
отец (проспер, юлия).
отец(проспер,альбертина).
. отец (альфонс, проспер).
отец (андре, каролина).
дед(Х,¥):— отец (X.Z), мать (Z,Y).
дед (X, Y): — отец (X, Z), отец (Z, Y).
бабка (X, Y):— мать (X, Z), мать (Z, Y).
бабка (X, Y):— мать (X, Z), отец (Z, Y).
Отношения мать и отец заданы фактами, а отношения дед и бабка определяются с помощью правил.
На вопрос
?— дед (альфонс, юлия).
ответа среди фактов нет (ни один факт не соответствует предикату вопроса). Но заголовки некоторых правил соответствуют этому предикату.
Цель заголовка какого-либо правила считается достигнутой (как и для факта) при совпадении имени предиката, числа аргументов в нем и констант, стоящих на соответствующих местах предиката. Так, например, факт
дед (альфонс, юлия)
обеспечивает реализуемость (удовлетворение, достижение) цели
дед(Х.У).
Переменным из заголовка правила присваиваются значения:
X = альфонс, Y = юлия.
Новой целью будет далее тело с новыми значениями переменных:
отец (альфонс, Z), отец (Z, юлия).
Эта конъюнкция предикатов обрабатывается как последовательность подцелей. Их достижение обеспечивается присваиванием
Z = проспер.■
В итоге получаем последовательность вопрос-ответ
?— дед (альфонс, юлия). > да
Значение внутренней (отсутствующей в вопросе) переменной не входит в ответ. Это вполне естественно, йбо вопрос «да-нет» и переменные X, Y, Z нужны только для вычисления (нахождения) ответа.
Рекурсивные правила
База данных семья должна отвечать на вопрос, является ли X предком У. Определение предиката «быть предком» рекурсивно. Для предков по женской линии соответствующие правила на Прологе записываются так:
предок (X,Y):—мать(Х,У).
предок (X, Y):— мать (X,Z), предок (Z, Y).
Такие рекурсии разрешается использовать, иначе язык был бы слишком примитивным. Примеры еще будут приведены. Рекурсивное определение предиката обязательно должно содержать базис (§ 5.1.2), т. е. нерекурсивную часть, иначе оно будет логически некорректным и программа зациклится. Чтобы избежать зацикливания, надлежит, кроме того, позаботиться о порядке выполнения, а следовательно, и порядке написания соответствующих выражений. Поэтому практически полезно, а порой и необходимо придерживаться принципа: «-сначала нерекурсивные выражения-».
Дизъюнкция
Чистый Пролог разрешает применять только конъюнкцию в вопросах и правилах (хорновских дизъюнктах). Язык, используемый на практике, богаче: в нем допускаются дизъюнкция и отрицание в телах правил и вопросах (т. е. целях, которые исследуются на достижимость). Рассмотрим снова БД библио и следующие выражения со связкой дизъюнкции, обо-
значаемой точкой с запятой:
начальник (X, анри); библиотекарь (X)
Оно является аналогом логической формулы Начальник (х, Анри)\/ Библиотекарь (х).
Для достижения цели, содержащей дизъюнкцию, система сперва пытается удовлетворить левую часть рассматриваемой дизъюнкции, а если это не удается, то переходит к поиску удовлетворения для правой части той же дизъюнкции. Для нашего примера имеем:
?—начальник(X,анри); библиотекарь(X)..
> X = эмиль;. > Х = жозеф;
■> X = эмиль;
> нет
В этом простом примере дизъюнкция не включена нн в какой более сложный предикат и поэтому все дело свелось к двум последовательным вопросам. Первый предикат удовлетворен дважды, второй — один раз (причем независимо от первого).
Отрицание
В Прологе отрицание имеет имя not и для представления отрицания какого-либо выражения Р используется запись not(P). Цель not(P) достижима тогда и только тогда, когда не удовлетворяется предикат (цель) Р. При этом переменным значения не присваиваются. В самом деле, если достигается Р, то не достигается not(P); значит, надо стереть все присваивания, приводящие к этому результату. Наоборот, если Р не достигается, то переменные не принимают никаких значений. Рассмотрим пример, связанный с БД библио:
?— not (начальник (эмйль, арсен)).
.> да
?— not (начальник (эмиль,X)).
> нет
Чтобы обработать отрицание, Пролог рассматривает невозможность проведения доказательства как эквивалент значения Л. Следовательно, not(P) считается истинным тогда и только тогда, когда не удовлетворяется Р. Подход этот в высшей степени прагматический, не имеющий эквивалента в логике. (А что можно предложить иное?)
Области действия имен
В Прологе программист свободен в выборе имен констант, переменных, функций и предикатов. Исключения составляют резервированные имена (§ 6.2.4) и числовые константы (§ 6.3.2). Переменные не объявляются, отличаясь от констант первой буквой °. Разные обозначения представляют разные объекты. Есть довольно очевидные исключения. Например, 133.1 и 133.10 — одно и то же число.
Область действия имени представляет собой часть программы, где это имя имеет один и тот же смысл (как во всех языках программирования). В Прологе:
для переменной областью действия является выражение (факт, правило или вопрос), ее содержащее,
для остальных имен (констант, функций или предикатов) — вся программа.
Многократно .можно использовать в одной программе лишь имена переменных. В приводимом ниже фрагменте из БД семья имеются: два вхождения имени каролина — это одна и та же константа, четыре вхождения имени (предикатного) мать — один и тот же предикат (всюду двухместный). Но переменные первого и второго правил независимы (это интуитивно ясно2*).
1 Строчная или прописная. — Прим, перев.
Действительно, считается, что каждая перемеииая находится под действием некоторого (своего) квантора, который можно поместить в начале рассматриваемого выражения. Таким образом, область действия имени переменной в Прологе аналогична области действия квантора (см. § 1.2.4).
мать (каролина, юлия).
мать (каролина, альбертина).
дед (X, Y):— отец (X, Z), отец (Z, Y).
бабка (X, Y):— мать (X, Z), мать (Z, Y).
Операторы
Напомним, что функциональный терм — это имя функции с аргументами в скобках. Само имя функции представляет собой нечисловой атом. Вообще же нечисловой атом — это функциональный терм без аргументов. Любой терм можно представить в виде дерева, корню которого приписано имя внешней функции, а ветвям соответствующие наборы аргументов. Например, терм f(x, g(y, z)) задается следующим деревом:
■92
Такое представление является канонической формой: она не зависит от способа записи термов. Каноническую форму полезно бывает использовать в тех случаях, когда требуется уточнить представление термов (некоторые термы могут быть записаны многими способами). В частности, для термов с одним или двумя аргументами функциональное обозначение можно заменить именем операции, причем имя функции-операции записывается как унарный префиксный (или постфиксный) оператор, либо как бинарный инфиксный оператор:
opl с а ор2 b
вместо
opl (с) ор2(а,Ь).‘
При этом именам функций-операций (opl и ор2) надо придать статус операторов с приоритетом (см. § 6.3.10). Очевидно, что выражения а ор2 b и ор2(а,Ь) задают один и тот же объект:
ор2 "
аЬ
Некоторые имена функций и предикатов можно записывать в виде операторов. Например, а + b * с и + (а, * (Ь, с)) —один и тот же терм; его дерево выглядит так:
Приоритет <+» ниже, чем у «*» (как обычно). Подчеркнем, что а + b * с — терм Пролога, а не числовой оператор, описывающий процедуру вычисления (см. § 6.3.2).
6 2. Алгоритмы Пролога
Введение
Общий принцип выполнения прологовых программ прост: ищут (вычисляют) ответы на вопросы, задаваемые базе данных (БД), состоящей из фактов и правил. Проверяется соответствие предикатов вопроса выражениям из БД. Это частный случай метода резолюций (§§ 1.1.12 и 1.2.14). Но детали не так просты. Результаты проводимого поиска нужно анализировать во вполне определенном порядке, применяя
для проверки соответствий спецфункции Пролога (делающие его языком программирования). Наиболее примечательной из этих функций (обладающей так называемым «краевым эффектом») является отсечение (§ 6.2.5).
Для получения ответа на заданный вопрос ищется подходящее соответствие в БД (§ 5.1.8). Например, рассмотрим БД библио и вопрос
? — начальник (эмиль, Y).
Предикат, содержащийся в этом вопросе, становится целью. Соответствие ему факта
начальник (эмиль,анри)
влечет достижение цели и ответ > Y анри'.
Основные принципы и термины следующие:
• в задаваемом вопросе допускается только один I предикат, он и является целью, удовлетворяемой выражением (фактом или правилом) из БД; в приведенном выше примере целью является выражение начальник(эмиль, Y);
если цель есть атомарный предикат, то она удовлетворяется
— фактом — в том случае, когда он соответствует ей (см. § 6.2.2); в нашем примере цели соответствует факт начальник (эмиль, анри);
— правилом — в том случае, когда его заголовок соответствует цели, а его тело может быть удовлетворено посредством присваивания термов некоторым переменным;
если цель представляет собой конъюнкцию (последовательность) предикатов, то она удовлетворяется в том случае, когда посредством присваиваний термов переменным будут последовательно (в текстуальном порядке) удовлетворены все входящие в нее предикаты.
Отметим, что в Прологе не проводится' синтакси- щского различия между предикатом и функциональ-
12 А. Тейз и др.
ным термом, а также между нечисловой константой и 0-арной функцией. Следовательно, суть действия состоит в том, что ищется попарное соответствие между термами, один из которых является целью, а другой принадлежит БД.
Соответствие и унификация
Установление соответствия между термами является основной операцией при поиске (вычислении) ответа на. вопрос. Она осуществляется следующим образом: на каждом шаге выбирается очередной терм и отыскивается соответствующее выражение в БД. При этом переменные получают или теряют значения. Этот процесс естественно описать в терминах текстуальных подстановок: выражение «присвоить переменной Y значение анри» преобразуется в выражение «подставить терм анри вместо переменной V». Для эквивалентности этих двух формулировок нужно использовать различные обозначения для разных переменных.*
Заметим, что одни предикаты бывают шире других: они «покрывают» больше случаев. Например, предикат ’любит-читать’ ('жюль-вери, Все) шире, чем предикат ’любит-читать’ (жюль_вери, ’Дети капитана Гранта’). Второй предикат — конкретизация первого (второй уже первого). Для термов такое понятие рассматривалось в § 1.2.6 и для его обозначения использовался символ -<_. Имеем:
Любит „читать (Жюль_Верн,’ Дети капитана Г ранта") -< Л юбит „читать (Жюль„Верн, х).
Некоторые из нижеследующих определений были сформулированы в § 1.2.6:
Подстановка — это функция о: V-*T, где V — множество переменных, а Т — множество термов.
Переменная Хе V называется активной для подстановки а, если а(Х)^Х.
Подстановка называется элементарной, если в ней ровно одна активная переменная.
Подстановка называется конечной, если в ней конечное число активных переменных. (Далее мы рассматриваем только такие подстановки.)
Множество составляющих подстановку пар обозначается *> так:
a = {Jf]=/i, X2 = t2, .... Xn — tn},
где Xt — различные активные в а переменные,
' ti — соответствующие термы (следовательно, ti = o(Xi) ^Xi).
Применение подстановки о к выражению или множеству выражений Е состоит в замене всех вхождений каждой переменной X термом а(Х). Результат обозначают off].
Выражение Ех есть конкретизация выражения Е, если найдется такая подстановка а, что Ех = olf]. Здесь Е шире Ех.
Важнейшим определением является определение унификации (или сопоставимости') двух термов.
Термы tx и /2 унифицируемы (или сопоставимы), если существует такая подстановка о, что а [Л] = ст [^2] - Эта подстановка а называется унификатором, а результат — оби^ей унификацией для термов /1 и /г*
Например, подстановка
т = {Х = жонас, Y = W, U = жонас, V = W,E = =жонас}
унифицирует термы
■ книга (X, У,издат(Х, 1985)),
книга (U, У,издат(Е, 1985)).
Общая унификация такова:
книга (жонас, W, издат (жо нас, 1985)).
' Эта запись напоминает присваивание значений переменным. В гл. 1 применялось другое обозначение:
a = {(^i, ti), (^2, ti), ..., (Хп, tn)}.
Унифицировать можно по-разному. Вот еще два унификатора для тех же термов:
а1 = {X = жонас, Y = карл, U = жонас,
V = карл, Е = жонас),
а2 = {Х = жонас, Y = Z,U = жонас,
V Z,E = жонас).’
Они дают следующие общие унификации
книга (жонас, карл, издат (жонас, 1985)), книга (жонас, Z, издат,(жонас, 1985)).
Подстановки о и о2 дают более общие унификации, чем подстановка оь На самом деле отличие а и а2 — лишь в именах переменных. Мы видели (в § 1.2.13), что если существует унификация для любых двух термов, то существуют и максимально возможные унификации. Они отличаются между собой только именами переменных. Так как эти имена произвольны, то для наиболее общих унификаций мы можем задать каноническую форму, именуя переменные слева направо: Al, А2Разумеется, что все вхождения одной и тон же переменной получат одно и то же имя. Для нашего примера имеем:
книга(жонас, А1, издат(жонас, 1985)).
Следовательно, существует единственный с точностью до имен переменных наиболее общий унификатор. Его можно определить следующим образом:
Наиболее обидим унификатором (короче: НОУ) для двух унифицируемых термов tt и /2 называется такой унификатор а, что, каков бы ни был другой унификатор oj для тех же термов, существует подстановка о2, удовлетворяющая условию оч = а2 ° а.
Любой унификатор получается из НОУ путем воздействия на него подходящей подстановкой. На рис. 6.1 приведено операционное описание унификации в виде рекурсивного алгоритма унифицирование. Входом являются два терма, которые надо унифици- оовать. Результат — пара (В, а), где В — булево
процедура унифицирование (h, /2 : терм?)
задано (В : булево, о : последовательность подстановок)
it — 1г•
=*• присвоить [В = истинно, а = { })
/1 есть переменная X
=>■ присвоить (В = истинно, а = (X = /д})
t2 есть переменная Y
=>- присвоить (В = истинно, а = (К = G})
[G есть функция f (а,, а2, .... ап)
Л <2 есть функция g(6b 62bm)
M = g
Л n = m[
=»• [пусть i таково, что at = bva<_l = 6t-_l, a, ^= bf, унифицировать [at, b)) с результатом [Bx, at); В, = ложно =ь- присвоить [В = ложно, а = ( }); унифицировать (at [G1. <т [^2]) с результатом [В2, аг);
В2 = ложно =ь- присвоить (В = ложно, а = { }); иначе => присвоить (В = истинно, о = о2*ох) 1 иначе
=► присвоить (В = ложно, а = { }) □'
Рис. 6.1. Алгоритм унификации.
значение истинности сообразно успеху или неудаче унификации, a—НОУ для двух термов (точнее, о есть последовательности элементарных подстановок). Прн процедурном взгляде на подстановки q2°oi — не только композиция, но и последовательное применение подстановок к термам t и oi[^]; в результате получается терм (оа°О1)[/] = 02(01 [/]].
Замечания к рис. 6.1:
Данный алгоритм является инструкцией, выделяющей пять случаев вида Ci => Ц, где условия Ci проверяются в текстуальном порядке.
Константы и индивидные *> термы унифици- ' руемы, только если они равны. Первый случай учитывает все ситуации с равенством. Результат — тождественная подстановка о = {}.
Во втором и третьем случаях возможно зацикливание при подстановке вида (X = f(X)}.
° Иное название—константные (см. § 6.1.2). — Прим, пе'рев.
Будут порождаться термы f (f (X)), f (f(f (X))), f (f (f (f (X)))) и т. д. Результат унификации можно рассматривать как бесконечный терм вида f (f(f(. ..))), но такого объекта нет ни в классической логике, ни в классическом Прологе. Отсюда следует, что надо запретить замещать переменную термом, ее содержащим. Значит, в принципе надо проводить соответствующую проверку вхождения. Однако на практике такая проверка обычно не делается из-за ее трудоемкости.
Вычисление ответа
Каноническая форма вопроса является конъюнкцией атомарных предикатов, т. е. последовательностью подцелей, разделенных запятыми:
Q = Q,, Q2> ..., Qn.
На рис. 6.2 представлен рекурсивный алгоритм вы- числигь-ответ, использующий такую форму вопроса *>. Напомним, что выражения, содержащиеся в БД,— это правила вида
/о:— ^1» ^2> • • • > ^А
и факты (правила с пустым телом). Пустую последовательность обозначим символом е. Пробегая БД по
процедура вычислить-ответ (Qb Q2Qn) =
дли всех выражений /о:~ <ь h, .... t^ из БД■
делать
унифицирование (Qb /0) с результатом (В, о);
В = истинно
=>• [Л, ^2. •••> th, Qz, .... Qn = e =► печатать (а) иначе
=*• вычислить_ответ (а [<ь ..., <а» QzQnl) ]'
факт
Рнс. 6.2. Вычисление ответа.
*> Разумеется, речь идет лишь о теоретически осуществимом алгоритме. Для эффективной реализации требуется гораздо более производительная процедура.
порядку и подряд, алгоритм выдает все возможные ответы (см. § 5.1.8). Ответ выдается инструкцией печатать (а) при каждом получении пустой последовательности подцелей. Печатаются лишь значения переменных из вопроса или да(нет), если вопрос не содержит переменных. Важно заметить, что каждое рекурсивное обращение к вычислить_ответ просматривает БД каждый раз вновь с самого начала. После получения или неполучения подответа берется исходная последовательность для перехода к очередному выражению из БД. Именно это обстоятельство реализует возврат.
В этом алгоритме виден частный случай резолюции применительно к хорновским дизъюнктам (§§ 1.1.16, 1.2.14). Вопрос Q является правилом без заголовка, аналогом выражения HQ, т. е. Q =э Л '^ Пусть D— база данных (множество дизъюнктов). На вопрос Q ответим поиском такой подстановки а, для которой множество a [D U (~1 Q)] невыполнимо. Стратегия выбора очередной пары дизъюнктов для резолюции здесь очень проста: подцели и выражения пробегаются в текстуальном порядке.
Вспомним БД семья (§ 6.1.7).
/* семья */
мать (каролина, юлия).
мать (каролина, альбертина).
мать (мари, проспер).
мать (анна, каролина).
отец (проспер, юлия).
отец(проспер,альбертина). отец (альфонс, проспер). отец (андре, каролина).
Дед(Х.У) дед(Х,У) бабка (X, У) бабка (X, У)Дед(Х.У) дед(Х,У) бабка (X, У) бабка (X, У)мать (2, У), отец (2, У), мать (2, У), отец (2, У).мать (2, У), отец (2, У), мать (2, У), отец (2, У).:— отец (X, 2), :— отец (X, 2), :— мать (Х,2), :— мать (Х,2),
Дед(Х.У) дед(Х,У) бабка (X, У) бабка (X, У)
Дед(Х.У) дед(Х,У) бабка (X, У) бабка (X, У)
мать (2, У), отец (2, У), мать (2, У), отец (2, У).
мать (2, У), отец (2, У), мать (2, У), отец (2, У).
*’ Точнее, вопрос ? — Q. является правилом: —Q, с телом Q и пустым заголовком (см. § 6.1.7). Это правило аналогично формуле Q з Л, т. е, "~l Q. — Прим, перев. .
Зададим составной вопрос
Qb Qi — OTeu(X,Y), мать (каролина,Y).
Подцель
Q, == отец (X, Y)
соответствует пятому выражению (факту) БД
отец (проспер, юлия).
Это дает подстановку
о^ = (X = проспер, Y = юлия).
Затем, используя рекурсивное обращение, алгоритм применяется к
o"t (Qg] = мать (каролина, юлия).
Этой подцели соответствует первое выражение БД, что дает пустую последовательность подцелей. Значит, ответ найден:'
X = проспер, Y = юлия.
Для получения нового ответа в БД ищется новое соответствие для <Т1 [Q2] - Так как такового нет, то вычисления прекращаются на этом шаге рекурсии. Затем система вновь рассматривает последовательность Qh Qi и для Qt ищется новое соответствие в продолжении БД (начиная с шестого выражения). Это и есть «возврат». Шестое выражение сразу же дает желаемое соответствие — с подстановкой
а2 = (X = проспер, Y = альбертина),
и новое рекурсивное обращение, применяемое к
а2 [Q2I — мать (каролина, альбертина),
и т. д. В итоге имеем:
?—отец(Х,У), мать(каролина,Y).
> Х = проспер, У = юлия;
> Х = проспер, Y = альбертина;
> нет
Когда для заголовка правила соответствие установлено, то тело правила идет в заголовки неудовлетворенных подцелей. В вопросе
Qi» Q2 = дед(U,V), отец(проспер, V)
подцели Qi соответствует заголовок первого правила
(девятого выражения) БД, что дает подстановку
a, = {X = U, Y = V}
и новую последовательность подцелей
Q' = а! [отец(Х,2), MaTb(Z,Y), отец(проспер, V)}, т. е.
Q'= отец (U, Z), мать(г,У), отец(проспер,V).
Первому предикату из Q' соответствуют четыре факта, используемые один за другим. Так как первые трн ничего не дают, то сразу переходим к четвертому
отец (аидре, кароли на).
дающему подстановку
а2 = {U = андре, Z = каролина) .
и последовательность подцелей
Q" = мать(каролина,V), отец(проспер,V).
Очередное соответствие с первым выражением дает подстановку
а3 = {V = юлия}
и последовательность
. Q" = отец (проспер, юлия).
которой соответствует один факт и тождественная подстановка а4 = {}. Тем самым Q'" преобра
зуется в пустую последовательность. Значит, ответ таков:.
U = андре, V = юлия.
В итоге имеем
?—дед(и,¥), отец(проспер,¥).
> U = андре, V = юлия;
> U - андре, V = альбертина;
> U = альфонс, V = юлия;
> U = альфонс, V = альбертина;
> нет
Интересно, что подцель последовательности Q = Qb Q2Qn может быть предикатом-значением вычисленной переменной. Например, правило
искать (Р):— Р.
использует переменную как предикат. Переменной надо присвоить значение-предикат при поиске соответствия в БД. Аналогично вопрос
?— искать (отец (X, Y)).
ставится в соответствие предикату искать (отец (X, Y)), проистекающему от вопроса с заголовком правила искать (Р), что дает подстановку
{р = отец (X, Y)}.
Тело правила, т. е. значение предиката Р, станет очередной подцелью, что дает ответ
X = проспер, Y = юлия.
Пример поинтереснее приведен в конце § 6.3.9.
Встроенные предикаты
У каждого языка программирования свой репертуар встроенных (готовых к применению) операций. Таковы, например, арифметические операции в классических языках. Пролог базируется на предикатах и поэтому встроенные операции в нем рассматриваются как предикаты, но это всего лишь номинально. Операция, называемая «предикатом», «функцией» или «инструкцией» (такая как ввод-вывод), имеющая краевой (остаточный) эффект (см. с. 368), не может
выполняться в точности так, как указано в процедуре вычислить-ответ (рис. 6.2). Такие операции называют «предикатами», потому что они рассматриваются как цели, которые надо достичь, что позволяет их считать элементами языка Пролог. Но ответы для них могут вычисляться без поиска соответствия в БД, т. е. их семантика в основном не зависит от БД.
Начнем со следующих встроенных предикатов:
true fail
= = \= =
atom integer number atomic var
repeat
Далее будут рассмотрены: отсечение (в § 6.2.5, важнейший из встроенных предикатов) и ввод-вывод (в § 6.3.7). Остальные- будут вводиться по мере надобности.
Предикаты true и fail (без аргументов) представляют значения истинности: первый достигается всегда, второй — никогда. Факт «true.» как бы присутствует в любой БД, «fail.» — ни в какой. Примеры покажут полезность fail при поиске всех соответствий для подцелей.
Три предиката со странными именами
= = \= = =
синтаксически—бинарные операторы (§§6.1.12, 6.3.10) сравнения аргументов-переменных X и Y без учета БД.
X = = Y достигается, если оба аргумента являются одним и тем же термом. Никакой подстановки не производится.
?—f (а) = = f (а).
> да ?— с = = Х.
> нет
?—f (X) = = f (X).
>х=_о
Поясним последний ответ. Цель достигнута, ибо аргументы предиката равны. Система печатает значения переменных из вопроса и если переменная не получила значения (не унифицирована), числовой код после подчеркивания.
X \= = Y достигается, если не достигается
Х = =Y
?—f (а) \= = f (а).
> нет
?—с\= = Ь.'
— —>да
?—f(X)\= = f(X)..
> нет
X = Y играет более активную роль, пытаясь уравнять свои аргументы унификацией. Он достигается вместе с унификацией и может повлечь подстановку.
?— X = а.
>Х = а
?— f(X,Y,Z) = f(X,U,a).
> X = _ О, Y = _l, Z = a, U = _ 1
Следующие пять предикатов одноместные. Они анализируют свой аргумент, не запрашивая БД и не делая подстановок. Предназначены они для использования в телах правил, а не в вопросах.
atom(X) достигается, если X —атомарная константа (нечисловой атом).
?— atom (полетта).
> да
?— atom (подруга(изабелла)).
> нет
?—• atom (X), > нет atom (123). > нет
integer (X) достигается, если X —целый числовой атом.•
?— integer (123).•
> да
?— integer (1.23). >нет
number (X) достигается, если X — произвольный числовой атом.
?— number (123). > да
?—number (1.23). > да
atomic (X) достигается, если X — произвольный •атом.
?— atomic (полетта). > да
?— atomic (подруга (изабелла)).'
> нет
?— atomic (X). > нет ?— atomic (123). > да
var(X) достигается, если X — не унифицируемая к терму переменная.
?— var (камилл). > нет1
?- var(f(X)). > нет ?- var(X).
> Х= 0
Примеры использования предиката «=» для унификаций:
?— Х = а, var(X)
?— var(X), Х = а, atom(X).
> Х = а
?- X = Y, var(X), var(Y).
> X = _0, Y = _0
?- X = f(Y).
-->X = f(_l), Y = _l ?— X = f(Y), var(X).
> нет
Наконец repeat (без аргументов). Встроенность не препятствует определению его выражениями Пролога
repeat.
repeat:— repeat.
Достигается при каждом возврате к нему. Пусть имеется последовательность подцелей
Q = repeat, Q2Qn.
Подцель repeat впервые достигается для факта «repeat.» из БД с подстановкой о = {} и новой по
следовательностью Q' — Q2, ..., Qn. Если Q' не дает ответа, то вновь пытаются (это возврат) удовлетворить Q другим выражением из БД, достигая подцель заголовка правила repeat:— repeat.
Получается последовательность Q" = repeat, Q2, ... ..., Qn. Рекурсивный вызов вычислить_ответ (Q") возобновит поиск с начала БД. Следовательно, подцель repeat вновь достигнута фактом «repeat.», и т. д. Возврат «отскакивает» от подцели repeat. Предикат возобновляет поиск соответствия для сопровождающих подцелей (см. пример в конце § 6.3.8).
Отсечение °
Прологовский поиск (см. рис. 6.2) обычно выявляет все решения. Если БД велика, это обременительно. Подчас хватает одного решения. Встроенный предикат отсечение «срезает» поиск дальнейших соответствий. Его обозначают символом «!» (т. е. восклицательным знаком)2’. Предикат отсечение используется в тех случаях, когда:
• программист знает о единственности решения (прервав после его получения поиск, предикат «!» меняет эффективность, но не логику, программы);
11 Иное название — усечение.—Прим, перев.
2> В некоторых версиях Пролога принято обозначение «/». — Прим, перев.
пользователю хватает одного решения (предикат «!» исключит остальные влияя на логику программы),
корректно лишь первое решение и нужно удалить другие решения (предикат «!» вовлечен в логику программы так, как это проиллюстрировано в приведенном ниже примере).
БД микро-дифф 1 представляет собой набросок программы *>, осуществляющей символьное дифференцирование полиномов от одной переменной. В ней реализованы следующие правила дифференцирования:
dxjdx = 1, dy]dx = О, d (и + v)/dx = du/dx + dvjdx.
j* микродифф! */ дифф(Х,Х,1).
дифф (Y, X, 0): — atomic (Y).
дифф(и +V,X, UI + VI):~ дифф(11, X, UI), дифф(У,Х, VI).
Вспомним, что U + V — прологовский терм, использующий синтаксис операторов (§ 6.1.12). Программе нужны аргументы для предиката дифф: первый должен представлять терм-полином, второй — атомарную константу (переменную дифференцирования), третий — прологовскую переменную, значением которой будет искомый результат. Если требуется получить все ответы, то диалог будет таким:
?— дифф(у.х^). > R = 0; > нет
?— дифф(х,х,К) — —>R = 1;
_—>R = 0> нет
Программа эта некорректна. Для ответа на второй вопрос найдено сперва соответствие с первым
11 В Прологе БД н программа часто являются синоиимамн. Прим, перев.
выражением из БД и с подстановкой
{Х = х, R = l),
что приводит к подответу R = 1. Не остановившись, нашли еще одно соответствие с заголовком второго выражения из БД, с подстановкой
(У = х, Х = х, R = 0}
и предикатом atomic(х), удовлетворение которого ищем. Осуществив достижение этого предиката, получаем очередной подответ R = 0. Несуразица устранится, если второе выражение из БД применять только лишь при различии его аргументов. Это условие реализовано в нижеследующей БД:
/* микродифф2 */
днфф(Х,Х,1).
днфф (У, X ,0):—У \= = X, atomic (У).
дифф(и +V, X,U1 + Vl):-дифф(U,X,Ul), дифф(У,Х, VI).
Тот же эффект, т. е. те же самые вопросы-ответы, можно получить с помощью предиката «I». Это реализовано в следующей ниже БД:
/* микро.диффЗ */
дифф(Х,Х,1):— !.
дифф(У,Х,0):—atomic (У),!.
дифф(и +V, X,U1 + VI):—дифф(и,Х,и1), дифф(У,Х, VI).
Здесь первое отсечение «!> участвует в логике программы, а второе лишь сокращает поиск.
Предикат «!» как подцель всегда достигается (подобно true). Однако обладает он существенным краевым эффектом:
• Когда предикат «!» достигнут, то прекращается поиск соответствий для терма /, сопоставленного заголовку правила, которое содержит предикат «!» в своем теле.
Например, цель / = дифф (х, х, R) соответствует заголовку первого выражения БД микро_диффЗ
дифф(Х,Х, 1):= !.
с подстановкой
ст = {Х = х, R = 1}.
Целью становится тело правила, т. е. предикат «!», который достигается и дает пустую последовательность подцелей. Ответ (единственный, ибо прекращен поиск соответствий для /)
R = L
Важно заметить, что возможна унификация t с заголовком второго правила БД. Значит, важен порядок следования выражений. Переставив два первых выражения, получаем неверную программу. Используя «!» для избежания бесполезных поисков, на практике пишут сперва выражения для частных случаев, затем — для все более общих. Отсечение «!» ставят за предикатами, достижение которых выявляет решение (либо его отсутствие). Достижение цели atomic(Y) во втором выражении микро_диффЗ означает, что Y — атом (в отличие от X, ибо дифф(Х, X, 1) не достигается) .
Пусть правило
^0 '•— ^1, 4> ■ • • , ^-Ь ! > ^i + b • • ■, ^к
(с предикатом «!») и последовательность подцелей
Q = Qi> Q2, • • •, Qn
таковы, что /о и Qi соответствуют друг другу при некой подстановке ст. Получаем новую последовательность подцелей
^ь ^2. •■•>^-ь Ц^+1tfc» Qi> ■••> Qn-
Подстановки подразумеваем, но ие пишем. Если первые i — 1 подцелей достигнуты, то приходим к последовательности
> ^i + b • • •> ^к, 9гQn-
Одноразовая достижимость предиката «I» проявится при попытке повторить достижение этого же отсечения для получения новых решений. Поиск соответствий прекратится для Qi и членов последовательности
А. Тейз и др.
Л, ^2, • • -, ti-i, какие бы подстановки не реализовывались на этой стадии. Если Qi — подцель из последовательности
^Ь ^2» • • • » Рр Qb Рj + 2» • • •»
то продолжением операций будет поиск нового соответствия для Р/. Возможно, что придем к Qi с новыми значениями переменных. Предикат «!» препятствует осуществлению возврата в предшествующей этому отсечению части правила, включая заголовок. Это есть, таким образом, разновидность точки невозврата: полученный для Qi подответ по предшествующей «!» части правила войдет в итоговый ответ. Для рассматриваемой подцели обнаружится либо единственный ответ, либо его отсутствие. Если имеет место возврат, то пропускается предикат, который был достигнут для заголовка правила, содержащего «I», и вновь исследуется предыдущая подцель. Вот небольшой пример (БД и последовательность вопросов-ответов), который может помочь понять этот механизм:
/* ! */.
pl (X,Y):—р2(Х),!, p3(Y).
pl(X,Y):-p4(Y).
р2(а).
p2(b).
рЗ(Ь)..
р4 (а).
р5(а).
р5(Ь).
?—- р1(а,а).
> нет
?- р5(Х), р1(Х,Х).
>Х = Ь;
> нет'
Предикат первого вопроса.
Q, = pl(a,a)
соответствует заголовку первого выражения БД, давая последовательность подцелей
р2 (а),!, рЗ (а).
Последовательно достижимы р2(а) и «!», но не будет соответствия для рЗ(а). Вернуться бы назад для поиска других соответствий, да мешает «1»: неудача цели р1(а, а), полная и окончательная.
В поисках ответа на второй вопрос исходим из последовательности
Q2 = p5(X), pl(X,X).
Поиск соответствия р5(Х) с р5(а) преобразует Q2 в
Q3 = pl(a,a).'
Цель Q3 (ср. с Qi выше) недостижима, что обрекает на неудачу цель pl(X, X) с X = а. Сделав возврат в последовательность Q2 для поиска нового соответствия к Р5(Х), найдем таковое — р5(Ь). Это дает цель
Q4 —pl(b,b).
Она достижима, ибо р2(Ь) и рЗ(Ь) есть в БД. Ответ X = Ь.
Инструментарий и пример
Введение
Этот раздел посвящен полезным на практике средствам программирования: вычислительным процедурам, спискам, вводу-выводу и т. д. Напомним, что проло- говские функции и операторы представляются как предикаты с операндами-термами. В § 6.3.11 приводится пример программы поиска в пространстве решений.
Вычислительные процедуры
В Прологе есть обычные вычислительные (или, иначе, числовые) операции. Например,
+ — * / mod log sin
У них имена функциональных термов, иногда являющихся операторами. Подчеркнем, что оператор в Прологе есть имя функции, которое можно помещать
между аргументами (если их два), либо до или после аргумента, если аргумент один (§ 6.3.10). Оператор обладает приоритетом. Например, термы Пролога
юлия * эмиль, — альфонс, юлия * эмиль—эрнест
эквивалентны соответственно термам
* (юлия, эмиль), — (альфонс), — (* (юлия,эмиль),эрнест).
Это не арифметика, как видно из следующего примера:-
/* опера */
+ (юлия, эмиль).
жозеф * анриетта + эмиль.
12 + 6.
х + 2*21.'
log(3).
sin (2).
Приведем последовательность вопросов-ответов, удовлетворяющую обычным правилам Пролога, но никакого отношения не имеющую к числовым выкладкам:
?— X + эмиль.
> X = юлия;
> X = жозеф * анриетта;■
> нет
?- 12 + 6.
> да
?- 12 + 5.
> нет
?- X + Y.
>Х = юлия, Y = эмиль;
> X = жозеф * анриетта, Y = эмиль;
>Х = 12, Y = 6;
> Х = х, Y = 2*21;
> нет ?- log(X).
—>х = _з
Числовые выкладки здесь, очевидно, отсутствуют. .
Так как вычислительные средства необходимы даже в символьном программировании, то мы также обзаведемся ими. Нетрудно видеть, что обойтись только унификацией практически нельзя — даже если это теоретически возможно. Нужны встроенные операторы. Вычисления в Прологе имеют следующие характерные черты:
существуют числовые атомы, отличающиеся от других атомов своим описанием (§ 6.1.2),
исполнимы в числовом смысле некоторые операторы и функции, такие, как
'— встроенные:
+ — * / log sin . . .
•—термы, образованные только лишь из исполнимых операторов и функций, числовые атомы и переменные со значениями, являющимися исполнимыми термами1*,
существует встроенный бинарный оператор is, ' который преобразует исполнимый терм в числовой атом — результат вычисления (наподобие нахождения числового значения арифметического выражения) и унифицирует результат с другим термом (обычно с переменной).
Запись
X is Т
где X — переменная и Т — исполнимый терм, равносильна инструкции’
Х:=Т
из языка Паскаль.
Это подтверждается следующей последовательностью вопросов-ответов:
? — X is 12 + 44.
> Х = 56
?— Х = 22, Y is 2*Х.
> Х = 22, Y = 44
11 Исполнймый терм — эквивалент арифметического выражения в языках наподобие Паскаля,
?— X is 2 + 3, Y is Х + X.
>Х = 5, Y = 10
?- Х = 2 + 3, Y is Х + Х.
> Х = 2 + 3, Y = 10
?— X is log (2).
> Х = 0.693147
?- X is log 10(2).
> X = 0.30103
Семантика этого встроенного оператора, рассматриваемого как бинарный оператор
tl is Т2
и как специфический предикат, определяется следующим образом:
Правый операнд—исполнимый терм Т2 — интерпретируется как арифметическое выражение. Выполняются определенные им числовые выкладки. Результат — числовой атом — унифицируется (если возможно) с левым операндом Т1.
Цель-предикат
Tl is Т2
достигается только в тех случаях, когда Т1 — либо переменная, принимающая значение результата вычислений (обычный случай), — либо число, равное результату вычислений.
Например, диалог с использованием оператора is может быть таким:
?- 3 is 2 + 1.
> Да
?- X is 4 + 3.■
?— X is 4 + Р
>! Ошибка в арифметическом выражении: не число
?- f(X) is 3 + 8.
> нет.
?- X = log 10 (2), Y is X.
>X = log 10(2), Y = 0.30103
?- X = Y + Iog 10(Z), Y=l, Z=6-4, R is X.
> X = 1 4-log 10(6-4), Y = 1, Z = 6 —4, R = 1.30103
Сообщение об ошибке здесь обусловлено либо неисполнимостью терма Т2 в данный момент, либо обработкой TlisT2 как цели.
В вопросе после сообщения об ошибке Т1 нельзя унифицировать с числовым результатом. Предикат в таком случае считается не имеющим соответствия. Он не достигается в данном вопросе и, после возврата в текущей последовательности подцелей, возможно, будет отыскиваться другое соответствие.
Многие из обычных числовых функций и операторов исполнимы в определенном выше смысле. Детали надо уточнять в руководстве по Прологу конкретной системы.
Пролог может шокировать программистов, привыкших определять новые операции через объявления процедур: нет средств сделать исполнимыми новые функции (операторы). Пример*)
/* факториал */ fact(0,1):—!.
fact(N, R):— integer (N), N > 0, N1 is N—1, fact(Nl,RI), R is N*R1.
Любая унификация терма fact(X, Y) требует таковой для X — с целым неотрицательным числом и для Y — с переменной (факториалом от X). БД вычисляет факториал, но fact не «исполнимый». Это предикатное имя не может появляться в арифметических выражениях. В частности, для умножения 121 на 33 надо писать
fact(i2,A), R is 33* А.
1* Разумеется, смысл символа 1 ниже рамячеж: ■ БД отсечение, а вне — факториал. — Прим, перев.
Списки
Списки — это последовательности символьных элементов, которые сами могут быть списками ,). Эти структуры данных очень полезны и популярны в символьном программировании и в ИИ (обратите внимание на неизменный успех Лиспа). В Прологе, как и в Лиспе, для записи списков используют символьный атом [ ] пустого списка и пары с точками — бинарные функциональные термы (§ 6.1.2.). Точка — имя функции. Например, списками являются:
[ ] .(а,Х) . (а,. (Ь, [ ]))'
Рекурсивное определение:■
атом [ ] является списком и представляет пустой список (нуль в Лиспе),
если L—список и Т — произвольный терм, то •(Т, L) — список с головой Т и хвостом L (саг и cdr в Лиспе)2*.
Например, список, состоящий из элементов а, Ь и с, есть терм вида,
.(а,.(Ь,.(с,[ ])))
Однако для списков существует несколько лучший синтаксис:
символический атом [ ] представляет пустой список,
непустой список — это последовательность термов, разделенных запятыми и помещенных в квадратные скобки, причем термы любые, не обязательно атомы или списки.
Например,
[а,Ь,с] [эта,маленькая (шапка), [ для,кюреЦ
Непустой список допускает две эквивалентные записи — «с точками» и «в квадратных скобках». На
*> См. также § 5.1.4. — Прим, перев.
*' Можно Напомнить синонимы: Т—заголовок, L—тело. — Прим, перев.
[а][а][а,Ь,с]
[а]
[а]
Рнс. 6.3. Два списка.
пример,_
[а1-.(а,[])"
[a,b,c] = .(a,.(b,.(c, [ ])))
Представление деревьями — одно и то же для обоих обозначений (см. рис. 6.3). Знатоки Лиспа здесь должны почувствовать себя в родной стихии. Теоретически это, быть может, «синтаксическое лакомство», но практически это весьма важно; таково следующее «лакомство»: обозначение
[Т[ QJ
представляет собой список с заголовком Т и хвостом Q,
[A.B.CIQ1
представляет собой список с заголовком А, В, С и хвостом Q (§ 5.1.4). Эти обозначения, использованные для удовлетворения целей, годны для анализа списков:
?- [T|Q] = [a[.
>Т = а, Q= [ ]
?— [Al ,А2,—, А41 Q] = [прекрасная,маркиза, ваши, прекрасные, глаза ].
> А1 = прекрасная, А2 = маркиза, А4 = прекрасные, Q = [глаза[ °
11 Вспомним, что анонимные переменные (§ 6.1.6) не появляются в ответах. — Прим, персе.
Операции над списками
Ниже приводятся прологовские выражения (факты и правила) для операций над списками. В них аргументы для входных данных и результатов неразличимы. Такой теоретический подход иногда дает осечку на практике (см. вопросы-ответы).
Предикат elem достигается на парах (элемент, список):
elem (X, [X [ _])-
elem (X, [ _ | Y):— elem (X, Y).
Использование этого предиката демонстрируется следующим диалогом:
?— elem(X, [а,Ь,с]).
>Х = а;■
> Х = Ь;
> Х = с;
> нет
При «нормальном» (т. е. отвечающем намерениям программиста) использовании предиката elem второй аргумент является списком или унифицируется с таковым. Вот пример «ненормального» использования этого предиката:
?— elem (а, X).
— —>Х=[а[_61;'
> X — [_5,а |_10];
> X = [_5,_9,а |_14];
Здесь предикат elem (а, X) интерпретируется следующим образом: а есть элемент списка X, если а является /-м элементом X при некотором /. Пролог строит последовательно списки, состоящие из первого элемента (/=1), второго (/ = 2) и т. д., а остальные элементы и хвост будут при этом неунифицированными переменными. Иногда это полезно, но чревато зацикливанием: например, в последовательности
elem(a,X),Q
с недостижимой подцелью Q возврат бесконечно ищет новые решения для elem (а, X).
Предикат concat достигается, если его третий аргумент есть конкатенация двух первых:
concat([ ] ,Z,Z).
concat ([X|Y],Z,[X|R]):— concat (Y, Z, R).
■ ?— concat([a,b], [c,d],L).
> L = [a.b.c.d];
■-> нет
?— concat(X,Y, [a,b,c,d]).
>X=[ ], Y=[a,b,c,d];
> X [a], Y= [b,c,d];
>X= [a,b], Y= [c,d ;
>X—[a,b,c], Y=[d ;
> X= [a.b.c.d], Y = 1;
> нет
Функционирование concat «двусмысленно»: либо получаем единственный результат—конкатенацию двух списков, либо строится исчерпывающее перечисление таких пар списков, что конкатенация списков, входящих в пару, совпадает с третьим аргументом этого предиката. (Эта симметрия исчезнет, если применить отсечение.) Между тем не исключено зацикливание, если первый и последний аргументы — переменные. Пример приводится далее.
Предикат obr достигается, если аргументы инверсны (взаимно перевернуты):
obr ([],[]).
obr ([ X | Y], R):— obr (Y,Z), concat(Z,[XJ,R).
Это дает
?— obr ([a,b,c,d],L). > L = [d,c,b,a];
?— obr (L, [a,b,c,d]),
> L = [d,c,b,a];
[выполнение прервано]
Переворачивание идет в обоих направлениях, но симметрии нет — во втором случае происходит зацикливание.
. Предикат mesto достигается, если третий аргумент представляет собой список, содержащий все элементы
второго аргумента, расположенные в таком же порядке, в каком они располагаются во втором аргументе, а первый аргумент может находиться в произвольном месте: '
mesto (E,L, [Е| LJ).
mesto(E,[H |L], [Н| Y]):— mesto (Е, L, Y).
Это дает
?— mesto(x, [a,b,c],L).
> L — [x,a,b,c];
> L = [a,x,b,cj;
'>L = [a,b,x,cj;
> L = [a,b,c,x]; > нет
? — mesto(x,L, [a,x,b]).
— —>L=[a,bJ; > нет
?— mesto(X, [a,b], [a,b,x]). > X = x;
> нет
Приведенные примеры проливают некоторый свет на кое-какие стороны программирования на Прологе. В этом языке все аргументы равноправны. В то же время для программиста обычно одни аргументы выступают в роли входных данных (причем эти аргументы унифицированы с термами-константами в момент поиска соответствия), в то время как другие аргументы представляют результаты и остаются переменными (не конкретизированными до нахождения соответствия). Пролог не обеспечивает автоматического контроля такого рода намерений программиста.
Перестановки и сортировки
Приведем примеры прологовских программ перестановок и сортировок списков. Это иллюстрация логического программирования на стандартных задачах без претензии на высокую эффективность. Намерения программиста предполагаются известными: первые аргументы — вход, последний — результат.
Предикат perest дает все перестановки первого аргумента:
perest([ ],[]).
perest ([ Н | L ], Z):— perest (L, Y), mesto (H, Y, Z).
Индукцией по длине первого аргумента можно показать, что это дает нужный результат, если каждый поиск соответствия для предиката mesto помещает терм И на новое место в списке Y для получения Z. Последнее проверено выше.
?— perest([a,b,c] ,L).
> L = [a,b,c];
> L = [b,a,c];
> L= [b.c.a];
> L = [a,c,b];
> L — [c,a,b];
> L = [c,b,aj;
> нет
Для сортировки списка термов нужно задать отношение порядка. В Прологе их два. Первое — для термов-чисел. Оно дает 4 бинарных оператора с обычной числовой интерпретацией:
Аргументы — исполнимые термы (§ 6.3.2).
Второе отношение — для символьных термов («следует за», «предшествует», «следует за или совпадает», «предшествует или совпадает»):
@> @< @>= @ = <
со следующей интерпретацией этих бинарных операторов:
переменные предшествуют числам и упорядочены системой,
числа упорядочены естественным образом и предшествующ атомам,
нечисловые атомы упорядочены по кодам ASCII ° (по крайней мере в Си-Прологе) и предшествуют функциям,
*) С добавлением кириллицы соответствует коду КОИ-7. — Прим, перев.
функции упорядочены следующим образом:
— сперва по числу аргументов: п-местная предшествует (п + 1)-местной,
— затем в алфавитном порядке имен функций, — наконец, в алфавитном порядке аргументов (текстуально упорядоченных).
Встроенный бинарный предикат sort(X, Y) унифицирует второй аргумент с сортировкой первого по @- возрастанию и убирает дубли:
?— sort([2,2,3,l],L).
. > L= [1,2,3]
?— sort([[a], [a,b], [a,b,c], f(x), f(a,b), f(a,X), X], L).
> X = 31
L = [_31,f(x), [a], [a.b], [a,b,c], f(a,_31), f(a,b)].
Пролог обладает встроенной функцией сортировки. Примеры, приводимые ниже в учебных целях, реализуют сортировки вставкой, слиянием и быструю сортировку. Отношение порядка задается предикатом pered, например:
pered(A,B):= А @=< В.
(Ему дали имя, чтобы сортировки не зависели от выбора отношения порядка.)
Сортировка вставкой сортирует хвост списка н вставляет туда голову на подходящее место (пустой список считается отсортированным):
/«сортировка вставкой*/
sor — vst([T |Q], L):—• sor_vst(Q,Z),
vstav (T.Z.L).
sor_vst([ 1, [ 1>«
/* vstav (A, L, R) вставляет элемент А в упорядоченный список L, выдавая упорядоченный список R */
vstav(A,[T |Q], [A,T|Q]):-pered(A,T),l. vstav(A,[T|Q], [T|L]):— vstav(A,Q,L).
vstav (A, [ ], [A]).
Сортировка слиянием делит список на два, сортирует оба полученных списка и осуществляет слияние
их в упорядоченный список (если список содержит менее чем два элемента, то он считается отсортированным):
/*сортировка слиянием */
eor_sli([ ],[ ]).■
sor_sli ([А], [А]).
sor_sli ([А,В| QI, R):— delim(Q,Ql,Q2),sor_sli([A |Q1] ,R1), sor_sli ([B| Q2],R2],sli (RI, R2,R).
delim([ ],[],[ ]).
delim ([A], [A], [ ]).
delim([A,B|Q],[A|Ql],[B|Q2]):— delim(Q,Ql,Q2).
/* sli (LI, L2, R) помещает в голову списка R наибольшую из голов списков L1 и L2 */ sli([ ],Y,Y).
sli(X,[],X).
sli ([А| XI, [В 1Y1, [A |Z1) :— pered (А, В),!, sli (X, [ В | Y], Z).
sli ([A |X], [B| Y] , [B| Z):— sli ([A| X], Y.Z).
Быстрая сортировка делит список на два так, что все элементы одного предшествуют всем элементам другого. Затем каждый подсписок сортируется и к полученным новым спискам применяется операция конкатенации:
/* быстрая сортировка */
/* sperva_men(E,L,Ll,L2) помещает в L1 все элементы из L, которые предшествуют Е, а остальные помещает в L2. Голова для L выбирается как значение для Е */ sperva_men (_, [ ], [ ], [ ]).
sperva_men (А, [В | XJ, [В | LI ], L2):—
pered(В,А),!, sperva_men(A,X,Ll,L2).
sperva_men(A, [В[ X],L1,[B|L2J):—
sperva_iften (А, X, L1, L2).
sor_bistr ([ ], [ ]Х'
sor_bistr ([А | X], R) :—
sperva_men(A,X,Ll ,L2),sor_bistr (LI ,М1), sor_bistr (L2, М2), concat (Ml, [A| М2 ], R).
concat([ ] ,Z,Z).
concat ([X | Y], Z, IX | R]):— concat(Y, Z, R).
Представление списка в виде разности списков
Эффективные программы помогает получать следующий прием программирования представления списков (этот прием — сверх штатных средств Пролога):
• разность Li — L2 списков £i и L2 есть £3, если £1 конкатенация £3 с £2, иначе неопределенность.
Например,
[a,b,c,d] — [c,d] = [а,Ь].
Любой терм вида £[ — L2 интерпретируется как список. Всякий список представляется разностью: для списка [а, Ь] возможны, в частности, представления [а, Ь, с] — [с] и [a, b, с, d] — [с, d]. Существует наиболее общее представление, где вычитаемый список— неконкретизироваиная переменная: [а, Ь] = = [а, b | L] — L. Такие термы можно записывать в выражениях Пролога, ибо минус есть оператор языка.
Назовем [a, b|L] — L d-списком, представляющим [а,Ь]. Для пустого списка [ ] d-список имеет вид L — L. Вообще, если L — R представляет список /, то конкретизация R к [ ] конкретизирует L к /. Конкатенация списков становится прямой и эффективной:
dconcat(Ll — R1.L2 — R2,L1 — R2):—R1 = L2.
или короче:'
dconcat(Ll — L2,L2 — R2.L1 - R2).
Ниже приведена эффективная версия предиката obr (§ 6.3.4), obr2:
obr2(L,R):—dobr(L,R — [ ])..
dobr ([ ], L — L).
dobr ([T | Q], L - R):— dobr (Q,L - [T | RD?- dobr([a,b],L — [ ]).
> L = [b,a]
?— obr2 (L, [a,b]).
>L=[b,a]
?- obr2(L,[b,a]).
>L=[a,b]
Второй аргумент предиката dobr— d-список:
образ Qобраз QТ RТ R■| L-R■| L-Rобраз [T/Q]
образ Q
образ Q
Т R
Т R
■| L-R
■| L-R
Эффективность возросла заметно. Для списков длины п сложность вычисления obr есть О(л2), a dobr — О (л). Для первого вопроса, приведенного выше, вычисления таковы:
? — dobr ([а,Ь],L — [ ]). dobr([b],L- [а]) dobr J, L — [b,a]) dobr ([ ], Ib,а] — [b,aj) > L= [b,a]
Использование неконкретизированных переменных в структурах данных — это общий метод Пролога. Его применяют не только для списков (соответствующий пример см. в § 6.4.4).
Ввод-вывод
В Прологе предикаты ввода-вывода немногочисленны и весьма рудиментарны. Есть пересылки терма за термом и символа за символом. Можно вставлять пробелы и переходы к новой строке. При посимвольных пересылках символ пересылается в виде целого числа, а именно кода ASCII.
Предусмотрен один стандартный канал ввода-вывода (терминал в интерактивном режиме). Можно явно указать другие каналы, обратившись к руководству пользователя для конкретной версии Пролога.
Особенность предикатов ввода-вывода как подцелей состоит в том, что они игнорируются при возвратах. Пусть Q, Е, Q' — последовательность подцелей, где Е— ввод (вывод). Достигнув Е, перейдем к Q'.
При неудаче осуществляется возврат на Q с пропуском £. Это вполне естественно, так как бесполезно записывать одно и то же, а повторное чтение нецелесообразно.
Правильное использование этих предикатов перехода не всегда так просто, как может показаться, усвоить последовательность выполнения прологовской программы подчас нелегко. Возвраты могут привести к преждевременной печати ошибочных результатов.
Ниже приводятся некоторые самые ходовые предикаты ввода-вывода. Каналы не указаны: они предполагаются стандартными.
read(X) читает терм, за которым стоит точка из входного канала и унифицирует его с X. Если X переменная, то ей присваивается значение сообразно прочитанному терму. Цель read(X) достигается успехом унификации.
?- read(X).
I :f (а).
— —>X = f(a)
?- read(f(X)).
I:f(p).
-->X=p
?- read(f(X)).
IHpL
> нет
Система запросила ввод посредством символа [:. В последнем вопросе ввод ие достигнут. (Напомним, что при достижении ввода как цели в ответе появляются значения переменных вопроса.)
get(X) читает «печатаемый» символ и унифицирует его код ASCII (как целое число) с аргументом X. Достигается успехом унификации. В Си-Прологе символ является печатаемым, если его код ASCII больше 31. Непечатаемый символ игнорируется и берется следующий за ним.
?- get(X).'
I :а..
.>Х = »7.
?— get().
Id
> Х=93
get О (X) читает любой (печатаемый или нет) символ.
write (X) печатает значение своего аргумента. Всегда достижим.
?— X = ’Мадемуазель, хотите карамель?’ write (X).
Мадемуазель, хотите карамель?
> X = Мадемуазель, хотите карамель?
put(X) печатает символ, код ASCII которого совпадает с X. Если значение X не число, то сообщается об ошибке. Если значение X число, но не код ASCII, то поведение Си-Пролога непредсказуемо.
? put (97). а > да■
nl устанавливает новую строку. Без аргументов. Достигается всегда.
tab(N) печатает N пробелов. Достигается, если значение N число, иначе появляется сообщение об ошибке, г
Примеры ввода-вывода
Проследим эффекты возврата на правиле печати всех перестановок списка:
vse_perestki (L):— perestav (L,R), write (R), nl, fail.
Это правило напечатает все перестановки списка L. Предикат perestav (§ 6.3.5) порождает новую перестановку для каждого поиска соответствия. Ее печатает write (R), nl осуществляет переход на новую строку, a fail никогда не достигается. В последовательности подцелей тела правила есть возврат. Он игнорирует вводы-выводы. Новое соответствие ищется
для perestav(L, R), что создает новую перестановку. Для цели vse_perestki (_) имеет место) неудача, но все перестановки порождены и напечатаны.
?— vse_perestki(’прекрасная маркиза’,’ваши прекрасные глаза,’сулят мне смерть от любви’).
[прекрасная маркиза, ваши прекрасные глаза, сулят мне смерть от любви]
[ваши прекрасные глаза, прекрасная маркиза, сулят мне смерть от любви] [ваши прекрасные глаза сулят мне смерть
■ от любви, прекрасная маркиза]
[прекрасная маркиза, сулят мне смерть от любви ваши прекрасные глаза]
[сулят мне смерть от любви, прекрасная
маркиза, ваши прекрасные глаза]
[сулят мне смерть от любви ваши прекрасные глаза, прекрасная маркиза]
> нет
Когда Пролог применяется на практике с текстовыми данными, фразы обычно представляются списками — как это продемонстрировано выше. Для каналов ввода-вывода предпочтителен обычный формат.
Пример вывода:
печ_фразы([ ] :—put(46). /* заключительная точка*/
печ_фразы ([ Т | Q]):— write (Т), tab (1), печ_ фразы (Q).
Зададим предикат считывания первого непробельного символа, игнорирующего пробелы между словами; 32 — это код пробела. Правило
не_пробел (Саг):— get (Саг), Саг \= = 32.
не годится, ибо, когда не достигается подцель
Саг\= = 32,
то возврат пропустит get (Саг). Воспользуемся встроенным предикатом repeat (§ 6.2.4), достигающимся всегда безотказно и неограниченное число
раз — как пружина:
не_ пробел (Саг):— repeat, get (Car), Car \= = 32.
Анализ и построение термов
В Прологе функциональный терм или предикат можно рассматривать как структуру данных, подобную записи (по-английски record) в языке Паскаль. Ниже описываются встроенные предикаты Пролога, позволяющие осуществлять извлечение компонент из терма.
Бинарный оператор =.. преобразует функциональный терм в список для доступа к имени функции и каждому аргументу:
F= . L
достигается, если
— L есть список из n + 1 элементов
L = [Е0,Е1,Е2Еп],
— F есть n-местный функциональный терм
F = f(Al,A2,...,An),
— f есть имя функции, соответствующее элементу ЕО,
— каждый аргумент Ai соответствует эле- ■ менту Ei.
Этот бинарный предикат обычно записывается в следующей форме:
f (а,Ь,с) = .. L.
т. е. слева расположен терм, справа — переменная. Имеем:
?— f (a,b,c)= .. L.
> L= [f,a,b,c]
?— f(a,b,c) = .. [F|Args].
>F = f, Args = [a,b,c]
?— (a*b + c) = .. [Op|Args].
> Op = + , Args = [a* b,c]
Два следующих предиката анализируют термы;
** functor (Т, F, N) достигается при соответствии Т функциональному терму, F — имени этого терма и N — числу аргументов в терме.
arg(N, Т, А) достигается при соответствии Т функциональному терму, N — целому числу п и А — га-му аргументу в этом терме.
? — functor (имеет (жан, зонтик), F, N).
> F = имеет, N = 2
? — f unctor(f (а, b), f, 2).
> да
?— arg (2, имеет (жан, зонтик), А).
> А = зонтик
Следующим предикатом расщепляется имя атома:
name(N, L) достигается соответствием N атому, причем L является списком кодов ASCII символов имени.
?—■ паше(Ыа bla,L).
> L = [98,108,97,98,108,97]
?— namefbac, [А | _]),name(X, [А]).
> A = 98, X = b
Для иллюстрации присоединим к БД семья i(§ 6.1.7) правило
все (А, F);—■ functor (Т, F, 2), Т, write (А), tab (1), write (F) arg (2, T, A2), write (’, ’), write (A2), arg (1 ,T, Al) write (’ — ’), write (Al), nl,fail.
Получим таким образом следующую последовательность вопросов-ответов.
?— все (твой,отец).
1 твой отец,юлия — проспер твой отец.альбертина— проспер твой отец, проспер — альфонс твой отец,каролина — андре - > нет
?— все (твоя,бабка).'
твоя бабка, юлия — анна твоя бабка,альбертина — анна твоя бабка, юлия—мари
твоя бабка,альбертина — мари > нет
Ответы более удобочитаемы, чем термы Пролога. Полнота поиска обеспечивается предикатом fail. При нормальном использовании предиката все (A, F) аргумент F является именем предиката из БД, а аргумент А—притяжательным местоимением подходящего рода. Вникнем в детали. Цель —
все (твой, отец).
Тело правила выполняется с подстановкой
{А —твой, Р = отец}.
Поиск соответствия для functor (Т, F, 2) сопоставляет аргументу Т значение, совпадающее с бинарным термом отец:
Т = отец(_, _).
Это очередная подцель, соответствующая первому факту из БД:
отец (проспер, юлня).
Получаем
Т = отец (проспер, юлия).
Последовательность подцелей тела правила анализирует терм и печатает его элементы в виде фразы. Последняя подцель fail обеспечивает исчерпывающий поиск соответствий;
Объявление оператора
Прологовские операторы (как мы видели в § 6.1.12) суть имена функций .и/или предикатов (унарных и/или бинарных), записанные до, после или между аргументами. Им свойственны приоритет и ассоциативность:
? — a + b*c = X + Y.
>Х = а, Y = b*c
?— a-f-b + c = X + Y.
.>X = a + b, Y=c
?- -a + b + c = X + Y.
>X = —a+b, Y = c■
Атрибутика оператора:
" предшествование, выраженное натуральным числом: чем больше предшествование, тем меньше приоритет,
позиция — инфиксная, префиксная или постфиксная,
ассоциативность.
Предшествование выражают числом, а позицию и ассоциативность — одним из следующих способов:
■ • префиксность оператора (точнее, префиксная запись оператора): fx или fy,
постфиксность оператора: xf или yf,
инфиксность оператора: xfx, xfy, yfx или yfy.
Здесь f — оператор, х и у — операнды:
операнд у означает, что «предшествование этого операнда не больше, чем предшествование оператора»,
операнд х означает, что «предшествование этого операнда строго меньше, чем предшествование оператора».
«Предшествование терма» полагается равным предшествованию его оператора, если таковой есть, в противном случае предшествование терма равно нулю. В частности, предшествование у термов а + b * с и а«Ь-|-с совпадает с предшествованием оператора +, т. е. равно 500.
Примеры типов встроенных операторов:
оператор * имеет тип yfx и предшествование 400, следовательно, а*Ь*с имеет вид
.* (400)
* (400)с (0)
[а (о)ь(о)
оператор ~ имеет тип xfy и предшествование
200, следовательно, abc имеет вид
* (200)
а (0)Л (200)
Ь(0)с (0)
оператор = имеет тип xfx, следовательно, а = = b = с некорректно,
оператор not имеет тип fy, следовательно, not not t корректно,
оператор — (унарный) имеет тип fx, следовательно — — t некорректно.
Пролог может объявлять операторы префиксными, инфиксными или постфиксными с помощью встроенного предиката. Например, цель
ор (500, yfx .союз)
всегда достижима с перманентным эффектом:
союз становится бинарным оператором с предшествованием 500 и типом yfx.
Рассмотрим пример.
?— X = союз (а, b), write (X),nl, op (500, yfx, союз), write (X).
союз (а, Ь) а союз Ь-
> Х = а союз b
?— Y = fact(a),write(Y),nl,op(700,xf,fact), write (Y).
fact(а) a fact
> Y = a fact-
Имена функций союз и fact стали операторами: первый из них — бинарным, второй — унарным постфиксным. Последний раз напоминаем, что речь идет лишь о синтаксисе.
Поиск в пространстве решений
Группа, в которой поровну людоедов и миссионеров, переезжает реку на пароме. Требуется в каждый момент времени избежать преобладания людоедов над миссионерами на берегах и на пароме.
Пусть 2N— численность группы (N миссионеров и N людоедов), Р— число мест на пароме. При Р^ ^ 2N решение тривиально. При Р <_ 2N нужна подходящая стратегия. Пишем программу на Прологе.
Назовем ситуацией положение до или после каждой (очередной) переправы. Игра состоит в переходе от начальной ситуации (все на левом берегу) к заключительной (все на правом), осуществляемом последовательностью рейсов.
Некоторые ситуации и рейсы неприемлемы. Пусть в одном месте людоедов С и Л! миссионеров. Должны выполняться условия: на каждом берегу
(М>С) либо (М = 0),
а на пароме
^М>С) или (М = О)) и (Л14-О0).
Берег может быть пустым, но паромом кто-то должен управлять.
Каждую ситуацию будем описывать двумя тройками чисел: числом паромов, числом людоедов и числом миссионеров на левом и правом берегах соответственно:.
[[Пл,Лл,Мл], [Пп,Лп,Мп]].
Налицо избыточность: одна тройка вычисляется по другой с использованием условий
Пл+Пп=1, Лл + Лц = С, Мл + Мп = М, Пл, —, Ил^О..
Предпочтем избыточность вычислениям. Ищем переход от ситуации
[[1,N,N],[0,0,0]] к ситуации
[10,0,01, [1 ,N,N11-
Задача сводится к поиску пути, не имеющему циклов в ориентированном графе, узлами которого являются допустимые ситуации, а дугами — допустимые рейсы. Подходящий путь ищем следующим образом. Запоминаем встретившиеся ситуации, составляя список состояний-троек левого берега Сл. Список выполненных рейсов Рс послужит для печати результата.
Хотим получить диалог наподобие следующего:
?—ответ(3,2).
1 людоед и 1 миссионер переправляются на- ■ право.
миссионер переправляется налево.
людоеда переправляются направо.
людоед переправляется налево.
миссионера переправляются направо.
людоед и 1 миссионер переправляются налево.
‘ 2 миссионера переправляются направо.
людоед переправляется налево.
людоеда переправляются направо.
1 миссионер переправляется налево.
1 людоед и 1 миссионер переправляются направо.
> да
Предикат ответ(N, Р) определяется правилом
ответ (N, Р):— поиск (P,[[1,N,N],[0,0,0]], [[0,0,0], [1,N,N]], [[0,0,0]], Рс), показ(Рс).
Здесь предикат поиск ищет путь, унифицируя список выполненных рейсов с переменной Рс (пятый аргумент). Предикат показ печатает результат в удобочитаемом виде. Первые четыре аргумента поиска — вход: вместимость парома, начальная и заключительная ситуации, список состояний левого берега.
Предикат поиск определен рекурсивно:
поиск(Р,До, После,Сл_н, [Рейс]):— рейс (Р, До, После, Сл_ н, Сл_к, Рейс), поиск (Р, До, После, Сл_н, [Рейс] Рс]):— рейс(Р, До, Сит, Сл_ и, Сл, Рейс), поиск (Р, Сит, После, Сл,Рс).
Предикат рейс *> определяется предикатами: езжайте (вычисляет возможные рейсы), нов и ок (проверяют— приводит ли вычисленный рейс в новую допустимую ситуацию). Ниже—Л1 и П1—тройки берегов до рейса, а Л2 и П2— после. Выше:
Р — вместимость парома,
До — ситуация до очередного рейса, После — последующая ситуация, Сл_н —список встречавшихся к данному моменту состояний,
Сл_к —то же с прибавленным новым состоянием (левого берега),
Рейс — выполненный рейс.
рейс (Р, [ Л1, П1 ], [ Л2, П2], Сл, [ П2 [ Сл], Рейс):— езжайте (Р,С,М, [ Л1, П1 ], [ Л2, П2], Рейс), нов (П 2, Сл), ок (Л2), ок (П2).
Предикат езжайте ищет (допустимые или нет) рейсы и запоминает стратегию. Правило перехода направо:
езжайте(Р,С,М, [ [1 ,С л!,М л! ], [О,Сnl ,М п1] ], [ [О, С л2, М л2], [ 1, С п2, М п2] ], [С,М,’направо.’]):—
min(М л!,Р,РМ),сокр(РМ,M),Q is Р —М, min(Q,C л!, РС),сокр(РС,С),ок_пар(С,М).
С л2 is С л! — С,М л2 is М л! — М, С п2 is С п! + С, Мп2 is М п! + М. .
Для достижения максимума перевозимых миссионеров М сперва вычисляем РМ (максимум транспортабельных миссионеров) как функцию от Р и от Мл1 (число миссионеров на левом берегу). Предикат сокр присваивает М целые значения, последовательно убывающие от РМ до 0. Другими словами, если нельзя
•> Не следует путать с переменной Рейс. — Прим, перед.
переправить РМ миссионеров, то выясняем, можно ли переправить РМ — 1 миссионеров, и т. д.
Значение Q — число мест для людоедов. Ищется максимум С. Предикат ок_пар(С, М) проверяет допустимость рейса. Приведенные выше две последние строки правила вычисляют новую ситуацию.
Правило перехода налево:
езжайте (Р,С,М, [ [0,С л1,М л1], [1 ,Сп1,М п1] ], [ П ,С л2,М л2], [0,Сп2,М п2] ], [С, М,’налево.’):—
min (С nl, Р,РС),прир(РС,С),0 is Р —■ С, min(Q,M п1,РМ),прир(РМ,М), ок_пар (С,М), Сп2 is Сп1— С,Мп2 is Мп1— М, Сл2 is Сл1 + С,Мл2 is Мл1 + М.
Налево (т. е. во встречном направлении, ведь переправа слева направо) переправляется минимальное число пассажиров. Продолжение БД:
ок ([_,_,0]):— I ок([_,С,М):-С=<М. ок_пар (С, 0):— !, С > 0. ок_пар(С,М):—С = <М.•
нов (_,[]):—!..
hob(A,[A|L]:—!, fail нов (А, [_ |L]):— нов (A,L).
coKp(N,N).
сокр(М,К):—М is N—1, M>=0, сокр(М,К). npHp(N.K):—coKp(N,R),K is N — R.
min (A, B, A):— В > = A,!.
min(A,B,B).
показ ([ ]).
показ([[C,M,L] |T]):— печ(C,M),write(L),nl, показ (T).
печ(0,1):—!,write(’l миссионер переправляется’), печ(1,0):—!,write(’l людоед переправляется’). ne4(0,N):— !,write(N),write Смиссионера переправляются’).
печ(М,0):—!,write(N),write (’людоеда переправляются’).
печ (1,1):—1, write (’1 людоед и 1 миссионер
переправляются’).
ne4(l,N):—!,write (I людоед n’),write(N), write (’миссионера переправляются’).
печ(М,1):—!,write(N),write (’людоеда и 1 миссионер переправляются’).
печ(С,М):— write(C),write('aroAoeflaH’), write (М), write (’миссионера переправляются’).
все_от (N, Р):— ответ (N, Р), nl, write (’Другое решение:’),nl,fail.
Последнее правило вызовет все ответы:
? — все_от(2,2).
людоед и 1 миссионер переправляются направо.
миссионер переправляется налево.
миссионера переправляются направо.
миссионер переправляется налево.
1 людоед и 1 миссионер переправляются направо.
Другое решение:
людоед и 1 миссионер переправляются направо.
миссионер переправляется налево.
миссионера переправляются направо.
людоед переправляется налево.
людоеда переправляются направо.
Другое решение:
людоеда переправляются направо.
людоед переправляется налево.
миссионера переправляются направо.
мйссионер переправляется налево.
1 людоед и 1 миссионер переправляются направо.
Другое решение:
людоеда переправляются направо.
людоед переправляется налево.
миссионера переправляются направо.
людоед переправляется налево
людоеда переправляются направо.
Другое решение:
> нет
Пролог и КС-грамматики
Введение
В гл. 5 КС-грамматики связывались с логикой, а продукции — с хорновскими дизъюнктами логики предикатов (§ 5.1.4). Сейчас мы вновь вернемся к этой тематике и рассмотрим связь Пролога с КС-грамматиками. Причем встанем на точку зрения пользователя, желающего программировать алгоритмы анализа КС-языков, а возможно даже — алгоритмы обращения с такими языками.
Распознавание КС-фраз
Из приводимых ниже продукций некоторой КС- грамматики
Фразам- Подлежащее, Сказуемое, Определение Подлежащее -»- Местоимение, Существительное Определение -»- Прилагательное
Местоимение ->- «эта»
Существительное ->- «дама» | «машина» | «зебра» Прилагательное ->- «голубой» | «прекрасной» | «изящной»
Сказуемое ->- «становится» | «является»
первая гласит: «фраза есть конкатенация подлежащего, сказуемого и определения», а последняя — что сказуемые суть «становится» и «является» *>. Вторая продукция представляет собой хорновский дизъюнкт (§ 5.1.4): (Местоимение(М)Л Существительное (С) Л По = М||С) 2D Подлежащее (По). Формула По = М||С, где символ || означает конкатенацию, задает текстуальный порядок (§ 5.1.4). Используя хор- новские дизъюнкты, легко перевести КС-продукции в правила Пролога:
/* кс */
фраза(Ф):— подл(По),сказ(Ск),опр(О), кк (По, Ск, Z), кк (Z, О, Ф).
11 Обозначение Сказуемое ->- «становится» | «является» — классическое сокращение двух правил: Сказуемое -♦- «становится» и Сказуемое -> «является».
подл (По):—мест(М), сущ (С), кк(М,С,По). опр (О):— прил (П).
мест ([эта]).
сущ ([дама])..
сущ ([машина]).
сущ ([зебра]).
прил ([голубой]).
прил ([прекрасной]). ■
прил ([изящной]).
сказ ([ становится ]).
сказ ([является]).
kk([],Z,Z).
kk([X|Y],Z,[X|R]):-kk(Y,Z,R).
Применяя эту БД, имеем:
?—
фраза ([эта, дама, является,голубой]).
> да
?—
фраза ([ эта, дама, является, белой ]). > нет
?—
фраза (L).
> L= [эта,дама,становится,голубой];
> L= [эта,дама,становится, прекрасной];
> L= [эта,дама,становится,изящной];
> L= [эта,дама,является,голубой];
> L= [эта,дама,является,прекрасной];
> L = [эта,дама,является,изящной];
> L = [эта,машина,становится, голубой];
> L= [эта,машина,становится, прекрасной];
> L= [эта,машина,становится, изящной];
> L= [эта,машина,является,голубой];
> L = [эта,машина,является, прекрасной];
> L = [эта,Машина,является .изящной];
> L = [эта,зебра,становится,голубой];
> L = [эта,зебра,становится, прекрасной];
> L= [эта,зебра,становится,изящной];
> L = [эта,зебра,является,голубой];
> L= [эта, зебра,является, прекрасной]; > L = [эта,зебра,является,изящной];
> нет
Эта программа написана так, что ее можно использовать и как генератор, и как акцептор описанного нами языка. Но так бывает не всегда. Чаще программы можно эффективно использовать только в качестве акцепторов.
На практике особенно желательно уметь строить анализаторы '^ . Таковых немало, различной общности и эффективности. Наш акцептор неэффективен до чрезвычайности, зато он быстро пишется и легко понимается. Сохраняя эти достоинства, улучшим его, вводя бинарные предикаты вида
• подл(Ь, X) достигается, если L — список анализируемых слов с началом — «подлежащим* и концом — списком X.
Например:
? — подл([эта,зебра,едет,на,поезде] ,Х).
> X = [едет,на,поезде]
Соответствующее правило, записанное на Прологе, выглядит так:
подл (L,X):— мест(L, Ы),сущ(Ы , X).
Заметим, что мы обходимся без явных конкатенаций предикатов с переменными (нетерминальными символами КС-грамматики). Действительно:
?— L = [эта,зебра,едет,на,поезде], мест (L,L1), сущ (L1 ,Х).
> L = [эта,зебра,едет,на,поезде],
L1 = [зебра,едет, на,поезде],Х= [едет,на,поезде]
Для предикатов с терминальными символами нужна явная конкатенация. Продукция существи-
тельное -► «зебра» записывается как следующее правило;
сущ(Ь,Х):— кк([зебра] ,X,L).
Ранее рассматривался частный случай конкатенаций, где первый аргумент являлся списком из одного элемента. В общем случае предикат, реализующий построение списка по заголовку и хвосту, логически определяется фактом:
с ([X | Y] ,Х, Y).
Это часто используемый встроенный предикат (аналог функции cons Лиспа). Пример:'
?— с(R,заголовок, [а,Ь,с]).
'> R = [заголовок,а,Ь,с]
?- c([a,b,c],X,Y)..•
> Х = а, Y= [Ь,с].
Получаем следующую БД:-
/* К СО */
фраза (L.X):— подл (L,L1),сказ (LI, L2)onp(L2,X).
подл (L,X):—• мест (L, L1), сущ (LI, X).
опр (L, X):— прил (L, X).
мест(Ь,Х):—с(Ь,эта,Х).'
сущ (L, X):— с (L, дама, X).
сущ (L.X):— с (L, машина, X).
сущ (L, X):— с (L, зебра, X).
прил (L.X):— с (L, голубой, X).
прил (L, X):— с (L, прекрасной, X).
прил (L, X):— с (L, изящной, X).
сказ (L, X):— с (L, становится, X).
сказ (L, X):— с (L, является, X).
Этот вид записи БД менее удобочитаем, чем предыдущий. Зато он имеет одно очень важное свойство: существует средство автоматического преобразования продукций КС-грамматик в утверждения-вопросы Пролога. Система делает это сама.
Системное средство Пролога ad hoc дает следующую БД, вполне эквивалентную предыдущей (мы писали КСО и автоматически получили КС1):
/*КС1 */ фраза> подл,сказ,опр.
подл> мест,сущ. опр> прил.
мест> [эта].'
сущ>[дама].
сущ>[машина].
сущ>[зебра],
прил>[голубой],
прил>[прекрасной],
прил>[изящной],
сказ>[становится],
сказ >[является]. -
Терминальные символы помещены в квадратные скобки как списки. Нетерминальные записаны без скобок. Выражения Пролога похожи на продукции КС-грамматик. Для их корректного использования вспомним о бинарности содержащихся в них предикатов. Имеем:
. ?— фраза([эта, дама,является,голубой],[ ]), > да
?- фраза(L,[ ]).
■> L = [эта,дама,становится,голубой];
> L = [эта,дама,становится,прекрасной];
и. т. д. .
На практике программист добавляет интерфейс. Например:
акцепт (L):— фраза (L, [ ]).
Анализ КС-фраз
Такие базы данных, как КС1, не очень полезны: это акцептор, но не анализатор. Чтобы иметь возможность запечатлеть след анализа — синтаксическое дерево, и т. д. (фактически, чтобы иметь возможность получать ответы, отличные от «да» и «нет»), продолжим программу (§ 5.1.9). Снабдим дополнительными аргументами предикаты, которые представляют
ФразаФразаГруп па _ГГруп па _ГГруппа-СГруппа-С
Фраза
Фраза
Груп па _Г
Груп па _Г
Группа-С
Группа-С
Определяющее Существительное Относительное Г-неперех
некий жираф. бродит
Рис. 6.4. Синтаксическое дерево.
нетерминальные символы данной грамматики. Рассмотрим следующую КС-грамматику:
Фраза-
Группа_С-
+ Группа_С, Группа_Г
-> Определяющее Существительное , О тносительное
Группа_С-
Группа_Г-
Группа_Г-
Относительное -
> И мя_собственное
Г_перех, Группа_С -
Г_неперех.
+ "который",Группа_Г ["которая", Группа_Г
Относительное -
> е
Определяющее -* "один" | "некий" | "каждая" Существительное —>"мужчина" ["женщина" |
Имя „собственное -
"жираф"
-* "жаклин" | "эмиль" |
Г_перех-
Г_неперех-
"адрианна"
-> "любит" ["поддерживает"
-* "бродит" | "блаженствует"
Порожденный этой грамматикой КС-язык содержит фразы наподобие следующих: «некий жираф бродит», «адрианна поддерживает мужчину, который бродит», «некий жираф любит женщину» (впрочем, эту фразу следовало бы исключить). Займемся разработкой программы построения синтаксических деревьев (§ 5.1.9) для фраз этого КС-языка. На оис. 6.4. изображено синтаксическое дерево, представ-
ляющее следующий функциональный терм Пролога:
фр (гс (опр (некий),-
сущ (жираф), отн ( )), гг(гн (бродит))).
Для построения дерева к каждому предикату, представляющему нетерминальный символ, добавляем аргумент. Например, первое правило рассматриваемой нами грамматики запишется так:
фраза (фр (ГС,ГТ))> группа„с (ГС), группа_г(ГГ).
Аргумент является термом. Если ГС и ГГ — термы- деревья группы существительного и группы глагола, то фр (ГС, ГГ) — дерево фразы.-
Для записи предикатов с терминальными символами можно обойтись без переменных. Например, восьмое правило нашей грамматики можно записать так:
определяющее(опр(один))> [один].
Предпочтем пользоваться переменными для лучшего учета синтаксических категорий (существительное, глагол, и т. д.):
определяющее (опр (X))> [X ], явл_опр (X).
явл_опр(один).■
явл_опр (некий).
явл_опр (каждая).
Это не дает окончательного результата, так как написанные в таком виде правила Пролога содержат предикаты, имеющие два неявных аргумента. В действительности предикат явл_опр(Х) имеет три аргумента, а надо бы только один. В качестве «лекарства» достаточно написать:
определяющее (опр(Х))> [X] ,{явл_опр(Х)}.
Фигурные скобки указывают на отсутствие неявных аргументов. БД в примере на с. 406 представляет ОК-грамматику (§ 5.1.6). В эту БД включены правило перехода на новую строку и правило интерфейса. Предикат вход(Ф) в интерфейсе позволяет
использовать эту БД, не вводя явно трех аргументов предиката фраза.
/♦АНАЛИЗ*/
фраза(фр(ГС,ГГ))> группа_с (ГС), группа_г(ГГ).
группа_с(гс(Оп,С,От))> опр(Оп), сущ (С), отн (От).
группа_с (гс(Ис))> имя_собс (ИС).
группа_г (гг (Гп, Гс))> г_перех (Гп),
группа_с (ГС).
группа_г(гг(Гн))> г_неперех(Гн). отн (от (’которая’, ГГ))> ’которая’, группа_г (ГГ)..
отн (от (’’))>11-
имя_собс(имс(Х))> [X],{явление (X)}.'
опр(оп(Х)) — — > [X] ,{явл_опр(Х)}.
сущ(с(Х))> [Х],{явл_с(Х)}. г_перех(гп(Х))> [XJ ,{явл_гп (X)}. г_неперех (гн (X))> [ X ], {явл_гн (X)}.
явление (эмиль).
явл_имс (жаклин).~
явЛ-Имс (адрианна). явл_опр (один). явл_опр (некий).
явл_опр (каждая).
явл_с (мужчина).
явл_с (женщина).
явл_с (жираф).
явл_гп (любит).
явл_гп (поддерживает).
явл_гн (бродит).
явл_гн (блаженствует).-
/* интерфейс: правило с предикатом вход */ вход (Ф): — фраза (Д, Ф, { ]), печ_ дерево (Д). печ_дерево (Д):— печ_функ (Д,0).
леч_функ(Ф,Х):—Ф= .. {Е] .write (Е). иеч_функ(Ф,Х):—Ф= .. (L] ,печ_список(L.X). неч_список (Ф | Args, N):— write (Ф),
write(’(’),К is N + 3,ne4_XBOCT(Args,K). печ_хвост([Д], К):— неч_функ(Д, К), write (’)’). печ_хвост ({Т IQ), К):— печ_функ (Т, К),
write (’,’), nl, tab (К), печ_хвост (Q,Ю-
Пример использования этой программы:
?— вход ([некий,жираф,бродит]), фр (гс (оп (некий), с (жираф), от ( )), гг (гн (бродит)))'
> да' ?— вход ([каждая,женщина,которая, любит, некий, жираф, который, бродит, блаженствует]). °.
фр (гс (оп (каждая), с (женщина),
от (которая,
гг (гп (любнт), гс(оп (некий), с (жираф), ' от (который, гг (гн (бродит))))))), гг (ги (блаженствует)))
> да
OK-грамматики и атрибутные грамматики
Грамматика базы данных анализ является атрибутной в смысле Кнута. Другими словами, аргумент в предикатах представляет собой синтезированный атрибут синтаксической структуры. Мы не будем заниматься условиями эквивалентности ОК-грамматик и атрибутных грамматик, а рассмотрим один классический пример' из статьи [55], в которой впервые были представлены атрибуты. Этот пример проиллюстрирует синтезированные и унаследованные атрибуты в Прологе и послужит введением в атрибутные системы.
Речь пойдет о преобразовании двоичного числа (цепочки битов) в десятичное. КС-грамматика двоич-
По-русски эта фраза означает: «Каждая женщина, которая любит жирафа (который бродит), блаженствует».—Прим, перед.
ных чисел задается следующими правилами:
N — L N-^LX \’,L2 L ^B L^B, L B^’O' B^'V
Атрибутная система, вычисляющая десятичное значение цепочки битов по этой грамматике, имеет вид
N-> L
val (N):— val (L)
pos (L):—0
N->LX/.’, U
val (N) := val (/.J + val (B2)
pos Щ) ■.—0
pos (B2):— —• long (L2)
L^B
val(L)-.— val (B)
long (L)-.= \
ves (B) := pos (L)
L->B, Lx
val (L) := val (B) + val (Lx)
long (L) := 1 + long (Lx)
ves (B) := pos (L) + long (Lx)
pos Щ) := pos (L)
B->’0’
val(B) ;= 0
B^'V
val (В) ;= У, где P = ves (B)
В этой системе атрибуты val (искомое десятичное значение) и long (длина цепочки битов) синтезированные, a pos (позиция данного бита относительно точки) и ves («вес» данного бита в составе результата) — унаследованные. Кроме того, pos зависит от long, ves — от pos, a val — от pos и ves. Следовательно, вычисление атрибутов потребует, вообще говоря, многих проходов по синтаксическому дереву.
В Прологе эти атрибуты станут аргументами (предикатов) Val, Ves и Long, а предикат Pos рассматри-
вать здесь ни к чему. Правило
L->B
превратится в правило
list(Val, Ves.Long)> bit (Vai, Ves),(Long=l).
Синтезированные атрибуты Vai и Long будут унифицированы с телом правила и «переданы» в переменные заголовка. Унаследованный атрибут Ves уже обладает неким значением после нахождения соответствия тела правила с БД.
Все это допустимо, ибо в переменную можно подставлять не только термы-константы. Терм при этом может содержать переменные. Например,
Vai = VI + V2
унифицирует Vai, если даже VI или V2 — термы с неконкретизированными переменными. Это неверно для терма
Vai is VI + V2
Действительно, его унификация требует, чтобы термы VI и V2 были исполнимы (§ 6.3.2). Следовательно, они должны быть константами. В атрибутной системе то же самое имеет место для классического присваивания
ual (V) := ual (Z^) + ual (Z.2).
Требуется предварительное присваивание значений всем переменным в правой части. (Иначе присваивание сработает «позже» — при одном из новых проходов по синтаксическому дереву.)
В прологовской БД КНУТО (которая приводится ниже) для вышеописанной атрибутной системы унификации явные; но это, вообще говоря, является необязательным условием (см. БД КНУТ далее—в самом конце параграфа).
/* КНУТО */
number (Vai)> list(Val,0,_).
number (Vai)> list (VI ,0,_),[’.’1, list (V2, Ves,Long),{Ves = — Long, Val = Vl + V2}. list(Val,Ves,Long)> bit(Val,Ves),
{Long = l}.
list(Val, Ves, Long)> bit(VI ,P1), list(V2,Ves,Ll), {Pl = Ves + LI,
Vai = VI + V2,Long = Ll + 1).
bit(O,_) — —> [01,{!}.
bit (Vai, Ves)> [1], {!,Val = 2 * Ves}.
s(N):— number (Val,N, [ J), write (Vai),nl,X is Vai, write (X).
Последнее выражение печатает результат сперва в форме исполнимого терма, а затем — в чисто числовом виде:
?- s([l,0 11).
2(0 + (1 + 1)) + (0 + 2 0) 5
> да
?— s([l,0,’.’,0,1,0]).
240+ 1) + 0 + (0 + (2"(—(1 + 1 + О+О +
> да
У первоначальной цели s( [1,0,1]) первая подцель
number (Vai, [ 1,0,11,[ 1).
Она требует синтаксического анализа списка битов при унификации переменной Vai с термом
240 + (1 +1)) + (0 + 2+),
после чего терм печатается. Затем ои выполняется для присваивания X значения 5.
Если В БД заменить = на is, то получим сообщения об ошибках. Действительно, исполнимый терм будет получен лишь по завершении анализа входного списка. Многократные проходы по синтаксическому дереву Пролог заменяет последовательностью подунификаций. Усовершенствование (обещанное) БД
выглядит следующим образом:
■ /* кнут */
number(Val)> list (Vai, 6, _).
number(Vl + V2)> list(VI ,0,_), [V],
list (V2, —Long,Long).
list(Val,Ves,l)> bit(Val,Ves).
Iist(Vl + V2, Ves.Long + 1)> bit(VI,
Ves + Long), list (V2, Ves.Long).
bit(O,_) — — > [01,{!}.
bit(2~Ves, Ves)> [1J,{!}.
s(N):—number (Vai,N, [ J), write (Vai), nl,X is Vai, write (X).
Литература
Abadi M. and Manna Z. Modal theorem proving. In: Proc. 8th Int. Conf, on Automated Deduction (J. H. Siekmann, ed.), LNCS 230, Springer Verlag, Berlin, pp. 172—189, juillet 1986.
Ait-Kaci H. and Nasr R. LOGIN: A logic programming with built-in inheritance, J. Logic Programming, vol. 3, no. 3, pp. 185—215, octobre 1986.
Barwise J. Handbook of Mathematical Logic, North-Holland, , Amsterdam, 1974. Имеется перевод: Барвайс Дж. (ред.) Справочная книга по математической логике. — М.: Наука, 1982 (1—3), 1983 (4).
Bates М. The theory and practice of augmented transition network grammars. In: Natural Language Communication With Computers (L. Bole, ed.), pp. 191—259, Lecture Notes in Computer Science, Springer-Verlag, Berlin, vol. 63, 1978.
Bell J. L. and Machover M. A Course in Mathematical Logic, North Holland, Amsterdam, 1977.
Besnard P., Quiniou R. and Quinton P. A theorem prover for a decidable subset of default logic. Proc. AAAI-83, pp. 27—30, 1983.
Besnard P. and Siegel P. The preferential models approach to non monotonic logics In: Non-Standard Logics for Automated Reasoning (P.' Smets et al., eds.), Academic Press, London, 1988, p. 137—151.
Bobrow D. and Winograd T. An overview of KRL, a knowledge representation language, Cognitive Science, vol. 1, pp. 3—46, 1977.
Brachman R. J., Fikes R. E. and Levesque H. J. KRYPTON: Integrating terminology and assertion. Proc. AAAI-83, pp. 31—35, 1983.
Brachman R. J. and Levesque H. J. (eds.). Readings in Knowledge Representation. Morgan Kaufmann, Los Altos, 1985.
Bratko I. Prolog Programming for Artificial Intelligence, Addison Wesley, Reading, M. A. 1986. Имеется перевод:
Братко И. Программирование на языке Пролог для искусственного интеллекта. — М.: Мир, 1990.
Ceccato S. Linguistic Analysis and Programming for Mechanical Translation, Gordon and Breach, New York, ,1961.
Chang С. C. and Keisler H. J. Model Theory, North Holland, Amsterdam, 1973. Имеется перевод: Кейслер Г., Чен Ч. Теория моделей. — М.: Мир, 1977.
Chang С. L. and Lee R. С. Т. Symbolic Logic and Mechanical Theorem Proving, Academic Press, New York, 1973. Имеется перевод: Чень Ч., Ли Р. Математическая логика и автоматическое доказательство теорем. — М.: Наука, 1983.
Chellas В. F. Modal Logic: an Introduction, Cambridge University Press, Cambridge, 1980.
Chomsky N. On certain formal properties of grammars, Information and Control., vol. 2, no. 2, pp. 137—167, 1959. Имеется перевод: Хомский H. О некоторых формальных свойствах грамматик. — В ки.: Киберн. сб., вып. 5, — М.: ИЛ, 1962, с. 279—311.
Clark К. L. Negation as Failure: In: Logic and Data Bases (N. Gallaire et J. Minker, eds.), Plenum Press, New York, pp. 293—322, 1978.
Clocksin W. F. and Mellish C. S. Programming in Prolog (2-eme ed.). Springer-Verlag, Berlin, 1984. Имеется перевод: Клоксин У., Меллиш К. Программирование на языке Пролог.— М.: Мир, 1987.
Colmerauer A., Kanoui Н., Roussel Р. et Pasero R. Un Sys- teme de Communication Homme-Machine en Franjais, Groupe de Recherche et Intelligence Artificielle, Universite d’Aix-Mar- seille, 1973.
Colmerauer A. Metamorphosis grammars. In: Natural Language Communication with Computers (L. Bole, ed.), pp. 139—169, Lecture Notes in Computer Science, vol. 63, Springer-Verlag, Berlin, 1978.
Colmerauer A., Kanoui H. et Van Caneghem M. Prolog, bases theoriques et developpements actuels, T. S. I., vol. 2, no. 4, 1983. Имеется перевод: Колмероэ А., Канун А., ван Кане- гем М. Пролог — теоретические основы и современное развитие.— В сб.: Логическое программирование.—М.: Мир, 1988, с. 27—133.
Davio М., Deschamps J. Р., Thayse A. Discrete and Switching Functions, McGraw-Hill, New York, 1978.
Davis M. Computability and Unsolvability, McGraw Hill, New York, 1958.
Dijkstra E. W. A Discipline of Programming, Academic Press, New York, 1976. Имеется перевод: Дейкстра Э. Дисциплина программирования. — М.: Мир, 1978.
Dowling W. and Gallier J. H. Linear-time algorithms for testing the satisfiability of propositional Horn formulae, J. of Logic Programmnig, vol. 1, 1984.
Doyle J. A truth maintenance system, Artificial Intelligence, vol. 12, no. 3, pp. 231—272, 1979. Имеется перевод:
Дойл Дж. Система поддержания истинности. — В кн.: Ки- берн. сб., вып. 20,— М.: Мир, 1983, с. 159—215.
Etherington D. W. and Reiter R. On inheritance hierarchies with exceptions, Proc. AAAI-83, pp. 104—108, 1983.
Etherington D. W., Mercer R. E. and Reiter R. On the adequacy of predicate circumscription for closed-world reasoning, Proc. AAAI-Workshop on Non-Monotonic Reasoning, New Paltz, New York, pp. 70—81, octobre 1984.
Etherington D. W. Formalizing nonmonotonic systems, Artificial Intelligence, vol. 31, no. 1, pp. 41—85, janvier 1987.
Even S., Itai A. and Shamir A. On the complexity of timetable and multicommodity flow problems, SIAM J. Comput, vol. 5, pp. 691 703, 1976.
Fikes R. and Kehler T. The role of frame-based representation in reasoning, Comm. ACM, vol. 28, no. 9, pp. 904—920, septembre 1985.
Froidevaux C. JSA hierarchies with exceptions, Proc. 5 ieme Congres AFCET Reconnaissance des Formes et Intelligence Artificielle, Grenoble, pp. 1127—1138, 1985.
froidevaux C. Taxonomic default theory, Proc. ECAI-86, pp. 123—129, Brighton, juillet 1986.
Froidevaux C. and Kayser D. Inheritance in semantic networks and in default logic, In «Non-Standard Logics for Automated Reasoning» (P. Smets et al., eds.), Academic Press, London, 1988.
Gabbay D. M. Theoretical foundations for non-monotonic reasoning in expert systems. Research Report 84/11, Departament of Computing, Imperial College, London, 1984.
Garey M. R. and Johnson D. S. Computers and Intractability? A Guide to the Theory of NP-Completeness, Freeman, San Francisco, 1979. Имеется перевод: Гэри M., Джонсон Д. С. Вычислительные машины и труднорешаемие задачи. — М.: Мир, 1982.
Gregoire Е. Raisonnement plausible: inference non monotone et logiques autoepistemiques, Proc. Int. Conf, on Information Processing and Management of Uncertainty in Knowledge-Based Systems, Paris, pp. 376—379, juillet 1986.
Gregoire E. A note on Moore’s autoepistemic logic. In: «Non- Standard Logics for Automated Reasoning» (P. Smets ct al., eds.). Academic Press, London, 1988, p. 132—133.
Gries D. The Science of Programming, Springer-Verlag, Berlin, 1981. Имеется перевод: Грнс Д. Наука программирования.— М.: Мир, 1984.
Halpern J. Y. and Moses Y. Towards a theory of knowledge and ignorance: Preliminary report, Proc. AAAI-Workshop on Non-Monotonic Reasoning, New Paltz, New York, pp. 125— 143, octobre 1984.
Halpern J. Y. and Moses Y. A guide to the modal logics of knowledge and belief: Preliminary draft. Proc. IJCAI-85, pp. 480—490, 1985.
Halpern J. Y. (ed.) Proc. Conf, on Theoretical Aspects of
Reasoning about Knowledge, Morgan Kaufmann, Los Altos, 1986.
Hayes P. J. In defense of logic, Proc. 1JCAI-77, pp. 428— 433, 1977.
Hayes P. J. The logic of frame. In Frame Conceptions and Text Understanding (D. Metzing, ed.), de Gruyter, Berlin, pp. 46—61, 1979.
Heeffer A. (ed.) Non-classical logics for expert systems, CC-AI, vol. 3, no. 1—2, 1986.
Hintikka J. Knowledge and Belief: an Introduction to the Logic of the Two Notions, Cornell University Press, Ithaca, New York, 1962.
Hintikka J. Impossible possible worlds vindicated, J. Philosophical Logic,, vol. 4, pp. 475—484, 1975.
Hobbs J. R. and Moore R. C. (eds.) Formal Theories of the Commonsense World, Ablex, Norwood, 1985.
Hopcroft J. and Ullman J. Introduction to Automata Theory, Languages and Computation, Addison-Wesley, Reading, MA, 1979.
Hughes G. E. and Cresswell M. J. An Introduction to Modal Logic, Methuen, London, 1972.
Israel D. J. What’s wrong with non-monotonic logic? Proc. AAAI-80, pp. 99—101, 1980.
Israel D. J. A short companion to the naive physics manifesto. In: Formal Theories of the Commonsense World (J. Hobbs et R. C. Moore, eds.), pp. 427—447, Ablex, Norwood, 1985.
Kleene S. C. Introduction to Metamathematics, North-Holland, Amstredam, 1952. Имеется перевод: Клини С. Введение в метаматематику. — М.: ИЛ, 1957.
Kleene S. С. Mathematical Logic, Wiley, Chichester, 1967. Имеется перевод: Клини С. Математическая логика. — М.: Мир, 1973.
Knuth D. Semantics of context-free languages, J. Math. Syst. Theory, vol. 2, pp. 127—146, 1968.
Konolige K. A deduction model of belief and its logics, Department of Computer Science, Report STAN-CS-84-1022, Stanford, San Francisco, 1984.
Konolige K. On the relation between default theories and autoepistemic logic. Proc. IJCAI-87, Morgan Kaufmann, pp. 394—401, 1987.
Kowalski R. Logic for Problem Solving, North-Holland, New York, 1979.
Kramosil I. A note on deduction rules with negative premises. Proc. IJCAI-75, pp. 53—56, 1975.
Kripke S. A. Semantical considerations on modal logic. In: Reference and Modality (L. Linsky, ed.), Oxford University Press, London, pp. 63—72, 1971.
Levesque H. J. The interaction with incomplete knowledge bases: a formal treatment, Proc. IJCAI-88, pp. 240—245, 1981.
Levesque H. J. A logic of implicit and explicit belief, Proc. AAAI-84, pp. 198—202, 1984.
Lloyd J. W. Foundations of Logic Programming, SpringerVerlag, Berlin, 1984.
Lukasiewicz J. Many-valued systems of propositional logic. In: Polish Logic (S. McCall, ed.), Oxford University Press, Oxford, 1967.
Manna Z. Mathematical Theory of Computation, McGraw-Hill, New York, 1974. Имеется перевод гл. 5: Манна 3. Теория неподвижной точки программ. — В кн.: Кибернетический сборник, вып. 15,— М.: Мир, 1978, с. 38—100.
Marchal В. Modal logic: a brief tutorial. In: Non-Standard Logics for Automated Reasoning (P. Smets et al., eds.), Academic Press, London, 1988.
McCarthy J. Epistemological problems of artificial intelligence, Proc. IJCAI-77, pp. 1038—1044, 1977.
McCarthy J. Circumscription: a form of non-monotonic reasoning, Artificial Intelligence, vol. 13, no. 1—2, pp. 27—39, 1980.
McCartny J. Applications of circumscription to formalizing commonsense knowledge. Artificial Intelligence, vol. 28, no. 1, pp. 89—121, 1986.
McDermott D. and Doyle J. Non-monotonic logic I, Artificial ■ Intelligence, vol. 13, no. 1—2, pp. 41—72, 1980.
McDermott D. Non-monotonic logic II: non-monotonic modal theories, J. ACM. vol. 29, no. 1, pp. 34—57, 1982.
Mendelson E. Introduction to Mathematical Logic (2-eme ed.). Van Nostrand, Princeton, 1979. Имеется перевод первого издания: Мендельсон Э. Введение в математическую логику. — М.: Наука, 1976.
Minsky М. L. Computation: Finite and Infinite Machines, Prentice-Hall, Englewood Cliffs, NY, 1967. Имеется перевод: Минский M. Вычисления и автоматы. — М.: Мир, 1971.
Minsky М. L. A framework for representing knowledge. In: The Psychology of Computer Vision (P. Winston, ed.), McGraw-Hill, New York, pp. 34—57, 1974. Имеется перевод: Минский M. Структура для представления знания.— В сб. Психология машинного зрения. — М.: Мир, 1978, с. 249— 338.
Moisil G. Essai sur les Logiques non Chrysippiennes, Editions de L’Academie de la Republique Socialiste de Romanie, 1972.
Montague R. The proper treatment of quantification in ordinary English. In: Formal Philosophy: Selected Papers of Richard Montague (R. H. Thomason, ed.), Yale University Press, London, 1974, pp. 188—221.
Moore R. C. The role of logic in knowledge representation and commonsense reasoning. Proc. AAAI-82, pp. 428—433, 1982.
Moore R. C. Possible-world semantics for auto-epistemic logic, Proc. AAAI-Workshop on Non-Monotonic Reasoning, New Paltz, New York, pp. 344—354, octobre 1984.
Moore R. C. Semantical considerations on non-monotonic logic, Artificial Intelligence, vol. 25, no. 1, pp. 75—94, 1985.
Moore R. C. Autoepistemic logic. In: Non-Standard Logics for Automated Reasoning (P. Smets et al., eds.), Academic Press, London, 1988, p. 105—136.
Murray N. Completely non-clausaL theorem proving, Artificial Intelligence, vol. 18, pp. 67—86, 1982..
Newell A. The knowledge level, AJ Magazine, vol. 2, no. 2, pp. 1—20, 1980.
Nilsson N. Principles of Artificial Intelligence, Tioga Publishing Company, Palo Alto, CA, 1980. Имеется перевод: Нильсон H. Принципы искусственного интеллекта. — М.: Радио и связь, 1985.
Pereira F. and Warren D. Definite Clause grammar for language analysis — A survey of the formalism and a comparison with ATN, Artificial Intelligence, vol. 13, pp. 231 — 278, 1980.
Putnam H. The analytic and the synthetic. In: Mind, Language, and Reality (H. Putnam, ed), Cambridge University Press, Cambridge, pp. 33—69, 1962.
Quine W. V. Methods of Logic, Henry Holt, New York, 1950.
Reiter R. On closed-world data base. In: Logic and Data Bases (H. Gallaire and J. Minker eds.), Plenum Press, New York, pp. 55—76, 1978.
Reiter R. A logic for default reasoning, Artificial Intelligence, vol. 13, no. 1—2, pp. 81 —131, 1980.
Reiter R. and Criscuolo G. On interacting defaults, Proc. 1JCAI-81, pp. 270-276, 1981.
Reiter R. Circumscription implies predicate completion (sometimes), Proc. AAAI-Workshop on Non-monotonic Reasoning, New Paltz, New York, pp. 418—420, octobre 1984.
Rescher N. Many-valued Logic, McGraw-Hill, New York, 1969.
Rich E. Artificial Intelligence, McGraw-Hill, New York, 1983.
Robinson J. A. A machine-oriented logic based on the resolution principle J. ACM, vol. 12, no. 1, pp. 23—41, 1965. Имеется перевод: Робинсон Дж. А. Машинно-ориентированная логика, основанная на принципе резолюции. — В кн.: Ки- бернетич. сб., нов. сер., вып. 7 — М.: Мир, 1970, с. 194—218.
Robinson G. and Wos L. Paramodulation and theorem-proving in first-order theories with equality, Machine Intelligence 4, Edinburgh University Press, Edinburgh, pp. 135—150, 1969.■
5. Robinson J. A. Logic: Form and Function, Edinburgh University Press, Edinburgh, 1979.
Rogers H. Theory of Recursive Functions and Effective Computability, McGraw-Hill, New York, 1967. Имеется перевод: Роджерс X. Теория рекурсивных функций и эффективная вычислимость. — М.: Мир, 1972.
Sandewall Е. An approach to the frame problem and its implementation. In: Machine Intelligence 7 (B. Meltzer and D. Michie, eds.), Wiley, New York, pp. 195—204, 1972.
Schank R. and Abelson R. Scripts, Plans, Goals and Understanding, Lawrence Erlbaum Associates, New York, 1977.
Schoenfield J. R. Mathematical Logic, Addison-Wesley, Read-
ing, МА, 1967. Имеется перевод: Шенфилд Дж. Математическая логика.— М.: Наука, 1975.
Smets Ph., Mandan! Е. Н., Dubois D. and Prade N. (cds.) Non-Standard Logics for Automated Reasoning, Academic Press, London, 1988.
Snyers D. and Thayse A. From Logic Design to Logic Programming, Lecture Notes in Computer Science, vol. 271, Springer-Verlag, Berlin, 1987.
Sowa J. Conceptual Structures, Addison-Wesley, Reading, MA, 1984.'
Stalnaker R. A note on non-monotonic modal logic, Note non publiee, Dept, of Philosophy. Cornell University, Ithaca, New York, juin, 1980."
Stefik M. and Bobrow D. G. Object-oriented programming: themes and variations, AI Magazine, vol. 6, no. 4, pp. 40— 61, 1986.
Sterling L. and Shapiro E. The Art of Prolog, MIT Press, Cambridge, MA, 1986. Имеется перевод: Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. — М.: Мир, 1989.
Thayse A. Meet and join deratives and their use in switching theory, IEEE Trans. Computers, vol. C-27, pp. 713—720, 1978.
Thayse A. Implementation and transformation of algorithms based on automata, Philips J. of Research, vol. 35, pp. 190— 216, 1980.■
Thayse A. P. Functions and Boolean Matrix Factorization, Lecture Notes in Computer Science, vol. 175, Springer-Verlag, 1984.
Tison P. Generalisation of consensus theory and application to the minimization of Boolean functions, IEEE Trans. Electr. Comput., vol. EC-5, pp. 126—132, 1967.
Touretzky D. S. The Mathematics of Inheritance Systems, Research Notes in Artificial Intellingence, Pitman, London, 1986.
Turner R. Logics for Artificial Intelligence, Ellis-Horwood, Chichester, 1984.
Winograd T. Language as a Cognitive Process, Vol. 1: Syntax, Addison-Wesley, Reading, MA, 1983.
Winston P. and Horn B. LISP (2-eme ed.), Addison-Wesley, Reading, MA, 1984.
Woods W. Transition network grammars for natural language analysis. Comm. ACM, vol. 13, No. 10, pp. 591—606. Octobre 1970. Имеется перевод: Вудс В. А. Сетевые грамматики для анализа естественных языков. — В кн.: Киберн. сб., вып. 13,—М.: Мнр, 1976, с 120—158.
Woods W. Cascaded ATN grammars, American J. Computational Linguistics, vol. 6, no. 1, 1980.
Предметный указатель
Абстракция-Х (abstraction-X) 161
Автомат детерминированный (automate deterministe) 303
■— конечный (atomate fini) 128, 303
— недетерминированный (automate non deterministe) 303
— стековый (automate a pile) 305
детерминированный (au
" tomate a pile deterministe) 308
Автоэпистемическая интерпретация (interpretation autoepis- temique) 255, 261
■—логика (logique autoepistemi- que) 227, 253
— модель (modele autoepiste- mique) 255, 261
— теория легальная (theorie autoepistemique legale) 255
основанная (theorie autoepistemique fondee) 257
■— — полная (theorie autoepistemique complete) 255
— — устойчивая (theorie autoepistemique stable) 256
Аксиома (axiome) 113
Аксиоматическая система (sys- teme axiomatique) 92
немонотонная (systeme axiomatique non monotone) 247
Алгебра булева (algebre de Boole) 29
Алгоритм (algorithme) 125
— Девиса и Патнема (algo
rithme de Davis et Putnam) 33
— Куайна (algorithme de Quine) 24, 83
— редукции (algorithme de reduction) 26
— унификации (algorithme d’unification) 357
Алгоритмы Пролога (algorith-
mes de Prolog) 351
Алетическая логика (logique alethique) 152
Антисимметричность (antisy- metrie) 28
Ассоциативность (associativite) 28
Atom (atome) 59
Атрибут (attribut) 198
Ввод-вывод в Прологе (entree-sortie Prolog) 384
Возврат (retour en arriere) 299, 343
Вопрос (question) 293, 337, 353
Временная логика (logique tem- porelle) 153
Вывод (inference) 103
— немонотонный (inference non monotone) 248
Выражение-Х (expression-X) 161
— тело (corps d’une expression-X) 162
Высказывание (proposition) 11
Гипотеза (hypothese) 21
Грамматика атрибутная (gram- maire attribuee) 407
— контекстно-свободная (grammaire hors-contexte) 49, 276, 305, 399
— определенных дизъюнктов (grammaire DCG) 278, 279, 283, 290, 330, 407
— регулярная (grammaire re- guliere) 305
— структуры фразы (grammaire a structure de phrase) 300
— Хомского (grammaire de Chomsky) 300
типа 0 (grammaire de
Chomsky de type 0) 311
типа 1 (grammaire de Chomsky de type 1) 310
— типа 2 (grammaire de
Chomsky de type 2) 305
— типа 3 (grammaire de Chomsky de type 3) 300
Граф канонический (graphe ca- nonique) 181
— концептуальный (graphe con- ceptuel) 169
Дедукции метатеорема (metat- heoreme de la deduction) 96 — принцип (principe de deduction) 22
Дедукция обратная (deduction inverse) 167
— прямая (deduction directe) 166
Деонтическая логика (logique deontique) 152
Деревс-И/ИЛИ (arbre ET/OU) 296
— семантическое (arbre seman- tique) 23
— ,— полное (arbre semantique comp let) 23
— синтаксическое (arbre synta- xique) 274, 329
Диаграмма переходов (dia- gramme de transition) 303 — состояний (diagramme d’etat) 303
Дизъюнкт (clause) 30, 72
— резольвентный (clause re- solvante) 86
— хорновский (clause de Horne) 45, 49, 274, 345
Дизъюнктивная нормальная форма (forme disjonctive normale) 33, 72
Дистрибутивность (distributivi- te) 28
Доказательство (demonstration) 92, 103
— посредством опровержения (preuve par refutation) 163
Дополнительность (complemen- tarite) 29
Доступности отношение (acces- sibilite) 242
Завершаемость (completude) 40
Заголовок (tete) 271
Заключение (conclusion) 21
— импликации (consequent) 18
Законы де Моргана (lois de Morgan) 28
Замены правило (regie d’echange) 97
Замыкание (fermeture) 268
— положительное (fermeture positive) 268
— рефлективное и транзитивное (fermeture reflexive et transitive) 272
V (fermeture universelle) 69 ,
3 (fermeture existentielle) 69
Знаний представление (representation de la connaissance) 141
Значение (valeur) 198
— слота (valeur de la facette) 172
Идемпотентность (idempotence) 28
Иерархия (hierarchie) 185
— типов (hierarchie des types) 185
— Хомского (hierarchie de Chomsky) 299
Имя индивидуума (nom speci- fique) 143.
— предикатное (nom de predicat) 143
— слота (nom de la facette) 147. ,
— совокупности (nom generi- que) 143
— функциональное (nom de fonction) 143
Интерпретация (interpretation) 16, 63
— высказываний (interpretation propositionnelle) 255
— область (domaine d’interpretation) 63
— частичная (interpretation partielle) 23
— Эрбрана (interpretation de Herbrand) 77
Исчисление высказываний (cal- cul des propositions) 11, 12 — предикатов (calcul des predicate) 54, 57
Категория синтаксическая (ca- tegorie syntaxique) 270
Квантификация (quantification) 56
— область действия (portee d’une quantification) 61
Квантор (quantificateur) 56
— общности (quatificateur universe!) 56
— существования (quantificateur existentiel) 56
Кластер схематический (amas schematique) 190
Клаузальная форма (forme clausal) 76
Ключ (cle) 147
Коммутативность (commutati- vite) 28
Компактности теорема (theore- me de compacite) 54
Композиционный метод (prin- cipe do compositionnalite) 150
Конкретизация (instance) 67, 75. 143
— фундаментальная (instance fondamentale) 79
Константа (constante) 55, 143
— индивидная (constante indi- viduelle) 57
— предикатная (constante predicative) 56, 57, 143
— функциональная (constante fonctionnelle) 57, 143
Конфигурация (configuration) 302, 306, 311
Концептуальное отношение (relation conceptuel) 172
Конъюнкт (cube) 33, 72
Конъюнктивная нормальная форма (forme conjonctive normale) 30, 72
Легальность (legalite) 255
Литера (litteral) 16, 72
Логика веры (logique des croy- ances) 153
— возможного (logique du possible) 152
— высказываний (logique des propositions) 211
— немонотонная (logique non monotone) 220, 227, 245
— предикатов (logique des predicate) 211
— трехзначная (logique terna- ire) 158
— умолчаний (logique des de- fauts) 226, 227
— четырехзначная (logique quaternaire) 160
Логическое программирование (programmation logique) 89, 266, 333
Матрица (matrice) 68
Машина Тьюринга (machine de
Turingy 127,311
Множество рекурсивно перечислимое (ensemble recursive- ment enumerable) 137
— рекурсивное (ensemble re- cursif) 14, 138
Модальная логика (logique mo- dale) 239
— нормальная система (systS- me modal normal) 239
— теорема (theoreme modal) 250
Модальный оператор (орёга- teur modal) 153
Моделей теория (theorie des modeles) 122
Модель (modele) 16, 113, 243
— высказываний (modele pro- positionnel) 255
Моноид свободный (monoide libre) 268
Монотонность ограниченная
(monotonie restreinte) 221
Наследственное свойство (рго- priete d’heritage) 183
Неклаузальное правило резолюций (resolution non clausa- le) 44, 89
согласия (consensus non clausale) 89
Область Эрбрана (domaine de Herbrand) 76
Обоснование (justification) 229
Общезначимость (valide) 244
— в модели (valide dans un modele) 244
— в структуре (valide dans une structure) 244
Общезначимые рассуждения (raisonnement valide) 217
Объявление оператора (declaration'd’operateur). 391
Одновременная постановка (substitution uniforme) 12, 60, 97
Оператор-А (operateur-A) 160
Операции над списками (operation sur les listes) 378
Операция паросочетайия (operation de correspondence) 200 Остановки проблема (probleme de 1’arret) 139
Отношение порядка (relation d’ordre) 28. 117
Отрицание в Прологе (negation Prolog) 349
Отсечение (coupure) 363, 366
Оценка (valuation) 242
able quantifiee) 61
— начальная (variable de depart) 270
— свободная (variable libre) 60
Подстановка (substitution) 66, 354
Полугруппа свободная (demigroup libre) 268
Правило (regie) 165, 268, 270, 293, 345
— немонотонного вывода (inference non monotone) 223
— обобщения (regie de generalisation) 106
— переписывания (regie de reecriture) 271
— рекурсивное (regie recursive) 348
— соединения (regie d’assemblage) 143
— умолчания (regie de- de- faut) 229
— Modus Ponens (Modus Po- nens) 94
Предваренная форма (forme prenexe) 70
Предикат (predicat) 59, 143
— бинарный (predicat binaire) 144
— встроенный (predicat predefine 362
— унарный (predicat unaire) 144
Префикс (prefixe) 70
Принцип двойственности (prin- cipe de dualite) 29, 65
— монотонности (principe de monotonie) 104
Продукция (production) 268, 270
Пролог (Prolog) 290
Прототип (prototype) 187, 189, 191
Процедура (procedure) 125
Переменная (variable) 55, 57, 143, 270
— анонимная (variable anony- me) 344
— квантифицированная (vari-
Разрешимая теория (theorie decidable) 120
Разрешимость (d6cidabilite) 123
Рассуждения модифицируемые
(raisonnement revisable) 217
—; с умолчаниями (raisonne-ment par defaut) 206, 228
Расширение (extension) 232
•— устойчивое (extension stable)
257, 258, 262
Резольвента (resolvante) 38
Резолюций принцип (resolution) 38, 42, 87, 99
Резолюция фундаментальная
(resolution fondamentale) -84
Рефлексивность (reflexivite) 28
Решетка (treillis) 28
— Линденбаума (treillis de
Lindenbaum) 28
— множеств (treillis des ensembles) 186
— типов (treillis des types) 186
Слот (facefte) 147, 198
Совокупности поле (champ ge- nerique) 176
Совокупность — ссылка (gene- rique — referent) 175, 188
Согласие (consensus) 43, 89
Сортировка (tri) 380
Список (liste) 275, 376
Ссылки поле (champ referent) 176
Стратегия (strategie) 298
Девиса и Патнема (strategic de Davis et Putnam) 83
Структура (structure) 113, 242
Схема (schema) 190
Сцепка (unite) 197
Свойство унаследованное (pro- priete heritee) 183
Связанная переменная (variable Нее) 60
Связка (connecteur) 57
Семантика (semantique) 15, 62, 150, 157, 162
возможных миров (semantique des mondes possibles) 158, 242
Сеть базовая переходов (reseau BTN) 316
рекурсивная переходов (reseau RTN) 320
семантическая (reseau semantique) 172
усиленная переходов (reseau ATN) 325
Сигнатура (signature) 113
Символ исходный (symbole initial) 270
нетерминальный (symbole non terminal) 270
Синтаксис (syntaxe) 15
Система натурального вывода (deduction naturelie) 102, 107
Сколемовская форма (forme de Skolem) 73
Следствие логическое (sonse- quence logique) 21
Тавтология (tautologie) 21
Тезис Чёрча (these de Church) 133
Тело (corps) 271
Теорема (theoreme) 92, 113
Теория (theorie) 113
категоричная (theorie cate- gorique) 121
нормальная (theorie normale) 233
первого порядка (theorie du premier ordre) 111, 113
полная (theory complete) 121
полунормальная (theory semi-normale) 236
с умолчаниями (theorie avec defauts) 229
Терм (terme) 56, 58
индивидный (terme fonda- mental) 337
— констаитный (terme constant) 337
Точка неподвижная (point fixe) 250
Транзитивность (transitivite) 28
Требование (prerequis) 229
Узел — индивид (noeud specifi- que) 176
— концепт (noeud concept) 172
— связывающий (noeud rela- tionnel) 172
— совокупность (noeud generi- que) 176
— ссылка (noeud referent) 176
Умолчание (defaut) 229
— нормальное (defaut normal) 234
Универсум (univers) 242
Унификатор (unificateur) 355
— наиболее общий (unificateur le plus general) 86, 356
Унификация (unification) 85
Унифицируемые литеры (litte- raux unifiables) 85
— общезначимая (formule va- lide) 20, 64
Фрейм (cadre) 197
— функциональный (cadre fon- ctionnel) 199
— явный (cadre explicite) 198
Фундаментальная форма (forme fondamentale) 78
Функциональная форма (forme fonctionnelle) 58
Функция (fonction) 59, 149
примитивно рекурсивная (fonction primitive recursive) 136
— рекурсивная (fonction recursive) 137
Факт (fait) 46, 165, 201, 293, 337.
Финитно выполнимое подмножество (sous-ensemble fini- ment consistant) 51
Форма предикатная (forme predicative) 56, 59, 144
Формализм усиленных сетей переходов (formalisme ATN) 314
Формула (formule) 13, 59
— выполнимая (formule son- sistante) 20, 64
— невыполнимая (formule in- consistante) 20, 64 э
— нейтральная (formule con- tingente) 21, 64
Цель (but) 46, 165, 201, 293, 341, 353
Элиминация (elimination) 28
Эпистемическая логика (logique epistemique) 153
Язык (langage) 113
— алгоритмический Гёделя (langage algorithmique de Godel^ 131
— контекстно-свободный (langage hors-contexte) 272
оглавление
Предисловие редактора перевода5
Предисловие7
Логика • • • -,11
Исчисление высказываний .11
Введение..11
Словарь11
Синтаксис исчисления высказываний12
Семантика исчисления высказываний15
Исчисление высказываний и естественный язык16
Выполнимые и общезначимые формулы ....20
Алгоритмическая точка зрения23
Алгоритм редукции . . 26
Алгебраический подход 27
Дизъюнкты и нормальные формы .......30
Алгоритм Девиса и Патиема33
Принцип резолюций37
Доказательства невыполнимости, основанные на принципе резолюций38
Приложения и примеры использования метода резолюций42
Неклаузальное правило резолюций44
Хорновские дизъюнкты . . 45
Хорновские дизъюнкты и КС-грамматики.. .49
Теорема компактности51
Исчисление предикатов . . . 54
Введение54
Словарь57
Синтаксис исчисления предикатов58
Свободные и связанные переменные, область действия . . . . 59
Семантика исчисления предикатов62
Подстановка и конкретизация66
Предваренная и нормальные формы69
Сколемовские и клаузальиые формы72
Эрбранова интерпретация и компактность .. .76
Два простых примера80
Алгоритм Куайна, Девиса н Патиема83
Фундаментальная резолюция84
Унификация85
Метод резолюций87
Принцип логического программирования.. .89
Аксиоматические системы92
Аксиоматический подход к логике92
Введение 92
Свойства аксиоматических систем93
Простая аксиоматическая система исчисления высказываний 94
Несколько интересных теорем95
Полнота>98
Польза аксиоматических систем100
Система натурального вывода .102
Классические аксиомы для квантнфнкацни . . . 105
Натуральный вывод в логике предикатов . . . 107
Равенство в исчислении предикатов ...... 108
Теории первого порядка. . 111
Введение.111
Неформальные н формальныетеории112
Польза теорий114
Теория частичного Порядка117
Модели теории119
Алгоритмы и разрешимость123
Алгоритмический язык Тьюринга127
Алгоритмический язык Гёделя131
Кодирование и тезис Чёрча133
Класс вычислимых функций .. 136
Проблема остановки139
'3. Представление знаний и рассуждений • . -141
. Логическое представление 141
Введение141
Синтаксис логики предикатов142
Примеры 144
Преобразованиеунарныхпредикатовв бинарные144
Примеры145
Преобразованиеm-арныхпредикатовв произведение бинарных146
Явное представление ссылок148
Представление функциями.149
Примеры . '.149
Семантика логики предикатов150
Модальная логика предикатов152
Модальные операторы153
Примеры модальных операторов154
Синтаксис модальной логики предикатов . . . •155
Примеры155
Трехзначная семантика для модальной логики предикатов157
Семантика возможных миров158
Ламбда-нсчислеине160
Рассуждения, использующие логические формулы162
Пример . . 163
Рассуждения по поводу знаний165
Системы прямой дедукции166.
Системы обратной дедукции167
; Сетевое представление .168
Введение168
Концептуальные графы169
Пример и терминология170
Семантические сети172
Правила- конъюнкции н упрощения173
Представление контекста173
Представление «совокупность-ссылка»175
Пример177
Пример введения кванторов177
Временные и модальные операторы179
Канонические, графы181
Правила построения182
Унаследованные свойства183
Решетки типов; иерархии типов185
Решетки множеств и решетки типов;186
Определение типа пбсредством рода и различия 188
Прототипы.. . . ■ .'189
Схемы и схематические кластеры:190
Рассуждения, использующие семантические сети 192
Заключение .194
; Объектное представление ............ 196
Введение-. . ,196
Сцепки . 197
Фреймы и слоты197
Явные фреймы198
Функциональные фреймы199'
V -квантификация- 199
Рассуждения, использующие- объектное представление : 200
П^росочетанне . .. . .200
Функциональные атрибуты202
Автоматические рассуждения; использующие фреймы . . . 203
L. Иерархические рассуждения, использующие фреймы 204
Рассуждения с умолчаниями206
Заключение208
Логика и модифицируемые рассуждения • • . 209
Многочисленные роли логики- . . . 209
Введение -209
Логика как средство для представления знаний и рассуждений . . . 209
Логика как формализм ссылок 213
Неизбежность логики .. 214
Анализ знаний и рассуждений';. 215
Заключение 216
Логика и модифицируемые рассуждения21-7
• 4.2.1. Формализация модифицируемых рассуждений . . 217
Классическая логика и общезначимые рассуждения 217
Характеристики немонотонных логик220
4.2.4.Зацикливание правил немонотонного вывода..223
4.2.5.Полирасширяемость немонотонной системы ...225
4.2.6.Различные формы немонотонных рассуждений..225
4.3.Логики умолчаний ..227
Введение227
■4.3.2.Теории с умолчаниями229
4.3.3.Примеры примененияумолчаний . .■229
■4.3.4.Расширения теорий сумолчаниями231
Примеры расширенийтеорий с умолчаниями...232
Нормальные теории233
■4.3.7.Теория доказательствдля нормальныхтеорий..234
Полунормальные теории236
Наследственные системы с исключениями....237
Модальные логики знания и веры ..........239
Введение239
4.4.2. Некоторые элементарные модальныесистемы..239
4.4.3. Семантика возможных миров242
Немонотонные логики Мак-Дермотта245
'4.5,1. Введение245
Язык логики Мак-Дермотта246
Пример немонотонной аксиоматическойсистемы.247
Примеры252
Ценность логики Мак-Дермотта252
4:6.Автоэпистемические логики253
Введение253
Язык и семантика 254
Характеризация синтаксиса256
Анализ немонотонной логики257
Семантика возможных миров260
’4.6:6. Пример 263
Области "применения265
^. Формальные грамматики и логическое программирование 266
Формальные грамматики и логика . . . 266
Введение266
КС-грамматикн268
Формальное определение КС-грамма.тикн....270
КС-грамматика и хориовские дизъюнкты....274
ОК-грамматикн278
OK-грамматики и логика283
Построение синтаксическогодерева ......287
OK-грамматики в Прологе290
Пример293
Графическое представлениеи стратегии....295
Иерархия Хомского 299
Введение299
Регулярные грамматики300
Конечные автоматы. . • 301
Пример •.304
КС-грамматикиистековые автоматы305
Пример ..308
ГрамматикииязыкиХомскоготипа1. . ..310
МашиныТьюркнганграмматикитипа0 ." . ..311
Формализм усиленных сетей переходов . 314
Введение .;.... .'314
- 5.3.2.Конечные автоматы и диаграммы переходов . . 315
Базовые сети переходов316
Пример318
Рекурсивные сети переходов320
Пример323
Усиленные сети переходов . . . 325
Пример327
Построение синтаксического дерева328
УП-сети и ОК-грамматики330
Пролог и логическое программирование . . 333
Основы языка333
Введение333
Термы и объекты335
Факты и элементарные вопросы337
Конъюнкция340
Переменные ,340
Анонимные переменные 344
Правила . . . 345
Рекурсивные правила348
Дизъюнкция348
Отрнцаине349
Области действия нмеи350
Операторы 351
Алгоритмы Пролога 352
Введение352
Соответствие н унификация354
Вычисление ответа358
Встроенные предикаты362
Отсечение366
Инструментарий ипример371
Введение371
Вычислительные процедуры ........ 371
Списки376
Операции над списками378
Перестановки и сортировки380
Представление списка ввиде разности списков 384
Ввод-вывод385
Примеры ввода-вывода387
Анализ и построение термов389
Объявление оператора391
Поиск в пространстве решений394
Пролог и КС-грамматики . .. . 399
Введение399
Распознавание КС-фраз399
Анализ КС-фраз403
ОК-грамматнкн и атрибутные грамматики . . 407
Литература .411
Предметный указатель418
Уважаемый читатель!
Ваши замечания о содержании книги, её оформлении, качестве перевода н другие просим присылать по адресу: 129820, Москва, И-110, ГСП, 1-й Рижский пер., издательство «Мир».
Научное издание
Андре Тейз. Паскаль Грибомон, Жорж -Лув « др.
ЛОГИЧЕСКИЙ ПОДХОД К ИСКУССТВЕННОМУ ИНТЕЛЛЕКТУ:ОТ КЛАССИЧЕСКОЙ ЛОГИКИ К ЛОГИЧЕСКОМУ
ПРОГРАММИРОВАНИЮ
Заведующий редакцией академик В. И. Арнольд"Зам. зав. редакцией А. С. Попов
Ст. научи, редактор А. А. БряндинскаяМл. научи, редактор Р. И. ПяткинаХудожник В. С. ПотаповХудожественный редактор В. И. ШаповаловТехнический редактор О. Г. Лапко
..Корректор А. Ф. Рыбальченко
И Б № 7329
Сдано -в набор ^.04.90. Подписано к печати 26.11.90. Формат 84X1O87«.
Бумага офсет. № 2. Печать высокая. Гарнитура литературная. Объем 45.75 бум. л. Усл. печ. л. 22,68. Усл. кр.-отт. 22,68. Уч.-изд. л. 19,45.
Иад. № 1/7059. Тираж 20 000 экз. Зак. 493. Цена 2 р. 90 к.
Издательство «Мир» В/О «Совэкспорткннга» Государственного комитетаСССР по печати. 129820, ГСП, Москва, И-110, 1-й Рижский лер., 2
Ленинградская типография № 2 головное предприятие ордена ТрудовогоКрасного Знамени Ленинградского объединения «Техническая книга»нм, Евгении Соколовой Государственного комитета СССР по печати,198052, г, Ленинград, Л-52, Измайловский проспект, 29,
•* «Выводить» здесь синоним для «доказывать».
а| Иное название — правило отделения. — Прим, персе.
*’ См. определение структуры в § 2.2.2. — Прим, перев.
** Или иначе — наследственными. — Прим, перев.
*> Другие названия: грамматики непосредственных составляющих (НС-грамматики), или контекстно-зависимые грамматики. ■— Прим, перев. '
** Случай, когда состояние, или входной символ, или и то и другое ие меняются, тоже может иметь место. — Прим. ред.
** Или, иначе, расширенных. — Прим, перев.
’> Таким образом, здесь н ниже нуль причислен к натуральным числам. —- Прим, перев.
*’ Анализатор — это акцептор, строящий синтаксические деревья воспринятых фраз.