Documente Academic
Documente Profesional
Documente Cultură
Logical Programming
Logical Programming
MULTISORTATA
CONCEPTUL DE ALGEBRA
Conceptul de algebra multisortata apare n jurul anului 1970 prin generalizarea algebrelor universale. Noul concept
mai este cunoscut si sub numele algebre universale eterogene.
Deoarece datele cu care lucr
am nu sunt toate la fel, ele sunt clasificate n mai multe tipuri sau sorturi.
Acesta este principalul fapt care a dus la aparitia algebrelor multisortate si n particular a multimilor multisortate.
Algebrele multisortate au fost generalizate conduc
and la algebrele ordonat sortate.
1.1
N
f;g
g
P
Compunerea functiilor S-sortate este asociativa. Daca si h = {hs } : P R este functie Ssortata, atunci
folosind asocitivitatea compunerii functiilor uzuale pentru orice s S
((f ; g); h)s = (f ; g)s ; hs = (fs ; gs ); hs = fs ; (gs ; hs ) = fs ; (g; h)s = (f ; (g; h))s .
Prin urmare (f ; g); h = f ; (g; h).
Pentru orice multime S-sortata M functia ei identitate 1M : M M este definita prin (1M )s = 1Ms pentru
orice s S, unde 1Ms este functia identitate a multimii Ms . Functia identitate are efect neutru la compunere. Pentru
orice functie Ssortata f : M N au loc egalitatile 1M ; f = f = f ; 1N .
Cele doua proprietati de mai sus ne permit sa vorbim de categoria multimilor Ssortate.
1.2
Signaturi multisortate
adevar
fals
daca m A
daca m
6 A.
Remarcabil este c
a unele aspecte privind studiul clasic al modelelor unde apar at
at operatii c
at si relatii poate fi
redus la studiul algebrelor multisortate unde apar numai operatii.
2
1.3
Algebre multisortate
Algebrele sunt formate n mare din date si operatii. Datele sunt de mai multe sorturi, adica pentru fiecare sort s
algebra contine o multime a datelor de sort s. Familia acestor multimi, numita si suportul algebrei, constitue o
multime sortata.
Definitia 1.4 O -algebra A = ({As }sS , {A } ) este formata dintr-o multime S-sortata, numita suportul algebrei, A = {As }sS si o familie de operatii {A } . Pentru claritate, daca s1 s2 ...sn ,s , adica : s1 s2 . . . sn s,
atunci A este o functie
A : As1 As2 Asn As .
Daca nu exista pericol de confuzie n loc de ({As }sS , {A } ) vom scrie mai simplu (As , A ). Mai mentionam ca
pentru o algebra A si suportul acesteia A folosim aceeasi litera cu grafii diferite.
Daca nu este pericol de confuzie n loc de -algebra vom scrie mai scurt algebra.
In continuare pentru s1 , s2 , . . . , sn S vom mai folosi si notatia
As1 s2 ...sn = As1 As2 Asn .
Din definitia de mai sus rezulta ca daca ,s unde este sirul vid din S , atunci A este o functie definita
pe o multime cu un element si cu valori n As . Pentru a simplifica scrierea aceasta functie este nlocuita cu unica
ei valoare, element din As adica A As . Deci operatiile fara argumente, numite si constante, sunt elemente ale
algebrei de sort corespunzator sortului rezultat al numelui operatiei.
Vom continua prin a defini pentru algebrele multisortate cele mai uzuale concepte specifice algebrei: morfisme,
algebre libere, congruente, etc.
Asemanator algebrei care abordeaza pe r
and diferite structuri algebrce, trebuie sa facem acelas lucru. Adica
trebuie sa studiem, dar n acelasi timp, structuri algebrice de naturi diferite. Prin urmare, n continuare, fixam
signatura (S, ) a algebrelor de care ne ocupam. De altfel unele concepte, ca de exemplu cel de morfism, nu pot fi
definite decat pentru algebre av
and aceeasi signatura.
Fixarea signaturii arata ca ne ocupam de o anumita structura algebrica. Faptul ca signatura este arbitrara arata
ca studiul diferitelor structuri algebrice se face simultan.
1.4
Un morfism ntre doua algebre multisortate, asemanator oricarui morfism de structuri algebrice, este o functie
multisortata ntre suporturile celor doua algebre care verifica o conditie suplimentara. Pentru a scrie aceasta conditie
pentru cazul algebrelor multisortate sa plecam de la conceptul uzual de morfism pentru o structura algebrica bazata
pe o operatie binara. Functia h : A B este morfism h : (A, ) (B, &) daca
(a A)(b A)h(a b) = h(a)&h(b).
Sa analizam egalitatea de mai sus. Se evalueaza cei doi membri pentru un numar de elemente arbitrare din prima
algebra egal cu numarul de argumente al operatiei si apoi se egaleaza rezultatele
- membrul stang:
1) se aplica operatia din prima algebra elementelor a si b din prima algebra
2) se aplica morfismul h rezultatului obtinut a b
- membrul drept:
1) se aplica morfismul h elementelor a si b din prima algebra obtinandu-se niste elemente h(a) si h(b) din a doua
algebra
2) se aplica operatia & din a doua algebra acestor elemente
- se cere ca rezultatul evaluarii celor doi membri sa fie egali.
Sa facem acelasi lucru pentru doua algebre multisortate A = (As , A ), B = (Bs , B ) si o functie
S-sortata h : A B. Conditia de mai sus trebuie pusa pentru fiecare operatie cu numele
: s1 s2 . . . sn s
si oricare ar fi elementele a1 As1 , a2 As2 . . . an Asn din prima algrbra
- membrul stang:
1) se aplica operatia din prima algebra elementelor din prima algebra: A (a1 , a2 , . . . , an )
2) se aplica morfismul h rezultatului obtinut hs (A (a1 , a2 , . . . , an ))
3
- membrul drept:
1) se aplica morfismul h elementelor din prima algebra obtinandu-se niste elemente din a doua algebra:
hs1 (a1 ), hs2 (a2 ), . . . , hsn (an )
2) se aplica operatia din a doua algebra acestor elemente: B (hs1 (a1 ), hs2 (a2 ), . . . , hsn (an ))
- se cere ca rezultatul evaluarii celor doi membri sa fie egali.
hs (A (a1 , a2 , . . . , an )) = B (hs1 (a1 ), hs2 (a2 ), . . . , hsn (an )).
Definitia 1.5 Functia S-sortata h : A B este un morfism de -algebre multisortate
h : A = (As , A ) B = (Bs , B )
daca pentru orice s1 s2 . . . sn S , pentru orice s S, pentru orice s1 s2 ...sn ,s , pentru orice a1 As1 , a2 As2 ,
. . . , an Asn
hs (A (a1 , a2 , . . . , an )) = B (hs1 (a1 ), hs2 (a2 ), . . . , hsn (an )).
Daca nu este pericol de confuzie n loc de morfism de -algebre vom scrie morfism de algebre sau chiar morfism.
Este util sa remarcam ca exista cate o conditie pentru fiecare nume de operatie. In cazul operatiilor fara argumente, asa zisele constante, conditia de morfism este pentru orice ,s egalitatea hs (A ) = B . Cu alte
cuvinte morfismele trebuie sa pastreze constantele. Pe cazuri particulare observam ca orice morfism de monoizi duce
elementul neutru n elementul neutru si ca orice morfism de semiinele duce elementul neutru la adunare, respectiv
la nmultire, tot n elementul neutru la adunare respectiv la nmultire.
In continuare pentru s1 , s2 , . . . , sn S vom mai folosi si notatia
hs1 s2 ...sn = hs1 hs2 hsn : As1 s2 ...sn Bs1 s2 ...sn .
Cu aceleasi notatii mai precizam ca daca ai Asi pentru orice 1 i n
hs1 s2 ...sn (a1 , a2 , . . . , an ) = (hs1 (a1 ), hs2 (a2 ), . . . , hsn (an )).
Cu aceasta notatie, conditia de morfism pentru operatia : s1 s2 . . . sn s este echivalenta cu
A ; hs = hs1 s2 ...sn ; B .
Este deasemenea util sa mentionam diferenta de notatie dintre o functie S-sortata
f : A B
ntre suporturile a doua -algebre A si B si un morfism ntre cele doua algebre
h : A B.
Observam ca functia identitate 1A este morfism de -algebre de la A la A fapt notat prin 1A : A A.
Propozitie 1.6 Compunerea ca functii S-sortate a dou
a morfisme de -algebre este un morfism de -algebre.
Demonstratie: Fie h : A B si g : B C doua morfisme de -algebre. Probam ca h; g : A C este morfism
de -algebre.
Fie s1 s2 . . . sn S , s S, s1 s2 ...sn ,s si a1 As1 , a2 As2 , . . . , an Asn . Observam ca
(h; g)s (A (a1 , a2 , . . . , an )) = gs (hs (A (a1 , a2 , . . . , an ))) = gs (B (hs1 (a1 ), hs2 (a2 ), . . . , hsn (an ))) =
= C (gs1 (hs1 (a1 )), gs2 (hs2 (a2 )), . . . , gsn (hsn (an ))) = C ((h; g)s1 (a1 ), (h; g)s2 (a2 ), . . . , (h; g)sn (an )).
Compunerea morfismelor de -algebre este asociativa.
Morfismul identitate are efect neutru la compunere.
Datorita celor doua proprietati de mai sus putem vorbi de categoria algebrelor.
ALGEBRE LIBERE
Dupa aceasta mica introducere privind algebrele multisortate, trecem la conceptul de algebra libera datorita importantelor aplicatii ale acestuia n informatica. Cu el se modeleaza notiunile de expresie si de evaluarea a unei
expresii.
Mentionam ca demonstratia privind existenta algebrelor libere este prezentata mai t
arziu dupa o motivatie
intuitiva si un exemplu de utilizare a conceptului n informatica.
2.1
2.1.1
Expresii
Ce este o expresie?
Conceptul de expresie asa cum este el folosit n nvatamantul preuniversitar nu are o definitie si un nteles precis.
Vom da un exemplu care sa ilustreze acest fapt. La ntrebarea este x y z o expresie? raspunsul depinde de
contextul n care a fost pusa ntrebarea. Daca operatia a fost declarata asociativa, atunci x y z este o expresie.
In caz contrar ea nu este o expresie deoarece include o ambiguitate put
and fi interpretata ca x (y z) sau (x y) z
ambele fiind expresii. Pentru nceput notiunea de expresie va fi definita n ipoteza ca operatiile cu care lucr
am nu
au nici o proprietate suplimentar
a.
Mai mentionam ca cele doua expresii de mai sus mai pot fi scrise n scrierea poloneza x yz si xyz sau n
scrierea poloneza inversa xyz si xy z. Ne intereseaza o definitie a conceptului de expresie care s
a fie independent
a
de forma de scriere a acesteia.
Definitia 2.1 -algebra A = (As , A ) se numeste liber generat
a de V A daca pentru orice -algebra D si
pentru orice functie sortata f : V D, exista un unic morfism de -algebre f # : A D care extinde f .
-algebra A se numeste libera daca exista V A astfel ncat A este liber generata de V.
Definitia 2.2 Se numeste expresie un element dintr-o algebra libera.
Cand privim algebra libera ca o algebra de expresii, multimea V de mai sus reprezinta multimea variabilelor. In
unele cazuri, elementele lui V sunt numite generatori ai algebrei.
Binenteles ca acest concept este nca dependent de signatura cu care lucram, fapt pentru care atunci cand dorim
sa precizam signatura vorbim de expresii n loc de expresii.
In plus notiunea naiva de expresie ne da intuitia necesara pentru ntelegerea conceptului de algebra libera:
algebrele libere nu sunt altceva decat algebre de expresii.
Independenta de modul de scriere al expresiilor corespunde unicitatii abstractie de un izomorfism al algebrei
libere pentru care este fixata multimea V a generatorilor.
2.1.2
Evaluarea expresiilor
Fie X multimea variabilelor utilizate ntrun program. O instructiune de atribuire este de forma x := e unde x este
o variabila si e este o expresie, adica e T (X).
Fie D -algebra datelor cu care se fac calculele. Ne intereseaza partitia memoriei n care sunt memorate datele utilizate n timpul executiei programului, date depozitate n celule ale memoriei care corespund variabilelor din X. Prin
urmare
starea
memoriei
este
caracterizata
n
fiecare
moment
de
o
functie
s : X D. Daca x este o variabila s(x) este valoarea din celula de memorie corespunzatoare lui x. Fie S multimea
starilor memoriei, adica multimea functiilor de la multimea variabilelor X la multimea datelor D.
O functie partiala de la A la B este o functie definita numai pe o parte a lui A cu valori n B.
Semantica unei instructiuni, sau mai general a unui program, este o functie partiala F de la multimea S a starilor
la ea insasi. Functia F este definita pentru starea s a memoriei daca si numai daca executia instructiunii nceputa
n starea s a memoriei se termina. Mai mult F (s) este starea memoriei n momentul terminarii executiei.
Vom defini Sem(x := e) : S S, semantica atribuirii x := e. Fie s : X D starea memoriei la nceputul
executiei atribuirii si s# : T (X) D unica extindere la un morfism a lui s. Observam ca s# (e) este rezultatul
evaluarii expresiei e n starea s a memorie. Prin urmare, prin definitie
#
s (e) daca y = x
Sem(x := e)(s)(y) =
s(y)
daca y 6= x.
Pentru o mai buna ntelegere mentionam ca s(y) este valoarea variabilei y n momentul nceperii executiei instructiunii
de atribuire si ca Sem(x := e)(s)(y) este valoarea variabilei y n momentul terminarii executiei instructiunii de
atribuire x := e.
6
2.1.4
Algebre initiale
2.2
O gramatica independenta de context poseda doua multimi disjuncte, una a neterminalelor N si una a terminalelor
T precum si multimea P N (N T ) a productiilor. Chiar daca conceptul de gramatica independenta de context
verifica si alte conditii, noi ne restr
angem doar la cele de mai sus deoarece acestea sunt utile n cele ce urmeaza.
Fiecarei gramaticii independente de context G i se poate atasa o signatura:
- neterminalele devin sorturi,
- productiile devin nume de operatii,
- daca (n, t0 n1 t1 . . . nk tk ) P unde literele n sunt neterminale si literele t sunt cuvinte cu litere terminale, atunci
(n, t0 n1 t1 . . . nk tk ) : n1 n2 . . . nk n
adica operatia corespunzatoare lui (n, t0 n1 t1 . . . nk tk ) are ca rezultat un element de sortul indicat de neterminalul
din membrul stang al productiei, un numar de argumente egal cu numarul de neterminale din membrul drept al
productiei si sorturile argumentelor sunt chiar neterminalele din membrul drept al productiei.
O algebra a carei signatura este cea atasata gramaticii independente de context G se numeste G-algebra.
Un arbore de derivare ntr-o gramatica independenta de context are urmatoarele proprietati:
1. este un arbore finit si local ordonat, adica succesorii fiecarui nod sunt ntr-o ordine totala;
2. are noduri etichetate cu terminale sau neterminale, radacina fiind etichetata cu un neterminal;
3. orice nod etichetat cu un terminal nu are nici un succesor;
4. pentru orice nod, daca este etichetat cu un neterminal n, atunci perechea formata din n si cuvantul format de
etichetele succesorilor formeaza o productie (n, s1 s2 . . . sk1 sk ) P .
n
s1
s k-1 s
s2
Arborii de derivare ai unei gramatici independente de context G pot fi organizati ca o G-algebra A dupa cum
urmeaza:
- pentru orice sort n, adica pentru orice neterminal n, multimea An este formata din totalitatea arborilor de
derivare care au radacina etichetata cu n.
- pentru productia p = (n, t0 n1 t1 . . . nk tk ) si arborii ai Ani arborele Ap (a1 , a2 , . . . , ak ) este format astfel:
radacina este etichetata cu n, etichetele succesorilor radacinii n numar egal cu numarul literelor din t0 n1 t1 . . . nk tk
sunt chiar literele acestui cuvant si subarborele fiecarui nod etichetat cu ni este chiar ai .
Ap (a1 , a2 , . . . , ak ) =
t0 t
n n CC
nnn
CC
n
n
n
CC
nnn
CC
n
n
n
}
!
n
v
?>=<
89:;
0123
7654
...
ak
a1 n
t1
tk
2.3
Lem
a 2.5 Pentru orice arbore de derivare a An , unde n este un neterminal exist
a si sunt unice o productie
p = (n, t0 n1 t1 . . . nk tk ) si arborii de derivare ai Ani cu proprietatea a = Ap (a1 , a2 , . . . , ak ).
Demonstratie: Fie n un neterminal si a An . Analiz
and radacina si primul nivel al arborelui a deducem existenta
unei productii p = (n, t0 n1 t1 . . . nk tk ) cu proprietatea
a = Ap (a1 , a2 , . . . , ak )
unde ai sunt subarborii lui a care au radacinile n succesorii radacinii lui a care sunt etichetati cu neterminale.
Pentru a proba unicitatea presupunem ca
a = Aq (b1 , b2 , . . . , bk )
, t0 s1 t1
. . . sk tk )
unde q = (n
este o productie n care literele n si s sunt neterminale si literele t sunt cuvinte formate
din terminale. In plus bi Asi pentru orice 1 i k .
Toate concluziile vor rezulta din egalitatea
Ap (a1 , a2 , . . . , ak ) = Aq (b1 , b2 , . . . , bk ).
Deoarece eticheta radacinii este unica deducem n = n .
Egaland cuvintele formate cu etichetele succesorilor radacinilor din cei doi arbori egali deducem
t0 n1 t1 . . . nk tk = t0 s1 t1 . . . sk tk .
Reamintim ca prin definitia gramaticilor un element nu poate fi n acelasi timp si terminal si neterminal. Deoarece
numarul neterminalelor din cele doua cuvintre trebuie sa fie egal deducem egalitatea k = k . Deoarece primele
neterminale din cele doua cuvinte trebuie sa fie pe aceeasi pozitie deducem ca t0 = t0 si n1 = s1 . Rezulta ca
t1 n2 t2 . . . nk tk = t1 s2 t2 . . . sk tk .
Continuam rationamentul ca mai sus si deducem ti = ti pentru 0 i k si ni = si pentru 1 i k. De aici
deducem ca p = q.
In final egal
and subarborii cu radacinile aflate pe aceeasi pozitie a primului nivel din arborii egali Ap (a1 , a2 , . . . , ak )
si Aq (b1 , b2 , . . . , bk ) rezulta ca ai = bi pentru orice 1 i k.
Teorema 2.6 Algebra arborilor de derivare ai unei gramatici independente de context este algebr
a initial
a.
Demonstratie: Fie B = ({Bn }nN , {Bp }pP ) o Galgebra. Vom arata ca exista si este unic un morfism h de la
algebra A a arborilor de derivare la B.
Definim functia N sortata h : A B. Prin inductie dupa adancimea arborelui a An definim hn (a) n Bn .
Fie m un numar natural. Pentru orice neterminal n N si orice arbore de derivare a An de adancime strict
mai mica decat m presupunem definit hn (a) Bn .
Fie arborele de derivare a An de adancime m. Conform lemei exista si sunt unice o productie p = (n, t0 n1 t1 . . . nk tk )
si arborii de derivare ai Ani cu proprietatea a = Ap (a1 , a2 , . . . , ak ). Observam ca pentru orice 1 i k arborele
de derivare ai Ani are adancimea strict mai mica decat m, prin urmare hni (ai ) Bni este definit. Definim
hn (a) = Bp (hn1 (a1 ), hn2 (a2 ), . . . , hnk (ak )).
Se observa ca prin aceasta definitie
hn (Ap (a1 , a2 , . . . , ak )) = Bp (hn1 (a1 ), hn2 (a2 ), . . . , hnk (ak ))
adica h : A B este morfism de Galgebre.
Probam unicitatea. Fie f : A B un morfism de Galgebre. Demonstram egalitatea f = g printr-o inductie la
fel ca mai sus.
Fie m un numar natural. Pentru orice neterminal n N si orice arbore de derivare a An de adancime strict
mai mica decat m presupunem ca fn (a) = hn (a).
Fie arborele de derivare a An de adancime m. Conform lemei exista si sunt unice o productie p = (n, t0 n1 t1 . . . nk tk )
si arborii de derivare ai Ani cu proprietatea a = Ap (a1 , a2 , . . . , ak ). Deoarece arborii de derivare ai Ani au
adancimea strict mai mica dec
at m, conform ipotezei de inductie fni (ai ) = hni (ai ) pentru orice 1 i k. Rezulta
ca
fn (a) = fn (Ap (a1 , a2 , . . . , ak )) = Bp (fn1 (a1 ), fn2 (a2 ), . . . , fnk (ak )) =
Bp (hn1 (a1 ), hn2 (a2 ), . . . , hnk (ak )) = hn (Ap (a1 , a2 , . . . , ak )) = hn (a).
8
2.4
Fie (S, ) o signatura si X = {Xs }sS o multime Ssortata de variabile. Componentele multimii X sunt prin definitie
doua cate doua disjuncte.
Teorema 2.7 Pentru orice signatur
a (S, ) si orice multime Ssortat
a de variabile X exist
a algebra liber generat
a
de X.
Demonstratie: Fara a micsora generalitatea vom presupune ca si X sunt disjuncte. Definim gramatica independenta de context
G = (S, X, P )
unde P = {s s1 s2 . . . sk : s1 s2 ...sk ,s } {s x : s S si x Xs }.
Notam cu
A = ({As }sS , {Ass1 s2 ...sk }s1 s2 ...sk ,s , {Asx }sS,xXs )
Galgebra initiala.
Observam ca
A = ({As }sS , {Ass1 s2 ...sk }s1 s2 ...sk ,s )
este o algebra. Vom arata ca ea este liber generata de X.
Multimea variabilelor din X este injectata n {As }sS prin functia
i : X {As }sS definita pentru orice s S si x Xs prin
is (x) = Asx .
Fie D = (Ds , D ) o algebra si f : X {Ds }sS o functie Ssortata. Deoarece
(Ds , D , {f (x)}sS,xXs )
este o Galgebra exista un unic morfism de Galgebre
h : A (Ds , D , {f (x)}sS,xXs ).
Observam ca h este morfism de Galgebre daca si numai daca h este morfism de algebre si hs (Asx ) = f (x)
pentru orice s S si x Xs , adica daca si numai daca h este morfism de algebre si i; h = f.
In concluzie exista un unic morfism de algebre h : A D cu proprietatea i; h = f.
3
3.1
Reciproc, presupunem ca toate componentele hs ale lui h sunt bijectii. Prin urmare pentru orice s S exista
a
and h1 = {h1
= 1As si h1
: Bs As cu proprietatile hs ; h1
functia h1
s }sS rezult
s ; hs = 1Bs . De aici not
s
s
pentru orice s S ca
(h; h1 )s = hs ; h1
s = 1As = (1A )s
si
(h1 ; h)s = h1
s ; hs = 1Bs = (1B )s
deci h; h1 = 1A si h1 ; h = 1B .
Pentru a ncheia demonstratia mai trebuie aratat ca functia S-sortata h1 : B A este un morfism de -algebre
1
h : B A.
Fie s1 s2 . . . sn S , s S, s1 s2 ...sn ,s si b1 Bs1 , b2 Bs2 , . . . , bn Bsn . Deoarece h este morfism pentru
1
1
elementele h1
s1 (b1 ), hs2 (b2 ), . . . , hsn (bn ) din A deducem
1
1
1
1
1
hs (A (h1
s1 (b1 ), hs2 (b2 ), . . . , hsn (bn ))) = B (hs1 (hs1 (b1 )), hs2 (hs2 (b2 )), . . . , hsn (hsn (bn ))) =
= B (b1 , b2 , . . . , bn ).
Aplicand functia h1
s ambilor membri deducem
1
1
1
A (h1
s1 (b1 ), hs2 (b2 ), . . . , hsn (bn )) = hs (B (b1 , b2 , . . . , bn ))
3.2
Daca A este o submultime a lui B numim functie incluziune a lui A n B functia i : A B definita prin i(a) = a
pentru orice a A. In acest caz folosim si notatia i : A B.
Teorema 3.4 Dou
a algebre liber generate de aceeasi multime sunt izomorfe.
Demonstratie: Fie A = (As , A ) si B = (Bs , B ) doua -algebre liber generate de X. Notam cu iA : X A si
iB : X B functiile incluziune ale lui X n A, respectiv n B. Demonstratia are patru pasi.
1. Deoarece algebra A este liber generata de X exista un morfism f : A B cu proprietatea iA ; f = iB .
Pasul 2 este asemanator cu primul, doar ca se inverseaza rolul algebrelor A si B. La fel vor fi pasii 3 si 4.
2. Deoarece algebra B este liber generata de X exista un morfism g : B A cu proprietatea iB ; g = iA .
3. Deoarece iA ; (f ; g) = (iA ; f ); g = iB ; g = iA = iA ; 1A si deoarece A este algebra liber generata de X deducem,
folosind partea de unicitate din definitia algebrei libere, ca f ; g = 1A .
4. Deoarece iB ; (g; f ) = (iB ; g); f = iA ; f = iB = iB ; 1B si deoarece B este algebra liber generata de X deducem,
folosind partea de unicitate din definitia algebrei libere, ca g; f = 1B .
Deci f si g sunt izomorfisme inverse unul altuia.
Corolar 3.5 -algebra initial
a este unic
a abstractie f
ac
and de un izomorfism.
10
3.3
Un tip de date se numeste abstract daca este unic determinat abstractie facand de un izomorfism. Se vede prin
urmare ca dand o signatura am dat implicit, prin algebra initiala corespunz
atoare signaturii, un tip abstract de date.
Vom da un exemplu cunoscut din algebra de liceu. Se stie ca numerele ntregi formeaza un inel initial. Va invitam
sa reflectati asupra urmatoarei definitii a idei de numar ntreg.
Se numeste num
ar ntreg un element al inelului initial.
Abstract nseamna de fapt ca nu ne intereseaza cum sunt scrise sau memorate datele.
Una dintre metodele prin care se poate defini un tip abstract de date este cel al algebrei initiale. Mai clar :
este suficient sa dam o signatura si eventual niste axiome(ecuatii conditionate sau nu) deoarece algebra initiala, a
carei existenta este garantata de teoremele care vor fi prezentate mai t
arziu, este unic determinata abstractie de un
izomorfism, prin urmare este un tip abstract de date.
Tipul numerelor naturale poate fi definit abstract ca fiind semiinelul initial.
Observam ca o astfel de definitie nu spune nimic despre scrierea numerelor. Ele pot fi scrise cu cifre arabe, cu
cifre romane, n baza 2 ca n calculatoare sau altfel.
Definitiile de mai sus, desi corecte sunt uneori ineficiente, deoarece nu face posibila executia de calcule sau executia
este ineficienta. Prin urmare dorim alte definitii echivalente care permit calculatorului sa faca calcule care sa fie cat
mai eficiente. Vom exemplifica pentru numere naturale fara a intra n prea multe detalii.
3.3.1
Semiinelul este o multime M nzestrata cu doua operatii binare notate cu + si cu urmatoarele proprietati
1. (M, +, 0) este monoid comutativ,
2. (M, , 1) este monoid,
3. este distributiva fata de + si
4. (m M )m 0 = 0 m = 0.
Multimea numerelor naturale cu adunarea si inmultirea uzuale este un semiinel initial, adica conceptul de semiinel
caracterizeaza numele naturale ca tip abstract de date.
Pentru a scrie un program se prefera axiomele lui Peano. Chiar daca Peano nu s-a g
andit la programarea prin
rescriere, baza programarii declarative, se pare sa fi scris primul program de acest gen.
Cel caruia i se atribuie prima punere n evidenta a ideilor abstracte privind numerele naturale este F.W. Lawvere.
Consideram signatura cu un singur sort nat, o singura constanta de sort nat si o singura operatie unara cu
argument si rezultat de sort nat:
sort nat .
op 0 : nat .
op s : nat nat .
Elementele algebrei initiale sunt
0, s(0), s(s(0)), s(s(s(0))), s(s(s(s(0)))), ...
si ele reprezinta numerele naturale 0 1 2 3 4 ...
Propozitia urmatoare n care conceptul de numar natural este folosit n ntelesul sau clasic arata ca numerele
naturale formeaza un model al definitiei abstracte. Acest fapt arata corectitudinea definitiei abstracte pentru modelul
clasic.
Propozitie 3.6 Fie N = (N, 0N , sN ) algebra definit
a prin: N este multimea numerelor naturale, 0N este num
arul
natural zero si sN (n) = n + 1 pentru orice num
ar natural n. Algebra N este initial
a.
11
12
Mentionam aici pe marele informatician, regretatul Joseph Goguen, profesorul si prietenul multor rom
ani, care spunea
ca semantica algebrei initiale este una dintre cele mai frumoase idei ale sale [?].
Metoda semanticii algebrei initiale este o simplificare a metodei mai clasice a semanticii denotationale, numita si
semantica matematica.
Metoda semanticii algebrei intiale se aplica pentru limbaje definite printr-o gramatica independenta de context
G = (N, T, P, a), unde N este multimea neterminalelor, T mutimea terminalelor, P multimea productiilor si a axioma gramaticii. Ea spune ca pentru a defini semantica limbajului gramaticii G este suficient s
a d
am o
G-algebr
a S = ({Sn }nN , {Sp }pP ), numita n continuare algebr
a semantic
a.
Pentru a ntelege afirmatia de mai sus trebuie sa intram putin n amanunte. Fie A algebra arborilor de derivare.
Deoarece A este algebra intiala exista un unic morfism de G-algebre
M : A S.
Dat un cuvant c din limbajul gramaticii G exista un arbore de derivare arb cu radacina etichetata cu a a carui
frontiera este c. Semantica cuvantului c este prin definitie Ma (arb).
Mentionam ca metoda este bine definita numai pentru gramaticile neambigue, fapt care asigura unicitatea arborelui arb. Acest aspect este mai degraba legat de analiza sintactica.
Trecem la exemple care vor clarifica si mai mult ideile de mai sus.
4.1
Vom considera o gramatica G care genereaza sirurile finite nevide de cifre zecimale, considerate ca terminale. Gramatica are doua neterminale <cifra> si <nat> ultima fiind si axioma a gramaticii. Descriem n continuare productiile
gramaticii carora le dam un nume
ci
n1
n2
<cifra>
<nat>
<nat>
i
<cifra>
<nat> <cifra>
Vom defini algebra semantica explicand de ce o definim astfel. Deoarece gramatica are doua neterminale, signatura
asociata are doua sorturi, prin urmare algebra semantica trebuie sa aiba ca suport doua multimi. Semantica unei
cifre, care nu este nimic altceva decat un semn, este numarul reprezentat de cifra. Prin urmare suportul corespunzator
neterminalului <cifra> trebuie sa contina macar numerele de la zero la noua. Deci prin definitie
S<cif ra> = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.
Deoarece semantica unui sir finit de cifre este numarul natural pe care acest sir l reprezinta, suportul corespunzator
neterminalului <nat> trebuie sa contina macar multimea numerelor naturale. Deci prin definitie
S<nat> = este multimea numerelor naturale.
Sa trecem la definirea operatiilor algebrei semantice.
Deoarece productia ci corespunzatoare cifrei i nu are nici un neterminal n membrul drept, operatia corespunzatoare ei este o operatie fara argumente, adica un element din S<cif ra>
Sci este numarul natural reprezentat de cifra i.
Productia n1 spune ca orice cifra este un sir dr cifre. Deoarece valoarea numarului reprezentat de un sir de lungime
unu este egala cu valoarea numarului reprezentat de singura cifra din sir si semantica lor trebuie sa fie aceeasi. Deci
prin definitie
Sn1 este functia incluziune de la S<cif ra> la S<nat> .
Productia n2 ne spune ca prin adaugarea la dreapta unui sir de cifre, sa spunem s1, a unei cifre, sa spunem c, se
obtine un nou sir de cifre s2 = s1c. Operatia corespunzatoare productiei n2 trebuie sa fie o functie
Sn2 : S<nat> S<cif ra> S<nat>
definita pentru numele n si m prin
Sn2 (n, m) = 10n + m
13
deoarece valoarea ca numar a sirului s2 este egala cu de zece ori valoarea ca numar a sirului s1 plus valoarea ca
numar a cifrei.
Cu aceasta semantica este complet definita. Vom exemplifica pentru sirul 023. Arborele de derivare pentru acest
sir este
An2 (An2 (An1 (Ac0 ), Ac2 ), Ac3 ).
Sa-i aplicam morfismul semantic acestui arbore.
M<nat> (An2 (An2 (An1 (Ac0 ), Ac2 ), Ac3 )) = Sn2 (Sn2 (Sn1 (Sc0 ), Sc2 ), Sc3 ) = Sn2 (Sn2 (Sn1 (0), 2), 3) =
= Sn2 (Sn2 (0, 2), 3) = Sn2 (10 0 + 2, 3) = Sn2 (2, 3) = 10 2 + 3 = 23
Ce sa nt
ampla daca n membrul drept al productiei n2 scriem < cif ra >< nat >?
4.2
Un calculator de buzunar
Vom da un alt exemplu, cel al unui minicalculator pe fata caruia se afla un mic ecran pe care se poate afisa un singur
numar si mai multe butoane:
ON pentru pornirea calculatorului
OFF pentru oprirea calculatorului
0 1 2 3 4 5 6 7 8 9 pentru cifrele zecimale
+ pentru adunare si nmultire
M pentru unica celula de memorie a calculatorului
( ) pentru parantezele necesare n scrierea expresiilor
IF , pentru o anumita expresie conditionata
E pentru comanda de evaluarea a unei expresii
Remarcam ca butoanele diferite de ON, OFF si E sunt folosite pentru introducerea expresiilor care vor fi evaluate
la apasarea butonului E. Sintaxa expresiilor este definita de productiile r1-r6 ale gramaticii de mai jos. Expresiile
sunt construite pornind de la sirurile finite de cifre zecimale reprezent
and numere naturale(productia r1), variabila
M(productia r2) si recursiv, alte expresii cuprinse ntre paranteze(productia r6). Pentru construtia expresiilor sunt
folosite numai operatiile de adunare si nmultire(productiile r3 si r4). Productia r5 permite construirea unor expresii
conditionate unde conditia reprezentata de prima expresie permite o alegere ntre celelalte doua expresii.
Vom considera o gramatica G care genereaza limbajul programelor care pot fi executate de minicalculator. Ea
extinde gramatica din exemplul precedent. Numele butoanelor de mai sus sunt chiar terminalele gramaticii.
Gramatica are cinci neterminale <cifra>, <nat>, <exp> pentru expresii, <inst> pentru anumite portiuni de
programe si <program> care este si axioma a gramaticii. Descriem n continuare productiile gramaticii carora le
dam un nume pe care l-am scris la nceputul r
andului, n fata productiei.
ci
n1
n2
r1
r2
r3
r4
r5
r6
r7
r8
r9
<cifra>
<nat>
<nat>
<exp>
<exp>
<exp>
<exp>
<exp>
<exp>
<inst>
<inst>
<program>
i
<cifra>
<nat> <cifra>
<nat>
M
<exp> + <exp>
<exp> <exp>
IF <exp>,<exp>,<exp>
(<exp>)
<exp> E OFF
<exp> E <inst>
ON <inst>
Pentru a da semantica este necesar sa explicam cum functioneaza calculatorul. Se porneste calculatorul apasand
butonul ON, moment n care se initializeaza unica celula de memorie cu zero. Se introduce o expresie care la apasarea
butonului E se evalueaza. Rezultatul evaluarii este afisat pe ecran si introdus n unica celula de memorie n locul
vechii valori. Se introduce alta expresie, se apasa butonul E si asa mai departe. La final se apasa butonul OFF
pentru nchiderea calculatorului. Mai remarcam ca se calculeaza numai cu numere naturale.
14
Vom defini algebra semantica. Deoarece signatura asociata are cinci sorturi, algebra semantica trebuie sa aiba ca
suport cinci multimi, primele doua fiind cele de mai sus S<cif ra> si S<nat> .
Expresiile sunt facute pentru a fi evaluate, prin urmare prima idee ar fi ca semantica unei expresii sa fie rezultatul
evaluarii, adica un numar. Dar oare ce numar se obtine prin evaluarea expresiei M+3. Trebuie sa mentionam ca
fiecare aparitie a lui M este nlocuita n timpul evaluarii cu valoarea care se afla n unica celula de memorie. Prin
urmare rezultatul evaluarii lui M+3 depinde de continutul celulei de memorie. Prin urmare semantica expresiei M+3
este functia f : N N defina prin f (x) = x + 3 care asociaza numarului x care se afla n celula de memorie
rezultatul x + 3 al evaluarii acesteia. Prin urmare prin definitie S<exp> este multimea functiilor de la multimea
numerelor naturale la ea nsasi.
O instructiune, generata de productiile r7 si r8, comanda evaluarea unui sir finit de expresii. Semantica instructiunii
este, prin definitie, sirul numerelor care apar pe ecran n timpul executiei instructiunii, adica un sir finit si nevid
de numere naturale. Multimea acestor siruri o notam cu N + . Rezultatul evaluarii depinde evident de valoarea din
memorie din momentul nceperii executiei instructiunii, prin urmare
S<inst> = {f : N N + | f este functie.}
Un program, generat de productia r9, difera de o instructiune prin faptul ca se introduce zero n celula de memorie
nainte de executia instructiunii pe care o contine, prin urmare sirul de numere care apar pe ecran n timpul executiei
programului nu mai depinde de continutul memoriei, fiind un element din N + , deci S<program> = N + .
Folosind urmatoarele notatii
m este un numar natural reprezent
and continutul celulei de memorie
n este un numar natural
e este o functie de la N la N reprezent
and semantica unei expresii
este o functie de la N la N + reprezent
and semantica unei instructiuni
definitiile pentru operatii, fara a le mai repeta pe cele de mai sus sunt:
Sr1 (n)(m) = n
Sr2 (m) = m
Sr3 (e1, e2)(m) = e1(m) + e2(m)
Sr4 (e1, e2)(m) = e1(m) e2(m)
Sr5 (e1, e2, e3)(m) = daca e1(m) = 0 atunci e2(m) altfel e3(m)
Sr6 (e) = e
Sr7 (e)(m) = e(m)
Sr8 (e, )(m) = e(m)(e(m))
Sr9 () = (0)
4.3
Arbori de derivare
O gramatic
a pentru expresii
15
V
F
T
E
P
reprezinta variabilele
de la factor, reprezinta cele mai mici elemente folosite n constructia expresiilor
de la termen, reprezinta un produs de factori
de la expresie, reprezinta o suma de termeni
de la program.
1. V x
6. T F
2. V y
7. T F T
3. V z
8. E T
4. F V
9. E E + T
Observati productiile 7 si 9 pentru a vedea cum se precizeaza ordinea de executie a operatiilor de acelasi fel.
Neterminalul din membrul stang se afla n dreapta, respectiv n stanga semnului operatiei.
4.3.2
Un exemplu
*
F
E + T
16
0
9
9
6
4
8
6
4.4
Scrierea polonez
a invers
a
Semantica pe care o dam unui limbaj depinde de scopul pe care-l urmarim. Pentru a ilustra aceasta idee vom da
doua semantici pentru expresiile definite mai sus.
Prima semantica va da scrierea poloneza inversa pentru expresii. A doua semantica va fi data n sectiunea
urmatoare.
Algebra semantica va avea toate suporturile egale cu semigrupul liber generat de {x, y, z, +, }, sau mai popular
multimea sirurilor finite nevide de semne din {x, y, z, +, }. Operatiile sunt urmatoarele:
0 = 4 = 5 = 6 = 8 sunt aplicatia identitate,
1 = x, 2 = y si 3 = z,
7(, ) = si 9(, ) = +.
Notam cu S algebra semantica de mai sus, cu A algebra arborilor de derivare si cu C : A S unicul morfism
de algebre existent. Morfismul C este modelarea algebrica a rescrierii expresiei n scrierea poloneza inversa.
Conform metodei semanticii algebrei initiale rezulta ca C(A) este scrierea poloneza nversa a expresiei x + y
(x + y) z + z.
Calculele sunt urmatoarele
C(a) = 8(6[4(1)]) = x
si
C(b) = 6(4(3)) = z
4.5
Compilare
Un compilator care va produce un program pentru evaluarea expresiilor si tiparirea rezultatului evalarii va fi modelat
printr-un morfism.
Vom pune n evidenta elementele care apar n programele obtinute prin compilare. R este un registru din memorie.
P este un pointer catre primul loc liber al stivei utilizate n timpul evaluarii. Ori de cate ori se pune un element n
17
stiva pointerul creste automat cu o unitate. Ori de cate ori se scoate un element din stiva pointerul scade automat
cu o unitate. Presupunem ca la nceputul executiei programului pointerul indica primul loc liber din stiva.
Presupunem ca limbajul de asamblare include urmatoarele instructiuni:
Ad R
Mu R
ld R
st R
print
Semantica unei expresii va fi programul care evalueaza expresia si imprima rezultatul evaluarii. Programul care
evalueaza o expresie are ca efect plasarea n v
arful stivei a rezultatului evaluarii acesteia si avansarea pointerului.
Pentru definirea acesteia se va folosi metoda semanticii algebrei initiale.
Toate cele 5 suporturi ale algebrei semantice, corespunzatoare neterminalelor, sunt identice si coincid cu multimea
bucatilor de program(siruri de instructiuni separate prin ;). Astfel de bucati de programe vor fi notate cu litere
grecesti.
Cele 10 operatii ale algebrei semantice, corespunzatoare productiilor sunt:
1S
2S
3S
4S ()
5S ()
6S ()
7S (,)
8S ()
9S (,)
0S ()
=
=
=
=
=
=
=
=
=
=
st x
st y
st z
; ; ld R ; Mu R ; st R
; ; ld R ; Ad R ; st R
; print
Notam cu S algebra semantica de mai sus, cu A algebra arborilor de derivare si cu C : A S unicul morfism
de algebre existent. Morfismul C este modelarea algebrica a compilatorului.
Conform metodei semanticii algebrei initiale rezulta ca C(A) este programul care evalueaza si tipareste rezultatul
pentru expresia x + y (x + y) z + z.
4.5.1
Program
4.5.2
Optimizare cod
Programul de mai sus poate fi simplificat. Observam ca grupul de instructiuni st R ; ld R are efect cumulat nul
ceea ce conduce la programul
st x ; st y ; st x ; st y ; ld R ; Ad R ; st R ; st z ; ld R ; Mu R ;
Mu R ; Ad R ; st R ; st z ; ld R ; Ad R ; st R ; print
Logica ecuationala, n varianta fara sorturi, a fost intens studiata n prima jumatate a secolului XX cand i-a fost
demonstrata completitudinea.
5.1
Ecuatii
Sa analizam conceptul de axioma asa cum apare el n algebra. De exemplu comutativitatea si asociativitatea se scriu
(xy)x?y = y?x
(xyz)x?(y?z) = (x?y)?z.
Ce sunt acestea? Sunt egalitati de doua expresii cuantificate universal prin multimea variabilelor continute n cele
doua expresii. Deci o astfel de axioma are forma
(X)l = r
unde l si r sunt elemente din algebra liber generata de multimea X de variabile. Semnul = este utilizat n loc de =,
ntre doua expresii, pentru a marca faptul ca egalitatea poate fi si falsa, fapt pentru care vom folosi denumirea de
egalitate formal
a n loc de egalitate. In cazul multisortat, cei doi membri ai unei egalitati formale trebuie sa fie
de acelas sort. Uneori scriem l =s r pentru a marca sortul comun s al celor doi membri.
Ce nseamna ca o axioma este adevarata ntr-o algebra D? Intuitiv este necesar ca rezultatul evaluarii celor doua
expresii l si r n algebra D sa fie acelasi indiferent de valorile date n D variabilelor din X. T
inand cont ca a da valori
variabilelor din X n algebra D este echivalent cu a da un morfism de la T (X) la D, aceasta idee intuitiva conduce
la:
Definitia 5.1 Axioma (X)l = r este satisfacuta n algebra D daca si numai daca pentru orice morfism
h : T (X) D este adevarata egalitatea h(l) = h(r).
D |= (X)l = r
(xyz)(x y = x z y = z)
ceea ce corespunde axiomei de simplificare la stanga care este adevarata n orice grup sau n orice monoid liber.
5.2
Ecuatii conditionate
(X) a =s c if H
19
n care trebuie ca hs (a) = hs (c). Deci -algebra D satisface ecuatia conditionata (X)a =s c if H fapt notat prin
D |= (X) a =s c if H
daca si numai daca
Credem ca este bine sa mentionam din nou diferenta esentiala ntre semnele =s si =, diferenta care va fi mentinuta
constant pe parcursul ntregului text. Egalul peste care s-a pus un cerculet (=s ) indica o egalitate formala care poate
fi adevarata sau falsa. Egalul = are semnificatia uzuala indic
and deobicei o egalitate adevarata.
Formalizam cele de mai sus n definitiile urmatoare.
Definitia 5.2 O ecuatie conditionat
a este
(X)l =s r if H
unde X este o multime S-sortata de variabile, l si r sunt doua elemente de sort s din T (X) iar H o multime finit
a
de egalitati formale din T (X).
O ecuatie conditionata n care H = devine neconditionata si este numita pe scurt ecuatie. In acest caz scriem doar
Definitia 5.3 Algebra D satisface ecuatia conditionata (X)l =s r if H, fapt notat prin
D |= (X)l =s r if H
daca pentru orice morfism h : T (X) D pentru care hs (u) = hs (v) pentru orice u =s v H, are loc egalitatea
hs (l) = hs (r).
In cele ce urmeaza indicele din |= va fi omis. El va fi mentionat atunci cand este pericol de confuzie.
Observam ca D |= (X)l =s r daca si numai daca hs (l) = hs (r) pentru orice morfism h : T (X) D.
5.3
algebre
CONGRUENT
E, ALGEBRE CAT,
PROIECTIVITATE
20
6.1
Congruente
O relatie de echivalenta ntr-o -algebra (As , A ) este de fapt o familie de relatii de echivalente, cate una pentru
fiecare multime As . O congruenta este o relatie de echivalenta care este compatibila cu operatiile algebrei. De fapt
compatibilatea trebuie ceruta numai pentru operatiile cu argumente caci pentru o constanta A A rezulta din
reflexivitate.
Definitia 6.1 O congruenta = {s }sS n -algebra (As , A ) este o relatie de echivalenta cu proprietatea pentru
orice s1 s2 . . . sn S , pentru orice s S, pentru orice s1 s2 ...sn ,s , daca ai si bi n Asi pentru orice 1 i n,
atunci
A (a1 , a2 , . . . , an ) s A (b1 , b2 , . . . , bn ).
Cea mai mica congruenta este relatia de egalitate. Cea mai mare congruenta este relatia totala.
Propozitie 6.2 Dac
a h : A B este un -morfism, atunci Ker(h) este o congruenta
.
Demonstratie: Fie s1 s2 . . . sn S , s S si s1 s2 ...sn ,s . Presupunem c
a ai Ker(hsi ) bi n Asi pentru orice
1 i n. Rezult
a c
a hsi (ai ) = hsi (bi ) pentru orice 1 i n. Prin urmare
hs (A (a1 , a2 , . . . , an )) = B (hs1 (a1 ), hs2 (a2 ), . . . , hsn (an )) =
B (hs1 (b1 ), hs2 (b2 ), . . . , hsn (bn )) = hs (A (b1 , b2 , . . . , bn ))
asadar A (a1 , a2 , . . . , an ) Ker(hs ) A (b1 , b2 , . . . , bn ). Deci Ker(h) este congruenta
.
Propozitie 6.3 Orice intersectie de congruente este tot o congruenta
.
Demonstratie: Fie {k }kK o multime de congruente si
\
=
k .
kK
Prob
am c
a este congruenta
.
a c
a ai k bi
Fie s1 s2 . . . sn S , fie s S, fie s1 s2 ...sn ,s si ai bi n Asi pentru orice 1 i n. Rezult
pentru orice k K si orice 1 i n.
Pentru orice k K deoarece k este congruenta
, fiindc
a ai k bi n Asi pentru orice 1 i n deducem
A (a1 , a2 , . . . an ) k A (b1 , b2 , . . . , bn ).
Deci
A (a1 , a2 , . . . an ) A (b1 , b2 , . . . , bn ).
6.2
6.2.1
Algebre c
at
Proprietatea de universalitate a multimii c
at.
21
6.2.2
6.3
Privind multimea de ecuatii conditionate ca o multime de axiome, ne intereseaza toate consecintele ei semantice.
Prin consecinta semantica se ntelege orice fapt adevarat n orice algebra. Logica ecuationala este interesata de
consecintele semantice care sunt scrise ca egalitati formale.
Prin urmare ecuatia (X)l =s r este o consecinta semantica a lui , denumita si tautologie sau propozitie valabila
sau valida a logicii ecuationale, daca ea este adevarata n orice algebra, adica hs (l) = hs (r) pentru orice algebra
M si pentru orice morfism h : T (X) M.
Pentru conceptul de consecinta semantica folosim notatia
|= (X)l =s r.
22
Sintetizand observam ca
Sen(A) = {l =s r|s S, l, r As }
multimea propozitilor sale. Propozitiile sunt de fapt egalitati formale care pot fi adevarate sau false.
Pentru orice algebra A, putem identifica Sen(A) cu produsul cartezian A A. Poate cea mai buna reprezentare
a unei propozitii din A este un triplet format dintr-un sort s si doua elemente de sort s din A.
Avand n vedere cele de mai sus nu vom mai face nici o distinctie ntre relatiile lui A si multimile de egalitati
formale ntre elementele lui A.
7.1
Congruenta semantic
a
Vom lucra ntr-o -algebra A si vom grupa ntr-o relatie toate tautologiile(propozitiile valide) logicii ecuationale din
algebra A.
Fie A
ia pe A definita prin
relat
a A
a si numai daca (h : A M |= )hs (a) = hs (c).
c dac
Daca nu exista pericol de confuzie vom prefera sa scriem n loc de A
.
Observam ca
\
=
{Ker(h) | h : A M |= }.
Deoarece nucleul unui morfism este o relatie de congruenta si deoarece orice intersectie de relatii de congruente este
o relatie de congruenta, deducem ca este o relatie de congruenta.
este numita congruent
a semantic
a.
pentru orice u =t v H. Prin urmare (h; f )t (u) = (h; f )t (v) pentru orice u = v H. Deoarece h; f : T (X)
M |= (X)l =s r if H rezulta ca (h; f )s (l) = (h; f )s (r), deci hs (l) Ker(f ) hs (r).
Propozitie 7.3 Congruenta semantic
a este nchis
a la substitutie.
Demonstratie: Congruenta semantica este o intersectie de congruente nchise la substitutie. Deoarece o intersectie
de congruente nchise la substitutii este o congruenta nchisa la substitutii rezulta ca este o congruenta nchisa
la substitutie.
Propozitie 7.4 Dac
a este o congruenta
nchis
a la substitutii, atunci A/ |= .
23
Fie (X)l =s r if H n . Fie h : T (X) A/ un morfism astfel ncat ht (u) = ht (v) pentru orice u =t v H.
Deoarece orice algebra libera este proiectiva rezulta ca T (X) este algebra proiectiva, prin urmare exista un morfism
f : T (X) A astfel ncat f ; = h. Pentru orice u =t v H deoarece t (ft (u)) = t (ft (v)) deducem ft (u) ft (v).
Deoarece este o congruenta nchisa la substitutii obtinem fs (l) fs (r). Prin urmare s (fs (l)) = s (fs (r)), de
unde hs (l) = hs (r).
Propozitie 7.5 Congruenta semantic
a este cea mai mic
a congruenta
nchis
a la substitutie.
Demonstratie: Fie o congruenta nchisa la substitutie. Conform propozitiei 7.4 A/ |=
Deoarece
\
=
{Ker(h) | h : A M |= }.
rezulta incluziunea
Ker(h)
pentru orice morfism h : A M |= }.
Deoarece morfismul de factorizare canonic de la A la A/ este un astfel de morfism si nucleul lui este deducem
.
7.2
??
7.3
Problema program
arii prin rescriere
Principala problem
a este : poate o masin
a s
a demonstreze c
a a c?.
Se stie ca n unele cazuri rescrierile ne dau o solutie.
Am vazut n lectiile precedente ca orice signatura determina prin algebra sa initiala un tip abstract de date. Tipul
abstract de date al numerelor naturale a fost determinat de signatura formata din constanta 0 si operatia unara
cunoscuta sub numele de succesor.
Acum am pus n evidenta un instrument mai puternic deoarece orice signatura mpreuna cu o multime de
ecuatii conditionate determina prin -algebra initiala, a carei existenta am dovedit-o mai sus, un tip abstract de
date.
24
8.1
Consideram signatura cu un singur sort nat, o singura constanta de sort nat si o singura operatie unara cu argument
si rezultat de sort nat:
sort nat .
op 0 : nat .
op s : nat nat .
Elementele algebrei initiale sunt
0, s(0), s(s(0)), s(s(s(0))), s(s(s(s(0)))), ...
si ele reprezinta numerele naturale 0 1 2 3 4 ...
Propozitie 8.1 Algebra (N, 0N , sN ) definit
a prin: N este multimea numerelor naturale, 0N este num
arul natural
zero si sN (n) = n + 1 pentru orice num
ar natural n; este initial
a. (vezi si propozitia 3.6)
Propozitia anterioara ne arata cum pot fi definite numerele naturale prim metoda algebrei initiale ca tip abstract
de date.
Deocamdata prin signatura de mai sus calculatorul nvata numerele naturale dar nu stie nca sa calculeze. Sa-l
nvatam deocamdata sa adune si sa nmulteasca.
Adunarea poate fi introdusa prin declaratia
op + : nat nat nat .
dar aceasta, singura, nu face decat sa strice ceea ce am construit deja. Deoarece nu stie sa adune calculatorul
interpreteaza de exemplu 0 + 0 ca un nou element diferit de 0, ceea ce evident nu dorim.
La cele de mai sus adaugam prea cunoscutele axiome ale lui Peano.
op + : nat nat nat .
var X Y : nat .
eq X + 0 = 0 .
eq X + s(Y) = s(X+Y) .
Inmultirea este introdusa prin
op * : nat nat nat .
eq X * 0 = 0 .
eq X * s(Y) = (X*Y) + X .
Parantezele din ultimul r
and sunt puse pentru ca masina sa nteleaga ca nmultirea se efectueaza inaintea adunarii.
Exista metode mai eficiente care fac masina sa nteleaga acest fapt, dar acesta nu este scopul prezentului text. In
demonstratia de mai jos nu mai punem aceste paranteze deoarece textul nu se mai adreseaza calculatorului.
Trebuie sa mentionam ca egalitatiile de mai sus sunt folosite n dou
a moduri:
a) ca ecuatii care mpreuna cu signatura de patru operatii formeaza o multime pentru a defini o structura
algebrica si
b) ca reguli de rescriere n timpul executiei programelor, adica se aplica numai de la stanga la dreapta.
Propozitie 8.2 Algebra N = (N, 0N , sN , +N , N ) este -algebr
a initial
a.
Demonstratie: Fie A = (A, OA , sA , +A , A ) o -algebra. Mentionam ca algebra A satisfac ecuatiile din , adica
1)
2)
3)
4)
25
Pentru a demonstra existenta nu avem decat o singura sansa si anume sa dovedim ca unicul morfism
h : (N, 0N , sN ) (A, 0A , sA ) este si morfism de -algebre. Reamintim ca
h(0N ) = 0A si pentru orice n numar natural h(n + 1) = sA (h(n)).
Probam ca h(n +N m) = h(n) +A h(m) prin inductie dupa m
h(n +N 0N ) = h(n) = h(n) +A 0A = h(n) +A h(0N ) si
h(n+N (m+1)) = h(sN (n+N m)) = sA (h(n+N m)) = sA (h(n)+A h(m)) = h(n)+A sA (h(m)) = h(n)+A h(m+1).
Probam ca h(n N m) = h(n) A h(m) prin inductie dupa m
h(n N 0N ) = h(0N ) = 0A = h(n) A 0A = h(n) A h(0N ) si
h(n N (m + 1)) = h(n N m +N n) = h(n N m) +A h(n) = (h(n) A h(m)) +A h(n) = h(n) A sA (h(m)) =
h(n) A h(m + 1).
Propozitia anterioara demonstreaza corectitudinea definitiei de mai sus. Deoarece algebra N este initiala rezulta
ca ea este izomorfa cu -algebra initiala, deci specificatia de mai sus caracterizeaza, prin -algebra sa initiala, tipul
de date al numerelor naturale.
Cred ca este util sa mentionam aici ca dat un tip de date nu este suficient sa gasim o structura algebrica care sa-l
defineasca ca tip abstract de date. De exemplu stim din algebra ca numerele naturale formeaza un semiinel initial.
Caracterizarea numerelor naturale ca semiinel initial nu ne multumeste deoarece axiomele conceptului de semiinel
nu ne dau un program(calculatorul este incapabil sa faca operatii cu numerele naturale folosind numai axiomele
semiinelului). Axiomele lui Peano dau un program n programarea prin rescriere.
26
` la MOISIL
TEORII DEDUCTIVE A
iI
27
10
ECUAT
LOGICA
IONALA
10.1
Necesitatea utiliz
arii cuantificatorilor n ecuatii
Vom ilustra printr-un exemplu necesitatea utilizarii cuantificatorilor n ecuatiile logicii ecuationale multisortate.
Fie signatura S = {a, bool} si = {g, F, T }. Rangurile simbolurilor de operatii sunt date prin desenul urmator :
F
bool
T
unde se vede ca sortul rezultat al celor trei simboluri de operatie g, F si T este bool; operatiile F si T nu au argumente
si g are un singur argument de sort a.
Vom lucra cu doua algebre.
algebra initiala este I = (, {F, T }; Ig , IF , IT ) unde F 6= T ; IF = F , IT = T si Ig : {F, T } este functia
incluziune.
Pentru orice variabila x de sort a, -algebra liber generata de aceasta variabila T ({x}, ) are suporturile {x}
pentru sortul a si {g(x),F,T} pentru sortul bool.
Are loc relatia I |= F = T ? Sau mai intuitiv: este egalitatea formala F = T adevarata n algebra I? Vom
arata ca raspunsul depinde de algebra libera n care este scrisa egalitatea.
Sunt posibile cel putin doua variante.
a
2. I |= (x)T = F daca si numai daca pentru orice morfism h : T ({x}, ) I, hbool (F ) = hbool (T ),
ceea ce este adev
arat deoarece nu exista nici un morfism h : T ({x}, ) I.
Am aratat ca I |= ()T = F este falsa si ca I |= (x)T = F este adevarata. Daca omitem cuantificatorii
Contradictia obtinuta prin omiterea cuantificatorilor din fata egalitatii formale F = T arata ca n logica ecuationala
multisortata prezenta cuantificatorilor n ecuatii este necesara.
In multe cazuri, de exemplu n limbajele de programare PROLOG, OBJ, Maude, CafeOBJ, etc cuantificatorii
din fata ecuatiilor sunt omisi dar se presupune implicit ca ecuatiile sunt cuantificate prin multimea variabilelor care
10.2
Fixam o algebra A si lucram cu propozitii din Sen(A). Acesta este punctul local de vedere al logicii ecuationale.
Cazul n care ne intereseaza propozitii din algebre diferite este numit global dar va fi putin folosit n acesta carte. In
cazul global o propozitie din D va fi scrisa (D)a =s c n loc de a =s c. Notatia fara cuantificatori folosita n cazul
local nu contrazice ceea ce am scris despre necesitatea utilizarii cuantificatorilor n ecuatii. Pur si simplu nu scriem
cuantificatorul pentru ca fix
and algebra A el va fi mereu acelasi (A) si deci l stim chiar daca nu-l vedem scris.
O alta idee pe care dorim sa o subliniem este folosirea unei algebre arbitrare A n locul unei algebre libere.
Principalele rezultate privind rescrierile, care se refera at
at la rescrierile de termeni cat si la rescrierile modulo
ecuatii, raman valabile n acest cadru mai general. Aceasta prezentare unitara a diverselor tipuri de rescriere este
de fapt contributia autorului la modernizarea lectiilor despre rescriere. Exist
a n lume trei carti privind rescrieriile
[?, ?, ?]. Nici una nu prezinta stilul local.
Mentionam ca algebra A nu are legatura cu algebra T (X) folosita n vreo axioma (X)l =s r if H din .
Mentionam si faptul ca n axiome diferite putem folosi algebre libere diferite. Aceasta corespunde cazului practic, de
exemplu scriem comutativitatea xy = yx ntr-o algebra libera cu doi generatori x si y iar asociativitatea (xy)z = x(yz)
ntr-o algebra libera cu trei generatori x, y si z.
28
10.3
a =s a
a =s b implica b =s a
a =s b si b =s c implica a =s c
Pentru orice s1 s2 ...sn ,s :
Conform traditiei notam prin a =s b faptul ca egalitatea formala a =s b este demonstrabila cu regulile de mai sus.
Observatia 10.1 Observ
am c
a o multime de egalit
ati formale este nchis
a la regula R dac
a si numai dac
a este o
relatie reflexiv
a.
Din aceasta cauza R este numita regula reflexivitatii.
Observatia 10.2 Observ
am c
a o multime de egalit
ati formale este nchis
a la regula S dac
a si numai dac
a este o
relatie simetric
a.
Din aceasta cauza S este numita regula simetriei.
Observatia 10.3 Observ
am c
a o multime de egalit
ati formale este nchis
a la regula T dac
a si numai dac
a este o
relatie tranzitiv
a.
Din aceasta cauza T este numita regula tranzitivitatii.
Observatia 10.4 Observ
am c
a o multime de egalit
ati formale este nchis
a la regula C dac
a si numai dac
a este o
relatie compatibil
a cu toate operatiile algebrei A.
Din aceasta cauza C este numita regula compatibilitatii cu operatiile din .
Teorema 10.5 Regulile de deductie RE sunt corecte pentru .
Demonstratie: Deoarece este congruenta rezulta ea este nchisa la primele patru reguli, prin urmare ele
sunt corecte pentru . Corectitudinea ultimei reguli rezulta din nchiderea congruentei semantice la substitutii n
conformitate cu propozitia 7.3.
Demonstratie: Congruenta semantica, adica multimea egalitatilor formale cu proprietatea |= a =s b, este nchisa
la RE conform teoremei 10.5
Multimea egalitatilor formale demonstrabile, adica multimea egalitatilor formale cu proprietatea
Prin urmare multimea egalitatilor formale cu proprietatea a =s b este inclusa n multimea egalitatilor formale
10.4
Completitudine
a b a =s b.
Deoarece regulile R, S si T sunt n RE deducem ca este nchisa la R, S si T deci este o echivalenta. Deoarece
C este n RE rezulta ca este nchisa la C deci este congruenta. Mai mult, deoarece Sub este n RE rezulta
ca este nchisa la substitutii.
Fie A catul lui A prin .
Observatia 10.7 A |=
29
Demonstratie: Deoarece este nchisa la substitutii, aplicand propozitia 7.4 rezulta concluzia.
11
RESCRIERE LOCALA
11.1
Preliminarii
este nchiderea reflexiva si tranzitiva a relatiei R, adica R este cea mai mica relatie reflexiva si tranzitiva care
include R. Mentionam ca * este operator de nchidere n multimea partilor lui A A.
11.2
Inchiderea la contexte
11.3
a =s a
a =s d si d =s c implica a =s c
31
11.4
rescriere
Un prim pas pentru suplinirea simetriei este nlocuirea regulii substitutiei cu regula rescrierii. Vom mai folosi si
regula rescrierii n subtermeni.
Rew
SRew
Remarcati ca SRew , rescrierea ntr-un subtermen, este o regula de deductie mai puternica decat Rew , rescrierea,
care poate fi obtinuta din SRew pentru c = .
Deasemenea Rew si regula contextului implica SRew .
Compar
and substitutia si rescrierea observam urmatoarele.
1) Rew si R implica Sub .
2) Sub , S si T implica Rew .
si apoi cu T obtinem hs (u) =s hs (v). In final aplicam Sub si deducem hs (l) =s hs (r).
Pentru a rezuma desenam schema
S,T
Sub
Rew
CA
SRew
Definitia 11.5 Cea mai mica relatie nchisa la R, T, C si Rew este denumita rescriere sau mai scurt
12
12.1
RELAT
IA DE INTALNIRE,
FORME NORMALE
Confluent
a
32
12.2
Teorema 12.4 Toate regulile de deductie de mai sus sunt corecte pentru congruenta semantic
a .
Demonstratie: Din lectia privind logica ecuationala stim ca regulile de deductie R, S, T, C si Sub sunt corecte.
Deoarece C si R implica CA deducem ca CA este corecta.
Deoarece Sub , S si T implica Rew rezulta ca Rew este corecta.
Deoarece Rew si CA implica SRew deducem ca SRew este corecta.
12.3
Completitudinea nt
alnirii prin recriere
and
Demonstratie: Din a d deducem existenta lui c astfel ncat: a c si d c. Din aceasta utiliz
corectitudinea rescrierii fata de congruenta semantica deducem ca a c si d c deci a d.
Aceasta dovedeste corectitudinea lui n raport cu congruenta semantica. Pentru a demonstra si completitudinea
sa, adica incluziunea inversa, avem nevoie sa presupunem ca este confluenta. Folosind observatia 12.3 deducem
ca este o congruenta.
Lem
a 12.7 Dac
a este confluent
a, atunci congruenta este nchis
a la substitutie.
33
Demonstratie: Fie (X) l =s r if H si fie h : T (X) A un morfism pentru care ht (u) ht (v) pentru
orice u =t v H. Pentru orice u =t v H exista auv At cu proprietatile ht (u) auv si ht (v) auv . Deoarece
este nchisa la Rew deducem ca hs (l) hs (r). Prin urmare hs (l) hs (r).
Doarece congruenta este nchisa la substitutie deducem din propozitia 7.4 ca factorizarea lui A prin este o
algebra.
12.4
12.4.1
Forme normale
La multimi
34
12.5
Relatii canonice
In practica pentru a verifica ca satisface axioma FN!, preferam uneori sa verificam ca satisface proprietatile de
confluenta si terminare.
Definitia 12.13 Spunem ca are proprietatea de terminare daca nu exista siruri {an } de elemente din A astfel
ncat pentru orice numar natural n sa avem an an+1 si an 6= an+1 .
Remarcam ca terminarea, concept venit din informatica, coincide cu buna fondare, concept provenit din lumea
relatiilor sau din teoria axiomatica a multimilor.
Observatia 12.14 Dac
a are proprietatea de terminare, atunci pentru orice element a din A exist
a un element n
form
a normal
a n N cu proprietatea a n.
Demonstratie: Ration
and prin absurd, a nu este n forma normala; prin urmare exista a1 A cu proprietatile
a a1 si a 6= a1 . Ration
and n continuare prin absurd, a1 nu este n forma normala; prin urmare exista a2 A cu
proprietatile a1 a2 si a1 6= a2 . Continuand acest rationament prin inductie putem construi un sir de elemente care
contrazice proprietatea de terminare.
Definitia 12.15 Daca preordinea este confluenta si are proprietatea de terminare, atunci < A, > se numeste
canonic
a.
Propozitie 12.16 Dac
a < A, > este canonic
a atunci axioma FN! este verificat
a.
Demonstratie: Unicitatea va rezulta din confluenta. Presupunand ca n si n sunt doua elemente n forma normala cu proprietatea a n si a n din confluenta exista d A astfel ncat n d si n d. Deoarece n si n n
sunt forma normala deducem ca n = d si n = d, deci n = n.
Din punct de vedere practic terminarea este necesar
a pentru a opri executia calculatorului iar confluenta este necesar
a
pentru completitudine. Aceste propriet
ati implic
a FN!. Pentru a demonstra c
a a c, adic
a a c, este suficient
conform observatiei 12.12 s
a rescriem a si c in forma lor normal
a f n(a) si f n(c) pentru ca apoi s
a verific
am egalitatea
f n(a) = f n(c).
13
RESCRIERE IN SUBTERMENI
Am vazut ca rescrierea canonica da o metoda de demonstrare automata a propozitiilor valide. Urmatoarea problema
consta n a arata cum regulile de deductie pentru rescriere pot fi utilizate n mod practic.
Teoremele din aceasta lectie explica modul n care se fac rescrierile n limbajele de programare declarativa.
13.1
Propozitiile ?? si 11.5 ne asigura ca rescrierea este cea mai mica preordine nchisa la SRew compatibila cu toate
operatiile din A. Teorema urmatoare ne spune ceva mai mult.
Teorema 13.1 Rescrierea este cea mai mic
a preordine din A nchis
a la SRew .
Demonstratie: Fie R cea mai mica relatie pe A care este nchisa la R, T si SRew . Din definitia lui R deducem
ca R =.
Pentru a demonstra incluziunea contrara este suficient sa aratam ca R este nchisa n C.
Dar R este tranzitiva si reflexiva, deci este suficient sa aratam ca R este nchisa la CA, adica pentru fiecare
s1 ...sn ,s si ai Asi ca a R d implica
A (a1 , . . . , ai1 , a, ai+1 , . . . , an ) R A (a1 , . . . , ai1 , d, ai+1 , . . . , an ).
Demonstram ca multimea
D = {a R d | s1 s2 ...sn ,s ; (aj Asj )A (a1 , . . . , ai1 , a, ai+1 , . . . , an ) R A (a1 , . . . , ai1 , d, ai+1 , . . . , an )}
35
ca pentru orice u =t v H. exista auv At astfel ncat (ht (u), auv ) D si (ht (v), auv ) D Pentru orice context
c T (A {})s trebuie aratat ca (c[hs (l)], c[hs (r)]) D.
Deoarece R este nchisa la SRew din ht (u) R auv si ht (v) R auv pentru orice u =t v H deducem
c[hs (l)] R c[hs (r)]
si
Deoarece R este nchisa la R, T, C si Rew , iar = este cea mai mica relatie nchisa la acestea deducem ca
= R .
In concluzie R = =.
13.2
Fie (X)l =s r if H si fie h : T (X) A un morfism astfel ncat pentru orice u =t v H exista auv At
cu proprietatile ht (u) auv si ht (v) auv . Daca c[hs (l)] 6= c[hs (r)] spunem ca c[hs (l)] se rescrie ntr-un pas n
c[hs (r)] si scriem
c[hs (l)] c[hs (r)].
Propozitie 13.2 Rescrierea este nchiderea reflexiv
a si tranzitiv
a a rescrierii ntr-un pas.
Reciproc, deoarece este reflexiva si tranzitiva este suficient sa aratam ca este nchisa la SRew .
Fie (X) l =s r if H , h : T (X) A un morfism astfel ncat pentru orice u =t v H exista auv At cu
proprietatile ht (u) auv si ht (v) auv si c un context din A[z]. Din incluziunea deja demonstrata rezulta ca
pentru orice u =t v H exista auv At cu proprietatile ht (u) auv si ht (v) auv . Avem cazurile:
2. Altfel, daca c[h(l)] 6= c[h(r)], atunci c[h(l)] c[h(r)], deci c[h(l)] c[h(r)] deoarece rescrierea ntr-un pas
este inclusa n nchiderea reflexiva si tranzitiva a rescrierii ntr-un pas.
In continuare rescrierea ntr-un pas va fi notata cu sau .
13.3
Consideratii metodologice
Pentru a demonstra ca a b este suficient, n ipotezele de mai sus, sa aratam ca f ns (a) = f ns (b) si aceasta se face
prin rescrierea lui a, respectiv a lui b n formele lor normale, pentru a verifica c
a sunt egale.
Fie a As elementul de rescris. Se cauta
36
u =t v H. Se ntrerupe rescrierea principala pentru a face acesta verificare si n caz de reusita se rescrie a n
c[hs (r)]. In caz de nereusita se continua cautarile pentru a reajunge n situatia de mai sus. Intrucat n timpul
verificarii uneia dintre conditiile ht (u) ht (v) se rescriu at
at ht (u) cat si ht (v) n forma lor normala, fenomenul de
mai sus se poate repeta se apeleaza la mecanismul numit backtracking.
Daca contine doar ecuatii neconditionate, rescrierea ntr-un singur pas nu depinde de alte rescrieri, ca n cazul
general. Acest fapt explica de ce, n acest caz metoda backtracking nu este folosita n implementarea rescrierii.
Remarcam diferenta esentiala dintre o multime de axiome si un program. Un program este o multime de axiome
care verifica niste conditii si care sunt scrise respectand sintaxa unui limbaj de programare declarativa.
Am pus deja n evidenta niste conditii suficiente pe care trebuie sa le ndeplineasca o multime de axiome pentru
a deveni program: rescrierea generata trebuie sa fie confluenta si sa aiba proprietatea de terminare.
Practic, de exemplu, ntr-o ecuatie din este interzis ca n membrul drept sa apara o variabila care nu apare n
membrul stang, deoarece n caz contrar rescrierea nu are proprietatea de terminare. De asemenea este interzis ca
membrul stang al unei ecuatii sa fie o variabila. Daca ecuatia x =s r cu x variabila ar fi n , atunci orice expresie t
de sort s ar putea fi rescrisa t = (x t)r.
Exemplu Signatura are doua sorturi nat si bool; trei constante true, f alse de sort bool si 0 de sort nat; doua
simboluri de operatii s : nat nat si : nat nat bool. Axiomele acceptate cu x si y variabile de sort nat sunt
1. 0 x = true
GFED
@ABC
nat
M
Obool
NML
/ HIJK
_
3. s(x) 0 = f alse
true
false
Vrem sa rescriem s(s(0)) s(s(z)). Se poate aplica numai axioma 2 pentru x = s(0) si y = s(z).
Inainte de aceasta trebuie sa rescriem s(0) s(z). Se poate aplica numai axioma 2 pentru x = 0 si y = z.
Inainte de aceasta rescriem 0 z true cu axioma 1.
Deoarece am obtinut true putem rescrie s(0) s(z) true.
Deoarece prin rescrierea lui s(0) s(z) am obtinut true putem rescrie s(s(0)) s(s(z)) true.
14
UNIFICARE
In semantica operationala a limbajelor de specificatie rescrierea joaca un rol primordial. Pentru a rescrie un subtermen
a T (Y ) al termenului de rescris cu ajutorul unei reguli se pune problema identificarii lui a cu imaginea membrului
stang l T (X) al unei reguli din printr-o substitutie(morfism) de la T (X) la T (Y ). Aceasta problema de
potrivire(matching n engleza) se poate rezolva cu ajutorul algoritmului de unificare. Mai precis se cauta a se unifica
l cu a n care toate variabilele din a sunt considerate constante. Daca n l si a exista variabile comune, aceste variabile
comune pot fi nlocuite n axioma utilizata din prin variabile noi. Acest fapt nu restr
ange generalitatea deoarece
variabilele din axiome sunt cuantificate universal fapt ce permite redenumirea lor.
Toate algebrele sunt presupuse libere. Prin substitutie vom ntelege un morfism ntre doua algebre libere.
Problema unific
arii. Se dau un numar finit de egalitatii formale li =si ri si se cere gasirea unui unificator,
adica a unei substitutii u cu proprietatea u(li ) = u(ri ) pentru orice i.
De fapt multimea finita de egalitatii formale este privita ca un sistem de ecuatii. S
i de aici poate proveni denumirea
de ecuatie folosita ca un sinonim pentru egalitatile formale. Acest subcapitol descrie modul de rezolvare a unui astfel
de sistem chiar n algebra libera din care provin termenii ecuatiilor. Cuvantul unificator nseamna de fapt solutie n
algebra libera din care provin termenii ecuatiilor.
Algoritmul prezentat aici este ales pentru simplcitatea sa. Mentionam existenta unor algoritmi mai eficienti.
37
14.1
Algoritmul de unificare
Vom lucra cu doua liste: solutie si de rezolvat. Initial lista solutie este vida si lista de rezolvat contine multimea
ecuatiilor de unificat.
Algoritmul de unificare consta n executia nedeterminista a urmatorilor trei pasi.
f (a1 , a2 , . . . , an ) = f (b1 , b2 , . . . , bn )
3. Elimin
a. Orice ecuatie din lista de rezolvat, de forma x = t sau t = x n care x este o variabila care nu apare
n t este mutata sub forma x = t n lista solutie. In toate celelalte ecuatii x se substitue cu t.
Algoritmul este oprit cu concluzia inexistentei unui unificator n urmatoarele doua cazuri.
2) Existenta n lista de rezolvat a unei ecuatii de forma x = t sau t = x n care x este o variabila care apare n t
si este diferita de t.
Oprirea normala a algoritmului se face prin epuizarea listei de rezolvat, caz n care, asa cum vom proba mai jos, lista
solutie ne furnizeaza cel mai general unificator.
14.2
Terminare
Terminarea algoritmului este probata folosind n ordine lexicografica doua criterii exprimate prin numere naturale:
1. numarul variabilelor care apar n lista de rezolvat, care in functie de pasul algoritmului utilizat are urmatoarea
comportare
(a) Scoate: ram
ane egal sau se micsoreaza,
(b) Descompune: ram
ane egal,
(c) Elimin
a: se micsoreaza
2. numarul aparitiilor simbolurilor(semnelor) care apar n lista de rezolvat, care se micsoreaza n cele doua cazuri
care ne mai intereseaza Scoate si Descompune.
14.3
Corectitudine
Corectitudinea algoritmului se bazeaza pe demonstrarea faptului ca multimea unificatorilor pentru ecuatiile din
reuniunea celor doua liste este un invariant, adica nu se modifica prin aplicarea celor trei pasi ai algoritmului.
Deoarece pentru pasul Scoate afirmatia este evidenta ne referim doar la ceilalti pasi.
Descompune: Observam ca pentru orice substitutie s egaliatea
38
ceea ce arata ca un unificator pentru ecuatiile din reuniunea celor doua liste dinainte de aplicarea pasului este
unificator si pentru ecuatiile din reuniunea celor doua liste de dupa aplicarea pasului si reciproc.
Algoritmul este oprit cu concluzia inexistentei unui unificator deoarece n cele doua situatii mentionate se constata
ca multimea unificatorilor este vida.
Sa observam ca variabilele care apar n membrul stang al ecuatiilor din lista solutie sunt diferite doua cate doua
si nu mai apar n nici una dintre celelalte ecuatii din cele doua liste.
Faptul poate fi dovedit prin inductie.
Mentionam ca aplicarea primilor doi pasi ai algoritmului nu modifica lista solutie si nu produc aparitii noi de
variabile n cele doua liste.
15
LOCAL CONFLUENT
A
Daca terminarea unui program poate fi chiar si o problema deschisa, problema confluentei are solutie, adica se pot
scrie programe care pentru o multime data de reguli sa constate, n ipoteza terminarii, daca -rescrierea este
confluenta. De fapt se probeaza local confluenta care mpreuna cu terminarea implica confluenta.
Reamintim ca relatia de rescriere este confluenta daca
39
Demonstratie: Reamintim ca proprietatea de terminare ne aisgura pentru orice a existenta unei forme normale
n cu proprietatea a = n. Vom demonstra unicitatea formei normale fapt ce implica confluenta. Notam cu N
multimea formelor normale. Fie M multimea elementelor care se pot rescrie n cel putin doua forme normale.
M = {a : (n1 , n2 N )a = n1 , a = n2 , n1 6= n2 }.
Probam ca a M implica (b M )a = b.
40