|
|
Пример 1. Нека p е двуместен предикатен символ, f и g са едноместни функционални символи и P е хорновата програма
p(X,f(X)).
p(Y,g(Z)).
Нека G е хорновата цел
?- p(U,V), p(V,U).
Тогава следният частен случай на G е тъждествено верен във всеки модел
?- p(g(Z),f(g(Z))), p(f(g(Z)),g(Z)).
Всеки частен случай на една хорнова цел се получава от нея чрез прилагане на някоя субституция (например току-що разгледаният частен случай на G може да се получи от G чрез прилагане на субституцията [U/g(Z),V/f(g(Z))]). Когато са дадени една хорнова програма P и една хорнова цел G, ще наричаме удовлетворяваща субституция за G при P такава субституция s, че целта Gs да бъде тъждествено вярна във всеки модел за P (следователно субституциятя [U/g(Z),V/f(g(Z))] е една удовлетворяваща субституция за целта G от горния пример при програмата P от същия пример). Ясно е, че за да съществува удовлетворяваща субституция за G при P, необходимо и достатъчно е G да е изпълнима
Ако са дадени една хорнова цел и една хорнова клауза, ние ще наричаме тяхна проста резолвента такава хорнова клауза, която е непосредствена резолвента на дадената цел с някой частен случай на дадената клауза. Образуването на проста резолвента ще наричаме проста резолюция. Разбира се непосредствените резолвенти са и прости резолвенти, защото всяка хорнова клауза е частен случай на себе си, но обратното не е вярно.
Пример 2. Ако p е едноместен предикатен символ и a е константа, то празната цел е проста резолвента на целта с единствен член p(a) и на клаузата
p(X).
Очевидно обаче споменатите цел и клауза нямат непосредствена резолвента.
Добре е да отбележим, че за разлика от непосредствената резолвента простата резолвента не винаги е единствена в случаите, когато съществува. В това можем да се убедим, заменяйки в току-що разгледания пример използваната клауза със следната:
p(X) :- p(Y).
А именно, разгледаната преди малко цел и горната клауза ще имат безбройно много прости резолвенти - такава ще бъде всяка цел с единствен член от вида p(T), където T е някакъв терм.
Забележка 1. Очевидно една хорнова цел е резолвента на дадена хорнова цел G с дадена хорнова клауза C точно тогава, когато е проста резолвента на някой частен случай на G
Доказаната преди време инвариантност на непосредствената резолюция относно субституции има следния частичен аналог за случая на проста резолюция.
Инвариантност на простата резолюция относно субституции. Нека една хорнова цел G има с дадена хорнова клауза проста резолвента Gў и нека s е произволна субституция. Тогава целта Gs има със същата клауза проста резолвента Gўs.
Доказателство. Да означим споменатата по-горе клауза с C. Целта Gў е непосредствена резолвента на G с някой частен случай K на C. Оттук получаваме, че Gўs е непосредствена резолвента на Gs с клаузата Ks. Последната обаче също е частен случай на C и следователно Gўs е проста резолвента на Gs
В сила е следното семантично свойство на простите резолвенти.
Коректност на простата резолюция между
хорнова цел и хорнова клауза. Нека S е структура и е дадена
една хорнова клауза C, която е тъждествено вярна в S. Всеки път, когато една хорнова цел има проста резолвента с C и въпросната
проста резолвента е тъуждествено вярна в S, самата цел също е тъждествено вярна в S.
Доказателство. Да разгледаме произволна хорнова цел G, която има проста резолвента
Преди известно време ние преминахме от дефиницията за резолвента на хорнова цел и хорнова клауза към дефиниция за резолвента на хорнова цел и редица от хорнови клаузи. Сега ще извършим аналогичен преход за случая на прости резолвенти. А именно, ще казваме, че една хорнова цел
От твърдението за коректност на простата резо;юция между хорнова цел и хорнова клауза (като се вземе пред вид обстоятелството, че празната цел е тъждествено вярна формула) очевидно може да се направи такова заключение:
Достатъчно условие за тъждествена вярност на хорнова цел във всеки модел за дадена хорнова програма. За да бъде дадена хорнова цел G тъждествено вярна във всеки модел на дадена хорнова програма P, достатъчно е празната цел да бъде проста резолвента на G с някоя крайна редица, на която членовете са клаузи
Забележка 2. Може да се покаже, че условието от горното твърдение е не само достатъчно, но и необходимо.
Ще ни е нужна още следната дефиниция във връзка с общото понятие за резолвента на хорнова цел с редица от хорнови клаузи (връзката е ясна от
Теорема за преминаване от резолюция към проста резолюция. Нека една хорнова цел
Доказателство. Разглеждаме
Следствие. Нека P е хорнова програма, G е хорнова цел и празната цел е резолвента на G с някоя n-членна редица от клаузи на P при използване на субституции
Доказателство. Прилагаме теоремата, като вземаме празната цел в качеството на
Пример 3. Нека p е двуместен оредикатен символ, a и b са константи, s и u са съответно едноместем и двуместен функционален символ, а P е хорновата програма
p(X,s(X)).
p(X,u(A,B)) :– p(X,A).
p(X,u(A,B)) :– p(X,B).
Нека G е целта
?- p(a,Z), p(b,Z).
Лесно се вижда, че празната цел е резолвента на една четиричленна редица от клаузи на P с използване на субституциите
Последно изменение: 27.05.2002 г.
|
|