- •Тема 3. Логика предикатов
- •1. Предикаты и операции над ними
- •2. Формы логики первого порядка
- •3. Интерпретация в логике первого порядка
- •4. Равносильность, законы логики первого порядка
- •5. 6. Логическое следствие
- •7. Нормальные формы
- •Алгоритм приведения к предваренной нормальной форме
- •Алгоритм приведения к сколемовской нормальной форме
- •8. Подстановка и унификация
- •Алгоритм унификации
- •9. Метод резолюций для логики первого порядка
- •10. Стратегии метода резолюций
- •11. Применение метода резолюций.
9. Метод резолюций для логики первого порядка
Начнем с формулировки правила резолюций.
Определение. Правилом резолюций в логике предикатов называется правило из дизъюнктов P(t1,...,tn)F и P(s1,...,sn)G выводим дизъюнкт s(F)s(G), где s – наиболее общий унификатор множества {P(t1,...,tn), P(s1,...,sn)}. Дизъюнкт s(F)s(G) называется бинарной резольвентой первых двух дизъюнктов, а литералы ØP(t1,…,tn) и P(s1,…,sn) отрезаемыми литералами.
Например, с помощью правила резолюций из дизъюнктов Q(a,f(x))R(x) и Q(u,z)P(z) можно вывести дизъюнкт R(x)P(f(x)), используя подстановку s={u=a, z=f(x)}.
В отличие от логики высказываний, в логике предикатов нам понадобится еще одно правило.
Определение. Правилом склейки в логике предикатов называется правило: из дизъюнкта P(t1,...,tn)...P(s1,...,sn)F выводим дизъюнкт s (P(t1,...,tn) s (F), где s – наиболее общий унификатор множества {P(t1,...,tn),...,P(s1,...,sn)}, – знак отрицания или его отсутствие. Дизъюнкт s(◊P(t1,…,tn)s(F) называется склейкой первого дизъюнкта. (Отметим, что если знак отрицания стоит перед одной из записанных выше атомарных формул, то он стоит и перед другими.)
Например, правило склейки, примененное к дизъюнкту Р(х,у)P(у,х)Р(а,а)Q(x,y,v), дает дизъюнкт Р(а,а)Q(a,a,v).
Определение вывода в логике первого порядка немного отличается от аналогичного определения в логике высказываний.
Определение. Пусть S – множество дизъюнктов.Выводом из множества дизъюнктов S называется последовательность дизъюнктов D1,D2,…,Dn, такая, что каждый дизъюнкт Di принадлежит S, выводим из предыдущих дизъюнктов по правилу резолюций или выводим из предыдущего по правилу склейки.
Как и в логике высказываний, дизъюнкт D выводим из S, если существует вывод из S, последним дизъюнктом которого является D.
Приведем пример. Пусть S={B(x)C(x)T(f(x)), C(у)T(f(z)), B(a)}. Тогда последовательность D1=B(x)C(x)T(f(x)), D2=C(у)T(f(z)), D3=B(x)T(f(x))T(f(z)), D4=B(x)T(f(x)), D5=B(a), D6=T(f(a)).
является выводом из S. Отметим, что D1,D2,D5S, дизъюнкт D3 выводим из D1 и D2 по правилу резолюций, дизъюнкт D6 выводим из D4 и D5 по тому же правилу, а D4 выводим из D3 по правилу склейки.
Как и в логике высказываний, в логике первого порядка есть утверждение, называемое теоремой о полноте. Фактически это утверждение совпадает с формулировкой 4.1. Тем не менее приведем его.
Теорема 4.3. Множество дизъюнктов S логики первого порядка невыполнимо тогда и только тогда, когда из S выводим пустой дизъюнкт.
Теорема имеет довольно сложное доказательство.
В данном параграфе мы ограничимся примером применения метода резолюций и рядом определений, необходимых для доказательства теоремы 4.3.
Для доказательства логичности следствия формулы G из формул F1,…,Fk метод резолюций в логике предикатов применяется почти так же, как и в логике высказываний. А именно, сначала составляется множество формул T={F1,…,Fk,ØG}. Затем каждая из формул этого множества приводится к сколемовской нормальной форме, в полученных формах вычеркиваются кванторы общности и связки конъюнкции. Получается множество дизъюнктов S. На последнем этапе находится вывод пустого дизъюнкта из множества S. Напомним, что все переменные в дизъюнктах предполагаются связанными кванторами общности. Это означает, что метод резолюций для доказательства логичности может применяться лишь в случае, когда формулы F1,…, Fk и G не имеют свободных переменных. Если все же формулы содержат свободные переменные, то их надо заменить константами (такими, которые отсутствуют в этих формулах).
Рассмотрим пример. Пусть F1=(х)[П(х) & (у)(С(у) З(х,у))], F2=(x)(у)[П(х) & Л(у) З(х,у)], G=(x)(C(x)Л(х)).
Докажем, что формула G является логическим следствием множества формул F1,F2. Для этого достаточно доказать невыполнимость множества Т={F1,F2,G}. Каждую из формул множества Т приведем к сколемовской нормальной форме; получим формулы (y)[П(а) & (C(у)З(а,у))], (х)(у)[П(х)Л(у)З(х,у)], C(в) & Л(в).
Тогда множество S будет содержать дизъюнкты: D1=П(а), D2=C(у)З(а,у), D3=П(х)Л(у)З(х,у), D4=C(в), D5=Л(в). А последовательность дизъюнктов D1, D3, Л(у)З(а,у), D5, З(а,в), D2, D4, З(а,в), □ будет выводом из S. Cледовательно, формула G является логическим следствием формул F1 и F2.
Введем, как было обещано выше, ряд определений, необходимых в следующих параграфах.
Напомним, что мы условились не писать в дизъюнктах повторяющиеся литералы. Это позволяет нам смотреть, если это необходимо, на дизъюнкт как на множество литералов. Если смотреть на дизъюнкты как на множество литералов, то результат применения правила резодюций к дизъюнктам D1 и D2 с отрезаемыми литералами L1 и L2 можно записать так D=[s(D1)-s(L1)][s(D2)-s(L2)], где s – наиболее общий унификатор L1 и L2.
Определение. Резольвентой дизъюнктов D1 и D2 называется одна из следующих бинарных резольвент:
1) бинарная резольвента дизъюнктов D1 и D2,
2) бинарная резольвента склейки D1 и дизъюнкта D2,
3) бинарная резольвента дизъюнкта D1 и склейки D2,
4) бинарная резольвента склейки D1 и склейки D2.
Приведем пример. Пусть D1=P(y)P(g(x))R(f(y)), D2=P(g(a))Q(b). Склейка дизъюнкта D1 есть дизъюнкт D1/=P(g(x))R(f(g(x)). Бинарная резольвента D1 и D2/ равна R(f(g(a)))Q(b). Следовательно, последний дизъюнкт есть резольвента дизъюнктов D1 и D2.