Previous  Next  Contents
 

 

ТЕРМОВЕ И АТОМАРНИ ФОРМУЛИ

    Оттук нататък ще предполагаме (както направихме това в един предходен въпрос), че е дадена една азбука, наречена базисна, която съдържа измежду своите знаци двете кръгли скоби и запетаята. Ще предполагаме също, че е фиксирано някое такова множество W от думи над базисната азбука, че префиксните изрази над W да имат еднозначен анализ. Сега и в бъдеще обаче ще се занимаваме със случая, когато W е обединение на множества F0, F1, F2, ... (множествa съответно на нулместните, едноместните, двуместните и пр. функционални символи), множества P0, P1, P2, ... (множествa съответно на нулместните, едноместните, двуместните и пр. предикатни символи), множество X (множество на променливите) и множество L (множество на логическите символи). Думите от обединението на множествата F0, F1, F2, ... ще наричаме с общото име функционалние символи, а думите от обединението на множествата P0, P1, P2, ... - с общото име предикатни символи. Нулместните функционални символи ще наричамe още константи. Ще предполагаме, че множеството X е безкрайно, а множеството L се състои от пет различни думи, които ще означаваме с not, and, or, for_all и for_some (ще ги нариыаме съответно знак за отрицание, знак за конюнкция, знак за дизюнкция, квантор за общност и квантор за съществуване). За множествата X и L ще искаме още да нямат общи елементи помежду си, а също и с никое от множествата Fn и Pn, n = 0, 1 ,2, ... (пресичания на множества от последните два вида обаче се допускат, а също се допуска произволно много такива множества да бъдат празни). За да избегнем някои технически усложнения при по-нататъшните разглеждания, ще направим още следните допълнителни предположения: а) множеството F0 не е празно и б) за всяко неотрицателно цяло число n сечението на множествата Fn и Pn е празно.

    Двойката от редиците F0,F1,F2,... и P0,P1,P2,... ще наричаме сигнатура. Интуитивно погледнато, n-местните функционални и предикатни символи ще служат за означаване съответно на дадени n-местни функции и дадени n-местни предикати в някое непразно множество, с променливите ще могат да се означават произволни елементи на това множество, а петте логически символи ще представят, грубо казано, строенето на едни съждения от други с помощта на "не", "и", "или", "за всяко", "за някое".

    Забележка 1. Интуитивните разяснения от последното изречение по-горе ще бъдат уточнени в някои от следващите въпроси с помощта на точни математически дефиниции.

    Пример 1. Предположенията, които направихме, биха могли да бъдат изпълнени например по следния начин, подходящ за разглеждане на чисто логическата част на езика Пролог в реализацията му Strawberry Prolog:
        а) базисната азбука съдържа поне главните и малките латински букви, цифрите, знака за подчертаване _ , двете кръгли скоби и запетаята;
        б) множеството X се състои от думите, които започват с главна латинска буква или със знак за подчертаване и не съдържат други знаци освен латински букви, знак за подчертаване и цифри, като изключваме обаче еднобуквената дума, състояща се само от знак за подчертаване (анонимната променлива), и думите, започващи с G, следвано от споменатия знак (глобалните променливи);
        в) множеството L се състои от думата not (тя всъщност е една от думите на Strawberry Prolog, резервирани за вградени предикати) и от думите and, or, for_all и for_some;
        г) всяко от множествата Fn и Pn се състои от думи, които започват с малка латинска буква, не съдържат други знаци освен латински букви, знак за подчертаване и цифри, не са резервирани за вградени предикати на Strawberry Prolog и не принадлежат на множеството L.

    Забележка 2. В курса ние няма да ограничаваме разглежданията чрез фиксиране на такъв или друг конкретен пример, а единственото нещо, което ще изискваме винаги, това е да са изпълнени предположенията, изказани в първия абзац на настоящия въпрос (вкл. изискването префиксните изрази над W да имат еднозначен анализ). В по-нататъшните примери обаче там, където е нужно да бъде фиксиран изборът на множеството W и на споменатите негови подмножества, ще имаме пред вид именно ситуацията от току-що описания пример, конкретизирана чрез подходящ избор на множествата Fn и Pn.

    Пример 2. Имайки пред вид пример 3 от встъпителните бележки, да конкретизираме сигнатурата от пример 1 по-горе, като положим

F0 = {e}, F1 = {a,b,s}, P1 = {d}, P2 = {p}
и приемем всички останали множества Fn и Pn да бъдат празни (константата e ще служи за означаване на празната дума e, функционалните символи a, b и s - за означаване на изображенията a, b и s от споменатия пример, а предикатните символи d и p - за означаване на предикати, представящи дефинираните там свойство d и отношение p).

    В ситуацията, описана в началото на настоящия въпрос, се дефинира понятието терм, като всички термове са думи над базисната азбука. Дефиницията е индуктивна: термове са константите, променливите и всички думи от вида f(T1,Т2...,Тn), където n е положително цяло число, f e n-местен функционален символ и T1, Т2,...,Тn са термове. Аналогична, но малко по-проста е и дефиницията на понятието затворен терм: затворени термове са константите и всички думи от вида f(T1,Т2...,Тn), където n е положително цяло число, f e n-местен функционален символ и T1, Т2,...,Тn са затворени термове (в литературата по логическо програмиране затворените термове често се наричат основни термове). Очевидно всички затворени термове са термове, а обратното не е вярно. След като разполагаме с понятието терм, уславяме се да наричаме атомарни формули нулместните предикатни символи и всички думи от вида p(T1,Т2...,Тn), където n е положително цяло число, p e n-местен предикатен символ и T1, Т2, ..., Тn са термове. Действайки аналогично, уславяме се да наричаме затворени атомарни формули (или основни атомарни формули) нулместните предикатни символи и всички думи от вида p(T1,Т2...,Тn), където n е положително цяло число, p e n-местен предикатен символ и T1, Т2, ..., Тn са затворени термове. Разбира се всички затворени атомарни формули са атомарни формули. Ясно е, че всички термове и всички атомарни формули са префиксни изрази над множеството W (има обаче и много други префиксни изрази над това множество, напр. изразите от вида X(T1,Т2...,Тn), къдетo X е променлива, n е положително цяло число и T1, Т2, ..., Тn са термове).

    Пример 3. При условията на пример 2 думата a(s(b(X))) е терм, думата b(s(a(a(e)))) е затворен терм, думата p(X,a(Y)) е атомарна формула, а думите d(a(a(b(b(e))))) и p(e,e) са затворени атомарни формули.

    Това, че термовете и атомарните формули са префиксни изрази над множеството W, заедно с еднозначния анализ на префиксните изрази над W и с равенството F0 З X = Ж осигурява еднозначното прочитане на термовете и на атомарните формули в следния смисъл: трите случая в дефиницията за терм се изключват взаимно, като в третия от тях числото n, функционалният символ f и термовете T1, Т2, ..., Тn се определят еднозначно по дадения терм, а също двата случая в дефиницията за атомарна формула се изключват взаимно и във втория от тях числото n, предикатният символ p и термовете T1, Т2, ..., Тn се определят еднозначно по дадената атомарна формула.

    Забележка 3. Предположенията, при които работим, изключват възможността една и съща дума да бъде както терм, така и атомарна формула. И наистина, понеже никоя променлива не е нулместен предикатен символ, еднозначният анализ на префиксните изрази над W позволява да твърдим, че ако една дума би била едновременно терм и атомарна формула, то за някое неотрицателно цяло число n съответните множества Fn и Pn биха имали общ елемент. Ние обаче изключихме тази възможност чрез допълнителното предположение б).

    За всеки терм T ще дефинираме индуктивно едно множество VAR(T), чиито елементи ще наричаме променливи на T. А именно:
        а) при cОF0 полагаме VAR(c)=Ж;
        б) при XОX полагаме VAR(X)={X};
        в) когато n е положително цяло число, fОFn и T1, Т2, ..., Тn са термове, полагаме

VAR(f(T1,Т2...,Тn)) =
n
ою
i=1
VAR(Ti).
Така изказаната дефиниция определя еднозначно множеството VAR(T) за произволен терм T благодарение на еднозначното прочитане на термовете.

    Пример 4. При условията на пример 2 имаме равенството VAR(a(s(b(X))))={X}, а множеството на променливите на терма b(s(a(a(e)))) е празно.

    Като използваме току-що дадената дефиниция и индукция, съобразена с дефиницията за терм, веднага се убеждаваме, че множеството на променливите на кой да е терм е крайно подмножество на множеството X. Пак въз основа на горната дефиниция, но чрез индукция, съобразена с дефиницията за затворен терм, показваме, че множеството на променливите на кой да е затворен терм е празно. Обратното също е вярно - ако множеството на променливите на един терм е празно, то този терм е затворен. В това можем да се убедим, като с помощта на горната дефиниция и на индукция, съобразена с дефиницията за терм, докажем за произволен терм, че той е затворен или множеството на променливите му има поне един елемент.

    За всяка атомарна формула A дефинираме множество VAR(A), чиито елементи ще наричаме променливи на A. Дефиницията е следната: когато pОP0, полагаме VAR(p)=Ж, а когато n е положително цяло число, pОPn и T1, Т2, ..., Тn са термове, дефинираме множеството VAR(p(T1,Т2...,Тn)) като същото обединение както в точка в) от дефиницията за множество на промeнливите на терм. Благодарение на еднозначното прочитане на атомарните формули току-що дадената дефиниция определя еднозначно множеството VAR(A) за произволна атомарна формула A.

    Пример 5. При условията на пример 2 имаме равенството VAR(p(X,a(Y)))={X,Y}, а множеството на променливите на атомарната формула d(a(a(b(b(e))))) е празно.

    Като използваме установените преди малко твърдения във връзка с множество на променливите на терм, веднага можем да заключим, че множеството на променливите на коя да е атомарна формула е крайно подмножество на множеството X и че една атомарна формула е затворена точно тогава, когато множеството на нейните променливи е празно.

 

Последно изменение: 18.02.2002 г.
 
 Previous  Next  Contents