Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ИП САПР 2013.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
9.33 Mб
Скачать
  1. Логические эквивалентные преобразования в исчислении предикатов 1-го порядка. Алгоритм приведения к пнф

В отличии от исчислений высказываний, в логике предикатов не существует детерминированного алгоритма, который определял бы к какому классу принадлежит произвольная формула исчисления предикатов.

Переменные, находящиеся в сфере действия кванторов называются связанными, остальные – свободными.

Пренексная нормальная форма (ПНФ).

Опр. Формула, состоящая из префикса, т.е. конечной последовательности кванторов и матрицы, т.е. формулы, не содержащей кванторы.

В общем виде ПНФ: K1x1 K2x2Knxn M

префикс матрица

Ki { , } – квантор

Ех: x y ((Q(x, y) ¬(P(f(x)) R(x, y))) – ПНФ

x(P(x) y Q(x, y)) – не ПНФ

Теорема: Для всякой формулы F существует формула G, равносильная F и имеющая ПНФ.

Алгоритм преобразования в ПНФ:

  1. Исключить эквиваленцию и импликацию

A B ¬A B

A B (¬ A B) (¬ B A)

  1. В случае необходимости производится переименование переменных так, что все переменные, связанные разными кванторами стали различными и чтобы никакая переменная не имела одновременно свободных и связанных вхождений.

x(P(x)) x Q(x) x P(x) y Q(y)

x(P(x) x Q(x, y)) x (P(x) y Q(z, y))

  1. Удаляются те кванторы, область действия которых не содержит вхождения квантифицированной переменной.

  2. Знаки отрицаний переносятся внутрь формул, пока они не останутся перед атомами (законы де Моргана и снятия двойного отрицания).

¬ (A B) ¬A ¬ B ¬ (A B) ¬ A ¬ B

(¬ xA) ( x ¬ A)

xA) ( x ¬ A)

  1. Все кванторы переносят в начало формул

для : ( xA xB) x(A B)

для : ( xA xB) x(A B)

когда B не содержит x:

( xA B) x(A B) ( xA B) x(A B)

( xA B) x(A B) ( xA B) x(A B)

когда A не содержит x:

(A QxB) Qx(A B)

(A QxB) Qx(A B)

Q – любой квантор ( , )

Ех: привести формулу к ПНФ

x(P(x) y x (¬ Q(x, y) z R(a, x, y)))

  1. x(P(x) y x(¬ Q(x, y) zR(a, x, y))) 2) x(P(x) y x(¬ ¬ Q(x, y) zR(a, x, y)))

  1. x(P(x) y u(Q(u, y) zR(a, u, y))) 4) x(P(x) y u(Q(u, y) R(a, u, y)))

x y u(P(x) (Q(u, y) R(a, u, y)))

  1. Подстановка и унификация в логике предикатов 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, Mk=M, k = , где - пустая подстановка

Шаг 2. Если множество Mk состоит из одного литерала (содержит 1 элемент), то выдать k в качестве наиболее общего унификатора и завершить работу. В противном случае найти множество Nk рассогласованностей в Mk.

Шаг 3. Если в множестве Nk существует переменная vk и терм tk, не содержащий vk, то перейти к шагу 4, иначе выдать сообщение о том, что множество М не унифицируемо и завершить работу.

Шаг 4. Положить k+1 = {vk = tk} k, т.е. подстановка k+1 получается из k заменой vk на tk и, возможно добавлением равенства vk = tk.

В множестве Mk выполнить замену vk = tk, полученное множество литералов взять в качестве Mk+1

Шаг 5. Присвоить k = k + 1 и перейти к шагу 2.