Здавалка
Главная | Обратная связь

Исчисление предикатов.



Предваренная нормальная форма. Сколемовская стандартная форма.

Для облегчения анализа сложных суждений формулы алгебры предикатов рекомендуется приводить к нормальной форме. Если в алгебре высказываний приняты две нормальные формы (ДНФ - дизъюнктивная и КНФ -конъюнктивная), то в алгебре предикатов - одна предваренная нормальная форма (ПНФ), суть которой сводится к разделению формулы на две части: кванторную и безкванторную. Для этого все кванторы формулы выносят влево, используя законы и правила алгебры предикатов.

В результате этих алгебраических преобразований может быть получена формула вида: Âx1 Âx2 ¼Âxn(M), где ÂÎ{"; $} , а М – матрица формулы. Кванторную часть формулы Âx1 Âx2 ¼Âxnиногда называют префиксом ПНФ.

В последующем матрицу формулы преобразуют к виду КНФ, что облегчает механизм по принципу резолюции.

Пример:

F=$x"y((P21.(х; y)ÚùP2.(х))&P3(y)) формула, приведенная к ПНФ; F="x(P21.(х; y)Ú$x(P2 (х))&$y(P3 (y)) формула, неприведенная к ПНФ.

"x(P1.(х)) &"x(P2(x))="x(P1.(х) &P2(x)) слева от знака равенства формула, неприведенная к ПНФ, а справа, равносильная ей формула, но приведенная к ПНФ.

 

Алгоритм приведения формулы к виду ПНФ

Шаг 1. Исключить всюду логические связки « и ® по правилам:

(F1«F2)=(F1®F2)& (F2®F1)=(ùF1ÚF2)&(ùF2ÚF1);

(F1®F2)=(ù F1ÚF2);

Шаг 2. Продвинуть отрицание до элементарной формулы по правилам:

ù"x(F)=$x(ùF); ù(F1ÚF2)=(ùF1&ùF2);

ù$x(F)="x(ùF);. ù(F1&F2)=(ùF1ÚùF2);

Шаг 3. Переименовать связанные переменные по правилу:

“ найти самое левое вхождение предметной переменной такое, что это вхождение связано некоторым квантором, но существует еще одно вхождение этой же переменной; затем сделать замену связанного вхождения на вхождение новой переменной “, операцию повторять пока возможна замена связанных переменных;

Шаг 4. Вынести кванторы влево по законам алгебры логики.

Шаг 5. Преобразовать бескванторную матрицу к виду КНФ. Алгоритм приведения матрицы формулы к виду КНФ приведен в алгебре высказываний.

 

Пример:F=("x(P1 (х)®"y(P2 (y)®P3 (z))))&(ù"y(P24 (x; y)®P5.(z))).

Привести формулу к виду ПНФ.

l) удалить логические связки “®”:

F=("x(ùP1 (х)Ú"y(ù P2 (y)ÚP3 (z))))&(ù"y(ù P24 (x; y)ÚP5.(z)));

2) применить закон де Моргана ù "x( F(x))=$x( ù F(x)):

F=("x(ùP1.(х)Ú"y(ù P2 (y)ÚP3 (z))))&($y(ù(ù P24 (x; y)ÚP5.(z)));

3) применить закон де Моргана ù(F1ÚF2)=(ùF1&ùF2):

F="x(ùP1.(х)Ú"y(ù P2 (y)ÚP3 (z)))&($y(P24 (x; y)&(ùP5.(z))));

4) переименовать связанную переменную x=w:

F="w(ùP1 (w)Ú"y(ù P2 (y)ÚP3 (z)))&($y(P24 (x; y)&(ù P5.(z))));

5) переименовать связанную переменную y=v:

F="w(ùP1 (w)Ú"v(ùP2 (v)ÚP3 (z)))&($y(P24 (x; y)&(ùP5.(z))));

6) вынести квантор "v влево:

F="w"v(ùP1 (w)ÚùP2 (v)ÚP3 (z))&($y(P24 (x; y)&(ùP5.(z))));

7) вынести квантор $y влево:

F="w"v$y(ùP1 (w)ÚùP2 (v)ÚP3 (z))&P24 (x; y)&ùP5.(z).

Матрица ПНФ содержит три элементарных дизъюнкта:

K={(ùP1 (w)ÚùP2 (v)ÚP3 (z)); P4 (x; y); ùP5.(z)}.

Пример: F = "x(P1 (х)«$x(P2 (x)))®"y(P3.(y)).

Привести формулу к виду ПНФ.

1) удалить логические связки “«”:

F="x((P1 (х)®$x(P2 (x)))&($x(P2 (х))®P1 (x)))®"y(P3.(y));

2) удалить логические связки “®”:

F=ù("x((ùP1.(х)Ú$x(P2 (x)))&(ù$x(P2.(х))ÚP1 (x)))Ú"y(P3.(y));

3) применить закон ù"x(F(x))=$x(ùF(x)):

F=$x(ù((ùP1.(х)Ú$x(P2 (x)))&(ù$x(P2 (х))ÚP1 (x))))Ú"y(P3.(y));

4) применить закон де Моргана ù(F1&F2)=(ùF1ÚùF2):

F=$x((ù(ùP1 (х)Ú$x(P2 (x)))Ú(ù(ù$x(P2.(х))ÚP1 (x))))Ú"y(P3.(y));

5) применить закон де Моргана ù(F1ÚF2)=(ùF1&ùF2):

F=$x((P1 (х)&(ù$x(P2 (x))))Ú($x(P2 (х))&(ùP1 (x))))Ú"y(P3.(y));

6) применить закон ù$x(F(x))= "x (ùF(x)):

F=$x((P1 (х)&"x(ùP2.(x)))Ú($x(P2 (х))&(ùP1 (x))))Ú"y(P3.(y));

7) переименовать связанную переменную x=z:

F=$z((P1.(z)&"x(ù P2 (x)))Ú($x(P2.(х))&(ùP1.(z))))Ú"y(P3.(y));

8) переименовать связанную переменную x=w:

F=$z(P1 (z)&"w(ùP2 (w))Ú$x(P2 (х)&ùP1 (z)))Ú"y(P3.(y));

9) вынести квантор "w, $x и "y влево:

F=$z"w$x"y(P1 (z)&ùP2 (w)ÚP2 (х)&ùP1 (z)ÚP3.(y));

10) преобразовать матрицу к виду КНФ:

F=$z"w$x"y((P1 (z)ÚP2 (х)ÚP3.(y))&(ùP2 (w)ÚP2 (х)ÚP3.(y))& (ùP2 (w)ÚùP1 (z)ÚP3.(y))).

Матрица ПНФ содержит три элементарных дизъюнкта:

K={(P1 (z)ÚP2 (х)ÚP3.(y)); (ùP2 (w)ÚP2 (х)ÚP3.(y)); (ùP2 (w)ÚùP1 (z)ÚP3.(y))}.

Пример: F="x$y(P21 (х; y))&ù($x"y(P22(x; y))).

Привести формулу к виду ПНФ.

1) применить закон ù$x(F(x))="x(ùF(x)):

F="x$y(P21(х; y))&("xù("y(P22(x; y))));

2) применить закон ù"x(F(x))= $x(ùF(x)):

F="x$y(P21(х; y))&("x$y(ù(P22(x; y))));

1) вынести квантор "x по закону дистрибутивности:

F="x($y(P21(х; y))&$y(ù(P22(x; y))));

4) переименовать связанную переменную y=v:

F="x($z(P21(х; z))&$y(ù(P22(x; y))));

5) вынести кванторs $z и $y влево:

"x$z$y(P21(х; z)&ùP22(x; y)).

Матрица ПНФ содержит два элементарных дизъюнкта:

K={P21(х; z); ùP22(x; y)}.

 

Пример: M=P1(z)&ùP2(w)ÚP2(х)&ùP1.(z)ÚP3.(y);

1) по закону дистрибутивности:

M=P1.(z)&ùP2 (w)Ú(P2 (х)ÚP3.(y))&(ù P1 (z)Ú(P3.(y));

2) по закону дистрибутивности:

M=(P1.(z)&ùP2.(w)ÚP2.(х)ÚP3.(y))&(P1.(z)&ùP2.(w)ÚùP1.(z)Ú P3.(y));

3) по закону дистрибутивности:

M =(P1.(z)ÚP2.(x)ÚP3.(y))&(ù P2.(w)ÚP2.(x)ÚP3.(y))&

(P1.(z)ÚùP1.(z)ÚP3.(y))&(ùP2.(w)ÚùP1.(z)ÚP3.(y));

4) по закону исключенного третьего:

M=(P1.(z)ÚP2.(x)ÚP3.(y))&(ùP2.(w)ÚP2.(x)ÚP3.(y))&

&(ù P2.(w)ÚùP1.(z)ÚP3.(y)).

Матрица содержит три элементарных дизъюнкта:

K={(P1.(z)ÚP2.(x)ÚP3.(y)); (ùP2.(w)ÚP2.(x)ÚP3.(y)); (ù P2.(w)ÚùP1.(z)ÚP3.(y))}.

Дизъюнкты матрицы содержат контрарные атомы P1.(z) и ùP1.(z), P2.(x) и ùP2.(w), свободные переменные которых могут быть одинаковыми или разными.

 

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

Наличие разноименных кванторов усложняет вывод заключения. Поэтому рассмотрим класс формул, содержащих только кванторы всеобщности. Формула F называется " - формулой, если она представлена в ПНФ и содержит только кванторы всеобщности, т.е.

F = "x1"x2 ¼"xn (M).

Для устранения кванторов существования из префикса формулы разработан алгоритм Сколема, вводящий сколемовскую функцию для связывания предметной переменной квантора существования с другими предметными переменными.

Алгоритм Сколема

Шаг 1. Представить формулу Fв виде ПНФ, т.е.

F=Âx1Âx2¼Âxn(M), где ÂiÎ{"; $}Шаг 2. Найти в префиксе самый левый квантор существования:

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

б) если квантор находится не на первом месте префикса, т.е. "x1"x2¼"xi-1$xi .., то выбрать (i-1)-местный функциональный символ, отличный от функциональных символов матрицы М и выполнить замену предметной переменной xi, связанной квантором существования, на функцию f(x1;x2 ;¼ xi-1 ) и квантор существования удалить.

Шаг 3. Найти следующий справа квантор существования и перейти к исполнению шага 2, иначе конец.

Формулу ПНФ, полученную в результате введения сколемовской функции называют сколемовской стандартной формой формулы (ССФ).

Пример:

F=$x1"x2"x3$x4"x5$x6 ((P21 (x1; x2) ÚùP32(x3; x4; x5))&P 23(x4; x6)).

1) заменить предметную переменную x1 на постоянную a:

F="x2"x3$x4"x5$x6 ((P21. (a; x2)ÚùP32.(x3; x4; x5))&P23 (x4; x6));

2) заменить предметную переменную x4 на функцию f2 1.(x2;x3):

F="x2"x3"x5$x6 ((P21.(a; x2)ÚùP32 (x3; f 21(x2; x3); x5))&P23 (f21(x2; x3); x6));

2) заменить предметную переменную x6 на функцию

f32(x2; x3 ; x5 ):

F="x2"x3"x5((P21(a; x2)ÚùP32(x3; f21(x2; x3); x5))&

&P23(f21(x2; x3);f32(x2; x3 ; x5 ))).

К={(P21(a; x2)ÚùP32(x3; f21(x2; x3); x5)); P23(f21(x2; x3);f32(x2; x3 ; x5 ))}.

 

Унификация

Процесс унификации является основным в формальныхпреобразованиях, выполняемых при нахождении резольвент(для метода резолюций).

Пусть задано множество дизъюнктов. Каждый дизъюнкт составлен из литералов.

Пример. Пусть имеем следующее множество дизъюнктов:

дизъюнкт дизъюнкт

_____.А.___________ А

S = (P(x, f(y), b) ÚP(x, f(a), b), ØP(c, f(a), b)}

литерал литерал литерал

Термы литерала могут быть переменными, постоянными или выражениями, состоящим из функциональных букв и термов. Например, для литерала Р(х, f(y), b) имеем, что х - переменная, f(y) - сложный терм, b-постоянная.

Подстановочный частный случай литерала получается при подстановке в литералы термов вместо переменных. Пусть имеем литерал P(x, f(y), b). Его частными случаями будут:

P1= P(z,f(w), b),

P2 = P(x, f(a), b),

P3 = P(g(z), f(a), b),

Р4 = Р(с, f(а), b) - константный частный случай литерала или атом, т.к. нет переменных.

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

q1 = {z/x, w/y}, здесь z подставляется вместо х, а w вместо у;

q2 = {а/у};

qз = {g(z)/x, а/у};

q4 = {с/х, а/у}. Применение подстановки в к литералу Р обозначаем Рq. Тогда имеем

Pq1=Pj, Рqз3,

рq22, рq44

Если q - подстановка и она применяется к каждому из литералов Liто полученные частные случаи обозначаются через {Li}q.

Последовательное применение двух подстановок q1 и q2 дает новую подстановку q3, которую обозначаем q3 = q1 ° q2.

Множество {Li} литералов называется унифицируемым, если существует такая подстановка в, что (L1) q= (L2) q= ... = (Ln) q

В этом случае подстановку вназывают унификатором для {Li}.

Пусть имеем множество литералов {Р(х, f(y), b), Р(х, f(b), b)}, где L1 = Р(х, f(y), b), L2 = P(x, f(b), b). Подстановка q = {a/x, b/y} является, очевидно, унификатором для этого множества литералов.

Унификатор s для множества выражений {E1,E2,...,Ek} называется наиболее общим унификатором тогда и только тогда, когда для каждого унификатора q для этого множества существует такая подстановка l, что q =s°l.

Существует алгоритм, называемый алгоритмом унификации, который приводит к наиболее общему унификатору для унифицируемого множества литералов {Li} и сообщает о неудаче, если это множество не унифицируемо.

Алгоритм унификации: Алгоритм начинает работу с пустой подстановки и шаг за шагом строит наиболее общий унификатор, если таковой существует. Предположим, что на k-ом шаге получена подстановка qk. Если все литералы из {Li} в результате становятся идентичными, то q = qк и есть наиболее общий унификатор. В противном случае каждый из литералов в {Li}qk рассматривается как цепочка символов и выделяется

позиция первого символа, в которой не все из литералов имеют одинаковый символ. Рассмотрим пример двух литералов. Стрелками пометим позиции, где появились различные символы (при просмотре слева направо).

{P(a, f(a, g(z)), h(x)), P(a, f(a, u), g(w))}

­_______________­

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

{g(z), u}.

Далее модифицируем (если можно) подстановку θk, чтобы сделать равным два элемента из множества рассогласования. Это можно сделать только тогда, когда множество рассогласования содержит переменную, которую можно положить равной одному из его термов. Если множество рассогласования не содержит переменных, то множество {Li} унифицировать нельзя.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.