Лекция 3 Основы логики предикатов, логический вывод на языке ПРОЛОГ Основы логики предикатов и логического вывода В естественном языке встречаются более сложные повествовательные предложения, истинность которых может меняться при изменении объектов, о которых идет речь, хотя структура предложений не меняется. n-местным предикатом P(x1..,хn) называется функция Р: Мn -* {истина, ложь}, определенная на наборах длины n элементов некоторого множества М и принимающая значения в области истинностных значений Графическое представление предикатов Правильно построенные формулы (ППФ) логики предикатов — это комбинации атомных предикатов и констант с логическими связками. Они определяются рекурсивно над множеством атомных предикатов с помощью символов операций (связок) ,¬, , скобок и одной дополнительной связки , которая читается «для всех». Рекурсивно ППФ определяются так 1. Атомный предикат есть формула. 2. Если Р — формула, то ¬(P) тоже формула. 3. Если Р, Q — формулы, то (Р => Q) — тоже формула. 4. Если Р — формула, то (x) P тоже формула. 5. Никаких других формул в логике предикатов нет В логике предикатов для сокращения формул используются записи: True для Р Р, False для ¬True (можно рассматривать True и False как логические константы). PvQ для (¬P) Q, P&Q для ¬(¬(P)) v(¬Q)), PQ для (PQ)&(QP), (∃x)P для ¬((x)¬P) Новые логические связки — «для всех» и ∃ — «существует» называются кванторами: — «квантор всеобщности» и ∃ — «квантор существования». Интерпретации Формула логики предикатов является только схемой высказывания. Формула имеет определенный смысл, то есть обозначает некоторое высказывание естественного языка, если существует какая-либо ее интерпретация. Интерпретировать формулу — это значит связать с ней непустое множество М (конкретизировать предметную область), а также указать соответствие: Логический вывод в логике предикатов Рассмотрим доказательное рассуждение «Каждый человек смертен. Конфуций — человек. Следовательно, Конфуций смертен». Представим схему рассуждения. • (Fl) (x) [Человек(х) => Смертен(х)]; • (F2) Человек (Конфуций) • (R) Смертен (Конфуций). Доказательство методом резолюции. Человек(Конфуций) (x)¬Человек(x) v Смертен(x) ¬Смертен(Конфуций) ¬Человек(Конфуций) Логическое программирование Логическое программирование — это использование дедуктивных процедур (процедур логического вывода) как механизма вычислений. Программа представляет собой множество аксиом, а вычисление — это конструктивный вывод целевого утверждения из программы. В логическом программировании (мы будем говорить о языке ПРОЛОГ) используется только одно правило вывода — резолюция. С помощью резолюции из множества формул S = {F19..., Fk} и отрицания формулы R выводится пустой дизъюнкт, то справедливо F,F2.. .Fk => R Логический вывод в ПРОЛОГЕ В этом языке исходное множество формул, для которого ищется пустая резольвента, представляется в виде так называемых «дизъюнктов Хорна». Хорновские дизъюнкты — это формулы одного из трех типов: отрицание ¬(B1, ...,Bm) факт: А импликация (правило): A <=(B1, ..., Вm), где А, В1,... — литеры — атомные высказывания или предикаты с отрицаниями или без них в нормальной предваренной форме только с (подразумеваемыми) кванторами всеобщности для всех переменных. Пусть в нотации, близкой языку ПРОЛОГ, записана программа: Программа_1:: 1:птица(Х) откладывает_яйца(Х), имеет_крылья(Х) 2:рептилия(Х) откладывает_яйца(Х), имеет_чешую(Х) 3:откладывает_яйца(ворона) 4: откладывает_яйца(питон) 5: имеет_чешую(питон) 6: имеет_крылья(ворона) 7:?птица(ворона) 7: ?птица (ворона) Резольвента строк 7 и 1; X = ворона 8: ?откладывает_яйца (ворона), ?имеет_крылья (ворона) Резольвента строк 8 и 3 9: ?имеет__крылья (ворона) Резольвента строк 9 и 6 10: Успех: пустая резольвента Экспертные системы Возможности логического программирования выполнять логический вывод с получением нового знания на основе статического описания ситуации широко используется в разнообразных «экспертных системах» — системах поддержки принятия решений. Рассмотрим простейшую экспертную систему в области химического синтеза. Предположим, что мы можем выполнить следующие химические реакции: СО2+Н2О Н2СО3, MgO+H2 Mg+H2O, С+О2 СО2. Любая возможная химическая реакция в этой интерпретации предстает как импликация, например, для описываемой реакции: СО2 & Н2О => Н2СО3.