С помощью унификации можно распространить правило резолюций на исчисление предикатов. При унификации возникает одна трудность: если один их термов есть переменная x, а другой терм содержит x, но не сводится к x, унификация невозможна. Проблема решается путем переименования переменных таким образом, чтобы унифицируемые дизъюнкты не содержали одинаковых переменных.
Определение 34: Если два или более литерала (с одиниковым знаком) дизъюнкта C имеют наиболее общий унификатор s, то Cs - называется склейкой C.
Пример 17. Рассмотрим дизъюнкты:
Пусть C= P(x)Ъ P(f(y))Ъ ШQ(x).
Тогда 1 и 2 литералы имеют наиболее общий унификатор s = {f(y)/x}. Следовательно, Cs=P(f(y))Ъ ШQ(f(y)) есть склейка C.
Определение 35: Пусть C1 и C2 – два дизъюнкта, которые не имеют никаких общих переменных. Пусть L1 и L2 - два литерала в C1 и C2 соответственно. Если L1 и ШL2 имеют наиболее общий унификатор s, то дизъюнкт (C1s - L1s) И (C2s - L2s) называется резольвентой C1 и C2.
Пример 16:Пусть C1= P(x)Ъ Q(x) и C2= ШP(a)Ъ R(x). Так как x входит в C1 и C2, то мы заменим переменную в C2 и пусть C2= ШP(a)Ъ R(y). Выбираем L1= P(x) и L2=ШP(a). L1 и L2 имеют наиболее общий унификатор s={a/x}. Следовательно, Q(a)Ъ R(y) – резольвента C1 и C2.
Пример 17:Доказать, что формула R(a, z) выводима из множества дизъюнктов S={ШP(x, f(x))Ъ R(x, f(x), g(x)), Q(x, g(x)) Ъ R(x, f(x), g(x)), ØQ(x, g(x)) Ù P(x, f(x))}.
Так как в дизъюнктах C1 , C2 , C3 есть одинаковая переменная x, то заменим её в C2 на y, а в C3 на u. Таким образом, решение исходной задачи сводится к доказательству противоречивости следующего множества дизъюнктов:
C1=ШP(x, f(x))Ъ R(x, f(x);
C2= Q(y, g(y)) Ъ R(y, f(y);
C3=ØQ(u, g(u)) Ъ P(u, f(u));
C4=ШR(a, z).
Найдём резольвенту C5 дизъюнктов C1 и C3 и добавим её к множеству дизъюнктов, для чего произведём унификацию переменных x и u, таким образом, что u заменим на x, и получим C5= R(x, f(x)) Ъ ØQ(x, g(x)).
Найдём резольвенту C6 дизъюнктов C2 и C5 и добавим её к множеству дизъюнктов, для чего произведём унификацию переменных y и x, таким образом, что y заменим на x, и получим C6= R(x, f(x)) Ъ R(x, f(x))= R(x, f(x)).
Найдём резольвенту C7 дизъюнктов C2 и C6 и добавим её к множеству дизъюнктов, для чего произведём замену переменной x на константу a, а переменную z заменим на функцию f(a), таким образом получим C7= я, то есть пустой дизъюнкт.
Алгоритм метода резолюций.
Шаг 1. Если в S есть пустой дизъюнкт, то множество противоречиво (невыполнимо), иначе перейти к шагу 2.
Шаг 2. Найти в исходном множестве S такие дизъюнкты или склейки дизъюнктов C1 и C2, которые содержат унифицируемые контрараные литералы L1 О C1 и L2 О C2. Если таких дизъюнктов нет, то исходное множество выполнимо, иначе перейти к шагу 3.
Шаг 3. Вычислить резольвенту C1 и C2 и добавить ее в множество S. Перейти к шагу 1.