Теоретико-модельная семантика логических программ

C.Н. ВАСИЛЬЕВ

ОСНОВАНИЯ ЛОГИЧЕСКОГО

ПРОГРАММИРОВАНИЯ

О Г Л А В Л Е Н И Е

Введение

§ 1. Логические программы

§ 2. Теоретико-модельная семантика логических программ

§ 3. Алгоритм унификации

§ 4. Наименьшая эрбрановская модель

§ 5. Обоснование метода ВЛП-резолюции

§ 6. Независимость правила выбора

§ 7. О процедурах ВЛП-опровержения

Заключение

Использованная литература

Введение

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

важных направлений того раздела кибернетики, за которым закрепилось наименование «искусственный интеллект» (ИИ) [1]. Многие другие направления исследований в области ИИ, нацеленные, например, на создание так называемых экспертных систем, «интеллектуальных» баз данных, систем поддержки рассуждений по умолчанию (default reasoning), систем объяснения наблюдений, в том числе в проблематике диагностики и т.д., также стимулировали появление и развитие логического программирования.

Оказалось, что традиционные языки программирования (типа ФОРТРАН, АЛГОЛ, ПЛ-1 и др.) недостаточно эффективны при создании экспериментальных систем ИИ, прежде всего, из-за необходимости исчерпывающего описания на этих языках алгоритма решения всей задачи. Этот недостаток был замечен на фоне результатов по автоматическому доказательству теорем, возбудивших надежду на возможность разработки языков программирования весьма высокого уровня, требующих от пользователя, в основном, описания того, ЧТО нужно сделать (т.е. требующих формулировки задачи: ДАНО …, ТРЕБУЕТСЯ …), а не того, КАК это делается.

В начале 70-х гг. ХХ в. Р. Ковальским и А. Колмерауром была высказана идея, что классическая логика (а именно язык исчисления предикатов) может быть использована как язык программирования. До этого логика использовалась лишь как язык утверждений (спецификаций) либо как дедуктивный аппарат, например, в вопросно-ответных системах. Явное указание возможности процедурной интерпретации языка логики привело к созданию языков программирования типа ПРОЛОГ (PROgramming in LOGic – программирование в логике), и первый PROLOG-интерпретатор бы создан в 1972 г.

ПРОЛОГ нашел ряд приложений в задачах ИИ, послужив в начале 80-х гг. ХХ в. [18] одной из причин сверхоптимистических прогнозов в отношении вычислительных систем 5-го поколения, а сегодня, как это часто бывает, «на волне популярности» его характеристики, в том числе и недостатки (см. Заключение), часто неоправданно распространяют на логический подход (к ИИ) в целом. Не следует путать ПРОЛОГ с вообще логическим программированием, а последнее – с логическим подходом к программированию. ПРОЛОГ основывается на логическом программировании примерно как ЛИСП – на Теоретико-модельная семантика логических программ - student2.ru -исчислениях, а логическое программирование – лишь одно направление в том широком фронте исследований, который называется логическим подходом к программированию.

Новое дыхание логическому подходу в целом придаёт разработка исчисления позитивно-образованных формул [19]. Наконец, в качестве настольной рекомендуется книга [22] – прекрасное учебное пособие, прежде всего, тем, кто, уже имея понятие о программировании (самостоятельно либо по школе), намерен стать профессионалом в области информационных технологий. Книга [22] по-настоящему будит мысль читателя.

Применение механизмов дедукции логического программирования разнообразны; например, оно является базой так называемого абдуктивного программирования, ориентированного на автоматическое программирование гипотез [23 – 28].

Указания рекомендуются студентам III – V курсов при изучении спецкурса «Методы искусственного интеллекта и принятия решений». Более подробное изложение ПРОЛОГа см. также в [20, 21].

Логические программы

Определим синтаксис логических программ. Термы и атомы (т.е. атомарные или элементарные формулы) определяются как в языке исчисления предикатов (первого порядка) [2, 3]. Неформально говоря, термы – это переменные, константы и выражения вида Теоретико-модельная семантика логических программ - student2.ru , где каждое Теоретико-модельная семантика логических программ - student2.ru – терм, а Теоретико-модельная семантика логических программ - student2.ruТеоретико-модельная семантика логических программ - student2.ru - арный функциональный символ. Атом – это всякое выражение вида Теоретико-модельная семантика логических программ - student2.ru , где Теоретико-модельная семантика логических программ - student2.ru – термы, Теоретико-модельная семантика логических программ - student2.ruТеоретико-модельная семантика логических программ - student2.ru - арный предикатный символ.

Дизъюнктомназывается всякое выражение вида Теоретико-модельная семантика логических программ - student2.ru , где Теоретико-модельная семантика логических программ - student2.ru – атомы Теоретико-модельная семантика логических программ - student2.ru .

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

В языке исчисления предикатов дизъюнкту Теоретико-модельная семантика логических программ - student2.ru отвечают, например, формулы вида

Теоретико-модельная семантика логических программ - student2.ru (1)

или

Теоретико-модельная семантика логических программ - student2.ru (2)

или

Теоретико-модельная семантика логических программ - student2.ru (3)

где Теоретико-модельная семантика логических программ - student2.ru – все переменные рассматриваемого дизъюнкта. Если, в частности, Теоретико-модельная семантика логических программ - student2.ru то имеем так называемую цель (целевой дизъюнкт) Теоретико-модельная семантика логических программ - student2.ru которой отвечают, например, формулы

Теоретико-модельная семантика логических программ - student2.ru

или

Теоретико-модельная семантика логических программ - student2.ru

или

Теоретико-модельная семантика логических программ - student2.ru

где Л – тождественно ложный предикат.

Если Теоретико-модельная семантика логических программ - student2.ru дизъюнкт называется программным( Теоретико-модельная семантика логических программ - student2.ru – заголовок, Теоретико-модельная семантика логических программ - student2.ru – тело дизъюнкта). Если к тому же Теоретико-модельная семантика логических программ - student2.ru то программный дизъюнкт называется фактом. Если Теоретико-модельная семантика логических программ - student2.ru и Теоретико-модельная семантика логических программ - student2.ru то программный дизъюнкт называется правилом (редуктором).

Хорновские дизъюнкты – это дизъюнкты, у которых Теоретико-модельная семантика логических программ - student2.ru или Теоретико-модельная семантика логических программ - student2.ru При Теоретико-модельная семантика логических программ - student2.ru имеем пустой дизъюнкт, обозначаемый □ (в логике ему отвечает предикат Л).

Справедливы включения понятий, представленные на рис. 1.

Теоретико-модельная семантика логических программ - student2.ru

Логической программой Теоретико-модельная семантика логических программ - student2.ru(или просто программой, поскольку программы в другом смысле рассматриваться не будут) называется всякое конечное (непустое) множество программных дизъюнктов.

Программа Теоретико-модельная семантика логических программ - student2.ru может мыслиться как набор нелогических (собственных) аксиом теории первого порядка, а цель – как отрицание формулы

Теоретико-модельная семантика логических программ - student2.ru (4)

логическая выводимость которой из аксиом программы нас интересует. Эта выводимость, очевидно, будет иметь место тогда и только тогда, когда из аксиом программы Теоретико-модельная семантика логических программ - student2.ru и формулы цели, т.е. Теоретико-модельная семантика логических программ - student2.ru выводимо противоречие Л. Именно на опровержение (на доказательство «от противного») и ориентировано большинство известных систем автоматического доказательства теорем.

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

Пример 1. Пусть дана программа Теоретико-модельная семантика логических программ - student2.ru

Теоретико-модельная семантика логических программ - student2.ru (5)

Теоретико-модельная семантика логических программ - student2.ru (6)

Теоретико-модельная семантика логических программ - student2.ru (7)

где ОТЕЦ, ДЕДУШКА – два предикатных символа, ИВАН, ПЕТР – константы, Теоретико-модельная семантика логических программ - student2.ru – переменные. Задание программе цели

Теоретико-модельная семантика логических программ - student2.ru (8)

означает желание получить ответ на вопрос «Кто является дедушкой Семёна?» на основе описания предметной области (отец отца всякого человека является дедушкой этого человека) и реального состояния объектов, функций и отношений, входящих в эту область ,отцом Петра является Иван, а отцом Семёна – Пётр).

Программе Теоретико-модельная семантика логических программ - student2.ru из примера 1 отвечает теория первого порядка с тремя собственными аксиомами (5), (6) и

Теоретико-модельная семантика логических программ - student2.ru (9)

Мы можем установить выводимость в этой теории формулы Теоретико-модельная семантика логических программ - student2.ru путем вывода противоречия в теории, которая отличается от упомянутой лишь дополнительно введённой аксиомой

Теоретико-модельная семантика логических программ - student2.ru (10)

отвечающей цели (8).

Упражнения:

1. Какой частный вид примут формулы (1 – 3) для фактов?

2. Постройте в теории первого порядка [2, 3] с собственными аксиомами (5), (6), (9) вывод формулы Теоретико-модельная семантика логических программ - student2.ru а в теории с собственными аксиомами (5), (6), (9), (10) – вывод противоречия.

Теоретико-модельная семантика логических программ

Пусть пока Теоретико-модельная семантика логических программ - student2.ru – произвольная формула исчисления предикатов Теоретико-модельная семантика логических программ - student2.ru не обязательно «дизъюнктивная формула, т.е. не обязательно отвечает дизъюнкту [2, 3].

Для Теоретико-модельная семантика логических программ - student2.ru понятия интерпретации, истинностной оценки, выполнимости, общезначимости, невыполнимости (противоречивости) модели понимаются как обычно [2, 3].

В этих терминах, задавая цель Теоретико-модельная семантика логических программ - student2.ru программе Теоретико-модельная семантика логических программ - student2.ru , мы тем самым просим показать, что множество хорновских дизъюнктов Теоретико-модельная семантика логических программ - student2.ru понимаемое как конъюнкция отвечающих этим дизъюнктам «хорновских» формул, невыполнимо, т.е. любая интерпретация множества Теоретико-модельная семантика логических программ - student2.ru не является для него моделью.

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

Введем некоторые определения.

Литерой называется атом или отрицание атома.

Выражением (в строгом смысле слова) называется терм, литера или дизъюнкт. Выражение, не содержащее переменных, называется основным выражением. Подвыражением выражения Теоретико-модельная семантика логических программ - student2.ru называется всякое выражение, встречающееся в Теоретико-модельная семантика логических программ - student2.ru (может быть, просто совпадающее с Теоретико-модельная семантика логических программ - student2.ru ).

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

Пример 2. Для программы Теоретико-модельная семантика логических программ - student2.ru (5) – (7) (т.е. конъюнкции формул (5), (6), (9)) Теоретико-модельная семантика логических программ - student2.ru .

Пример 3. Для программы Теоретико-модельная семантика логических программ - student2.ru вида

Теоретико-модельная семантика логических программ - student2.ru

Теоретико-модельная семантика логических программ - student2.ru

э-универсум Теоретико-модельная семантика логических программ - student2.ru – бесконечное множество.

Эрбрановским базисом Теоретико-модельная семантика логических программ - student2.ru для формулы Теоретико-модельная семантика логических программ - student2.ru называется множество всех основных атомов, которые можно образовать с помощью предикатных символов из Теоретико-модельная семантика логических программ - student2.ru и термов из Теоретико-модельная семантика логических программ - student2.ru .

Пример 4. Для программы Теоретико-модельная семантика логических программ - student2.ru из примера 3 Теоретико-модельная семантика логических программ - student2.ru В примере 2 Теоретико-модельная семантика логических программ - student2.ru конечно.

Интерпретация Теоретико-модельная семантика логических программ - student2.ru для формулы Теоретико-модельная семантика логических программ - student2.ru [2, 3] называется эрбрановской интерпретацией (э-интерпре-тацией), если:

а) областью интерпретации Теоретико-модельная семантика логических программ - student2.ru является Теоретико-модельная семантика логических программ - student2.ru ;

б) константам из Теоретико-модельная семантика логических программ - student2.ru в силу Теоретико-модельная семантика логических программ - student2.ru отвечают «они сами»;

в) каждому Теоретико-модельная семантика логических программ - student2.ru -арному функциональному символу Теоретико-модельная семантика логических программ - student2.ru из Теоретико-модельная семантика логических программ - student2.ru в силу Теоретико-модельная семантика логических программ - student2.ru отвечает операция, которая кортежам термов Теоретико-модельная семантика логических программ - student2.ru ставит в соответствие термы Теоретико-модельная семантика логических программ - student2.ru

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

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

Теоретико-модельная (она же декларативная) семантика логических программ совпадает с теоретико-модельной семантикой соответствующих формул логики.

Пусть Теоретико-модельная семантика логических программ - student2.ru – конечное множество дизъюнктов (конъюнкция дизъюнктивных формул).

Предложение 1.Если Теоретико-модельная семантика логических программ - student2.ru выполнимо, то Теоретико-модельная семантика логических программ - student2.ru имеет э-модель.

Следствие 1. Теоретико-модельная семантика логических программ - student2.ru невыполнимо тогда и только тогда, когда Теоретико-модельная семантика логических программ - student2.ru не имеет э-модели.

Упражнения:

3. Докажите, что любая логическая программа непротиворечива (имеет модель).

4. Для формулы вида

Теоретико-модельная семантика логических программ - student2.ru

Теоретико-модельная семантика логических программ - student2.ru

а) покажите, что любая интерпретация с конечной областью является моделью;

б) укажите интерпретацию, не являющуюся моделью.

5. Проверьте, что основной дизъюнкт Теоретико-модельная семантика логических программ - student2.ru истинен в э-интерпретации I тогда и только тогда, когда хотя бы при одном Теоретико-модельная семантика логических программ - student2.ru , или хотя при одном Теоретико-модельная семантика логических программ - student2.ru

6.На примере формулы Теоретико-модельная семантика логических программ - student2.ru вида Теоретико-модельная семантика логических программ - student2.ru убедитесь, что для произвольных формул Теоретико-модельная семантика логических программ - student2.ru предложение 1 и следствие 1 несправедливы.

Алгоритм унификации

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

Подстановка– это любое конечное множество Теоретико-модельная семантика логических программ - student2.ru где Теоретико-модельная семантика логических программ - student2.ru – попарно различные переменные, Теоретико-модельная семантика логических программ - student2.ru – термы и при каждом Теоретико-модельная семантика логических программ - student2.ru отлично от Теоретико-модельная семантика логических программ - student2.ru Если все Теоретико-модельная семантика логических программ - student2.ru – основные термы, то подстановка называется основной. Чистая подстановка – это подстановка, в которой все Теоретико-модельная семантика логических программ - student2.ru суть переменные.

Пусть Теоретико-модельная семантика логических программ - student2.ru – подстановка, Теоретико-модельная семантика логических программ - student2.ru – выражение (или множество выражений). Через Теоретико-модельная семантика логических программ - student2.ru обозначается результат одновременной замены в Теоретико-модельная семантика логических программ - student2.ru всех вхождений Теоретико-модельная семантика логических программ - student2.ru на Теоретико-модельная семантика логических программ - student2.ru . Теоретико-модельная семантика логических программ - student2.ru называется примером выражения Теоретико-модельная семантика логических программ - student2.ru

Если все переменные из Теоретико-модельная семантика логических программ - student2.ru встречаются в множестве Теоретико-модельная семантика логических программ - student2.ru то Теоретико-модельная семантика логических программ - student2.ru называется подстановкой для всех переменных выражения Теоретико-модельная семантика логических программ - student2.ru При этом если Теоретико-модельная семантика логических программ - student2.ru – основная подстановка, то Теоретико-модельная семантика логических программ - student2.ru называется основным примеромвыражения Теоретико-модельная семантика логических программ - student2.ru

Если Теоретико-модельная семантика логических программ - student2.ru – чистая подстановка для всех переменных, выражения Теоретико-модельная семантика логических программ - student2.ru и Теоретико-модельная семантика логических программ - student2.ru попарно различны, то Теоретико-модельная семантика логических программ - student2.ru называется вариантом выражения Теоретико-модельная семантика логических программ - student2.ru

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

Теоретико-модельная семантика логических программ - student2.ru

Вычеркиванием элементов Теоретико-модельная семантика логических программ - student2.ru у которых Теоретико-модельная семантика логических программ - student2.ru или Теоретико-модельная семантика логических программ - student2.ru

Пример 5. Пусть Теоретико-модельная семантика логических программ - student2.ru Тогда Теоретико-модельная семантика логических программ - student2.ru

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

Пример 6. Множество Теоретико-модельная семантика логических программ - student2.ru унифицируемо, так как подстановка Теоретико-модельная семантика логических программ - student2.ru является его унификатором: Теоретико-модельная семантика логических программ - student2.ru (одноэлементное множество.

Унификатор Теоретико-модельная семантика логических программ - student2.ru называется наиболее общим унификатором (ноунификатором) для Теоретико-модельная семантика логических программ - student2.ru если для любого унификатора Теоретико-модельная семантика логических программ - student2.ru множества Теоретико-модельная семантика логических программ - student2.ru существует подстановка Теоретико-модельная семантика логических программ - student2.ru такая, что Теоретико-модельная семантика логических программ - student2.ru

Для непустого множества выражений Теоретико-модельная семантика логических программ - student2.ru определим множество рассогласований Теоретико-модельная семантика логических программ - student2.ru Оно получается выявлением первой (слева) позиции, на которой не для всех выражений из Теоретико-модельная семантика логических программ - student2.ru стоит один и тот же символ, и затем выписыванием из каждого выражения Теоретико-модельная семантика логических программ - student2.ru того подвыражения, которое начинается с символа, занимающего эту позицию. Множество выписанных выражений и есть Теоретико-модельная семантика логических программ - student2.ru

Пример 7. В множестве Теоретико-модельная семантика логических программ - student2.ru рассогласование начинается с 5-й позиции и Теоретико-модельная семантика логических программ - student2.ru

Алгоритм унификации множества выражений Теоретико-модельная семантика логических программ - student2.ru :

1. Полагаем Теоретико-модельная семантика логических программ - student2.ru где Теоретико-модельная семантика логических программ - student2.ru – пустая подстановка.

2. Если Теоретико-модельная семантика логических программ - student2.ru – одноэлементное множество, то останавливаемся, и подстановка Теоретико-модельная семантика логических программ - student2.ru есть искомый но-унификатор для Теоретико-модельная семантика логических программ - student2.ru иначе строим Теоретико-модельная семантика логических программ - student2.ru

3. Если в Теоретико-модельная семантика логических программ - student2.ru содержатся элементы Теоретико-модельная семантика логических программ - student2.ru такие что Теоретико-модельная семантика логических программ - student2.ru – переменная, Теоретико-модельная семантика логических программ - student2.ru – терм и Теоретико-модельная семантика логических программ - student2.ru не встречается в Теоретико-модельная семантика логических программ - student2.ru то переходим на шаг 4. В противном случае останавливаемся, заключая, что Теоретико-модельная семантика логических программ - student2.ru не унифицируемо.

4. Полагаем, что Теоретико-модельная семантика логических программ - student2.ru

5. Полагаем Теоретико-модельная семантика логических программ - student2.ru и переходим на шаг 2.

Пример 8. Если Теоретико-модельная семантика логических программ - student2.ru то по алгоритму получается но-унификатор

Теоретико-модельная семантика логических программ - student2.ru

Пример 9. Если Теоретико-модельная семантика логических программ - student2.ru то получается, что Теоретико-модельная семантика логических программ - student2.ru не унифицируемо.

Теорема 1 [4]. Для любого конечного (непустого) множества Теоретико-модельная семантика логических программ - student2.ru алгоритм унификации всегда заканчивает работу, причем если Теоретико-модельная семантика логических программ - student2.ru не унифицируемо, то – на шаге 3, если же Теоретико-модельная семантика логических программ - student2.ru унифицируемо, то – на шаге 2, и последнее Теоретико-модельная семантика логических программ - student2.ru есть но-унификатор для Теоретико-модельная семантика логических программ - student2.ru

Доказательство теоремы 1 можно найти в монографии [5].

Упражнения:

7. Постройте композицию подстановок

Теоретико-модельная семантика логических программ - student2.ru

8. Пусть Теоретико-модельная семантика логических программ - student2.ru – произвольное выражение, Теоретико-модельная семантика логических программ - student2.ru – любые подстановки. Докажите свойства подстановок:

а) Теоретико-модельная семантика логических программ - student2.ru

б) Теоретико-модельная семантика логических программ - student2.ru

в) Теоретико-модельная семантика логических программ - student2.ru

9. Пусть Теоретико-модельная семантика логических программ - student2.ru – подстановки и существуют подстановки Теоретико-модельная семантика логических программ - student2.ru такие, что Теоретико-модельная семантика логических программ - student2.ru Показать, что существует чистая подстановка Теоретико-модельная семантика логических программ - student2.ru такая, что Теоретико-модельная семантика логических программ - student2.ru

10. Доказать, что множество Теоретико-модельная семантика логических программ - student2.ru которое строится по алгоритму унификации, совпадает с множеством Теоретико-модельная семантика логических программ - student2.ru

11. Выяснить унифицируемость, а в случае унифицируемости найти но-унификатор множества Теоретико-модельная семантика логических программ - student2.ru

Теоретико-модельная семантика логических программ - student2.ru

Теоретико-модельная семантика логических программ - student2.ru

Теоретико-модельная семантика логических программ - student2.ru

Наши рекомендации