Подстановка и унификация в логике предикатов 1-го порядка. Алгоритм нахождения наиболее общего унификатора
Подстановка и унификация Подстановкой называется множество равенств = {x1 = t1, x2 = t2, … xn = tn} где x1, x2 … xn – различные переменные t1, t2 … tn – термы, причём терм ti не содержит переменной xi если = {x1 = t1, x2 = t2 … xn = tn}, F – дизъюнкт, то через (F) будем обозначать дизъюнкт, полученный из F одновременной заменой x1 на t1 и т.д. xn на tn Ех: = {x1 = f(x2), x2 = c} Пустая подстановка – подстановка, не содержащая равенств. Унификация - подбор такой подстановки, которая позволит сделать несколько литералов идентичными. Пусть {E1, …, Ek} – множество литералов или множество термов. Подстановка называется унификатором этого множества, если (E1) = (E2) = … = (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 = t1, x2 = t2 … xk = tk} = {y1 = s1, y2 = s2 … ye = se} Тогда произведением подстановок и называется подстановка, которая получается из последовательных равенств {x1 = (t1), x2 = (t2), … xk = (tk), y1 = s1, y2 = s2, ye = se} вычёркиваем равенства вида xi = xi для 1 i k, yi = si, если yi {x1, …, xk}, для 1 j l. Произведением (композицией) подстановок и называется подстановка, которая получается путём применения подстановки к термам подстановки с добавлением из всех подстановочных пар, содержащих переменные, отсутствующее в . Ех: = {z = f(x, y)} = {x = a, y = b, w = c, z = d} Последовательность равенств из определения произведения имеет вид: = {z = f(x, y), x = a, y = b, w = c} = {z = f (a, b), x = a, y = b, w = c}. Унификатор множества литералов или термов называется наиболее общим унификатором этого множества, если для любого унификатора того же множества литералов существует подстановка такая, что = Ех: {P(x, f(a), g(z), P(f(b, y, v)))} Наиболее общим унификатором является подстановка = {x = f(b), y = f(a), v = g(z)} Если в качестве взять унификатор {x = f(b), y = f(a), z = c, v = g(c)}, то = {z = c} Если М – множество литералов или термов. Выдадим первую слева позицию, в которой не для всех литералов стоит один и тот же символ. Затем в каждом литерале выпишем выражение, которое начинается символом, занимающим эту позицию (этим выражением может быть сам литерал, атомная формула или терм), множество полученных выражений называется множеством рассогласований в М. Ех: если 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, k = , где - пустая подстановка Шаг 2. Если множество M k состоит из одного литерала (содержит 1 элемент), то выдать k в качестве наиболее общего унификатора и завершить работу. В противном случае найти множество N k рассогласованностей в M k. Шаг 3. Если в множестве N k существует переменная vk и терм tk, не содержащий vk, то перейти к шагу 4, иначе выдать сообщение о том, что множество М не унифицируемо и завершить работу. Шаг 4. Положить k+1 = {vk = tk} k, т.е. подстановка k+1 получается из k заменой vk на tk и, возможно добавлением равенства vk = tk. В множестве M k выполнить замену vk = tk, полученное множество литералов взять в качестве M k+1 Шаг 5. Присвоить k = k + 1 и перейти к шагу 2.
|