|
|
q(a26,a50). | % 1 |
q(a26v,a26). | % 2 |
q(a46,a78). | % 3 |
q(a47,a46). | % 4 |
q(a65a,a64). | % 5 |
q(a78,a47). | % 6 |
q(a78,a81). | % 7 |
q(a79,a47). | % 8 |
Ако се опитаме да уточним математически кои са целите,
за които по подобен начин би могло да се установи, че не са изпълними при
дадена програма, стигаме до понятието за цел, пропадаща при тази програма.
Всъщност това ще бъде и описание на целите, за които Пролог би дал съобщение
"No" при изпълнението на програмата, стига да не бъде възпрепятстван от
недостиг на памет или от прекалена продължителност на процеса на изпълнението.
За опростяване на дефиницията първо дефинираме едно спомагателно понятие.
А именно, ако е дадена една хорнова програма P, то една хорнова
цел G ще наричаме директно пропадаща при P, ако G
не е празна и няма резолвента с никоя от клаузите
Пример 2. Ако P е програмата от
Забележка 1. Ако една хорнова цел G е директно пропадаща при дадена хорнова програма P, то всички варианти на G са директно пропадащи при P - това следва от обстоятелството, че вариантите на G също не са празни и имат същите резолвенти както G с коя да е хорнова клауза.
Отново предполагайки, че е дадена една хорнова програма
P,
сега ще дефинираме индуктивно кога една хорнова цел ще наричаме
пропадаща
при P. Дефиницията е следната: една хорнова цел се нарича пропадаща
при P, ако е директно пропадаща при P или пък има резолвента
с поне една клауза на P, но всички резолвенти на тази цел с клаузи
на P са пропадащи
Пример 3. Всички цели, дадени в явен вид в
Дадената преди малко индуктивна дефиниция за хорнова
цел, пропадаща при P, може да се трансформира в стандартна математическа
дефиниция така: една хорнова цел G се нарича пропадаща при P,
ако G принадлежи на всяко множество, състоящо се от хорнови цели
и удовлетворяващо условията
Забележка 2. При направеното преди малко трансформиране
на дефиницията за хорнова цел, пропадаща при дадена хорнова програма P,
стана дума за множества, състоящи се от хорнови цели и удовлетвояващи формулираните
две
Лема 1. Ако една хорнова цел G е пропадаща
при дадена хорнова програма P, то всички варианти на G също
са пропадащи
Доказателство. Ще използваме изказания преди
малко индуктивен принцип, като ще го приложим за свойството всичли варианти
на разглежданата хорнова цел да са пропадащи при P. От
Следствие 1. Нека G е хорнова цел,
която има резолвента с поне една клауза на дадена хорнова програма P,
и нека G има канонична резолвента, пропадаща при P, с всяка
клауза от P, с която има изобщо резолвента. Тогава G е пропадаща
Доказателство. Използваме
Горното следствие позволява при изследването дали
дадена хорнова цел G е пропадаща относно дадена хорнова програма
P
да се ограничаваме само с краен брой канонични резолвенти на G с
клаузи на P в случаите, когато G има резолвента с някоя клауза
Пример 3ў. С помощта
на горното следствие могат да се опростят допълнителните разсъждения от
Пример 4. Нека отново P да бъде програмата
от
?- q(X,Y), q(Y,U),
q(U,V),
q(V,X).
Имат се пред вид разсъждения с помощта на
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||||||||
Между пропадане на една цел и нейната изпълнимост имаме връзката, която можеше да се очаква, а именно - че двете неща се изключват взаимно.
Несъвместимост на пропадането и изпълнимостта.
Нека P е произволна хорнова програма. Ако една хорнова цел е пропадаща
при P, тази цел не е изпълнима
Доказателство. Ще използваме изказания по-горе
индуктивен принцип за установяване на общи свойства на пропадащите цели.
Знаем (вж. началото на настоящия въпрос), че една непразна хорнова цел
G
е изпълнима при P точно тогава, когато G има с някоя клауза
от P канонична резолвента, изпълнима при P. Оттук е ясно
преди всичко, че хорновите цели, директно пропадащи при P, не са
изпълними при P. Да предположим сега, че G е хорнова цел,
която има резолвента с поне една клауза на P, и че резолвентите
на G с клаузи на P не са изпълними при P. Тогава G
очевидно не е празна и допускането, че G е изпълнима при P,
води веднага до противоречие. Следователно G не е изпълнима
Обратното твърдение на току-що доказаното в общия случай не е вярно - може да се случи една хорнова цел да не е изпълнима при дадена хорнова програма и въпреки това да не е пропадаща. За да се убедим по-лесно в това, удобно е да докажем най-напред следното твърдение:
Лема 2. Нека P е произволна хорнова програма. Ако една хорнова цел е пропадаща при P, то не съществува основана на P безкрайна канонична резолвентна верига, на която тази цел е начален член.
Доказателство. Пак ще използваме индуктивния
принцип за установяване на общи свойства на пропадащите цели. Дирекно пропадащите
при P цели очевидно имат това свойство - основана на P канонична
резолвентна верига, започваща с такава цел, не може да има никакъв друг
член. От друга страна, ако една хорнова цел G има резолвента с някоя
клауза от P и всички канонични резолвенти на G с клаузи на
P
имат доказваното свойство, то и целта G го притежава, защото, ако
от една основана на P канонична резолвентна верига, започваща с
G
и имаща повече от един член, махнем нейния начален член, получаваме основана
на P канонична резолвентна верига, започваща с канонична резолвента
на G и на някоя клауза
Пример 5. Нека към програмата от
p(X,Y) :- q(X,Y). | % 9 |
p(X,Y) :- p(Y,X). | % 10 |
Лема 2 допуска следното чувствително усилване:
Лема 2ў. Нека P е произволна хорнова програма. Ако една хорнова цел е пропадаща при P, то съществува горна граница за дължините на основаните на P крайни канонични резолвентни вериги, на които тази цел е начален член.
Доказателство. Отново ще използваме индуктивния
принцип за установяване на общи свойства на пропадащите цели. Ако една
хорнова цел е директно пропадаща при P, то единствената основана
на P канонична резолвентна верига, започваща с дадената цел, е тази,
която се състои само от нея, следователно твърдението е вярно в този случай.
Сега да предположим, че е дадена една хорнова цел G, която има резолвента
с някоя клауза от P и на която всички канонични резолвенти с клаузи
от P имат доказваното свойство. Ще покажем, че и тя има това свойство.
За целта за всяка клауза от P, с която G има резолвента,
да си изберем по една канонична резолвента на G с нея. Нека така
избраните канонични резолвенти да бъдат
Ще използваме току-що доказаната лема, за да получим
една характеризация на пропадащите цели.
Характеризационна теорема за пропадащите цели.
Нека P е произволна хорнова програма. За да бъде една хорнова цел
пропадаща при P, необходимо и достатъчно е да съществува горна граница
за дължините на основаните на P крайни канонични резолвентни вериги,
на които тази цел е начален член, и никоя от споменатите вериги да не завършва
с празната цел.
Доказателство. Необходимостта е ясна от горната
лема и от несъвместимостта на пропадането и изпълнимостта (лесно е да се
даде и директно индуктивно доказателство, че никоя от разглежданите вериги
не завършва с празната цел). За да докажем достатъчността, ще си послужим
с индукция относно горната граница на дължините на основаните на P
крайни канонични резолвентни вериги, на които дадената хорнова цел е начален
член. Ако споменатата горна граница е 1, ясно е, че дадената цел няма резолвента
с никоя от клаузите на P и не е празна, следователно тя е директно
пропадаща, а значи и пропадаща при P. Да предположим сега, че това,
което доказваме, е в сила при стойност h на разглежданата граница,
където h е дадено естествено число, и да разгледаме цел G,
такава, че всички основани на P крайни канонични резолвентни вериги,
започващи с G, имат дължини, не по-големи от h+1, а освен
това никоя от основаните на P крайни канонични резолвентни вериги,
започващи с G, не завършва с празната цел. Ще покажем, че целта
G е пропадаща при P. Без ограничение на общността можем да
считаме, че поне една от споменатите вериги има дължина h+1. Тогава
G сигурно ще има резолвента с поне една от клаузите на P
и лесно се съобразява, че ако
Следствие 2. Нека P е произволна хорнова програма и нека G е такава хорнова цел, че съществува горна граница за дължините на основаните на P крайни канонични резолвентни вериги, започващи с G. Тогава G е изпълнима или пропадаща.
Забележка 3. От дефиницията за пропадаща цел
е ясно, че подредбата на клаузите в една хорнова програма не играе роля
за това кои са пропадащите при тази програма хорнови цели. Не винаги е
така обаче с подредбата на атомарните формули в телата на клаузите, когато
някое от тези тела съдържа повече от един член
Пример 6. Нека p и q са нулместни
предикатни символи. Да означим с
p :- q, p.
Целта [p] е пропадаща при
p :- p, q.
При
Последно изменение: 20.10.2003 г.
|
|