Подстановка и унификация в логике предикатов 1-го порядка. Алгоритм нахождения наиболее общего унификатора
Подстановка и унификация Подстановкой называется множество равенств где x1, x2 … xn – различные переменные t1, t2 … tn – термы, причём терм ti не содержит переменной xi если Ех: Пустая подстановка – подстановка, не содержащая равенств. Унификация - подбор такой подстановки, которая позволит сделать несколько литералов идентичными. Пусть {E1, …, Ek} – множество литералов или множество термов. Подстановка если Множество унифицируемо, если существует унификатор этого множества. Ех: множество атомов функционирования {Q (a, x, f(x)), Q(u, y, z)} Унифицируемо подстановкой {u = a, y = x, z = f(x)} Результат унификации: {Q(a, x, f(x)), Q(a, x, f(x))} Ех2: множество {R(x, f(x)), R(u, u)} не унифицируемо, если заменить x на u получим {R(u, f(u)), R(u, u)} нельзя проводить замену u = f(u), т.к. тогда получим R(f(u), f(f(u))) и R(f(u), f(u)). Если множество унифицируемо, то существует, как правило, не один унификатор этого множества, а несколько. Среди всех унификаторов данного множества выделяют наиболее общий унификатор. Пусть имеется две подстановки:
Тогда произведением подстановок {x1 = Произведением (композицией) подстановок Ех:
Последовательность равенств из определения произведения имеет вид:
Унификатор Ех: {P(x, f(a), g(z), P(f(b, y, v)))} Наиболее общим унификатором является подстановка Если в качестве то Если М – множество литералов или термов. Выдадим первую слева позицию, в которой не для всех литералов стоит один и тот же символ. Затем в каждом литерале выпишем выражение, которое начинается символом, занимающим эту позицию (этим выражением может быть сам литерал, атомная формула или терм), множество полученных выражений называется множеством рассогласований в М. Ех: если M = {P(x, f(y), a), P(x, u, g(y)), P(x, c, v)}, множество рассогласованностей состоит из термов f(y), u, c Множество рассогласованностей {P(x, y), P(a, g(z))} есть само множество Если M = { P(x, y), Q(a, v)}, то множество рассогласованностей равно {P(x, y), Q(a, v)} Алгоритм нахождения наиболее общего унификатора. Шаг 1. k = 0, M k= M, Шаг 2. Если множество M k состоит из одного литерала (содержит 1 элемент), то выдать Шаг 3. Если в множестве N k существует переменная vk и терм tk, не содержащий vk, то перейти к шагу 4, иначе выдать сообщение о том, что множество М не унифицируемо и завершить работу. Шаг 4. Положить В множестве M k выполнить замену vk = tk, полученное множество литералов взять в качестве M k+1 Шаг 5. Присвоить k = k + 1 и перейти к шагу 2.
|