Для любых подстановок q, l,m справедливы следую-щие свойства:
1. Ассоциативность: q ° l ° m = (q ° l) ° m = q ° (l ° m).
2.Коммутативность c пустой подстановкой: q ° e =e ° q.
Потенциальные возможности подстановок таковы, что с их помощью нельзя добавлять или снимать отрицание с предикатов. Однако, применяя подстановки, можно (не во всех случаях) привести переменные и термы, входящие в предикаты, к единому виду.
Определение. Подстановка q называется унифика-тором множества выражений Е ={E 1, E 2,..., E k } Û когда E1q=E2q=...=Ekq. Если унификатор для множества Е суще-ствует, то само множество называется унифицируемым.
Очевидно, унификатор может быть неединственным, поскольку при применении любой композиции подстановок q°l унификатора q с любой подстановкой l будет выпол-няться равенство E1ql = E2ql =...= Ek ql.
Определение. Унификатор q называется наиболее об-щим унификатором для множества выражений Е ={E 1, E 2,..., E k } Û когда любой унификатор l множества выра-жений Е можно представить в виде l = q °s, где s - неко-торая подстановка.
|
|
Пример 4. Найти унификатор множества E = { P(x,y), P(a,b)}. Унификатором Е является подстановка q ={а/x, b/y}. После её применения Е1q = Е2q = Р(a,b).
Рассмотрим более сложные случаи различия выраже-ний. Допустим, имеется множество из k выражений Е ={E1, E2,..., Ek }, каждое из которых зависит от s подвыражений:
E1 = E1 (e11, e12,...,e1s);
E2 = E2 (e21, e22,...,e2s);
...
Ek = Ek (ek1, ek2,...,eks).
Множество подвыражений ej1, ej2,...,ejk, стоящих в каждом из выражений E1, E2,..., Ek на j -той позиции, на-зовём подвыражениями с индексом j. Если все такие под-выражения ej1, ej2,...,ejk одинаковы, то назовём их совпа-дающими. Если не все одинаковы (т.е. существуют номера p,q при которых ejр ¹ ejq ), то назовём их несовпадающими.
Пример 5. Определить совпадаюшие и несовпадаю-щие подвыражения в множестве выражений Е ={E1,E2,E3 } = {P(x,y,z,u), Р(x,f(a),z,g(z)), Р(x,y,z,g(y))}.
Решение.
j=1: e11 = e21 = e31 =x, Þ подвыражения с индексом j=1 совпадают,
j=2: e12 = e32 =у, e22 =f(a), Þ подвыражения с индексом j=2 не совпадают,
j=3: e13 = e23 = e33 =z, Þ подвыражения с индексом j=3 совпадают,
j=4: e14 = u, e24 =g(z), e34 = g(x), Þ подвыражения с индексом j=4 не совпадают.
Таким образом, подвыражения, стоящие на первых и третьих позициях, совпадают, а на вторых и четвёртых позициях - не совпадают.
Определение. Рассмотрим множество выражений Е={E 1, E 2,..., E k }, вида:
E1 = E1 (e11, e12,...,e1s);
E2 = E2 (e21, e22,...,e2s);
...
Ek = Ek (ek1, ek2,...,eks).
Множеством рассогласований D j множества выраже-ний Е называются несовпадающие подвыражения ej1, ej2,...,ejk с минимальной величиной индекса j. Если для всех индексов 1 £ j £ s подвыражения совпадают, то множество рассогласований множества выражений Е принимаем рав-ным нулю: D j = Æ.
Для множества Е = {P(x,y,z,u), Р(x,f(a),z,g(z)), Р(x,y,z, g(y))} из Примера 5 множеством рассогласований будет D 2 = {y, f(a)}. Рассмотрим на этом множестве Е, каким образом можно, последовательно устраняя рассогласования, унифи-цировать все множество.
|
|
1. Вначале множество рассогласований равно D 2 = {y, f(a)}. Его можно унифицировать при помощи подстановки q = {f(a)/y} на множестве Е. После применения q получим:
E1q = P(x, f(a), z, u), E2q = Р(x, f (a), z, g (z)), E3q = Р(x, f(a), z, g (f (a)).
2. Для индексов j=1,2,3 подвыражения совпадают. Мно-жество рассогласований равно D4 = {u, g(z), g(f(a))}. Его можно унифицировать при помощи подстановки q2 = {f(a)/z, g(f(a))/u} на множестве Е. После применения q2 получим:
E1qq2 = P(x, f(a), f(a), g(f(a))), E2qq2 = Р(x, f(a), f(a), g(f(a))), E3qq2 = Р(x, f(a), f(a), g(f(a))).
Таким образом, множество Е унифицируемо и найден-
ный унификатор имеет вид: q°q2 = {f(a)/y, f(a)/z, g(f(a))/u}.
В общем случае для определения унифицируемости множества выражений Е и нахождения наиболее общего унификатора (если он существует) применяется