Previous  Next  Contents
 

 

СУБСТИТУЦИИ

   Под субституция ще разбираме такава функция s с дефиниционна област множеството X на всички променливи и със стойности в множеството Hў на термовете, че равенството s(X)=X да е нарушено най-много за краен брой променливи X. Ако X1,..., Xm са различни помежду си променливи, а U1, ..., Um са термове, то ще означаваме със знака [U1,...,Um=:X1,...,Xm] субституцията s, определена по следния начин: s(Xi)=Ui при i=1,...,m и s(X)=X за всяка променлива X, различна от X1, ...,Xm; с това уславяне ще си служим и при m=0, тъй че с [=:] ще означаваме тъждественото изображение на множеството X в себе си - това изображение ще наричаме тъждествена субституция (същото изображение нарекохме в предходния въпрос Ербранова оценка на променливите).  При m>0 означението [U1,...,Um=:X1,...,Xm] ще четем "U1, ..., Umвместо X1, ...,Xm".

     Нека s е дадена субституция. Като използваме еднозначното прочитане на термовете, можем да дефинираме индуктивно едно изображение d на Hў в Hў по следния начин:
        а) d(X)=s(X)за всяка променлива X;
        б) d(c)=c за всяка константа c;
        в) d(f(T1,T2...,Tn))=f(d(T1),d(T2)...,d(Tn)) при n>0, fОFn,T1,T2,..., Tn О Hў.
За произволен терм T съответния му терм d(T) ще наричаме резултат от прилагане на s към T (интуитивно въпросният резултат може да се схваща като получен чрез заместване на променливите в T със съответните им стойности на s). Благодарение на точка а) от дефиницията на изображението d то е продължение на изображението s. Това позволява без опасност от недоразумение в бъдеще да означаваме терма d(T) със s(T). При такъв начин на означаване равенствата от точки б) и в) от същата дефиниция добиват съответно вида s(c)=c и вида

s(f(T1,T2...,Tn))=f(s(T1),s(T2)...,s(Tn)).

    След като вече дефинирахме какво разбираме под резултат от прилагане на дадена субституция s към произволен терм, лесно се дефинира и резултат от прилагане на s към произволна атомарна формула, като този резултат е пак атомарна формула. Дефиницията е следната: когато pОP0, приемаме, че резултатът от прилагането на s към p е p, а когато n е положително цяло число, pОPn и T1, Т2,..., Тn са термове, за  резултат от прилагането на s към p(T1,Т2...,Тn) считаме атомарната формула p(s(T1),s(T2)...,s(Tn)) (дефиницията е коректна благодарение на еднозначното прочитане на атомарните формули). Да отбележим, че ако се случи една атомарна формула да бъде същевременно и терм (вж. забележка 3 от въпроса "Сигнатури, структури, термове, атомарни формули"), то току-що дадената дефиниция ще даде същия резултат, какъвто би дала в случая и дефиницията за прилагане на субституция към терм. Благодарение на това ние без опасност от недоразумение ще означаваме резултата от прилагането на s към произволна атомарна формула A със s(A). Като използваме това означение, можем да запишем, че s(p)=p за всеки нулместен предикатен символ p и имаме равенството

s(p(T1,T2...,Tn))=p(s(T1),s(T2)...,s(Tn))
при n>0, pОPn, T1, T2, ..., Tn О Hў.

    Нека s е субституция, а G е дадена цел. Резултат от прилагането на s към G ще наричаме целта, която се получава от G чрез прилагане на s поотделно към членовете на G. Ще означаваме този резултат със s(G). Най-сетне, ако е дадена една клауза C с глава H и тяло B, то резултат от прилагането на s към C ще наричаме клаузата с глава s(H) и тяло s(B); ще я означаваме със s(C).

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

     Твърдение 1. Ако E е терм, атомарна формула, цел или клауза и две субституции съвпадат върху множеството на променливите на E, то резултатите от прилагането на тези субституции към E също съвпадат.

     Твърдение 2. Ако E е терм, атомарна формула, цел или клауза, то е в сила равенството [=:](E)=E.

     Следствие от твърдения 1 и 2. Ако E е затворен терм, затворена атомарна формула, затворена цел или затворена клауза, то за всяка субституция s е в сила равенството s(E)=E.

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

     Твърдение 3. Ако E е терм, атомарна формула, цел или клауза, то за всяка субституция s е изпълнено равенството

VAR(s(E))  =

ою
XОVAR(E)
VAR(s(X)).

    Следствие. Ако E е терм, атомарна формула, цел или клауза, а s е субституция, то резултатът s(E) е затворен точно тогава, когато термът s(X) е затворен за всяка  променлива X на E.

     Ще изложим само доказателството на твърдение 3 за случая на термове. Ако E е дадена променлива X0, то VAR(E)={X0}, тъй че дясната страна на доказваното равенство се равнява на VAR(s(X0)), което е и лявата страна. Ако EОF0, равенството пак е вярно, защото двете му страни са празни. Нека сега E е терм от вида f(T1,T2...,Tn), където n>0,  fОFn и T1, T2, ...,Tn са такива термове, че са верни равенствата

VAR(s(Ti))  = 

ою
XОVAR(Ti)
VAR(s(X)),    i=1,...,n.
Тогава имаме
VAR(s(E)) = VAR(f(s(T1),s(T2)...,s(Tn)))  = 
n
ою
i =1
VAR(s(Ti))  =
n
ою
i =1
(

ою
XОVAR(Ti)
VAR(s(X)) )
и лесно се проверява, че последният израз се равнява на дясната страна на доказваното равенство (използва се, че множеството на  променливите на E е обединение на множествата на променливите на T1,T2,..., Tn).

    Да предположим сега, че са дадени една субституция s и една структура S. Ще дефинираме едно преобразование sS, което преобразува всяка оценка в S на променливите пак в такава оценка. Дефиницията на това преобразование е следната: ако v е произволна оценка в S на променливите, то sS(v)=vў, където оценката vў се дефинира с условието, че

vў(X)=s(X)S,v
за коя да е променлива X. Преобразованието sS ще наричаме оператор за присвояване в S, съответен на s.

     Пример. Нека субституцията s има вида [T0=:X0], където T0 и X0 са съответно даден терм и дадена променлива. Ако приложим преобразованието sS към дадена оценка v в S на променливите, ще получим нова оценка vў, такава, че  vў(X0)=T0S,v и vў(X)=v(X) за всяка променлива X, различна от X0. Това показва, че ако в някой език за програмиране могат да се пишат програми с променливи, приемащи стойности в S, и в този език е допустим операторът за присвояване X0:=T0, то преобразованието sS действа върху  оценките на променливите по същия начин както въпросния оператор.

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

     Теорема за стойността на резултата от прилагане на субституция към терм. Нека са дадени една субституция s,  една структура  S и една оценка v в S. Нека sS(v)=vў. Тогава за всеки терм T е в сила равенството s(T)S,v=TS,vў.

     Доказателство. Ще използваме индукция, съобразена с дефиницията на понятието терм. Първо проверяваме верността на равенството в случая, когато T е променлива или нулместен функционален символ. Ако T е някоя променлива X, то равенството, което имаме да докажем, добива вида s(X)S,v=vў(X) и е вярно благодарение на равенството sS(v)=vў и дефиницията на преобразованието  sS.  Ако T е някой нулместен функционален символ c, то доказваното равенство пак е вярно, защото и двете му страни са равни на стойността в S на затворения терм c. Нека сега да имаме T=f(T1,T2...,Tn), където n>0, fОFn,T1,T2,..., Tn  са термове и са изпълнени равенствата s(Ti)S,v=TiS,vў,i=1,...,n. Тогава, означавайки с fS n-местната операция, чрез която се интерпретира f в S, ще имаме веригата от равенства

s(T)S,v=f(s(T1),s(T2)...,s(Tn))S,v=fS(s(T1)S,v,s(T2)S,v,...,s(Tn)S,v)=fS(T1S,vў,T2S,vў,...,TnS,vў)=TS,vў.  ї

    Ще докажем теорема в подобен дух и за случая на атомарни формули.

    Необходимо и достатъчно условие за вярност на резултата от прилагане на субституция към атомарна формула. Нека са дадени една субституция s,  една структура S и една оценка v в S. Нека sS(v)=vў. Тогава за всяка атомарна формула A условието S,vs(A) е равносилно с условието S,vўA.

    Доказателство. Ако A е нулместен предикатен символ, то и двете написани условия са равносилни с верността в S на затворената формула A, следователно те са равносилни и помежду си. Нека сега  A=p(T1,Т2...,Тn), където n>0, pОPn и T1, Т2,..., Тn са термове. Тогава, означавайки с pS n-местния предикат, чрез който се интерпретира p в S, ще имаме веригата от равносилности

S,vs(A) Ы S,vp(s(T1),s(T2)...,s(Tn)) Ы pS(s(T1)S,v,s(T2)S,v,...,s(Tn)S,v)=1 Ы pS(T1S,vў,T2S,vў,...,TnS,vў)=1Ы S,vўA.  ї

    Следствие. При предположенията и означенията от горната теорема, ако G е произволна цел, то за да бъде изпълнена целта s(G) в S при оценката v, необходимо и достатъчно е целта G да бъде изпълнена в S при оценката vў.

    Забележка 2. В случая, когато субституцията s има вида от разгледания преди малко пример, установеното необходимо и достатъчно условие за вярност на резултата от прилагане на s към атомарна формула може да се разглежда като  възможна формулировка на едно известно твърдение на Антъни Хоар (Charles Antony Richard Hoare). Въпросното твърдение е полезно при доказване на коректност на програми, съдържащи оператори за присвояване. Според него, за да бъде удовлетворено дадено условие след изпълнението на оператора за присвояване X0:=T0, необходимо и достатъчно е преди изпълнението на този оператор да е удовлетворено същото условие с X0, заместено с T0.
 

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