Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭС_Л7_ИППП.doc
Скачиваний:
45
Добавлен:
22.09.2019
Размер:
685.06 Кб
Скачать

Пренексные нормальные формы

В исчислении предикатов имеется пренексная нормальная форма (ПНФ). Необходимость введения ПНФ будет обусловлена в дальнейшем упрощением процедуры доказательства теорем.

Сначала рассмотрим некоторые равносильные формулы в исчислении предикатов. Напомним, что две формулы F и Ф равносильны, т. е. F = Ф тогда и только тогда, когда истинностные значения этих формул совпадают при любой интерпретации F и Ф. Для подчеркивания факта, что переменная х входит в формулу F, будем писать F[х], хотя F может содержать и другие переменные.

Имеем следующие пары равносильных формул:

x F[х] Ф = x( F[х] Ф);

x F[х] & Ф = x( F[х] & Ф);

x F[х] Ф = x( F[х] Ф);

x F[х] & Ф = x( F[х] & Ф)

при условии, что переменная х не входит свободно в формулу Ф.

Равносильность этих формул очевидна, так как формула Ф не содержит свободно х и поэтому не входит в область действия кванторов.

Далее имеем

x F[х] & x Ф[х] = x( F[х] & Ф),

x F[х] Ф[х] = x( F[х] Ф[х]).

Теперь дадим определение ПНФ. Говорят, что формула F исчисления предикатов находится в ПНФ тогда и только тогда, когда ее можно представить в форме K1 x1 K2 x2Kr xr M, где Ki xi, i=1,2, …,r есть либо xi , либо xi и М – бескванторная формула. Иногда называют K1 x1 K2 x2Kr xr префиксом, а М – матрицей формулы F.

Например, формула

F1 = х у (Q (х, у) Р (f (х)) R (х, g (у)))

находится в ПНФ.

Существует простой алгоритм, преобразующий произвольную заданную формулу в равносильную ей формулу, имеющую пренексный вид. Алгоритм состоит из следующих шагов.

Шаг 1. Исключение логических связок ~ и . Многократно (пока это возможно) применяется следующее правило: найти самое левое вхождение связки ~ или и сделать замены:

F~ Ф = ( F Ф) & (F Ф),

F Ф = F Ф.

Результатом этого шага будет формула, равносильная исходной и не содержащая связок ~ и .

Шаг 2. Продвижение знака отрицания до атома. Многократно (пока это возможно) делаем замены:

F = F,

(F Ф) = F Ф,

(F & Ф) = F& Ф,

xF[x] = x( F[x]),

xF[x] = x( F[x]).

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

Шаг 3. Переименование связанных переменных. Многократно (пока это возможно) применяется следующее правило: найти самое левое вхождение переменной такое, что это вхождение связано (некоторым квантором), но существует еще одно вхождение этой же переменной; затем сделать замену связанного вхождения на вхождение новой переменной.

Шаг 4. Вынесение кванторов. Для этого используем следующие равносильности:

K x F[х] Ф =K x( F[х] Ф),

K x F[х] & Ф =K x( F[х] & Ф),

x F[х] & x Ф[х] = x( F[х] & Ф[х]),

x F[х] x Ф[х] = x( F[х] Ф[х]),

K1 x F[х] K2 x Ф[х] = K1 x K2 y ( F[х] Ф[y]),

K1 x F[х] & K2 x Ф[х] = K1 x K2 y ( F[х] & Ф[y]),

где K1, K2, K – кванторы либо , либо .

После выполнения четвертого шага формула приобретает пренексный вид:

K1 x1 K2 x2 … Kr xr M.