Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретка / Книги / Галиев Ш.И. Математическая логика и теория алгоритмов (2002).pdf
Скачиваний:
2274
Добавлен:
25.02.2016
Размер:
7.49 Mб
Скачать

86

Теорема 3.7. Пусть S множество дизъюнктов, в котором каждая литера индексирована целым числом. Если S противоречиво (неудовлетворимо), то имеется лок-вывод пустого дизъюнкта из S.

Всё в жизни метод. Андрей Белый

§7. Метод резолюций для хорновских дизъюнктов

Вобщем случае метод резолюций требует больших вычислений. Если дизъюнкты имеют специальный вид, являются, так называемыми хорновскими дизъюнктами, то вычисления упрощаются.

Литера называется позитивной, если она не содержит отрицания и негативной, если содержит отрицание.

Дизъюнкт D называется хорновским, если он содержит не более одной

позитивной литеры. Примеры хорновских дизъюнктов: А, В, А, В, А С В, А В, А С С D. В общем случае хорновский дизъюнкт можно представить в виде (A1&A2&…&An) B или A1 A2 … An, n1, или А. При этом дизъюнкт A1 A2 … An B называют точным, дизъюнкт A1

A2 … An называют негативным, а дизъюнкт А - унитарным позитивным дизъюнктом.

Рассмотрим множество S хорновских дизъюнктов без тавтологий. Невыполнимость можно проверить с помощью следующего алгоритма.

1.Полагаем, что S0= S.

2.Пусть S n-1, n1, построено. Для построения S n выбираем из S n-1

дизъюнкты D1 и D2 такие, что:

D1 - унитарный позитивный дизъюнкт, пусть, например, D1=Р; D2 - дизъюнкт, содержащий литеру Р. Вычисляем резольвенту R для дизъюнктов D1 и D2 и полагаем, что S n = (S n-1\{ D2}) {R}. Эту

процедуру повторяем до тех пор пока не получим пустой дизъюнкт либо пока не окажется, что в S n-1 не существует дизъюнктов D1 и D2

указанных видов.

Можно доказать, что для приведенного алгоритма появление пустого дизъюнкта означает, что множество S хорновских дизъюнктов невыполнимо. Если же окажется, что S n-1 не содержит дизъюнктов D1 и D2 указанных видов, то исходное множество S хорновских дизъюнктов выполнимо.

Реализацию этого алгоритма проще проводить с помощью таблицы. Продемонстрируем это на примере. Пусть имеем множество хорновских дизъюнктов: S={P R T, Q, R, T P R, T Q, P Q R}. Выпишем дизъюнкты из S 0 = S в ячейки нулевой строки нижеследующей таблицы. Каждая n - ая строка содержит дизъюнкты из S n, n0. Дизъюнкты, из которых строятся резольвенты, помечаем снизу звёздочками.

87

S n

 

 

 

Дизъюнкты

 

 

итерации

 

 

 

 

 

 

 

 

0

S 0

P R T

Q

R

 

T P R

T Q

P Q R

 

 

 

 

 

 

*

 

 

 

*

*

1

S 1

P R T

Q

R

 

T P R

T

P R

 

 

*

 

*

 

*

 

*

2

S 2

P T

Q

R

 

T P

T

P

 

 

 

 

 

*

 

 

 

 

*

 

3

S 3

P

Q

R

 

T P

T

P

 

 

*

 

 

 

 

 

*

4

S 4

 

 

 

 

 

 

 

На четвертом шаге получаем пустой дизъюнкт , следовательно, множество S хорновских дизъюнктов невыполнимо.

§ 8. Преобразование формул логики предикатов. Сколемовская стандартная форма

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

форме, т. е. в виде: Q1Q2...QnВ, где Q1,Q2,...,Qn некоторая совокупность кванторов, а формула В не содержит

кванторов.

Для формулы А Q1Q2...QnВ совокупность кванторов Q1,Q2,...,Qn называется префиксом формулы А, а формула B – матрицей формулы А. Будем дополнительно считать, что матрица приведена к конъюнктивной нормальной форме

Очевидно, что формула A является противоречием тогда и только тогда, когда A – является логически общезначимой. Из свойств формул (см. § 5 второй главы) следует, что формула B является логически общезначимой тогда и только тогда, когда логически общезначимо замыкание B* формулы B. Как известно, замыкание B* формулы B получается приписыванием к B кванторов всеобщности по всем её свободным переменным.

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

Осуществим следующие преобразования формул логики предикатов (формулы записаны с использованием связок , ):

88

1)исключим знаки импликации, выразив их через ; ;

2)добьемся того, чтобы относилась только к элементарным формулам это можно сделать, используя правила перенесения отрицания через кванторы и законы де Моргана;

3)проведём стандартизацию (переименование) переменных для вынесения кванторов за скобки;

4)вынесем кванторы за скобки, т.е. получим предваренную нормальную форму:

A ~ Q1x1 Q2x2…QnxnB, здесь B – матрица формулы, а Q1x1Q2x2…Qnxn – префикс (совокупность кванторов). Будем считать, что матрица приведена к

конъюнктивной нормальной форме; 5) проведём исключение кванторов существования, введением

сколемовских функций (Skolem T).

Исключение кванторов существования проводится следующим

образом. Пусть A= Q1x1Q2x2…QnxnB, где Q1x1Q2x2…Qnxn – кванторы всеобщности или существования. Положим, что Qrxr – квантор

существования в префиксе Q1x1Q2x2…Qnxn, 1rn. Если никакой квантор всеобщности не стоит в префиксе левее Qrxr, то выбираем новую предметную постоянную c, отличную от всех предметных постоянных в B, и заменяем все xr встречающиеся в B на c и вычеркиваем Qrxr из префикса. Покажем это на примере. Пусть имеем формулу x y(P12 (x,y) Q12 (x,a)). Тогда для

исключения квантора x введем постоянную c. В результате получим формулу: y(P12 (c,y) Q12 (c,a)).

Рассмотрим

другой

пример.

Пусть

имеем

формулу

x y z(P13 (x,y,z) Q14 (a,b,x,y)).

Тогда, исключая кванторы существования,

получим: z(P13 (c,d,z) Q14 (a,b,c,d)).

 

 

 

Если QxS 1 QxS 2 QxS m

– список

всех кванторов

всеобщности,

встречающихся левее квантора существования Qrxr,, 1s1< s2<…< smn, то выберем новую m–местную функциональную букву fm, отличную от других функциональных букв из B, и заменим все xr в B на fm(xS 1 ,xS 2 ,…,xS m ) и

вычеркнем Qrxr из префикса.

Пример. Пусть имеем формулу x y(P(x,y) Q(f1(a),y)). Введя функцию f2, с аргументом х и исключая импликацию получим:

x( P(x, f2(x)) Q(f1(a), f2(x))).

Пример. Пусть имеем другую формулу: x y z(P(x,y) R(x,z,f1(x),f2(f3(z)))). Тоже, вводя необходимую функцию и исключая импликацию, получим: x y( P(x,y) R(x,f4(x,y),f1(x),f2(f3(f4(x,y))))).

Проводим описанную процедуру до тех пор, пока не исключим все кванторы существования. Полученная в результате формула есть

сколемовская стандартная форма, для краткости стандартная форма

формулы A. Константы и функции, используемые для замены переменных квантора существования, называются сколемовскими функциями.

89

Пример. Пусть имеем формулу x y z( P(x,y)&R(x,z) S(x,y,z)).

Приведём матрицу формулы к к.н.ф.: x y z( P(x,y) S(x,y,z))&(R(x,z)

S(x,y,z)). Затем введём функции f(x), g(x):

x( P(x,f(x)) S(x,f(x),g(x))&(R(x,g(x)) S(x,f(x),g(x))).

Полученная формула является стандартной формой исходной формулы. Элементарную формулу или её отрицание называют литералом

(литерой) в логике предикатов.

Дизъюнктом в логике предикатов называют дизъюнкцию литералов.

Иногда литералы или дизъюнкты называют клаузами (clause – предложение, являющееся частью сложного предложения).

Пусть формула А приведена в предваренную нормальную форму, а ее матрица представлена в к.н.ф., т. е. А=(Q1x1Q2x2…Qnxn)B=

(Q1x1Q2x2…Qnxn)D1&D2&…&Dm где (Q1x1Q2x2…Qnxn) префикс формулы А, а D1,D2,…,Dm – дизъюнкты. Положим, что стандартная форма для A равна

As=(Q1x1Q2x2…Qnxn)C1&C2&…&Cm, где в префиксе опущены кванторы существования, а Ci получены из Di введением сколемовских функций вместо переменных кванторов существования.

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

Имеет место следующая теорема.

Теорема 3.8. Формула A является противоречием тогда и только тогда, когда её стандартная форма As является противоречием.

Доказательство. Приведём A в предваренную нормальную форму

Α= Q1x1 Q2x2 … QnxnB.

Пусть имеется только один квантор существования Qrxr:

A= x1… xr-1 xr xr+1… xnB(x1,x2,…,xn).

Положим As= x1… xr-1 xr+1… xnB(x1,x2,…,xr-1,f(x1,x2,…,xr-1), xr+1,…,xn),

где f(x1, x2,…,xr-1) – сколемовская функция.

Покажем, что A противоречива тогда и только тогда, когда противоречива As.

Пусть A противоречие. Допустим, что As не противоречие, следовательно, существует интерпретация, в которой As выполнима, т.е. для

x1 x2xr-1 xr = f(x1,x2,…,xr-1), что при xr+1… xn формула B принимает значение ˝И˝, что противоречит тому, что A – противоречие. Следовательно, As – противоречие.

Обратно, пусть As – противоречие. Допустим, что A непротиворечиво, т.е. существует интерпретация, в которой A – выполнимо. Следовательно, для x1, x2,…, xr-1 найдется xr такое, что при xr+1,…, xn формула B=И. Введем функцию f(x1,…,xr-1)=xr. Тогда ясно, что Аs, что противоречит условию Аs - противоречие.