Лекции по логическо програмиране


Резолюция между хорнова цел и хорнова клауза



страница13/22
Дата01.06.2017
Размер2.18 Mb.
#22581
ТипЛекции
1   ...   9   10   11   12   13   14   15   16   ...   22

Резолюция между хорнова цел и хорнова клауза



непосредствена резолюция между хорнова цел и положителна хорнова клауза е възможна точно когато целта е непразна и първият член на целта съвпада със заключението на клаузата;
нека G = A1 & A2 & … & Am е непразна хорнова цел (m  1) и

C = A1 :– B1 & B2 & … & Bn (n  0) е положителна хорнова клауза;

образуваме G = B1 & B2 & … & Bn & A2 & A3 & … & Am; целта G наричаме непосредствена резолвента на хорновата цел G и положителната хорнова клауза C;

ще покажем, че ако G и C са вярни в дадена структура S при оценка v, то G също е вярна в S при оценката v;

G S, v = 1  B1S, v = B2S, v = … = BnS, v = 1, CS, v = 1  A1S, v = 1,

A2S, v = A3S, v = … = AmS, v = 1 (тъй като G S, v = 1) 

GS, v = (A1 & A2 & … & Am)S, v = 1;

като следствие, ако C е тъждествено вярна в S, то импликацията

G  G е тъждествено вярна в S;
нека G и C имат непосредствена резолвента G; тогава за всяка субституция , G и C имат непосредствена резолвента G :

действително G = A1 & A2 & … & Am и

C = A1:– B1 & B2 & … & Bn имат непосредствена резолвента

B1 & B2 & … & Bn & A2 & A3 & … & Am = G;


нека G е хорнова цел, C е положителна хорнова клауза;

всяка хорнова цел G, която е непосредствена резолвента на някой частен случай на G и някой частен случай на C наричаме резолвента на G и C; ще отбележим, че частните случаи на G и C може да се получават от различни субституции; ясно е, че

ако G е непосредствена резолвента на G и C, то G е

резолвента на G и C;


пример: нека C = p (f (f (X))) :– p (X), G = p (X) & p (f (X));

очевидно G и C нямат непосредствена резолвента;

имаме G[X/f (f (X))] = p (f (f (X))) & p (f (f (f (X))));

така частният случай G[X/f (f (X))] на G и частният случай C на C имат непосредствена резолвента – p (X) & p (f (f (f (X)))) 

G и C имат резолвента p (X) & p (f (f (f (X))));
Твърдение: нека G и C имат резолвента G; нека C е тъждествено вярна в дадена структура S; тогава, ако G е изпълнима в S, то G също е изпълнима в S;

Доказателство: нека 1, 2 са субституции и G е непосредствена резолвента на G1 и C2; тъй като C е тъждествено вярна в S, то

C2 е тъждествено вярна в S  G  G1 е тъждествено вярна в S;

тъй като G е изпълнима в S  съществува оценка v в S, така че

G S, v = 1; имаме (G  G1)S, v = 1  (G1)S, v = 1, т.е. G1 е изпълнима в S  G е изпълнима в S, тъй като един неин частен случай е изпълним в S;
Твърдение: нека P е множество от положителни хорнови клаузи; нека G е хорнова цел; нека G има резолвента G с някоя клауза

от P; в такъв случай, ако G е изпълнима при P, то G е изпълнима при P;

Доказателство: нека S е произволен модел на P; тъй като G е изпълнима при P  G е изпълнима в S; G е резолвента на G и някаква клауза C от P, която е тъждествено вярна в S, тъй като S е модел на P; от горното твърдение G е изпълнима в S; така G е изпълнима във всеки модел на P, т.е. G е изпълнима при P;
нека P е множество от положителни хорнови клаузи; резолвентна редица относно P наричаме всяка редица G1, G2, …(крайна или безкрайна) от хорнови цели, в която за i = 2, 3, …Gi е резолвента на Gi-1 и някоя клауза от P; считаме, че всяка редица от един член е резолвентна;
Твърдение: ако G1, G2, … е резолвентна редица относно P и за някое n  N Gn е изпълнима при P, то G1, G2, …, Gn-1 са изпълними при P;

Доказателство: следва непосредствено от предното твърдение;


Следствие: ако една крайна резолвентна редица относно P завършва с празната цел (true), то всички нейни членове са изпълними при P;
пример: нека P = { p (a), p (f (f (X))) :– p (X) };

нека G = p (f (X)); строим резолвентна редица с начало G относно P;

ясно е, че G няма резолвента с p (a), тъй като всеки частен случай на G съдържа функционален символ; една резолвента на G и втората клауза е p (X), която е непосредствена резолвента на

G[X/f (X)] и клаузата; сега p (X)[X/a] = p (a) и тогава p (X) и p (a) имат резолвента true; получаваме следната резолвентна редица:

p (f (X)), p (X), true.

от горното следствие G = p (f (X)) е изпълнима при P;

нека G = p (X) & p (f (X)); отново строим резолвентна редица с начало G относно P; G[X/a] = p (a) & p (f (a))  G има резолвента

p (f (a)) с p (a); ясно е, че p (f (a)) няма резолвента с никоя от клаузите от P; така получихме редицата

p (X) & p (f (X)), p (f (a)).

G[X/f (f (X))] = p (f (f (X))) & p (f (f (f (X))))  G има резолвента

p (X) & p (f (f (f (X)))) с втората клауза; p (X) & p (f (f (f (X))))[X/a] =

= p (a) & p (f (f (f (a)))) има резолвента p (f (f (f (a)))) с първата клауза;

p (f (f (f (a)))) има резолвента само с втората клауза и тя е p (f (a)); така получаваме редицата

p (X) & p (f (X)), p (X) & p (f (f (f (X)))), p (f (f (f (a)))), p (f (a)).

ако използваме само втората клауза ще получим една безкрайна резолвентна редица:

p (X) & p (f (X)), p (X) & p (f3 (X)), p (X) & p (f5 (X)), p (X) & p (f7 (X)), …;


нека P е множество от положителни хорнови клаузи;

нека G и G са хорнови цели; ще казваме, че G е резолвентно достижима от G относно P, ако съществува крайна резолвентна редица относно P с първи член G и последен член G;


ясно е, че ако празната цел true е резолвентно достижима от някоя цел G относно P, то G е изпълнима при P;
свойства на релацията резолвентна достижимост относно P:

рефлексивност: за всяка хорнова цел G, G е резолвентно достижима от G относно P – действително редицата с един член G е резолвентна относно P с начало G и край G;

транзитивност: ако G е резолвентно достижима от G относно P и G е резолвентно достижима от G относно P, то G е резолвентно достижима от G относно P – достатъчно е да комбинираме двете резолвентни редици;




Сподели с приятели:
1   ...   9   10   11   12   13   14   15   16   ...   22




©obuch.info 2024
отнасят до администрацията

    Начална страница