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


Търсене на атомарна формула, която е частен случай на всяка от две дадени атомарни формули



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

Търсене на атомарна формула, която е частен случай на всяка от две дадени атомарни формули

нека A и B са произволни атомарни формули; въпросът, който ще разглеждаме е съществува ли атомарна формула, която е частен случай както на A, така и на B, т.е. съществуват ли субституции

, , такива че A = B;
унификатор на атомарните формули A и B наричаме

субституция , такава че A = B; ако A и B притежават унификатор, казваме че A и B са унифицируеми;


ако A и B са унифициеруеми, очевидно съществува атомарна формула, която е частен случай на A и на B; обратното в общия случай не е вярно; например:

нека A = p (a, Z), B = p (Z, b), където Z е променлива a, b са различни константи; имаме C = p (a, b) = A[Z/b] = B[Z/a],

т.е. съществува атомарна формула, която е частен случай

на A и на B; ще покажем, че A и B не са унифицируеми;

нека  е произволна субституция и да допуснем, че A = B 

p (a, Z) = p (Z, b) и от еднозначния синтактичен анализ на атомарните формули  a = Z = b, което е противоречие;


Твърдение: нека A и B са атомарни формули, такива че

VAR (A)  VAR (B) = ; ако съществува атомарна формула, която е частен случай на A и на B, то A и B са унифицируеми;

Доказателство: по условие съществуват субституции ,  такива че

A = B; разглеждаме изображението  от в множеството на всички термове,  (x) =  (x), ако x  VAR (A),  (x) =  (x), ако



x\VAR (A); ясно е, че  е субституция, тъй като  (x)  x

най-много за променливите от VAR (A)  VAR (B), които са краен брой; тъй като  и  съвпадат върху VAR (A), то A = A;

също, тъй като VAR (A)  VAR (B) =   VAR (B)  \VAR (A) 

 и  съвпадат върху VAR (B)  B = B;

така  е унификатор на A и B;
нека A и B са произволни атомарни формули; както знаем, съществува вариант B на B, такъв че VAR (A)  VAR (B) = ;

ясно е, че B и B имат едни и същи частни случаи; тогава една атомарна формула е частен случай на A и на B  тя е частен случай на A и на B; от горното твърдение, тъй като

VAR (A)  VAR (B) = , то съществува атомарна формула, която е частен случай на А и на B  A и B са унифицируеми;

от доказателството на горната теорема заключаваме, че общият вид на атомарните формули, които са частни случаи на A и на B

е A, където  е унификатор на A и на B;
пример: нека A = p (a, Z), B = p (Z, b); образуваме вариант

B = p (X, b) на B, очевидно VAR (A)  VAR (B) = ;

търсим унификатор на A и на B, т.е. субституция , такава че

A = B, т.е. p (a, Z) = p (X, b); от еднозначния синтактичен анализ на атомарните формули получаваме, че a = X, b = Z;

една такава субституция  е [X/a, Z/b]; имаме

A[X/a, Z/b] = p (a, b) = B[X/a, Z/b]; така A и B са унифицируеми и формулата p (a, b) е частен случай на A и на B;


нека A и B са атомарни формули;

ако A и B имат различни предикатни символи или предикатни символи с различен брой аргументи, то очевидно A и B не са унифицируеми;



Решаване на системи от уравнения между термове



уравнение между термове наричаме формално равенство

от вида T = U, където T и U са термове; решение на това уравнение наричаме субституция , такава че T = U;


под система от уравнения между термове разбираме крайно множество от уравнения: T1 = U1, T2 = U2, …, Tn = Un, Ti, Ui са термове; една субституция  наричаме решение на системата, ако тя е решение на всяко едно от уравненията, т.е.

T1 = U1, T2 = U2, …, Tn = Un;


Твърдение: нека A = p (T1, T2, …, Tn) и B = p (U1, U2, …, Un) са атомарни формули с един и същ предикатен символ с един и същ брой аргументи; една субституция  е унификатор на A и B 

 е решение на системата T1 = U1, T2 = U2, …, Tn = Un;

Доказателство: нека  е произволна субституция;

имаме A = p (T1, T2, …, Tn), B = p (U1, U2, …, Un);

от еднозначния синтактичен анализ имаме:

A = B  T1 = U1, T2 = U2, …, Tn = Un, т.е.  е унификатор на A и B   е решение на системата T1 = U1, T2 = U2, …, Tn = Un;


пример: нека A = p (X, f (X), Y), B = p (f (Y), Z, c); тогава  е унификатор на A и B   е решение на системата:

X = f (Y), f (X) = Z, Y = c;


нека 1 и 2 са субституции; казваме, че 2 е частен случай на 1, ако съществува субституция , такава че 2 = 1;
ще казваме, че една система в решен вид, ако тя има вида

x1 = U1, x2 = U2, …, xn = Un, където x1, x2, …, xn са две по две различни помежду си променливи, U1, U2, …, Un са термове и

xi  VAR (Uj) за всеки i, j  { 1, 2, …, n};

тъй като x1, x2, …, xn са две по две различни помежду си можем да построим субституцията 0 = [x1/U1, x2/U2, …, xn/Un];


Твърдение: субституцията 0 е решение на горната система и ако  е произволно решение на тази система, то  = 0;

Доказателство: за i = 1, 2, …, n имаме xi0 = Ui, Ui0 = Ui = Ui, тъй като 0 и  съвпадат върху VAR (Ui); така xi0 = Ui = Ui0,

i = 1, 2, …, n  0 е решение на системата;

нека  е произволно решение на системата, т.е. xi = Ui,

i = 1, 2, …, n; тогава xi(0) = (xi0) = Ui = xi, i = 1, 2, …, n;

също за всяко x\{ x1, x2, …, xn} x(0) = (x0) = x; така  = 0;


нека T1 = U1, T2 = U2, …, Tn = Un е система от уравнения между термове; нека  е решение на системата; тогава всички частни случаи на  също са решения : действително, нека  е произволна субституция; за i = 1, 2, …, n имаме Ti() = (Ti) = (Ui) = Ui() 

 е решение на системата;


под общо решение на системата T1 = U1, T2 = U2, …, Tn = Un разбираме решение , такова че всяко друго решение на системата е частен случай на ; по-долу ще покажем, че ако една произволна система има решение, то тя има общо решение  и тогава всички решения на системата се изчерпват с частните случаи на ; в случая, когато системата е в решен вид, т.е. има вида x1 = U1, x2 = U2, …, xn = Un, където x1, x2, …, xn са две по две различни помежду си променливи, от горното твърдение

субституцията 0 = [x1/U1, x2/U2, …, xn/Un] е общо решение, така че решенията на системата се изчерпват със 0, където  е произволна субституция;


да разгледаме уравнение от вида T = U, където T  , U  , T и U имат различни функционални символи или функционални символи с различен брой аргументи; ясно е, че за всяка субституция  имаме T  U, т.е. това уравнение няма решение;
да разгледаме уравнение от вида x = U, където x, U е терм,

U  x и x  VAR (U);


Твърдение: при горните предположения за всяка субституция  имаме x  U, т.е. уравнението x = U няма решение;

Доказателство: с индукция по построението ще покажем, че за всеки терм W, ако x  VAR (W) и x  W, то |W| > |x| за всяка субституция ;

База: ако W е константа, то VAR (W) =  - противоречие

(x  VAR (W)); ако W е променлива, то от x  VAR (W) получаваме

W = x – противоречие (W  x);

Предположение: нека W = f (W1, W2, …, Wk) и твърдението е изпълнено за термовете W1, W2, …, Wk;

Стъпка: нека  е произволна субституция; имаме

W = f (W1, W2, …, Wk); ясно е, че |W| > |Wi| за всяко

i = 1, 2, …, n; тъй като x  VAR (W), то x  VAR (Wi)

за някое i  { 1, 2, …, k }; ако Wix, то по индукционното предположение|Wi| > |x|  |W| > |Wi| > |x|;

ако Wi = x, то |W| > |Wi| = |x|; така и в двата случая

|W| > |x|;

сега, ако допуснем, че  е решение на системата x = U ще получим, че |x|= |U|, което е противоречие;
уравнения от горните два вида наричаме явно нерешими; казваме, че една система е явно нерешима, ако тя съдържа явно нерешимо уравнение; ясно е, че такава система няма решение;
две системи от уравнения между термове наричаме еквивалентни, ако множествата от решенията им съвпадат;
ще посочим четири еквивалентни преобразувания на системи, т.е. преобразувания чрез които една система преминава в еквивалентна на нея система;

нека T1 = U1, T2 = U2, …, Tn = Un е система от уравнения между термове;



  1. премахване на тъждество – ако за някое i  { 1, 2, …, n} имаме Ti = Ui премахваме това уравнение от системата;

системата очевидно преминава в еквивалентна на нея, тъй като премахнатото уравнение се удоволетворява от всяка субституция;

  1. разпадане – ако за някое i  { 1, 2, …, n} имаме

Ti = f (V1, V2, …, Vm), Ui = f (W1, W2, …, Wm), m > 0 и Ti  Ui, заменяме уравнението Ti = Ui с уравненията

V1 = W1, V2 = W2, …, Vm = Wm; системата преминава в еквивалентна на нея, тъй като  е решение на Ti = Ui,

т.е. Ti = Ui  f (V1, V2, …, Vm) = f (W1, W2, …, Wm)  (от еднозначния синтактичен анализ)

V1 = W1, V2 = W2, …, Vm = Um;

изисква се Ti  Ui, тъй като при Ti = Ui е удачно да се извърши премахване на тъждество;


  1. обръщане – ако за някое i  { 1, 2, …, n} имаме Ti, Ui,

то заменяме уравнението Ti = Ui с Ui = Ti; очевидно системата преминава в еквивалентна на нея;

  1. заместване – ако за някое i  { 1, 2, …, n} имаме Ti,

Ti  VAR (Ui) и Ti  VAR (Uj)  VAR (Tj) за някое j = 1, 2, …, n, то заменяме системата със следната:

T1[Ti/Ui] = U1[Ti/Ui], …, Ti-1[Ti/Ui] = Ui-1[Ti/Ui],

Ti = Ui, Ti+1[Ti/Ui] = Ui+1[Ti/Ui], …, Tn[Ti/Ui] = Un[Ti/Ui];

ще покажем, че двете системи са еквивалентни;

да означим 0 = [Ti/Ui]; нека  е произволно решение на изходната система; тъй като  е решение на уравнението

Ti = Ui, то  = 0; за j  i  { 1, 2, …, n} Tj = Tj(0) = (Tj0)

и Uj = Uj(0) = (Uj0)  (Tj0) = (Uj0); така  е решение и на преобразуваната система;

нека  е произволно решение на преобразуваната система; тъй като  е решение на уравнението Ti = Ui, то  = 0;

за j  i  { 1, 2, …, n} Tj = Tj(0) = (Tj0) и

Uj = Uj(0) = (Uj0)  Tj = Uj, т.е.  е решение на изходната система;


пример: да разгледаме горната система от уравнения между термове: X = f (Y), f (X) = Z, Y = c; последователно извършваме еквивалентни преобразувания на системата:

(обръщане) X = f (Y), Z = f (X), Y = c;

(заместване) X = f (Y), Z = f (f (Y)), Y = c;

(заместване) X = f (c), Z = f (f (c)), Y = c;

получената система е в решен вид и нейното общо решение се дава със субституцията 0 = [X/f (c), Z/f (f (c)), Y/c];

така унификаторите на формулите A = p (X, f (X), Y) и

B = p (f (Y), Z, c) се изчерпват със 0, където  е произволна субституция;
Теорема: всяка система от уравнения между термове може да се приведе чрез четирите еквивалентни преобразувания до система в решен вид или до явно нерешима система;
Доказателство:

ще посочим алгоритъм за преобразуване на произволна система чрез еквивалентните преобразувания до система в решен вид или до явно нерешима система:



  1. ако системата не е в решен вид или не е явно

нерешима към 2.; иначе край;

  1. към системата прилагаме някое от четирите еквивалентни преобразувания (което е възможно); към 1.;

ще докажем, че алгоритъмът е коректен; трябва да покажем, че:

  • ако една система не е в решен вид и не е явно нерешима, то е възможно да се извърши някое от четирите преобразувания;

  • алгоритъмът приключва след краен брой стъпки;

нека T1 = U1, T2 = U2, …, Tn = Un е система от уравнения между термове, която не е в решен вид и не е явно нерешима; да допуснем, че не е възможно да извършим никое от четирите преобразувания; ще покажем, че T1, T2, …, Tn са променливи;

да допуснем, че за някое i  { 1, 2, …, n} Ti не е променлива;

ако Ui е променлива, тогава можем да извършим обръщане – противоречие; ако Ui не е променлива и Ti = Ui, то можем да извършим премахване на тъждество – противоречие;

ако Ui е константа и Ti  Ui, то уравнението Ti = Ui е явно нерешимо  системата е явно нерешима – противоречие;

ако Ui е съставен терм, Ti  Ui и Ti, Ui имат еднакви функционални символи с един и същ брой аргументи, то можем да извършим разпадане – противоречие; ако Ui е съставен терм, Ti  Ui и Ti, Ui имат различни функционални символи или функционални символи с различен брой аргументи, то уравнението Ti = Ui е явно нерешимо  системата е явно нерешима – противоречие; във всички случаи получихме противоречие с допускането, че Ti не е променлива  T1, T2, …, Tn са променливи;

за i = 1, 2, …, n имаме Ti  Ui, тъй като в противен случай можем да извършим премахване на тъждество;

по предположение системата е явно нерешима и тъй като Ti  Ui, то Ti  VAR (Ui), i = 1, 2, …, n;

ако допуснем, че за някои i  j  { 1, 2, …, n} Ti  VAR (Uj)  { Tj} ще получим противоречие, тъй като в такъв случай можем да извършим заместване; така променливите T1, T2, …, Tn са две по две различни и Ti  VAR (Uj) за всеки i, j  { 1, 2, …, n }, т.е. системата е в решен вид – противоречие с допускането, че системата не в в решен вид; така към всяка система от уравнения между термове, която не е в решен вид и не е явно нерешима може да се приложи някое от четирите еквивалентни преобразувания;

ще покажем, че алгоритъмът завършва след краен брой стъпки;

нека T е терм; дефинираме височина на терма h (T) с индукция по построението:

База: ако T е променлива, дефинираме h (T) = 1; ако T е константа, дефинираме h (T) = 2;

Предположение: нека T = f (T1, T2, …, Tn) и h (T1), h (T2), …, h (Tn) са дефинирани;

Стъпка: дефинираме h (T) = h (T1) + h (T2) + … + h (Tn) + 1;

съвсем лесно с индукция по построението се проверява, че

височината на всеки терм е строго положително число; при това термовете, които не са променливи имат височина строго

по-голяма от 1;

под височина на системата от уравнения между термове

T1 = U1, T2 = U2, …, Tn = Un ще разбираме числото

h (T1) + h (T2) + … + h (Tn); ще изследваме как се променя височината на системата при извършване на еквивалентните преобразувания:



  • при премахване на тъждество височината строго намалява, тъй като от лявата страна премахваме терм и височината на всеки терм е строго положителна;

  • при разпадане от лявата страна премахваме съставен терм

f (V1, V2, …, Vm) и прибавяме термовете V1, V2, …, Vm; от дефиницията за височина на терм височината на системата намалява с 1;

  • при обръщане от лявата страна премахваме терм който не е променлива и го заменяме с променлива; тъй като всеки терм, който не е променлива има височина по-голяма от 1, а променливите имат височина 1, то височината на системата строго намалява;

  • при заместване лявата страна или не се променя или променливи се заместват с термове, така че височината на системата или не се променя или нараства;

така при първите три преобразувания височината на системата строго намалява, така че алгоритъмът може да извърши само краен брой пъти тези преобразувания едно след друго, т.е. без извършване на заместване;

ще казваме, че системата от уравнения между термове

T1 = U1, T2 = U2, …, Tn = Un е решена относно променливата x,

ако x = Ti за някое i  { 1, 2, …, n}, x  VAR (Tj)  VAR (Uj),

j  i  { 1, 2, …, n} и x  VAR (Ui), т.е. x не се среща никъде другаде в системата освен като лява част на точно едно уравнение;

например, ако системата е в решен вид, то тя е решена относно

променливите T1, T2, …, Tn;

нека системата е решена относно променливата x, x = Ti;

ще покажем, че при всяко от еквивалентните преобразувания системата остава решена относно x:


  • при премахване на тъждество не можем да премахнем

Ti = Ui, тъй като x  VAR (Ui)  Ti  Ui; така системата остава решена относно x;

  • при разпадане уравнението Ti = Ui не се променя, тъй като Ti не е съставен терм; ясно е, че в новодобавените уравнения x не присъства, тъй като x не присъства в уравнението, което се разпада; така системата остава решена относно x;

  • при обръщане уравнението Ti = Ui не се променя, тъй като Ti е променлива; системата очевидно остава решена относно x;

  • при заместване не можем да използваме уравнението Ti = Ui, тъй като променливата x не се среща никъде другаде в системата; така заместваме променлива, различна от x и тогава получената системата ще остане решена относно x;

нека 0 е множеството от всички променливи, които се срещат в първоначалната система; очевидно 0 е крайно множество;

разглеждаме броят на променливите от 0, относно които системата не е решена; съгласно горните разсъждения при извършване на кое да е от четирите еквивалентни преобразувания този брой не може да нарастне; освен това при заместване този брой намалява строго с 1: ако заместваме променливата Тi, то тази система не е решена относно Ti, тъй като Ti се среща поне на още едно място в системата; също Ti  VAR (Ui) и след заместване на Ti с Ui в другите уравнения ще получим система, която е решена относно Ti;

от направените разсъждения получаваме, че алгоритъмът може да извърши само краен брой пъти заместване – в противен случай ще получим, че 0 е безкрайно множество;

така алгоритъмът извършва само краен брой пъти заместване и само краен брой пъти последователно първите три преобразувания, така че той приключва след краен брой стъпки;


след приключване на алгоритъма получената система очевидно е еквивалентна на изходната система; ако получената система е явно нерешима, то изходната система няма решение; ако получената система е в решен вид, общото решение на изходната система се дава с общото решение на получената система в решен вид; в частност всяка система, която има поне едно решение има общо решение и решенията на системата са частните случаи на общото решение;




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




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

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