Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по математической логике3.doc
Скачиваний:
213
Добавлен:
02.05.2014
Размер:
1.58 Mб
Скачать
    1. Построение доказательств в логике предикатов

      1. 1.

Основной задачей логики предикатов является установление истинности предикатных тождеств и клауз. Обозначим через Рiкакой-либо предикат с произвольным числом аргументов, а черезqiсоответствующую ему кванторную группу. Тогда, например, закон дистрибутивности примет вид:

q1P1 v (q2 Р2 & q3 Р3) = (q1 P1 v q2 P2) & (q1 P1 v q3 P3).

В том, что он выполняется для одноместных предикатов, можно убедиться через процедуру конкретизации:

x = a, b ; q1 = x, Р1 = A(x);

y = с, d ; q2 = y, P2 = B(y);

z=e,f;q3 =zP3 =C(z);

[A(a) & А(b)]v([В(с )vB(d)] & [С(е) & С(f)]) =

= ([А(a) & А(b)]v[В(с)vB(d)]) & ([А(a) & А(b)]v[С(e) & С(f)])

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

Те же самые рассуждения могут быть проведены и в отношении логики высказываний. Она отличается от логики Буля аксиомой порядка-

q1P1, q2 Р2=>q1P1

Процедура конкретизации сводит предикатную аксиому порядка к npocтому высказыванию, так что если клауза верна для высказываний, она будет справедлива и для предикатов.

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

А1, -А2 => 0 записать как А2, -А1 => 0 .

Перейдем к анализу конкретных предикатных выражений.

Пример 1.Пусть дано следующее тождество:

(хyР(х, у)vuwР(w,u)) & (wuP(w,u) &

& yxР(х, у)) =хyP(y,x) &uwР(u,w) .

Здесь можно ввести следующие обозначения:

А = xу Р(x, у) =wuР(w,u) =uwP(u,w)

B = u w P(w, u) = y x P(x, y) = x y P(y, x)

В этих обозначениях тождество выглядит следующим образом:

(-AvВ) & (А & В) = В & А .

Производя элементарные преобразования, мы можем убедиться в справедли­вости последнего равенства. Следовательно, и исходное тождество составлено верно.

Пример 2. Пусть дана предикатная клауза:

xу Р(х, у) ->wР(a,w),xР(а, х) ->

-> хyР(у, х) =>uwР(u,w) ->wuP(u,w).

Введем обозначения:

А = ху Р(х, у) =uwP(u,w) , В =wP(a,w) =xР(а,x) ,

С = хyР(у, х) =wuР(u,w) .

Получим:

А -> В, В -> С => А -> С.

Как известно, формула транзитивности верна, следовательно, и предикатная клауза тоже верна.

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

Пример 3.Доказать истинность клаузы:

wuР(u,w) ->uwP(u,w),ху Р(х, у) =>uР(u,u).

ведем обозначения:

A1 =хyР(x, у), А2 =wuР(u,w),

B1 = u w Р(u, w), B2 = u Р(u, u)

В этих обозначениях клауза будет иметь вид:

А2 -> В1, А1 => В2 или -А2 vВ1, А1, -В2 => 0.

По методу резолюций противоречие возможно, если возможны два других противоречия -

А1, -А2 => 0 , B1, -В2 => 0 .

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

хyР(х, у), -yх Р(х, у) => 0,xyР(х, у), -xР(x, х) => 0 .

Таким образом, истинность исходной клаузы можно считать установленной.

Пример 4.Доказать истинность клаузы:

zВ(z,z) ->х –(у В(х, у)),zy-А(z, у) ->uwB(w,u),хA(b, х)=>

zx-В(x,z) &zу -А(z,y)

Процедура идентификации приводит к следующим выкладкам:

A1 = z y A(z, y), A2 = x A(b, x),

B1 = u w B(w, u) = z x B(x, z)

В2 = zВ(z,z), В3 =хyB(x,y);

В2 -> -В3, -А1 -> B1, -А2 => -B1 & -A1; -В2v-В3,A1vВ1, -А2 => 0.

A1, -А2 => 0,xу А(х, у), -(у А(k, у) => 0,

В1, -В2 => 0, xyВ(х, у), -(xВ(х,x)) => О,

B1, -В3 => 0,xyB(х, у), -(xу В(х, у)) => 0.

Отсюда следует истинность исходной клаузы.

Пример 5.Докажем справедливость клаузы:

xyА(х, у)vyxВ(х, у)vurwС(u,r,w),yxA(y,x) ->

-> x y C(x, y, b), x y B(y, x) -> u r С(u, r, a) =>

=> xyzC(x,z, у) &urwС(u,r,w).

Доказательство:

A = x y A(x, у) = y x A(y, x), В = y x В(x, у) = x y B(y, x),

C' = x y z C(x, z, y),

C" = u r w C(u, r, w),

C1 = u r C(u, r, a),

C2 = x y C(x, y, b),

C3 =urwС(u,r,w).

AvВvC3,AvC2, -ВvC1 => С' & С" .

Воспользуемся свойством булеана:

С = xyzС(х, у,z) =inf(С', С") => С' & С" .

Тогда соответствующие противоречия для компенсации С1, С2 и С3 будут удовлетворены элементом С:

С1, -С => 0 , С2, -С => 0, С3, -С => 0.

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

Пример 6.Доказать истинность клаузы:

xyА(х, у, с)vyzА(a, у,z),у А(a, у, с)vz-A(b,a,z),

x z A(x, a, z) v y z A(b, y, z) => x z A(x, b, z).

Доказательство:

-A' = x y A(x, y, c), B' = x z A(x, a, z),

-A" = y z -A(a, у, z), В" = y z A(b, y, z),

A=у А(a, у, с) =inf(А', А"), В =z-А(b, а,z) = -sup(В', В"),

С = x z A(x, b, z); -A' v -A", inf(A',A") v -sup(В', В"), В' v В" => С .

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

Пример 7. Любая семантика логики высказываний может быть выражена в предикатной форме. В качестве примера возьмем легенду из п. 1.6. Для нее введем следующие предикаты:

А(х) — х говорит правду,

B(x,y) –x находится внутри помещения y,

C(x,z) —x способен слышать звуки z.

Область определения переменных:

x= {a,b}, гдеa—кассир,b—водитель;

у= {с, ...}, где с — комната отдыха;

z= {d, ...}, гдеd—звуки выстрелов.

Содержание посылок и заключений следователя раскрыто в п. 1.6; здесь же приведем только их предикатную запись и необходимые разъяснения:

P1 = А(a) ->B(b, с), Р2 = В(b, с) ->zС(b,z),

Р3 = zС(Ъ,z) -> С(b,d), Р4 = А(b) -> -С(b,d).

В предикатной форме посылка Р3 является тавтологией, так как квантор существования можно расписать:

Р3 = z -C(b, z) v C(b, d) = -C(b, d) v ... v C(b, d) = l.

Тавтология не влияет на процедуру установления истинности клаузы и поэтомyможет быть удалена из перечня посылок, что мы и сделаем. Использование канторов позволяет также несколько иначе проинтерпретировать заключениеC1: «не все х говорят правду» или «существует х, который говорит ложь» —

C1 = А(a) -> -А(b) = -A(a) v -А(b) = x -А(x) = -x A(x) .

ложное второе следствие С2 тоже может быть записано через кванторы двумя квивалентными способами: «все х говорят правду» или «нет ни одного х, который бы обманывал» —

С2 = А(a) & А(b) =xA(x) =х А(х) .

Формальная запись всей легенды без Р3 и с заключением С1 будет:

А(a) -> В(b, с), В(b, с) ->zС(b,z), А(b) -> -C(b,d) =>x-А(x).

Истинность ее установим методом резолюций:

-А(a)vВ(b, с), -B(b, с)vzС(b,z), -А(b)v-C(b,d),х А(х) => 0.

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

B(b, с) => В(b, с),zC(b,z) => С(b,d),xA(x) => А(а),xА(x) => А(b).

Пример 8.Дана следующая простая легенда:

-Если лво« повсюду ходит за Петром, а Петр находится в институте, то где же удет находиться Иван?

Р(*, у) — « х находится там, где у » 'оставим клаузу:

Уг (Р(Петр, z) -> Р(Иван,z)),. Р(Петр, институт) => 3z(Р(Иван,z).

[о существу, здесь доказывается следующее предложение: существует ли такое есто z, где находился бы Иван. Преобразуем исходную клаузу в противоречие:

Р(Петр, z)vР(Иван,z), Ґ(летр, институт), Р(Иван,z) => 0. десь и ниже кванторы общности мы будем опускать, поскольку кванторы суще-

Р(Петр, z)vР(Иван,z) Р(Иван, г)

Рис. 1.26

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

Однако метод резолюций можно модифицировать так, чтобы итогом доказа­тельства был бы не ноль, а непосредственно ответ в предикатной форме: Heatнаходится в институте. Этого можно достичь, если к тому, что требуется дока­зать, прибавить через дизъюнкцию противоположное утверждение, образова! таким образом тавтологию:

Р(Яе?йн, г) vР(Иван, г).

Тогда дерево логического вывода будет выглядеть так, как это показано ш рис. 1.27.

Р(летр, z)vР(Ивон,

Р(Иван, г) vР(Иван, г)

Р(летр, г) vР(Иван,z) Р(Петр, институт)

Р(Иван, институт)

Рис. 1.27

Большинство задач с использованием предикатов носит поисковый характер Поисковые задачи реализуются средствами языка логического программирова ния — ПРОлОГ. Остановимся на основных структурных и функциональны элементах этого языка.

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

С ^ Bj, В2,

Каждая из посылок В, представляет собой подцель основной цели С и зависит, в свою очередь, от других правил^-.

В] с= Аи, А!2, ... , В2 с= А21, А22, ...

Впрочем, в роли посылок В, могут выступать не клаузы, а элементарные вы­сказывания — факты. Далее посылки А,-, опять могут быть либо заголовками но­вых правил, либо фактами. Так образуется иерархическая структура древовидной формы. В логических деревьях уже не возникает описанных выше парадоксов.

В ПРОл ОГе реализована процедура унификации, с помощью которой произво­дится сравнение цели с правилами, а правила сопоставляются с фактами. В резу­льтате унификации переменным присваиваются конкретные значения так, что предикат нели становится истинным фактом в случае положительного исхода. Чтобы понять, как осуществляется унификация, разберем конкретный пример программы.

Пример 9. Имеется следующая легенда:

Ивана интересуют компьютеры, книги и автомобили. Петра интересует нечто, что интересует Ивана, но если это нечто является техникой и если это произведе­но в России. Известно, что компьютеры и автомобили — это техника. Кроме того, известно, что компьютеры производятся в Америке, а автомобили — в Америке и России. Вопрос: «Что интересует Петра?»

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

Программа:

1) интерес (Иван, компьютеры). A(i,a)

2) интерес (Иван, книги). A(i,b)

3) интерес (Иван, автомобили). A(i, с)

4) интерес (Петр, х) <= А(р, х)

5) <= интерес (Иван, х), А(«, ле)

6) техника (х), Т(х)

7) произведено (х, Россия). Р(*, г)

8) техника (компьютеры). Т(а)

9) техника (автомобили). Т(с)

10) произведено (компьютеры, Америка). Р(я, s)

11) произведено (автомобили, Америка). Р(с, s)

12) произведено (автомобили, Россия). Р(с, г) Цель: 13) интерес (Петр, х). А(р, х)

A(i, и), А(г, Ь), А(/, с), Т(в), Т(с), А(р, *)vA(i,x)vvТ(х)vР(х, г), Р(д, 5), Р(с,s), Р(с, г),Afc», х) => О, Ноль можно получить только в том случае, если х = с . Тогда

нейтрализуется предикатами под номерами 3, 9, 12 и 13. Поискнужного знамени х как раз и осуществляется через процедуру унификации, которую можно отеле дить путем трассировки программы. Трассировка — это пошаговое лротоколирс вание процесса выполнения программы. Приведем трассировку нашей nporpaivмы:

1. В: цель ()- 13,

2. Б: интерес (Петр, _ ) — 1,

3. П: интерес (Петр, _ ) — 2,

4. П: интерес (Петр, _ ) — 3,

5. У: интерес (Петр, _ ) — 4,

6. В: интерес (Иван, _ ) — 5,

7. У: интерес (Иван, компьютеры} — 1 у,

8. В: техника (компьютеры} — 6,

9. У: техника (компьютеры] — 8,

10. В: произведено (компьютеры, Россия) — 7,

11. П: произведено (компьютеры, Россия) — 10,

12. П: произведено (компьютеры, Россия) — 11,

13. Н: произведено (компьютеры, Россия) — 12,

14. П: интерес (Иван, _ ) — 5,

15. У: интерес (Иван, книги) — 2 у,

16. В: техника (книги) — 6,

17. П: техника (книги) — 8,

18. Н: техника (книги) — 9,

19. П: интерес (Иван, _) — 5,

20. У: интерес (Иван, автомобили) — 3,

21. В: техника (автомобили) — 6,

22. П: техника (автомобили) — 8,

23. У: техника (автомобили) — 9,

24. В: произведено (автомобили, Россия) — 7,

25. П: произведено (автомобили, Россия) — 10,

26. П: произведено (автомобили, Россия} — 11,

27. У: произведено (автомобили, Россия} — 12,

28. У: цель ( ) ~ 13.

Здесь использованы следующие обозначения: В — вызов нового предиката; П — повторный вызов предиката; У — успешное завершение процедуры унифи­кации, т.е. вызванный предикат отвечает какому-либо факту; Н — неуспешное завершение унификации; у — указатель, который говорит о том, что существует по крайней мере еще один факт с подходящей унификацией. Символ подчерки­вания на месте х называется анонимной переменной и полностью заменяет х при трассировке программы. Строка трассировки заканчивается числом, отвечаю­щим номеру листинга программы.

Для того чтобы ответить на вопрос «Что интересует Петра?» или в предикат­ной форме — интерес (Петр, х), ПРОлОГ-система ищет факты и заголовки пра­вил, сопоставимые с целью. Поиск всегда начинается с первой строки програм­мы. Первые три факта несопоставимы с целью; далее следует правило, заголовок которого заменяется на три подцели. В строке 6 вызывается первая подцель. За­тем ПРОлОГ-система возвращается в начало программы, где ее ожидает «успех». Выставляется указатель «у», к которому система вернется в случае «не­успеха», который может появиться в другом месте программы. В строке 8 произ­водится вызов второй подцели — техника (компьютеры), для которой тут же на­ходится подходящий факт (строка 9). Однако для третьей подцели — произведено (компьютеры, Россия) — нужного факта не находится (строка 13). Тогда пере­менная х освобождается от своей прежней конкретизации (компьютеры) и при­нимает новое значение — книги. Эта конкретизация не удовлетворяет вторую подцель (строка 18). Переменная вновь освобождается и принимает значение автомобили. При этой конкретизации удовлетворены все три подцели, следова­тельно, и поиск ответа на основной вопрос заканчивается «успехом»: Петра ин­тересуют автомобили, т.е. интерес (Петр, автомобили} является тем конкретизи­рованным предикатом, при котором обеспечена истинность всей клаузы,

Граф поиска ответа, сформулированного в виде цели интерес (Петр, х), пред­ставлен рис. 1.28. Бинарное дерево получилось в итоге подстановок предметных констант на место переменных, правила заменялись фактами, а цель — подцеля­ми. Трассировка показывает, что ПРОлОГ-система не сразу вышла на это дере­во склеек. В пунктах 7, 9 и 15 протокола трассировки также производились склейки, но они привели к «неуспеху». Скорейшее достижение цели зависит от правильного выбора стратегии поиска и искусства программирования.