Programare Logica - Leustean
-
Upload
cristi-popa -
Category
Documents
-
view
105 -
download
4
description
Transcript of Programare Logica - Leustean
-
Programare Logica
Ioana Leustean
http://moodle.fmi.unibuc.ro/course/view.php?id=186
1
Continutul cursului
I Introducere in MAUDE
I Signaturi si algebre multisortate. Termeni
I Morfisme. Tipuri abstracte de date. Algebre initiale
I Subalgebre. Algebre libere
I Semantica termenilor
I Ecuatii. Relatia de satisfacere
I Specificatii algebrice
I -algebra initiala
2
I Teorema constantelor. Demonstratii prin inductie
I Logica ecuationala: sintaxa
I Logica ecuationala: corectitudine si completitudine
I Regula Subterm Replacement
I Rescrierea termenilor
I Substitutii. Algoritmul de unificare
3
I Sisteme de rescriere abstracte
I Rescrierea termenilor: terminare, confluenta, completare
I Logica ecuationala si rescriere locala
I Deductie si rescriere modulo axiome
I Semantica algebrei initiale
I Clauze Horn. Rezolutie
4
-
Programare Logica
Maude
http://maude.cs.uiuc.edu/
5
Maude
I Este dezvoltat la:
I University of Illinois at Urbana-Champaign (UIUC)I Stanford Research Institute (SRI)
I Apartine familiei OBJ, al carei initiator a fostJoseph Goguen(1941 - 2006).
6
Maude
I Poate fi folosit ca demonstrator. Mecanismul de rescriere esteun procedeu de demonstrare automata, dar sunt implementatesi facilitati speciale.
I Poate fi un instrument util in dezvoltarea de software,deoarece permite atat specificarea, cat si analiza unui limbajde programare. Faptul ca este executabil ofera si avantajulunei implementari indirecte.
7
Maude
I Este un interpretor.
I Comenzile sunt introduse una cate una si sunt executateimediat.
I Un program este o multime de module.
I Modulele pot fi scrise n fisiere sau direct n linia de comanda.
I Modulele pot fi importate. Modulul predefinit BOOL esteimportat de orice modul.
8
-
Comenzi sistem
in ../nume-fisier.modshow module nume-modul .select nume-modul .show sorts .show ops .reduce termen .reduce termen1 == termen2 .parse term .set trace on .set trace off .quit
Manual de Maude (html)
9
Maude> in PL/Exemple-Curs1.maude
==========================================
fmod MYNAT
Maude> show module MYNAT .
fmod MYNAT is
sorts Nat .
op 0 : -> Nat .
op s_ : Nat -> Nat .
endfm
Maude> select MYNAT .
10
Maude> reduce s s s s s 0 .
reduce in MYNAT : s s s s s 0 .
rewrites: 0 in 6641663802ms cpu (0ms real) (0 rew/sec)
result Nat: s s s s s 0
Maude> parse s s s s s 0 .
Nat: s s s s s 0
Maude> reduce s s s 0 == s s 0 .
reduce in MYNAT : s s s 0 == s s 0 .
rewrites: 1 in 10534570934ms cpu (0ms real) (0 rew/sec)
result Bool: false
11
Exemplul 1
fmod MYNAT is
sorts Nat .
op 0 : -> Nat .
op s_ : Nat -> Nat .
endfm
Acest modul introduce tipul de date Nat.Datele de tip Nat sunt:
0, s 0, s s 0, s s s 0, s s s s 0, s s s s s 0, ...
Reprezentarea matematica:S = {Nat}, = {0 : Nat, s : Nat Nat}(S ,) este o signatura si defineste o clasa de algebre (structuri,structuri algebrice). Algebra (N, 0, succesor) este un obiectprivilegiat al acestei clase.
12
-
fmod ... endfm
fmod MYNATLIST is
protecting MYNAT .
sort ListNat .
subsort Nat < ListNat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
var L : ListNat .
eq nil ; L = L .
eq L ; nil = L .
endfm
Structura generala a unui modul: importuri (protecting, extending, including), declararea sorturilor si a subsorturilor, declararea operatiilor, declararea variabilelor, ecuatii.
13
Importuri
Exista trei modalitati de importare a modulelor
I protectingse foloseste atunci cand datele definite in modulul importantnu sunt afectate de operatiile dau ecuatiile noului modul: nuse construiesc date noi pe sorturi vechi (no junk) si nu suntidentificate date care in modulul initial erau diferite (noconfusion)
I extendingpermite aparitia unor date noi pe sorturile vechi (junk) darnu permite identificarea datelor care in modulul initial eraudiferite (no confusion)
I includingnu are restrictii
14
[assoc]
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
Atributul [assoc] inlocuieste ecuatiile:
eq (L;P);Q = L;(P;Q) .
eq L;(P;Q) = (L;P);Q .
Ecuatiile definite cu eq sunt transformate in reguli de rescriere.Cele doua ecuatii care definesc asociativitatea duc la neterminarearescrierii, deci ele nu pot fi adaugate in sectiunea eq. Efectulatributului [assoc] este faptul ca rescrierea se face pe clase determeni modulo asociativitate. In mod asemanator, atributul[comm] se foloseste pentru a indica faptul ca o operatie estecomutativa.
15
Exemplul 2
fmod MYNATLIST is
protecting MYNAT .
sort ListNat .
subsort Nat < ListNat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
var L : ListNat .
eq nil ; L = L .
eq L ; nil = L .
endfm
16
-
Exemplul 2
Reprezentarea matematica:
sort Nat ListNat .
subsort Nat < ListNat .
op 0 : -> Nat .
op s_ : Nat -> Nat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat .
Signatura (ordonat-sortata): ((S ,),)S = {Nat, ListNat}, S S , = {(Nat, ListNat)} = {0 : Nat, s : Nat Nat, nil : ListNat,
; : ListNat ListNat ListNat}
17
Exemplul 2
Reprezentarea matematica:
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
var L : ListNat .
eq nil ; L = L .
eq L ; nil = L .
Prezentare (multime de ecuatii):(1)L.ListNat(nil ; L = L)(2)L.ListNat(L; nil = L)(3)L.ListNatP.ListNatQ.ListNat((L; P); Q = L; (P; Q)) = {1, 2, 3}
18
Exemplul 2
fmod MYNATLIST is
protecting MYNAT .
sort ListNat .
subsort Nat < ListNat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
var L : ListNat .
eq nil ; L = L .
eq L ; nil = L .
endfm
Reprezentarea matematica a unui modul este ospecificatie algebrica ordonat-sortata
((S ,),, )19
Exemplul 2
Date de tipul ListNat sunt:
nil ; s 0
s s 0 ; s 0 ; 0
(nil ; s 0) ; s s 0 ; nil ; 0
Aceste date le numim expresii sau termeni.Un program este un modul, adica o specificatie; modelulmatematic al unei specificatii este o algebra de termeni; oexecutie este o rescriere n algebra de termeni asociata.
Maude> select MYNATLIST .
Maude> reduce (nil ; s 0) ; s s 0 ; nil ; 0 .
reduce in MYNATLIST : (nil ; s 0) ; s s 0 ; nil ; 0 .
rewrites: 2 in 2753904389ms cpu (0ms real)
result ListNat: s 0 ; s s 0 ; 0
20
-
Exemplul 2
Maude> set trace on .
Maude> reduce (nil ; s 0) ; s s 0 ; nil ; 0 .
reduce in MYNATLIST : (nil ; s 0) ; s s 0 ; nil ; 0 .
*********** equation
eq nil ; L = L .
L --> s 0
nil ; s 0 ---> s 0
*********** equation
eq nil ; L = L .
L --> 0
nil ; 0 ---> 0
rewrites: 2 in 2753904388ms cpu (12ms real)
result ListNat: s 0 ; s s 0 ; 0
21
Exemplul 2
fmod MYNATLIST is
protecting MYNAT .
sort ListNat .
subsort Nat < ListNat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
var L : ListNat .
eq nil ; L = L .
eq L ; nil = L .
endfm
Ce date defineste MYNATLIST?
22
Exemplul 2
fmod MYNATLIST is
protecting MYNAT .
sort ListNat .
subsort Nat < ListNat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
var L : ListNat .
eq nil ; L = L .
eq L ; nil = L .
endfm
Modulul MYNATLIST defineste
k0Nk(secventele ordonate finite de numere naturale ).
Maude> reduce (0 ; s 0 ) == (0 ; s 0 ; 0) .
...
result Bool: false 23
Exemplul 3
fmod MYNATLIST1 is
protecting MYNAT .
sort ListNat .
subsort Nat < ListNat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat [ assoc comm ] .
var L : ListNat .
var I : Nat .
eq nil ; L = L .
eq L ; nil = L .
eq I ; I = I .
endfm
Maude> reduce (0 ; s 0) == (0 ; s 0 ; 0) .
...
result Bool: true
Ce defineste MYNATLIST1 ?24
-
Exemplul 4
fmod COMPLEXINT is
protecting INT .
sort ComplexInt .
subsort Int < ComplexInt .
op _+i_ : Int Int -> ComplexInt .
op i_ : Int -> ComplexInt .
op _+_ : ComplexInt ComplexInt -> ComplexInt [ditto] .
var z : Int .
eq 0 +i z = i z .
eq z +i 0 = z .
...
endfm
Observati suprancarcarea operatiei + si atributul [ditto]+ : Int Int > Int+ : ComplexInt ComplexInt > ComplexInt
25
Exemplul 5
fmod GRUP is
sort Element .
op e : -> Element .
op _+_ : Element Element -> Element [ assoc ] .
op -_ : Element -> Element .
vars x y : Element .
eq e + x = x .
eq x + e = x .
eq (- x) + x = e .
eq x + (- x) = e .
eq - - x = x .
eq - e = e .
eq - (x + y) = (- y) + (- x) .
endfm
26
TRS canonic
O ecuatie l = r se transforma, prin orientare de la stanga ladreapta, ntr-o regula de rescriere l r . Ecuatiile modululuiGRUP determina astfel un sistem de rescriere canonic:
I orice sir de rescrieri se termina,
I ordinea de aplicare regulilor de rescriere nu schimba rezultatulfinal.
O ecuatie t1 = t2 din teoria de ordinul I a grupurilor este verificatan orice grup daca si numai daca exista un termen t astfel ncatt1 t si t2 t.
Maude-ul poate fi utilizat ca demonstrator.
27
Exemplul 5
Maude> select GRUP .
Maude> reduce x + (-( - y + x)) == y .
reduce in GRUP : x + - (- y + x) == y .
*********** equation
eq - (x + y) = - y + - x .
x --> - y
y --> x
- (- y + x) ---> - x + - - y
*********** equation
eq - - x = x .
x --> y
- - y ---> y
28
-
Exemplul 5
*********** equation
eq x + - x = e .
x --> x
x + - x + y ---> e + y
*********** equation
eq e + x = x .
x --> y
e + y ---> y
*********** equation
(built-in equation for symbol _==_)
y == y ---> true
rewrites: 5 in 179156223ms cpu (23ms real)
result Bool: true
29
Exemplul 6
fmod MYNATLIST is
protecting MYNAT .
sort ListNat .
subsort Nat < ListNat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
var L : ListNat .
eq nil ; L = L .
eq L ; nil = L .
endfm
fmod MYNATLIST2 is
protecting MYNATLIST .
op _ Bool .
...
endfm30
Exemplul 6
fmod MYNATLIST2 is
protecting MYNATLIST .
op _ Bool .
vars I J : Nat .
eq s I < s J = I < J .
eq 0 < s I = true .
eq I < 0 = false .
ceq I ; J = J ; I if (J < I ) .
endfm
Observati ecuatia conditionala
ceq I ; J = J ; I if (J < I ) .
Ce tip de date defineste modulul MYNATLIST2 ?31
Exemplul 6
Maude> select MYNATLIST2 .
Maude> reduce s s s 0 ; s s 0 ; s s s 0 ; 0 .
...
result ListNat: 0 ; s s 0 ; s s s 0 ; s s s 0
Modulul MYNATLIST2 defineste liste de numere naturale ordonatecrescator.
A se vedea si D. Dragulici, Revista de logica
32
-
Exemplul 7
fmod STACK{X :: TRIV} is
sorts EmptyStack{X} NonEmptyStack{X} Stack{X} .
subsorts EmptyStack{X} NonEmptyStack{X} < Stack{X} .
op empty : -> EmptyStack{X} .
op push : X$Elt Stack{X} -> NonEmptyStack{X} .
op pop_ : NonEmptyStack{X} -> Stack{X} .
op top_ : NonEmptyStack{X} -> X$Elt .
var E : X$Elt .
var S : Stack{X} .
eq top push (E , S) = E .
eq pop push (E , S) = S .
endfm
Modulul STACK{X} creaza o stiva generica.Parametrul formal X este descris de teoria TRIV
fth TRIV is sort Elt. endfh 33
Exemplul 8
fth TRIV is
sort Elt.
endfh
fmod STACK{X :: TRIV} is ... endfm
Instantiind modulul parametru X cu modulul predefinit NATdefinim stivele de numere naturale.
view Inst from TRIV to NAT is
sort Elt to Nat .
endv
fmod STACKNAT is
protecting STACK{Inst} .
endfm34
Exemplul 8
Maude> select STACKNAT .
Maude> show sorts .
sort Bool .
sort Zero . subsort Zero < Nat .
sort NzNat . subsort NzNat < Nat .
sort Nat . subsorts NzNat Zero < Nat .
sort EmptyStack{Inst} .
subsort EmptyStack{Inst} < Stack{Inst} .
sort NonEmptyStack{Inst} .
subsort NonEmptyStack{Inst} < Stack{Inst} .
sort Stack{Inst} .
subsorts NonEmptyStack{Inst} EmptyStack{Inst} < Stack{Inst} .
35
Limbajul Maude este un limbaj de specificatie bazat pe logicaecuationala. Un program este o colectie de module. Executia esteo rescriere. Cateva din caracteristicile acestui limbaj sunt:
I modularizare si parametrizare,
I definirea tipurilor de date este independenta de implementare,
I extensibilitate,
I permite tratarea erorilor si suprancarcarea operatiilor,
I poate fi folosit ca demonstrator.
36
-
Programare logica
Signaturi. Algebre. Termeni
37
Multimi S-sortate
S 6= I O multime S- sortata A este o familie A = {As}sS .I Daca A = {As}sS si B = {Bs}sS atunci
I = {s}sS , s = or. s S ,I A B As Bs or. s S ,I A B = {As Bs}sS , A B = {As Bs}sS ,I A B = {As Bs}sS .
Exemplu: S = {nat, bool}, A = {Anat ,Abool},Anat = N, Abool = {T ,F}
sorturi=tipuri, elemente de sort s= date de tip s
38
Functii S-sortate
A = {As}sS , B = {Bs}sS , C = {Cs}sSI O functie S- sortata f : A B este o familie de functii
f = {fs}sS , unde fs : As Bs oricare s S .I Daca f : A B si g : B C , definim
f ; g : A C , f ; g = {fs ; gs}sSI fs ; gs : As Cs ,
fs ; gs(a) := gs(fs(a)) or. s S , a AsI 1A : A A, 1A = {1As}sSI (f ; g); h = f ; (g ; h) (compunerea este asociativa)
I f ; 1B = f , 1A; f = f or. f : A B
39
Functii S-sortate
A = {As}sS , B = {Bs}sS ,I O functie S-sortata f : A B se numeste
injectiva, (surjectiva, bijectiva)daca fs este injectiva, (surjectiva, bijectiva) oricare s S .
I O functie S-sortata f : A B se numeste inversabila dacaexista g : B A a.. f ; g = 1A si g ; f = 1B .
Propozitie. O functie S-sortata f : A B este inversabila daca sinumai daca este bijectiva (fs este bijectiva oricare s S).
40
-
Signaturi multisortate
(S ,) signatura multisortata
I S multimea sorturilorI multimea simbolurilor de operatii : s1 sn s
I este simbolul (numele) operatieiI s1, , sn,s S
s1, , sn sorturile argumentelors sortul rezultatului< s1 sn, s > aritatea operatiei
I daca n = 0 atunci : s este simbolul unei operatii constanteI = (w ,s)wS,sS w ,s : w Sw = s1 sn S
I este permisa suprancarcarea operatiilor
41
Signaturi
(S ,) signatura multisortata
I S :=
n0 Sn
S0 := {}, Sn := {s1 sn|si S or. i}I = (w ,s)wS,sS w ,s : w sw = s1 sn S
I este suprancarcat (overloaded) daca w1,s1 w2,s2 si < w1, s1 >6=< w2, s2 >
I este permisa suprancarcarea operatiilor
42
Exemple
I BOOL = (S ,)I S = {bool}I = {T : bool ,F : bool ,
: bool bool , : bool bool bool , : bool bool bool}
I NAT = (S ,)I S = {nat}I = {0 : nat, succ : nat nat}
43
Exemple
I NATBOOL = (S ,)I S = {bool , nat}I = {T : bool ,F : bool , 0 : nat,
succ : nat nat,: nat nat bool}
I = (w ,s)wS,sS,bool = {T ,F}, ,nat = {0},nat,nat = {succ}, nat nat,bool = {},w ,s = pentru celelalte < w , s > S S
44
-
Exemple
I STIVA = (S ,)I S = {elem, stiva}I = {0 : elem, empty : stiva,
push : elem stiva stiva,pop : stiva stiva,top : stiva elem}
45
Exemple
I AUTOMAT = (S ,)I S = {intrare, stare, iesire}I = {s0 : stare,
f : intrare stare stare,g : stare iesire}
I GRAF = (S ,)I S = {arc , nod}I = {v0 : arc nod , v1 : arc nod}
46
Signaturi ordonat-sortate
(S ,,) signatura ordonat-sortataI (S ,) signatura multisortata
I (S ,) multime partial ordonataI conditia de monotonie w1,s1 w2,s2 , w1 w2 s1 s2
Exemplu:S = {elem, stiva, nvstiva}, elem stiva, nvstiva stiva = {empty : stiva, push : elem stiva nvstiva,
pop : nvstiva stiva, top : nvstiva elem}.In practica se folosesc signaturi ordonat-sortate.
47
Algebre multisortate
(S ,) - signatura multisortataO algebra multisortata de tip (S ,) este o pereche (AS ,A), unde
I AS = {As}sS (multimea suport)I A = {A} (familie de operatii) a..
I daca : s atunci A AsI daca : s1 sn s atunci A : As1 Asn As
A = (AS ,A) este o (S ,)-algebra
48
-
Exemple
I BOOL = (S = {bool},) = {T : bool ,F : bool , : bool bool , : bool bool bool , : bool bool bool}
I BOOL-algebra A:Abool := {0, 1}AT := 1, AF := 0, A(x) := 1 x ,A(x , y) := max(x , y), A(x , y) := min(x , y)
I BOOL-algebra B:Bbool := P(N)BT := N, BF := , B(X ) := N \ X ,B(X ,Y ) := X Y , B(X ,Y ) := X Y
49
Exemple
I NAT = (S = {nat},) = {0 : nat, succ : nat nat}
I NAT -algebra A:Anat := NA0 := 0, Asucc(x) := x + 1
I NAT -algebra B:Bnat := {0, 1}B0 := 0, Bsucc(x) := 1 x
I NAT -algebra C :Cnat := {2n|n N}C0 := 1, Csucc(2
n) := 2n+1
50
Exemple
I STIVA = (S = {elem, stiva},) = {0 : elem, empty : stiva, pop : stiva stiva,
push : elem stiva stiva, top : stiva elem}I STIVA-algebra A: Aelem := N, Astiva := N
A0 := 0, Aempty := , Apush(n, n1 nk) := n n1 nk ,Apop() = Apop(n) := ,Apop(n1n2 nk) := n2 nk pt. k 2,Atop() := 0, Atop(n1 nk) := n1 pt. k 1.
I STIVA-algebra B: Belem := {0}, Bstiva := NB0 := 0, Bempty := 0, Bpush(0, n) := n + 1 or. n,Bpop(0) := 0, Bpop(n) := n 1 pt. n 1,Btop(n) := 0 or. n.
51
Exemple
I AUTOMAT = (S = {intrare, stare, iesire},) = {s0 : stare, f : intrare stare stare,
g : stare iesire}I AUTOMAT -algebra A:
Aintrare = {x , y}, Astare = {s0, s1}, Aiesire := {T ,F}As0 := s0, Ag (s0) := F , Ag (s1) := T ,Af (x , s0) := s0, Af (y , s0) := s1,Af (x , s1) := s0, Af (y , s1) := s1
I AUTOMAT -algebra B:Bintrare = Bstare = Biesire := NBs0 := 0, Bf (m, n) := m + n, Bg (n) := n + 1
52
-
Algebre ordonat-sortate
(S ,,) signatura ordonat-sortataO algebra ordonat-sortata de tipul (S ,,) este o (S ,)-algebra(AS ,A) care satisface urmatoarele proprietati:
I s1 s2 As1 As2I w1,s1 w2,s2 , w1 w2
Aw2,s2 (x) = Aw1,s1 (x) oricare x Aw1 .
I Semantica unui modul functional in Maude este o algebraordonat-sortata.
53
Multime de variabile
(S ,) signatura multisortata
|| := w ,s w ,s|X | := sS Xs daca X multime S-sortataO multime de variabile este o multime S-sortata X a..:
I Xs Xs = or. s 6= s I |X | || =
simbolurile de variabile sunt distincte ntre ele si sunt distincte desimbolurile de operatii din
54
Termeni (expresii, cuvinte)
(S ,) signatura, X multime de variabile
Multimea S-sortata termenilor cu variabile din X , T(X ), este ceamai mica multime de siruri finite peste alfabetul
L =
sS Xs
w ,s w ,s {(, )} {,}care verifica urmatoarele proprietati:
I (T1) Xs T(X )sI (T2) dc. : s, at. T(X )s ,I (T3) dc. : s1 sn s si ti T(X )si or. i = 1, . . . , n
at. (t1, . . . , tn) T(X )s . Var(t) := multimea variabilelor care apar n t T
55
Termeni fara variabile (ground terms)
(S ,) signatura multisortata
Multimea S-sortata termenilor fara variabile, T, este cea maimica multime de siruri finite peste alfabetul
L =
w ,s w ,s {(, )} {,}care verifica urmatoarele proprietati:
I (T2) dc. : s, at. T,s ,I (T3) dc. : s1 sn s si ti T,si or. i = 1, . . . , n
at. (t1, . . . , tn) T,s . T = T()
56
-
Exemple
I STIVA = (S ,)S = {elem, stiva}, Xelem = {x , y}, Xstiva = , = {0 : elem, empty : stiva,
push : elem stiva stiva,pop : stiva stiva,top : stiva elem}
I T(X )elem = {0, x , y , top(pop(empty)),top(push(x, empty)), . . .}
T(X )stiva = {empty,push(y , empty),pop(empty),push(top(empty), empty), . . .}
I siruri care nu sunt termenipop(0), (pop)top(empty), empty(y), . . .
57
Exemple
I NATBOOL = (S ,)S = {bool , nat} = {T : bool ,F : bool , 0 : nat,
s : nat nat,: nat nat bool}
I TNATBOOL,nat = {0, s(0), s(s(0)), . . .}TNATBOOL,bool = {T,F, (0, 0), (0, s(0)), . . .}
I siruri care nu sunt termeni (T ,F ), s (0), Ts(0), . . .
58
Exemple
I AUTOMAT = (S ,), S = {intrare, stare, iesire}, = {s0 : stare,
f : intrare stare stare,g : stare iesire}
TAUTOMAT ,stare = {s0}, TAUTOMAT ,intrare = ,TAUTOMAT ,iesire = {g(s0)}
I GRAF = (S ,), S = {arc , nod} = {v0 : arc nod , v1 : arc nod}TGRAF ,arc = TGRAF ,nod =
59
Expresii aritmetice
I NATEXP = (S = {nat},)I = {0 : nat, s : nat nat ,
+ : nat nat nat, : nat nat nat}I TNATEXP = {0, s(0), s(s(0)), . . .
+(0, 0),(0,+(s(0), 0)),(s(0), s(s(0))), . . .}I siruri care nu sunt termeni
+(0), 0(s)s(0), (0), . . .I TNATEXP este multimea expresiilor aritmetice peste N.
60
-
Inductia pe termeni
(S ,) signatura multisortata, X multime de variabileFie P o proprietate a.. urmatoarele conditii sunt satisfacute:
I pasul initial:P(x) = true or. x X , P() = true or. : s,
I pasul de inductie:daca t1 T(X )s1 , . . ., tn T(X )sn siP(t1) = = P(tn) = true atunciP((t1, . . . , tn)) = true or. : s1 . . . sn s.
Atunci P(t) = true oricare t T(X ).
61
Algebra termenilor
Algebra termenilor
(S ,) signatura, X multime de variabileMultimea termenilor T(X ) = {T(X )s}sS este (S ,)-algebracu operatiile definite astfel:
I pt. : s, operatia corespunzatoare este T := I pt. : s1 sn s, operatia corespunzatoare este
T : T(X )s1 T(X )sn T(X )sT(t1, . . . , tn) := (t1, . . . , tn)or. t1 T(X )s1 , . . ., tn T(X )sn
T(X ) algebra termenilor cu variabile din XT algebra termenilor fara variabile (X = )
62
Algebra expresiilor aritmetice
I NATEXP = (S = {nat},)I = {0 : nat, s : nat nat ,
+ : nat nat nat, : nat nat nat}I T0 := 0,
I Ts(t) := s(t),
I T+(t1, t2) := +(t1, t2)
I T(t1, t2) := (t1, t2)
I Semantica unui modul n Maude (care contine numaideclaratii de sorturi, operatii si variabile) este o algebra determeni.
63 64
-
Programare logica
Morfisme.Tipuri abstracte de date.
Algebre initiale
65
Morfisme
Exemplu. SignaturaMONOID = (S = {s}, = {e : s, : ss s})Fie (A, 1, ?) si (B, 0,+) monoizi(Ae := 1, A := ?, Be := 0, B := +)O functie f : A B este morfism de monoizi daca:I f (1) = 0 f (Ae) = BeI f (x ? y) = f (x) + f (y) f (A(x , y)) = B(f (x), f (y))
or. x , y A.
A A A Af f f B B B B
66
Morfisme
(AS ,A), (BS ,B) (S ,)-algebre
Un morfism de (S ,)-algebre ((S ,)-morfism) este o functieS-sortata f : A B care verifica conditiile de compatibilitate:I fs(A) = (B) oricare : s,I fs(A(a1, . . . , an)) = B(fs1(a1), . . . , fsn(an))
or. : s1 sn s, or. (a1, . . . , an) As1 Asn .
As1 Asn A Asfs1 . . . fsn fsBs1 Bsn B Bs
Observatie
1A : A A este morfism or. A (S ,)-algebra.67
Exemplu
I NAT = (S = {nat}, = {0 : nat, succ : nat nat})I NAT -algebra A:
Anat := N, A0 := 0, Asucc(x) := x + 1I NAT -algebra B:
Bnat := {0, 1}, B0 := 0, Bsucc(x) := 1 xI f : A B, f = {fnat}, fnat(n) = n(mod 2)
este morfism de NAT -algebre
I Nu exista morfism de NAT -algebre g : B A.
68
-
Exemple
I STIVA = (S = {elem, stiva},) = {0 : elem, empty : stiva, pop : stiva stiva,
push : elem stiva stiva, top : stiva elem}I STIVA-algebra A: Aelem := N, Astiva := N
A0 := 0, Aempty := , Apush(n, n1 nk) := n n1 nk ,Apop() = Apop(n) := ,Apop(n1n2 nk) := n2 nk pt. k 2,Atop() := 0, Atop(n1 nk) := n1 pt. k 1.
I STIVA-algebra B: Belem := {0}, Bstiva := NB0 := 0, Bempty := 0, Bpush(0, n) := n + 1 or. n,Bpop(0) := 0, Apop(n) := n 1 pt. n 1,Btop(n) := 0 or. n.
69
Exemple
I STIVA-algebra A = (Aelem = N,Astiva = N, . . .)I STIVA-algebra B = (Belem = {0},Bstiva := N, . . .)I f : A B, f = (felem : N {0}, fstiva : N N)
felem(n) := 0 or. n,fstiva() := 0, fstiva(n1 nk) := k pt. k 1
I g : B A, g = (gelem : {0} N, gstiva : N N)gelem(0) := 0,gstiva(0) := , gstiva(k) := 0 0
k
pt. k 1
f si g sunt morfisme de STIVA-algebre
70
Morfisme de mpo
Observatie.
Multimile partial ordonate se pot reprezenta ca (S ,)-algebre,S := {elem, bool}, := {: elem elem bool ,T : bool ,F : bool}.I Mpo (A,) este reprezentata ca (S ,)-algebra prin
(A, {0, 1} ,T ,F ), undeAelem := A, Abool := {0, 1}, AT := 1, AF := 0,A(x , y) = T x y
I Ce relatiile este ntre functii crescatoare si morfisme de(S ,)-algebre?
I Orice (S ,)-morfism este functie crescatoare dar invers nueste adevarat!
71
Proprietati
(S ,) signatura multisortata
Propozitia 1.
Fie A, B, C algebre si f : A B, g : B C morfisme. Atuncif ; g : A C este morfism.Dem.
I : s (f ; g)s(A) = gs(fs(A)) = gs(B) = C,
I : s1 sn s , (a1, . . . , an) As1 Asn(f ; g)s(A(a1, . . . , an)) = gs(fs(A(a1, . . . , an))) =
gs(B(fs1(a1), . . . , fsn(an))) =C(gs1(fs1(a1)), . . . , gsn(fsn(an)))= C((g ; f )s1(a1), . . . , (g ; f )sn(an)). qed
72
-
Proprietati
Teorema 2.
Exista un unic morfism f : T B or. B (S ,)-algebra.Dem. Fie B (S ,)-algebra.Existenta. Definim f : T B prin inductie pe termeni
(P(t) = f (t) este definita).
I pasul initial: dc. : s , at. fs() := B,I pasul de inductie: dc. : s1 . . . sn s si
t1 Ts1 , . . ., tn Tsn a. fs1(t1), , fsn(tn) definite at.fs((t1, . . . , tn)) := B(fs1(t1), , fsn(tn))
Conform principiului inductiei pe termeni,fs(t) este definita or. t T.
73
Continuare
Demonstram ca f este morfism.
I dc. : s , at. fs(T) = fs() = B,I dc. : s1 . . . sn s si
t1 Ts1 , . . ., tn Tsn at.fs(T(t1, . . . , tn)) = fs((t1, . . . , tn))
= B(fs1(t1), , fsn(tn))
74
Continuare
Unicitatea. Fie g : T B un morfism.Demonstram ca g = f prin inductie pe termeni
(P(t) = dc. t Ts at. gs(t) si fs(t) sunt egale).
I pasul initial: dc. : s , at. gs() = B = fs(),I pasul de inductie: dc. : s1 . . . sn s si
t1 Ts1 , . . ., tn Tsn a.gs1(t1) = fs1(t1), , gsn(tn) = fsn(tn) at.
gs((t1, . . . , tn)) = B(gs1(t1), , gsn(tn)) =B(fs1(t1), , fsn(tn)) = fs((t1, . . . , tn))
Conform principiului inductiei pe termeni,gs(t) = fs(t) or. t Ts , adica g = f . qed
75
Exemplu
(S ,) signatura multisortata
I D = (DS ,D), Ds := N or. s Sdaca : s atunci D := 0,daca : s1 . . . sn s, k1, . . ., kn ND(k1, . . . , kn) := 1 + max(k1, . . . , kn)
I fD : T D unicul morfismCe reprezinta valoarea fD(t) pentru un termen t?
76
-
Termeni ca arbori
Un termen t poat fi reprezentat ca un arbore arb(t) astfel:
I Ts arb() := I t = (t1, . . . , tn)
arb(t) :=
##{{arb(t1) arb(tn)
Pentru orice t valoarea fD(t) este adancimea arborelui arb(t).
77
Izomorfisme
Un (S ,)-morfism f : A B este izomorfism daca exista unmorfism g : B A a.. f ; g = 1A si g ; f = 1B .
Propozitia 3
Un morfism f : A B este izomorfism daca si numai daca estefunctie bijectiva, adica fs : As Bs este bijectie oricare s S .Dem. Revine la a demonstra ca implicatia:
f morfism si bijectie f 1 morfism.
78
Continuare
Demonstram ca f 1 : B A este morfism.I dc. : s , at. fs(A) = B, deci f 1s (B) = A,I dc. : s1 . . . sn s si
b1 Bs1 , . . ., bn Bsn at.ex. a1 As1 , . . ., an Asn a..fs1(a1) = b1, . . ., fsn(an) = bn si
fs(A(a1, . . . , an)) = B(fs1(a1), . . . , fsn(an)) = B(b1, . . . , bn)
Atunci fs1(B(b1, . . . , bn)) = A(a1, . . . , an) =
A(fs11(b1), . . . , fsn
1(bn)). qed
79
Izomorfisme de mpo
I (A = {x1, x2, x3, x4},), unde x1 x2 x3 x4I (B = {0, 1}2,), unde ordinea pe componenteI A si B sunt (S ,)-algebre, unde
S := {elem, bool}, := {: elem elem bool ,T : bool ,F : bool}
I f : A Bf (00) = x1, f (01) = x2, f (10) = x3, f (11) = x4este functie bijectiva si crescatoare
I A 6' B
80
-
Izomorfisme
Spunem ca algebrele A = (AS ,A) si B = (BS ,B) sunt izomorfedaca exista un izomorfism f : A B. In acest caz notam A ' B.I A ' A (1A este izomorfism)I A ' B B ' AI A ' B, B ' C A ' C
Relatia de izomorfism este o relatie de echivalenta (reflexiva,simetrica si tranzitiva).
Observatie.
A ' B As ' Bs oricare s S
81
Exemple
I NAT = (S = {nat}, = {0 : nat, succ : nat nat})I NAT -algebra A: Anat = N, A0 := 0, Asucc(x) := x + 1I NAT -algebra B: Bnat := {0, 1}, B0 := 0, Bsucc(x) := 1 xI NAT -algebra C : Cnat := {2n|n N}
C0 := 1, Csucc(2n) := 2n+1
I A 6' BI A ' C
f : A C , f (n) := 2n este un NAT -izomorfism.
82
Exemple
I BOOL = (S = {bool},) = {T : bool ,F : bool , : bool bool , : bool bool bool , : bool bool bool}
I Abool := {0, 1}AT := 1, AF := 0, A(x) := 1 x ,A(x , y) := max(x , y), A(x , y) := min(x , y)
I Bbool := P(N)BT := N, BF := , B(X ) := N \ X ,B(X ,Y ) := X Y , B(X ,Y ) := X Y
I A 6' B
83
Exemple
I BOOL-algebra C :Cbool := {t : N {0, 1}| t functie}CT (n) := 1, CF (n) := 0 or. n NC(t)(n) := 1 t(n) or. t Cbool , n NC(t1, t2)(n) := max(t1(n), t2(n)) or. t1, t2 Cbool , n NC(t1, t2)(n) := min(t1(n), t2(n)) or. t1, t2 Cbool , n N
I B ' Cf : B C , f (Y ) := Y oricare Y P(N)f (Y )(n) = 1 daca n Y , f (Y )(n) = 0 daca n 6 Yf este BOOL-izomorfism
84
-
Exemple
I STIVA-algebra A = (Aelem = N,Astiva = N, . . .)
I STIVA-algebra B = (Belem = {0},Bstiva := N, . . .)I A 6' B
85
Exemple
I STIVA-algebra A: Aelem := N, Astiva := N A0 := 0,Aempty := , Apush(n, n1 nk) := n n1 nk ,Apop() = Apop(n) := ,Apop(n1n2 nk) := n2 nk pt. k 2,Atop() := 0, Atop(n1 nk) := n1 pt. k 1.
I STIVA-algebra C : Celem := Z, Cstiva := ZC0 := 0, Cempty := , Cpush(x , x1 xk) := x1 xkx ,Cpop() = Cpop(x) := ,Cpop(x1 xk1xk) := x1 xk1 pt. k 2,Ctop() := 0, Ctop(x1 xk) := xk pt. k 1.
86
Exemple
I STIVA-algebra A: Aelem := N, Astiva := N
I STIVA-algebra C : Celem := Z, Cstiva := Z
I f : A C , f = (felem : N Z, fstiva : N Z)felem(2k) := k , felem(2k + 1) := k 1 pt. k N,fstiva(n1 nk) := felem(nk) felem(n1) pt. n1 nk N.f este STIVA-izomorfism
I Algebrele izomorfe sunt identice (modulo redenumire).
87
ADT
I Un tip abstract de date este o multime de date ( valori) sioperatii asociate lor, a caror descriere (specificare) esteindependenta de implementare.abstract=disassociated from any specific instance
I O algebra este formata dintr-o multime de elemente si omultime de operatii. Algebrele pot modela tipuri de date.
I Doua algebre izomorfe au acelasi comportament, deci trebuiesa fie modele ale acelasi tip de date. Aceasta asiguraindependenta de implementare.
88
-
ADT
I O signatura (S ,) este interfata sintactica a unui tip abstractde date.
I O algebra A = (AS ,A) este o posibila implementare.
I Daca A ' B, atunci A si B implementeaza acelasi tip de date.I Un tip abstract de date este o clasa C de (S ,)-algebre cu
proprietatea ca oricare doua algebre sunt izomorfe:
A, B C A ' B.I [A] := {B (S ,) algebra| A ' B} este tip abstract de date.
89
Algebra initiala
K clasa de (S ,)-algebreI O (S ,)-algebra I este initiala n K daca I K si pentru
orice B K exista un unic morfism f : I B.
Propozitia 4
I (a) I initiala n K, A K, A ' I A initiala n KI (b) A1 si A2 initiale n K A1 ' A2.
90
Continuare
Dem. (a) I initiala n K, A K si A : A I izomorfismFie B K si fB : I B unicul morfism. Demonstram ca exista ununic morfism h : A B.I Existenta. h := A; fB : A B mofismI Unicitatea. daca g : A B morfism, atunci A1; g : I B
morfism,deci A1; g = fB ; rezulta g = A; fB = h.
(b) A1 si A2 initiale n KExista un unic morfism f : A1 A2 si un unic morfismg : A2 A1. Atunci f ; g : A1 A1 si 1A1 : A1 A1, decif ; g = 1A1 . Analog g ; f = 1A2 , deci A1 ' A2. qed
91
(S ,) -algebra initiala
(S ,) signatura multisortata
I K clasa tuturor (S ,)-algebrelor.I I este (S ,)-algebra initiala daca oricare B (S ,)-algebra
exista un unic morfism f : I B.Teorema 2. T este (S ,)-algebra initiala.
I I(S ,) = {I | I (S ,) -algebra initiala}este un tip abstract de date si T I(S ,).Un modul functional n Maude (care contine numai declaratiide sorturi si operatii) defineste un astfel de tip abstract dedate si construieste efectiv algebra T.
92
-
Programare logica
Subalgebre. Algebre libere
93
Subalgebre
(S ,) - signatura multisortata, A (S ,)-algebra
B A este parte stabila a lui A dacaI A Bs or. : s,I A(b1, . . . , bn) Bs or. : s1 sn s,
or. (b1, . . . , bn) Bs1 Bsn .
Daca B este parte stabila a lui A atunci(BS = B,B) este (S ,)-subalgebra a lui (AS ,A), unde
I B := A or. : s,I B(b1, . . . , bn) := A(b1, . . . , bn) or. : s1 sn s,
or. (b1, . . . , bn) Bs1 Bsn .
94
Exemple
I BOOL-algebra B:Bbool := P(N)BT := N, BF := , B(X ) := N \ X ,B(X ,Y ) := X Y , B(X ,Y ) := X Y
I B1 = {,N} {{n}|n N}nu este subalgebra.
I B2 = {,N} {{n},N \ {n}}este subalgebra (n N fixat).
95
Exemple
I AUTOMAT -algebra AAintrare = {x , y}, Astare = {s0, s1}, Aiesire := {T ,F}As0 := s0, Ag (s0) := F , Ag (s1) := T ,Af (x , s0) := s0, Af (y , s0) := s1,Af (x , s1) := s0, Af (y , s1) := s1
I P = {Pintrare := {x},Pstare := {s0},Piesire := {F}}este subalgebra A
96
-
Multimi de generatori
(S ,) signatura multisortata,A-algebra, X multime, X AI Algebra generata de X n A este cea mai mica () subalgebra
B a lui A cu X B. Vom nota B = XI F := {B A |B subalgebra, X B}
I A F , deci F 6= I {Bi}iI F implica
iI Bi F
I X ={B | B F}
I Spunem ca A este generata de X daca X A si X = A. Inacest caz X este multime de generatori pentru A.
97
Constructia algebrei generate
(S ,) signatura multisortata,A-algebra, X multime, X A
I Construim un sir de multimi S-sortate (Xn)n astfel:
I X0 := X ,I Xn+1,s := Xn,s {A | : s} {A(a1, . . . , an) | : s1 . . . sn s, (a1, . . . , an) Xn,s1 Xn,sn}.
I Propozitia 5. X =
n Xn.Dem: va fi adaugata!
98
Proprietati
h : A B functieh1 : P(B) P(A), h1(Y ) := {a A|h(a) Y }imaginea inversa
Propozitia 6.
Fie h : A B morfism.I (a) dc. C A subalgebra at. h(C ) B subalgebra,I (b) dc. D B subalgebra at. h1(D) B subalgebra,I (c) h( X ) = h(X ) pentru X A,I (d) h1(Y ) h1( Y ) pentru Y B.
Dem. (a), (b), (d) exercitii.
99
Continuare
(c) h( X ) = h(X ) pentru X A,.
X A subalgebra h( X ) B subalgebra
h( X ) B subalgebra, h(X ) h( X ) h(X ) h( X )
h1(h(X )) A subalgebra, X h1(h(X )) X h1(h(X )) h(X ) h(h1(h(X ))) h(X )
h(X ) h( X ) csi h(X ) h(X ) h(X ) = h(X )
100
-
Algebre libere
(S ,) signatura multisortata, X multime de variabile
O algebra A este liber generata de X daca
X A, oricare ar fi B o algebra si f : X B o functie exista un unic
morfism f : A B cu fs(x) = fs(x) oricare x Xs , s S .
Observatii Daca A1 si A2 sunt liber generate de X , atunci A1 ' A2. Daca X A si A este liber generata de X , atunci X = A.
Invers nu este ntotdeauna a adeva rat.
I T este liber generata de multimea .
101
Multimi de generatori liberi
(S ,) signatura multisortata,A-algebra, X multime de variabile, X ADaca A este liber generata de X , atunci X = A.Spunem ca X este multime de generatori liberi pentru A.
I NAT = (S = {s},), = {0 : nat, succ : nat nat}Anat := N, A0 := 0, Asucc(x) := x + 1 A este liber generata de {1} este multime de generatori pentru A {1} nu este multime de generatori liberi pentru A
102
Exemple
I STIVA = (S = {elem, stiva},) = {0 : elem, empty : stiva, pop : stiva stiva,
push : elem stiva stiva, top : stiva elem}I STIVA-algebra A: Aelem := N, Astiva := N
A0 := 0, Aempty := , Apush(n, n1 nk) := n n1 nk ,Apop() = Apop(n) := ,Apop(n1n2 nk) := n2 nk pt. k 2,Atop() := 0, Atop(n1 nk) := n1 pt. k 1.
I Daca P := atunci Pelem = {0} si Pstiva = {0}.I A este liber generata de X , unde Xelem := N si Xstiva := .
103 104
-
Programare logica
Semantica termenilor
105
Multime de variabile
(S ,) signatura multisortata
|| := w ,s w ,s|X | := sS Xs daca X multime S-sortataO multime de variabile este o multime S-sortata X a..:
I Xs Xs = or. s 6= s I |X | || =
simbolurile de variabile sunt distincte ntre ele si sunt distincte desimbolurile de operatii din
106
Termeni cu variabile din X
(S ,) signatura, X multime de variabile
Multimea S-sortata termenilor cu variabile din X , T(X ), este ceamai mica multime de siruri finite peste alfabetul
L =
sS Xs
w ,s w ,s {(, )} {,}care verifica urmatoarele proprietati:
I (T1) Xs T(X )sI (T2) dc. : s, at. T(X )s ,I (T3) dc. : s1 sn s si ti T(X )si or. i = 1, . . . , n
at. (t1, . . . , tn) T(X )s .
107
Algebra de termeni T(X )
(S ,) signatura, X multime de variabileMultimea termenilor T(X ) = {T(X )s}sS este (S ,)-algebraastfel:
I pt. : s, operatia corespunzatoare este T := I pt. : s1 sn s, operatia corespunzatoare este
T : T(X )s1 T(X )sn T(X )sT(t1, . . . , tn) := (t1, . . . , tn)or. t1 T(X )s1 , . . ., tn T(X )sn
T(X ) algebra termenilor cu variabile din X vom nota (t1, . . . , tn) := (t1, . . . , tn)
108
-
Semantica termenilor
(S ,) signatura, X multime de variabile
Teorema 7 (Evaluarea termenilor n algebre).
Fie A o (S ,)-algebra. Orice functie e : X A (evaluare,atribuire, interpretare)se extinde la un unic (S ,)-morfisme : T(X ) A.Dem.
I Definim e(t) prin inductie pe termeni:I or. x Xs , es(x) := es(x),I or. : s, es() := AI or. : s1 sn s, or. t1 T(X )s1 , . . ., tn T(X )sn
es((t1, . . . , tn)) := A(es1 (t1), . . . , esn(tn))
I Demonstram ca e : T(X ) A este morfism.I Daca f : T(X ) A morfism si f |X = e atunci se
demonstreaza prin inductie pe termeni ca f = e.109
Semantica expresiilor aritmetice
I NATEXP = (S = {nat},), X = {x , y}I = {0 : nat, s : nat nat ,
+ : nat nat nat, : nat nat nat}I TNATEXP(X ) = {0, x , y , s(0), s(x), s(y), s(s(0)), . . .
+(0, 0),+(0, x),+(x , y), (0,+(s(0), x)), (s(y), s(s(x))), . . .}I A = (Z4, 0, s,+, ) cu operatiile obisnuiteI e : {x , y} Z4, e(x) := 1, e(y) := 3I e(+(x, y)) = A+(e(x), e(y)) = 1 + 3 = 0 (mod 4)
e((s(x), s(s(0)))) = A(As(e(x)),As(As(A0))) =(1 + 1) (0 + 1 + 1) = 2 2 = 0 (mod 4)
110
Exemple
I STIVA = (S = {elem, stiva},) = {0 : elem, empty : stiva, pop : stiva stiva,
push : elem stiva stiva, top : stiva elem}I STIVA-algebra A: Aelem := N, Astiva := N
A0 := 0, Aempty := , Apush(n, n1 nk) := n n1 nk ,Apop() = Apop(n) := ,Apop(n1n2 nk) := n2 nk pt. k 2,Atop() := 0, Atop(n1 nk) := n1 pt. k 1.
I STIVA-algebra B: Belem := {0}, Bstiva := NB0 := 0, Bempty := 0, Bpush(0, n) := n + 1 or. n,Bpop(0) := 0, Bpop(n) := n 1 pt. n 1,Btop(n) := 0 or. n.
111
Exemplu
Xelem := {x , y}, Xstiva := {s},t := push(x, push(y, s)) T(X )stivaI e : X A
e(x) := 5, e(y) := 3, e(s) := 6 7
e(t) = Apush(e(x),Apush(e(y), e(s))) = 5 3 6 7
I e : X Be(x) := 0, e(y) := 0, e(s) := 10
e(t) = Bpush(e(x),Bpush(e(y), e(s))) =(10 + 1) + 1 = 12
112
-
Consecinte
I T(X ) este (S ,)-algebra liber generata de X n clasa tuturor(S ,)-algebrelor.
o expresie este un element al unei algebre libere
I X = T este (S ,)-algebra initiala.
I A = T(Y )O substitutie este o atribuire : X T(Y ).Orice substitutie : X T(Y ) se extinde la un unicmorfism de (S ,)-algebre : T(X ) T(Y ).
113
Proprietati
Propozitia 8.
Fie A o (S ,)-algebra. Daca f : T(X ) A si g : T(X ) Asunt morfisme, atunci g = f g |X = f |XDem. Presupunem ca gs(x) = fs(x) or. s S , x Xs .Demonstram ca g = f prin inductie pe termeni
I pasul initial: dc. s S si x Xs at. gs(x) = fs(x) (ipoteza),dc. : s , at. gs() = A = fs(),
I pasul de inductie: dc. : s1 . . . sn s sit1 T(X )s1 , . . ., tn T(X )sn a.
gs1(t1) = fs1(t1), , gsn(tn) = fsn(tn) at.gs((t1, . . . , tn)) = A(gs1(t1), , gsn(tn)) =
A(fs1(t1), , fsn(tn)) = fs((t1, . . . , tn))Conform principiului inductiei pe termeni,gs(t) = fs(t) or. t T(X )s , adica g = f .
114
Proprietati
Propozitia 9.
X ' Y T(X ) ' T(Y )Dem. Fie u : X Y o functie bijectiva. Din Teorema 7 rezulta caI exista un unic morfism f : T(X ) T(Y ) a.
fs(x) = us(x) or. s S , x Xs ,I exista un unic morfism g : T(Y ) T(X ) a.
gs(y) = u1s (y) or. s S , y Xs .Observam ca (f ; g)s(x) = gs(fs(x)) = x or. s S , x X .Aplicand Propozitia 6, obtinem ca f ; g = 1T(X ).
Similar, g ; f = 1T(Y ), deci T(X ) ' T(Y ).
115
Proprietati
Propozitia 10.
Fie h : A B morfism surjectiv.Or. f : T(X ) B morfism,ex. g : T(X ) A a. . g ; h = f
Ah // B
T(X )
f
OO
g
bb
Dem. Daca f : T(X ) B morfism, atuncior. s S , x Xs ex. a As a.. hs(a) = fs(x).Oricare s S , x Xs , alegem a As a.. hs(a) = fs(x) si definimes(x) := a. Atunci e : X A este o evaluare si .(e; h)s(x) = fs(x) r. s S , x Xs .Din Teorema 7, e; h = f , deci g := e.
116
-
Definirea operatiilor derivate
A o -algebra, t T(X )Definim functia termen At : A
n A prinAt(a1, . . . , an) := e(t), unde e(xi ) := ai or. i = 1, . . . , n
At este operatie derivata pe A
I = {0, 1,,, } signatura algebrelor Boole,X = {x , y}, t = x y T(X )Daca B este o algebra Boole, atunciBt(b1, b2) = b1 b2 oricare b1, b2 B.
117
Semantica instructiunii de atribuire x:=e
I X este multimea variabilelor, x X , t T(X )I D este -algebra datelor
I o stare a memoriei este o functie e : X DI semantica unei instructiuni descrie modul n care instructiunea
modifica starile memoriei
I Mem := {e : X D| e functie}Sem(x := t) : Mem MemSem(x := t)(e)(y) :=
{e(t) daca y = x ,e(y) daca y 6= x .
118
119 120
-
Programare logica
Ecuatii. Relatia de satisfacere.
121
Ecuatiile si semantica lor
(S ,) signatura multisortata
I O (S ,)-ecuatie este formata dintr-o multime de variabile Xsi din doi termeni t si t de acelasi sort din T(X ).Vom nota o ecuatie prin
(X )t =s t .
I Spunem ca o (S ,)-algebra A satisface o ecuatie (X )t =s t (A este model al ecuatiei) daca es(t) = es(t ) pentru oricee : X A. In acest caz, vom nota
A |= (X )t =s t .
= egalitate formala, = egalitate efectiva
122
Necesitatea cuantificarii
I S = {s, bool}, := {T : bool ,F : bool , g : s bool}I T,s = , T,bool = {T ,F}I T 6|= ()T =bool FI T |= (X )T =bool F ,
unde Xs := {x}, Xbool :=
123
Ecuatiile conditionate
O (S ,)-ecuatie conditionata este notata prin
(X )t =s t if H.
si este formata din:
I o multime de variabile X ,
I doi termeni de acelasi sort t, t T(X )s .I o multime H de ecuatii u
=s v , cu u,v T(X )s .
In practica H este finita H = {u1 =s1 v1, . . . , un =sn vn}.Ecuatiile din H sunt cuantificate cu X .
O ecuatie (X )t =s t este ecuatie conditionata n care multimeaconditiilor H este vida (X )t =s t if .
124
-
Ecuatiile conditionate
A (S ,)-algebra A, := (X )t =s t if H
A satisface (A este model al lui ) daca,
es(u) = es(v) or. u
=s v H es(t) = es(t ).
pentru orice e : X A.Vom nota A |= (X )t =s t if H.
I A |= (X )t =s t A |= (X )t =s t if
125
Exemplu
I STIVA = (S ,), Xelem := {E}, Xstiva := {S ,Q} := (X )top(S) =elem E if {S =stiva push(E ,Q)}
I STIVA-algebra A: Aelem := N, Astiva := NA0 := 0, Aempty := , Apush(n, n1 nk) := n n1 nk ,Apop() = Apop(n) := ,Apop(n1n2 nk) := n2 nk pt. k 2,Atop() := 0, Atop(n1 nk) := n1 pt. k 1.
I STIVA-algebra B: Belem := {0}, Bstiva := NB0 := 0, Bempty := 0, Bpush(0, n) := n + 1 or. n,Bpop(0) := 0, Bpop(n) := n 1 pt. n 1, Btop(n) := 0 or. n.
I A |= si B |=
126
Exemplu
Xelem := {E}, Xstiva := {S ,Q}A |= (X )top(S) =elem E if {S =stiva push(E ,Q)}Fie e : X A evaluare a. . estiva(S) = estiva(push(E ,Q)).Rezulta estiva(S) = Apush(eelem(E ), estiva(Q))
Notam n = eelem(E ), w := estiva(S), w := estiva(Q).
Rezulta w = nw si
eelem(top(S)) = Atop(estiva(S)) = Atop(w) =Atop(nw
) = n = eelem(E )
127
Exemplu
I STIVA = (S ,), Xelem := {E}, Xstiva := {S ,Q} := (X )top(S) =elem E if {S =stiva push(E ,Q)}
I STIVA-algebra C : Celem := N, Cstiva := NC0 := 0, Cempty := , Cpush(n, n1 nk) := n1 nk n,Cpop() = Cpop(n) := ,Cpop(n1n2 nk) := n2 nk pt. k 2,Ctop() := 0, Ctop(n1 nk) := n1 pt. k 1.
I C 6|= e : X C evaluarea definita prineelem(E ) = 2, estiva(Q) = 3 4, estiva(S) = 3 4 2
Atunci estiva(S) = estiva(push(E ,Q)),
dar eelem(E ) = 2 6= 3 = eelem(top(S)).128
-
Programare logica
Specificatii algebrice
129
-algebre
multime de ecuatii conditionate
O algebra A este -algebra (A este model pentru )daca A |= oricare .In acest caz, vom nota A |= .
Vom nota cu Alg(S ,, ) clasa -algebrelor
Alg(S ,, ) := {A Alg(S ,) |A |= }
130
-algebre
Teorema 11.
Fie A ' B (S ,)-algebre, := (X )t =s t if H.A |= B |=
Dem. Notam : B A un izomorfism.Fie e : X B a.. es(u) = es(v) or. u =s v H.Definim f : X A prin f := e;Atunci f = e;, deoarece f|X = (e;)|X .fs(u) = s(es(u)) = s(es(v)) = fs(v) or. u
=s v H
Din ipoteza rezulta fs(t) = fs(t ), i.e.s(es(t)) = s(es(t )). este injectiv, deci es(t) = es(t ).
131
Specificatii
I O specificatie este un triplet (S ,, ), unde (S ,) este osignatura multisortata si este o multime de ecuatiiconditionate. Specificatia (S ,, ) defineste clasa modelelorAlg(S ,, ), care reprezinta semantica ei.
I In Maude teoriile
fth ... endfth
au ca semantica Alg(S ,, ), unde S este multimeasorturilor, este multimea simbolurilor de operatii, estemultimea ecuatiilor definite n modul, iar fiecare ecuatieeq t = t si ceq t = t if Heste cuantificata de variabilele care apar n t si t.
132
-
Specificatii echivalente
fth GROUP is
sort Element .
op e : -> Element.
op _+_ : Element Element -> Element [assoc] .
op -_ : Element -> Element .
vars x y : Element .
eq e + x = x .
eq x + e = x .
eq (- x) + x = e .
eq x + (- x) = e .
endfth
133
Consecinte semantice
(S ,, ) specificatie, ecuatie, multime de ecuatii
Ecuatia este o consecinta semantica a lui daca
A |= implica A |=
pentru orice algebra A. In acest caz, vom nota |= .
|= |= or.
134
Teoria grupurilor
(S = {Element}, := {e,,+}, ) :=
{({x , y , z})(x + y) + z = x + (y + z),({x})e + x = x ,({x})x + e = x ,({x})(x) + x = e,({x})x + (x) = e
}I 1 := ({x , y , z})x = y if {x + z = y + z},I 2 := ({x , y})x + y = y + x
|= 1, 6|= 2
135
Specificatii echivalente
Doua specificatii (S ,, 1) si (S ,, 2) sunt echivalente dacadefinesc aceeasi clasa de modele:
A |= 1 A |= 2
Observatie
Fie si multimi de ecuatii. Daca |= atunci (S ,, ) si(S ,, ) sunt specificatii echivalente.
136
-
-algebra initiala
(S ,, ) specificatie
I, := {A | A initiala n Alg(S ,, )}este un tip abstract de date.
I, reprezinta semantica unui modul functional n Maude
fmod ... endfm
unde S este multimea sorturilor, este multimea simbolurilor deoperatii, este multimea ecuatiilor definite n modul.Fiecare ecuatieeq t = t si ceq t = t if Heste cuantificata de variabilele care apar n t si t.
137
Specificatie corecta
(S ,) o signatura multisortata, A (S ,)-algebra
O specificatie (S ,, ) este adecvata pentru A daca A este-algebra initiala, i.e. A I,.
Exemplu
Determinati o specificatie adecvata pentru A = (Z4, 0, succ), undesucc(x) := x + 1 (mod 4).
138
Continuare
fmod Z4 is
sort s .
op 0 : -> s .
op succ : s -> s .
vars x : s .
eq succ(succ(succ(succ(x)))) = x .
endfm
S := {s}, := {0 : s, succ : s s}, := {(x)succ(succ(succ(succ(x)))) = x}A este -algebra initiala daca:
I (a) A |= or. ,I (b) or. B |= ex. unic f : A B morfism.
139
Continuare
A = (Z4, 0, succ), unde succ(x) := x + 1
(a) A |= (x)succ(succ(succ(succ(x)))) = xDaca X := {x} si e : X A, atuncie(succ(succ(succ(succ(x))))) =
Asucc(Asucc(Asucc(Asucc(e(x))))) = e(x) + 4 (mod 4)= e(x) = e(x)
(b) Fie B o -algebra.Existenta: definim f : A B prinf (0) := B0, f (x + 1) := Bsucc(f (x)) pt. 0 x 2 .f morfism: f (Asucc(x)) = f (x + 1) = Bsucc(f (x)) pt. 0 x 2.Ramane de demontrat f (Asucc(3)) = Bsucc(f (3)).
140
-
Continuare
(1) f (Asucc(3)) = f (0) = B0
(2) Bsucc(f (3)) = Bsucc(Bsucc(f (2))) =Bsucc(Bsucc(Bsucc(Bsucc(B0)))
Deoarece B |= (x)succ(succ(succ(succ(x)))) = x ,pentru e : X B, e(x) := B0 obtinemBsucc(Bsucc(Bsucc(Bsucc(B0)))) = e
(succ(succ(succ(succ(x))))) =e(x) = B0
Din (1) si (2) rezulta f (Asucc(3)) = Bsucc(f (3)).
Unicitatea: fie g : A B un morfism;dem. ca g(x) = f (x) prin inductie pt. i {0, 1, 2, 3}g(0) = g(A0) = B0 = f (0),g(x + 1) = g(Asucc(x)) = Bsucc(g(x)) = Bsucc(f (x)) =
f (Asucc(x)) = f (x + 1).141
Exercitiu
Determinati un model intial pentru specificatia:
fmod NSET is
sorts nat nset .
op 0 : -> nat .
op s : nat -> nat .
op vid : -> nset .
op ins : nat nset -> nset .
vars x y : nat .
var A : nset .
eq ins(x,ins(x,A)) = ins(x,A) .
eq ins(x,ins(y,A)) = ins(y,ins(x,A)) .
endfm
142
143 144
-
Programare logica
Congruente. -algebra initiala
145
Congruente
(S ,) signatura, A (S ,) algebra
I O relatie S-sortata = {s}sS A A este congruentadaca:
I s As As echivalenta or. s S ,I este compatibila cu operatiile
ai si bi or. i = 1, . . . , n A(a1, . . . , an) s A(b1, . . . , bn)or. : s1 . . . sn s
146
Exemple
(S ,) signatura, A (S ,) algebra
I NAT -algebra A:Anat := N, A0 := 0, Asucc(x) := x + 1n1 k n2 k|(n1 n2) pentru k N fixat n1 k n2 Asucc(n1) k Asucc(n2)
I AUTOMAT -algebra B:Bintrare = Bstare = Biesire := NBs0 := 0, Bf (m, n) := m + n, Bg (n) := n + 1 este congruenta pe B, unde intrare=stare=iesire :=k
147
Algebra cat
(S ,) signatura, A algebra, congruenta pe AI [a]s := {a As | a s a} (clasa lui a)I As/s := {[a]s | a As} or. s SI A/ := {As/s}sS este (S ,)-algebra
I (A/) := [A] or. : s,I (A/)([a1]s1 , . . . , [an]sn ) := [A(a1, . . . , an)]s
or. : s1 . . . sn s si (a1, . . . , an) As1 AsnI [] : A A/, a 7 [a]s or. a As este morfism.
[a]s = [b]s a s b
148
-
Exemple
I STIVA-algebra A: Aelem := N, Astiva := NA0 := 0, Aempty := , Apush(n, n1 nk) := n n1 nk ,Apop() = Apop(n) := ,Apop(n1n2 nk) := n2 nk pt. k 2,Atop() := 0, Atop(n1 nk) := n1 pt. k 1.
I elem:= N N,stiva:= {(w ,w ) | (w ,w ) N N, |w | = |w |}= {elem,stiva} congruenta
I A/ ' B, undeSTIVA-algebra B: Belem := {0}, Bstiva := NB0 := 0, Bempty := 0, Bpush(0, n) := n + 1 or. n,Bpop(0) := 0, Bpop(n) := n 1 pt. n 1, Btop(n) := 0 or. n.
149
Ker(f )
(S ,) signatura, A si B algebre, f : A B morfismKer(f ) = {Ker(fs)}sS , undeKer(fs) := {(a, a) As As | fs(a) = fs(a)} or. s S
Propozitia 12
I (a) Ker(f ) este congruenta pe A.
I (b) Daca congruenta pe A, atunci Ker([]) =.Dem. exercitiu
150
Proprietatea de universalitate
(S ,) signatura, A algebra, congruenta pe A
Teorema 13 ( Proprietatea de universalitate a algebrei cat)
Oricare ar fi B o algebra si h : A B un morfism a.. Ker(h)exista un unic morfism h : A/ B a.. []; h = h.
Dem. h : A B, Ker(h)Existenta: definim hs([a]s ) := hs(a)
or. a As
A[] //
h
A/
h}}B
151
Continuare
h este bine definit: [a1]s = [a2]s hs(a1) = hs(a2)[a1]s = [a2]s (a1, a2) s Ker(hs) hs(a1) = hs(a2)h morfism:
I dc. : s , at.hs(A/equiv) = hs([A]) = hs(A) = B,
I dc. : s1 . . . sn s sia1 As1 , . . ., an Asn at.
hs(A([a1], . . . , [an])) = hs([A(a1, . . . , an)]) =hs(A(a1, . . . , an)) == B(hs1(a1), , hsn(an)) =
B(hs1([a1]), , hsn([an]))Unicitatea: fie g : A/ B a.. []; g = hgs([a]s) = hs(a) = hs([a]s ) or. a As .
152
-
Consecinte
Teorema 14 (Teorema I de izomorfism)
Oricare f : A B morfism, A/Ker(f ) ' f (A).Dem. exercitiu
Propozitia 15
Fie K o clasa de (S ,)-algebre. Daca
K:={Ker(h) | h : T B K, h morfism},
atunci urmatoarele proprietati sunt adevarate:
I K este congruenta pe T,I or. B K ex. unic morfism h : T/K B.
Dem. Intersectia unei familii arbitrare de congruente estecongruenta (exercitiu).
153
Continuare
Fie B K si h : T B unicul morfism.Existenta: deoarece K Ker(h), dinProprietatea de universalitate aalgebrei cat ex. unic morfismh : T/K B a.. []K ; h = h.
T[]K //
h
T/K
h{{B
Unicitatea: fie g : T/K B un morfism; atunci[]K ; g : T B, deci []K ; g = h, deci g verifica proprietateacare-l defineste n mod unic pe h; rezulta g = h.
154
-algebre
(S ,, ) specificatie,A algebra si o congruenta pe ASpunem ca este este nchisa la substitutie daca:CS(,A)
or. (X )t =s t if H , or. e : X Aes(u) s es(v) or. u =s v H es(t) s es(t ).
Propozitia 16
Daca este o congruenta pe A nchisa la substitutie atunciA/ |= .
155
Continuare
Dem. Fie (X )t =s t if H si f : T(X ) A/ a..fs(u) = fs(v) or. u
=s v H.
[] : A A/ morfism surjectiv,f : T(X ) A/ morfismDin Propozitia 10, ex. e : T(X ) Aa. . e; [] = f
A[] // A/
T(X )
f
OO
e
bb
Atunci es(u) s es(v) or. u =s v H si, deoarece estenchisa la substitutie, obtinem es(t) s es(t ), adica fs(t) = fs(t ).
156
-
Echivalenta semantica
(S ,, ) specificatie, A o (S ,)-algebra
,A:={Ker(h) | h : A B morfism B |= }
echivalena semantica pe A
I A = T notam :=,T .
Propozitia 17
,A este o congruenta pe A nchisa la substitutie.
157
Continuare
Dem. Notam :=,A
Fie (X )t =s t if H si e : X A a..es(u) s es(v) or. u =s v H.Rezulta (es(u), es(v)) Ker(h) or. h : A B |= , decih(es(u)) = h(es(v)) or. u
=s v H.
Fie B |= i h : A B. Atunci e; h : T(X ) B sih(es(u)) = h(es(v)) or. u
=s v H, deci h(es(t)) = h(es(t )).
Rezulta (es(t), es(t )) Ker(h) or. h : A B |= , deci(es(t), es(t )) , i.e. es(t) s es(t ).
158
-algebra initiala
(S ,, ) specificatie
I Definim pe T congruenta semantica:=
{Ker(f ) | f : T A, A |= },care este nchisa la substitutie cf. Propozitiei 17.
I T/ |= cf. Propozitiei 16.I =K, unde K = Alg(S ,, )
or. B |= ex. unic morfism f : T/ B cf. Propozitiei 15.
Teorema 18.
T/ este -algebra initiala.
159
ADT
(S ,, ) specificatie
I, := {A | A initiala n Alg(S ,, )}este un tip abstract de date.
Un modul functional fmod ... endfm n Maude defineste tipulabstract de date I, si construiete efectiv algebra T/ ,unde S este multimea sorturilor, este multimea simbolurilor deoperatii, este multimea ecuatiilor definite n modul. Fiecareecuatieeq t = t si ceq t = t if Heste cuantificata de variabilele care apar n t si t.
160
-
Consecinte
(S ,, ) specificatie, A algebra, hA : T A unicul morfismTeorema
Sunt echivalente:
I A este -algebra initialaI A verifica urmatoarele proprietati:
I No Junk: hA este surjectivI No Confusion: hAs(t1) = hAs(t2) |= ()t1 =s t2
or. t1, t2 T,s
161 162
163 164
-
Programare logica
Teorema constantelorDemonstratii prin inductie
165
Demonstrarea ec. conditionate
(S ,) signatura, X multime de variabile multime de ecuatii conditionate
?
|= (X )t =s t if H
Propozitia 19
I (a) Daca |= (X )t =s t if H atunci{(X )u =s v | u =s v H} |= (X )t =s t .
I (b) Implicatia inversa nu este adevarta n general .
I (c) Daca {()u =s v | u =s v H} |= ()t =s t
atunci |= ()t =s t if H.166
Continuare
Dem. (a) Fie A |= {(X )u =s v | u =s v H} si e : X Ao evaluare. Dar A |= (X )u =s v or. u =s v H, decies(u) = es(v) or. u
=s v H. Deoarece A |= , din ipoteza,
A |= (X )t =s t if H. Deoarec e : X A este o evaluare a..es(u) = es(v) or. u
=s v H, rezulta es(t) = es(t ).
(b) Implicatia inversa nu este n general adevarata.S = {s}, = {0 : s}, X = {x , y}{(X )x = 0} |= (X )y = 0 este adevarata, dar6|= (X )y = 0 if {x = 0}.(b) Fie A |= , e : T A unicul morfism. Daca es(u) = es(v)or. u
=s v H, atunci A |=
{()u =s v | u =s v H}. Dinipoteza, obtinem A |= ()t =s t , deci es(t) = es(t ). Amdemonstrat ca daca unicul morfism e : T A verificaes(u) = es(v) or. u
=s v H, atunci es(t) = es(t ).
167
(X )
(S ,) signatura, X multime de variabile
I multimea X poate fi privita ca o signatura care are numaioperatii constante:variabila x Xs devine operatia constanta cx : s
I (X ) := ((X )w ,s)wS,sSI (X )w ,s = w ,s pentru w 6= I (X ),s = ,s {cx |x Xs}
168
-
(X )-algebre
A (S ,)-algebra, a : X A atribuireI (A, a) este (X )-algebra
I Acx := as(x) oricare x Xs , s SI orice (X )-algebra poate fi construita astfel
T(X ) = {T(X ),s}sSI T(X ),s = T(X )sI Tcx := x oricare x Xs , s S
Observatie
T(X ) este (X )-algebra initiala(A, a) (X )-algebraa : T(X ) A unicul morfism de (X )-algebre
169
Teorema constantelor I
(S ,) signatura, X multime de variabile
Teorema 20(Teorema constantelor I)
Sunt echivalente:
I (a) A |= (X )t =s t ,I (b) (A, a) |=(X ) ()t =s t or. a : X A.
Dem. Ambele enunturi sunt echivalente cu:as(t) = as(t ) or. a : X A
170
Teorema constantelor II
(S ,) signatura, X multime de variabile o multime de -ecuatii neconditionate a..nici o variabila din X nu apare n .
Teorema 21 (Teorema constantelor II).
Sunt echivalente:
I (a) |= (X )t =s t if HI (b)
{()u =s v | u =s v H} |=(X ) ()t =s t Dem. Deoarece nici o variabila din X nu apare n , pentru orice(S ,)-algebra A sunt echivalnte:I A |= ,I (A, a) |=(X ) or. a : X A.
171
Continuare
(a) (b) Fie (A, a) o (X )-algebra a..(A, a) |=(X )
{()u =s v | u =s v H}. AvemA |= , deoarece (A, a) |=(X ) sias(u) = as(v) or. u
=s v H, deoarece
(A, a) |=(X ) {()u =s v | u =s v H}.Din (a) rezulta ca as(t) = as(t ), adica(A, a) |=(X ) ()t =s t .(b) (a) Fie A o (S ,)-algebra a.. A |= sia : X A a.. as(u) = as(v) or. u =s v H.Atunci(A, a) |=(X ) si(A, a) |=(X ) {()u =s v | u =s v H}.Din (b) rezulta ca (A, a) |=(X ) ()t =s t , adicaas(t) = as(t ).
172
-
Demonstratii prin inductie
fmod MYNAT is
sort MyNat .
op 0 : -> MyNat .
op s_ : MyNat -> MyNat .
op _+_ : MyNat MyNat -> MyNat [comm assoc prec 50 ] .
op _*_ : MyNat MyNat -> MyNat [ comm assoc prec 49 ] .
vars x y : MyNat .
eq x + 0 = x .
eq x + s y = s(x + y) .
eq x * 0 = 0 .
eq x * s y = (x * y) + x .
endfm
173
cx (cy + cz) = (cx cy) + (cx cz)
fmod IND0 is
including MYNAT .
ops cy cz : -> MyNat .
endfm
*** pasul initial
red 0 * (cy + cz) == 0 * cy + 0 * cz .
fmod IND is
including IND0 .
op cx : -> MyNat .
*** ipoteza inductie
eq cx * (cy + cz) = cx * cy + cx * cz .
endfm
*** pasul de inductie
red s cx * ( cy + cz) == s cx * cy + s cx * cz .
174
Demonstratii prin inductie
==========================================
fmod MYNAT
==========================================
fmod IND0
==========================================
reduce in IND0 : 0 * (cy + cz) == 0 * cy + 0 * cz .
rewrites: 5 in 10534559934ms cpu (0ms real)
result Bool: true
==========================================
fmod IND
==========================================
reduce in IND : s cx * (cy + cz) == cy * s cx + cz * s cx .
rewrites: 5 in 10534543934ms cpu (0ms real)
result Bool: true
175
Constructori S = {s}
. In exemplul anterior, = {0 : MyNat, s : MyNat MyNat,+ : MyNat MyNat MyNat, : MyNat MyNat MyNat}dar n inducta sructurala am folosit numaic = {0 : MyNat, s : MyNat MyNat}.
Fie o signatura (monosortata) si A o -algebra . O subsignaturaCons se numeste signatura de constructori pentru A dacaunicul morfism h : TCons A este surjectiv.Daca P = (, ) este o prezentare, notam TP = T/ . AtunciCons se numeste signatura de constructori pentru P daca estesignatura de constructori pentru TP .
176
-
Constructori S = {s}
.P = (, ) o prezentare, Cons signatura de constructoriTP := T/t T, [t] := [t]
Teorema (Demonstratii prin inductie)
Fie Q o proprietate a elementelor lui TP a.. urmatoarele conditiisunt satisfacute:
I pasul initial:Q([]) = true or. Cons,s
I pasul de inductie:daca t1, . . ., tn Ts si Q([t1]) = = Q([tn]) = true atunciQ([(t1, . . . , tn)]) = true or. Conssn,s .
Atunci Q([t]) = true oricare [t] TP .177 178
179 180
-
Programare logica
Sintaxa logicii ecuationale
181
Regulile deductiei ecuationale
(S ,) signatura, X si Y multimi de variabile multime de ecuatii (neconditionate)
R(X )t =s t
S(X )t1 =s t2(X )t2 =s t1
T(X )t1 =s t2, (X )t2 =s t3
(X )t1 =s t3
C(X )t1 =s1 t 1, . . . , (X )tn =sn t n
(X )(t1, . . . , tn) =s (t 1, . . . , t n) : s1 sn s
Sub(X )(t) =s (t )
unde
(Y )t =s t , : Y T(X )182
Deductia sintactica
Fie o multime de ecuatii, numite axiome sau ipoteze. Spunem caecuatia := (X )t =s t se deduce sintactic din daca exista osecventa de ecuatii 1, . . ., n a. .
I n = si
I pentru orice i {1, . . . , n} i sau i se obtine din ecuatiile1, . . ., i1 aplicand una din regulile R, S, T, C, Sub.
In acest caz scriem ` si spunem ca este deductibila(sintactic), demonstrabila, derivabila din . Secventa1, . . ., n = este o demonstratie pentru din ipotezele .
183
Exemplu
= {x + 0 = x , x + succ(y) = succ(x + y)}E ` 0 + succ(0) = succ(0)(1) x + succ(y)
= succ(x + y) E
(2) 0 + succ(0)
= succ(0 + 0) (1, Sub{x , y 0})(3) x + 0 = x E(4) 0 + 0
= 0 (3,Sub{x 0})
(5) succ(0 + 0)
= succ(0) (4,C)
(6) 0 + succ(0)
= succ(0) (2, 5,T )
x + succ(y)
= succ(x + y)
0 + succ(0)
= succ(0 + 0)(Sub{x , y 0})
x + 0
= x
0 + 0
= 0Sub{x 0}
succ(0 + 0)
= succ(0)(C)
0 + succ(0)
= succ(0)(T )
184
-
Axiomele sunt ecuatii conditionate
Fie o multime de ecuatii conditionate.
Sub(X )(u1) =s1 (v1), . . . , (X )(un) =sn (vn)
(X )(t) =s (t )
unde (Y )t =s t if H , H = {u1 =s1 v1, . . . , un =sn vn} si : Y T(X ) substitutie
I Identificam substitutia : Y T(X ) cu : T(Y ) T(X ).
I Daca H = atunci Sub(X )(t) =s (t )
185
Axiomele sunt ecuatii conditionate
NATBOOL = (S ,), S = {n, b}, = {T ,F , 0, s, , >} = {, 1, 2} := {x , y , z}x =n y if {z x =n z y , z > 0 =b T}1 := {a, c}s(s(s(0))) a =n s(s(s(0))) c,2 := {a, c}s(s(s(0))) > 0 =b T
` {a, c}a =n c
Sub1, 2
a
=s c
, n(x) := a, n(y) := c , n(z) := s(s(s(0)))
186
187 188
-
Programare logica
Logica ecuationala
Corectitudine. Completitudine
189
Regulile deductiei ecuationale
(S ,) signatura, X si Y multimi de variabile multime de ecuatii (neconditionate)
R(X )t =s t
S(X )t1 =s t2(X )t2 =s t1
T(X )t1 =s t2, (X )t2 =s t3
(X )t1 =s t3
C(X )t1 =s1 t 1, . . . , (X )tn =sn t n
(X )(t1, . . . , tn) =s (t 1, . . . , t n) : s1 sn s
Sub(X )(u1) =s1 (v1), . . . , (X )(un) =sn (vn)
(X )(t) =s (t )unde
(Y )t =s t if {u1 =s1 v1, . . . , un =sn vn} , : Y T(X )190
Corectitudinea regulilor de deductie
multime de ecuatii conditionate
O regula de deductie1, . . . , n
este corecta daca
|= 1, . . ., |= n |=
Propozitia 22
Regulile deductiei ecuationale R, S, T, C, Sub sunt corecte.
191
Continuare
I Demonstram ca C este corecta.
Fie : s1 sn s si presupunem ca |= (X )t1 =s1 t 1, . . ., |= (X )tn =sn t n (*)Trebuie sa aratam ca |= (X )(t1, . . . , tn) =s (t 1, . . . , t n).Fie A |= si f : T(X ) A un morfism. Din (*),fs1(t1) = fs1(t
1), . . ., fsn(tn) = fsn(t
n), deci
fs((t1, . . . , tn)) = A(fs1(t1), . . . , fsn(tn)) =A(fs1(t
1), . . . , fsn(t
n)) = fs((t1, . . . , tn)).
In consecinta, A |= (X )(t1, . . . , tn) =s (t 1, . . . , t n).Deoarece A este o -algebra arbitrara, |= (X )(t1, . . . , tn) =s (t 1, . . . , t n).
192
-
Continuare
I Demonstram ca Sub este corecta.
Fie (Y )t =s t if H , H = {u1 =s1 v1, . . . , un =sn vn} si : Y T(X ) substitutie a.. |= (X )(u1) =s1 (v1), . . ., |= (X )(un) =sn (vn) (*)Trebuie sa aratam ca |= (X )(t) =s (t ).Fie A |= si f : T(X ) A un morfism. Atunci; f : T(Y ) A si, din (*),(; f )s1(u1) = (; f )s1(v1), . . ., (; f )sn(un) = (; f )sn(vn).
Deoarece A |= (Y )t =s t if H , obtinem(; f )s(t) = (; f )s(t
) i.e. fs((t)) = fs((t )).
In consecinta, A |= (X )(t) =s (t ).Deoarece A este o -algebra arbitrara, |= (X )(t) =s (t ).
193
Corectitudinea deductiei ecuationale
multime de ecuatii conditionate
Teorema 23 (Corectitudine)
` (X )t =s t |= (X )t =s t
Dem.: Fie 1, . . ., n = (X )t =s t o demonstratie din ipotezele. Demonstram |= i prin inductie dupa i = 1, . . . , n.Observam ca 1 sau 1 = (X )t =s t, deci |= 1.Presupunem ca |= 1, . . ., |= i1. Stim ca i se obtine dinecuatiile 1, . . ., i1 aplicand una din regulile dedeductie.Deoarece R, S, T, C, Sub sunt corecte, rezulta |= i .
194
Inchiderea la reguli de deductie
(S ,) o signatura multisortata, X o multime de variabile
Reg(X )t1 =s1 t 1, . . . , (X )tn =sn t n
(X )t =s t
Relatie binara T(X ) T(X ) este nchisa la Reg dacat1 s1 t 1, . . ., tn sn t n t s t
Propozitia 24
Sunt echivalente:
I (a) este congruenta pe T(X ),I (b) este nchisa la R, S, T, C .
195
Continuare
Dem. (a)(b) Presupunem ca este congruenta si demontramnchiderea la C.Fie : s1 sn s si t1 s1 t 1, . . ., tn sn t n.Deoarece este congruenta, (t1, . . . , tn) s (t 1, . . . , t n),deci este nchisa la C.(b)(a) Presupunem este echivalenta nchisa la C sidemonstram ca este compatibila cu operatiile. Fie : s1 sn s si t1 s1 t 1, . . ., tn sn t n. Deoarece estenchisa la C, (t1, . . . , tn) s (t 1, . . . , t n), deci estecompatibila cu operatiile.
196
-
-algebre
(S ,, ) specificatie, X o multime de variabile, o congruenta pe T(X )CS(,T(X ))
or. (Y )t =s t if H , or. h : T(Y ) T(X ) morfismhs(u) s hs(v) or. u =s v H hs(t) s hs(t ).
Propozitia 25
Sunt echivalente:
I (a) verifica CS(,T(X )),I (b) este nchisa la Sub,I (c) T(X )/ |= .
197
Echivalenta sintactica
(S ,, ) specificatie, X o multime de variabile
Pe T(X ) definim urmatoarea relatie S-sortata
tst ` (X )t =s t oricare s S .
este echivalenta sintactica determinata de .
Propozitia 26
este o congruenta nchisa la substitutie.Dem. Din definitia deductiei sintactice `, rezulta ca estenchisa la R, S, T, C, Sub.
198
Echivalenta semantica
(S ,, ) specificatie, A o (S ,)-algebra
,A :={Ker(h) | h : A B morfism B |= }
este echivalenta semantica pe A determinata de .
Propozitia 27
,A este cea mai mica congruenta pe A nchisa la substitutie.Dem. Din Propozitia 17, ,A este congruenta A nchisa lasubstitutie. Fie o alta congruenta pe A nchisa la substitutie sip : A A/ surjectia canonica ( p(a) = [a] or. a A). DinPropozitia 16, A/ |= , deci = Ker(p) ,A.
199
Completitudinea deductiei ecuationale
multime de ecuatii conditionate, = (X )t =s t ecuatie
Teorema 28 (Completitudine)
|= (X )t =s t ` (X )t =s t
Dem. Din Propozitia 26 si Propozitia 16, T(X )/ este o-algebra, deci T(X )/ |= .Fie p : T(X ) T(X )/surjectia canonica, p(t) := [t] oricare t T(X ), unde [t] esteclasa de echivalenta a lui t determinata de . Rezultaps(t) = ps(t
), i.e. [t] = [t ].In consecinta tst , adica ` (X )t =s t .
Demonstratie scurta: Se aplica Propozitiile 26 si 27.
200
-
Teorema de completitudine
(S ,) signatura, X multime de variabile, t, t T(X )sI t t ` (X )t =s t (echiv. sintactica)I t t |= (X )t =s t (echiv. semantica)I Corectitudinea regulilor de deductie: I Completitudinea regulilor de deductie:
Teorema 29 (Teorema de completitudine) = |= (X )t =s t ` (X )t =s t
201
Reguli de deductie
(S ,, ) specificatie, X , Y multimi disjuncte de variabile
Abstractizarea(X )t1 =s t2
(X Y )t1 =s t2
Concretizarea(X Y )t1 =s t2
(X )t1 =s t2t1, t2 T(X )sYs 6= T,s 6=
Propozitia 30
Abstractizarea si Concretizarea sunt reguli de deductie corecte.
Dem. exercitiu
202
Exemplu
Orice functie inversabila la dreapta este injectiva.
S := {s}, := {f : s s, g : s s} := {({z}) g(f (z)) = z} (g inversa la dreapta a lui f ) ` ({x , y}) x = y if {f (x) = f (y)}
{() f (cx) = f (cy )} ` () cx = cy (teorema constantelor)(1) () f (cx) = f (cy ) (ipoteza)(2) () g(f (cx)) = g(f (cy )) (C)(3) () g(f (cy )) = cy (Sub{z cy})(4) () g(f (cx)) = cy (2,3,T)(5) ({z}) z = g(f (z)) (S)(6) () cx = g(f (cx)) (5, Sub{z cx})(7) () cx = cy (4,6, T)
203 204
-
Programare logica
Logica ecuationala
Regula SR (SubtermReplacement)
205
Contexte
(S ,) signatura, X multime de variabile
I Pentru t T(X ) si y X notamnry (t) = numarul de aparitii ale lui y n t
I Daca z 6 X atunci un termen c T(X {z}) se numestecontext daca nrz(c) = 1.
I Daca t0 T(X ) si t0 are acelasi sort cu z , atunci notamc[z t0] := {z t0}(c)
pentru un context c T(X {z}), unde{z t0} : X {z} T(X ) este substitutia{z t0}(z) = t0 si {z t0}(x) = x or. x X
206
Regula de deductie SR
(S ,, ) specificatie
SR(X )(u) =s (v) or. u =s v H(X )c[z (l)] =s c[z (r)]
unde (Y )l =s r if H , : Y T(X ) substitutiec T(X {z})s , z 6 X , nrz(c) = 1
I c = z SR = SubI E multime de ecuatii neconditionate
SRE(X )c[z (l)] =s c[z (r)]
unde (Y )l =s r E , : Y T(X ) substitutiec T(X {z})s , z 6 X , nrz(c) = 1
207
Exemplu
E = {x + 0 = x , x + succ(y) = succ(x + y)}E `SRE 0 + succ(0)
= succ(0)
(1) x + succ(y)
= succ(x + y) E(2) 0 + succ(0)
= succ(0 + 0) (1,SRE , c := z , := {x , y 0})
(3) x + 0 = x E(4) succ(0 + 0)
= succ(0) (3,SRE , c := succ(z), := {x 0})
(5) 0 + succ(0)
= succ(0) (2, 4,T )
(1) x + succ(y)
= succ(x + y) E(2) 0 + succ(0)
= succ(0 + 0) (1, Sub{x , y 0})
(3) x + 0 = x E(4) 0 + 0
= 0 (3,Sub{x 0})
(5) succ(0 + 0)
= succ(0) (4,C )
(6) 0 + succ(0)
= succ(0) (2, 5,T )
208
-
Regula de deductie SR
Propozitia 31
SR este regula de deductie corecta.
Dem. Fie (Y )l =s r if H , : Y T(X ) substitutiec T(X {z})s , z 6 X , nrz(c) = 1 a.. |= (X )(u) =s (v) or. u =s v H.Demonstram ca |= (X )c[z (l)] =s c[z (r)] prininductie dupa |c| (lungimea lui c).I Daca |c| = 1, atunci c = z si |= (X )(l) =s (r) deoarece
Sub este corecta.
209
Continuare
I Presupunem ca |= (X )c [z (l)] =s c [z (r)] daca|c | < |c |. Atunci ex. : s1 sn s ,t1 T(X )s1 , . . ., tn T(X )sn si k a..c = (t1, . . . , tk , . . . , tn) si nrz(tk) = 1.Pentru tk aplicam ipoteza de inductie: |= (X )tk [z (l)] =si tk [z (r)].Deoarece |= (X )ti =si ti or. i 6= k, aplicand corectitudinearegulii C, obtinem |= (X )(t1, . . . , tk [z (l)], . . . , tn) =s
(t1, . . . , tk [z (r)], . . . , tn).Observam ca c[z t] = (t1, . . . , tk [z t], . . . , tn) or.t T(X )s , deci |= (X )c[z (l)] =s c[z (r)].
210
Regula de deductie SR
Definim SR T(X ) T(X ) print SR t `R,S ,T ,SR (X )t =s t
Propozitia 32
SR este congruenta nchisa la substitutie.Dem. Din definitie, SR este nchisa la R, S, T, deci este o relatiede echivalenta.
I SR este nchisa la SubSub se obtine aplicand SR cu c = z .
211
Continuare
I SR este nchisa la C (schita)Fie : s1 sn s si t1 SR t 1, . . ., tn SR t n.
(1) Daca k {1, . . . , n} si (X )tk =sk t k se deduce prin aplicarearegulii SR, atunci exista (Y )l =s r if H , : Y T(X ) substitutie c T(X {z})sk , z 6 X ,nrz(c) = 1 a.. tk = c[z (l)] si t k = c[z (r)].Definim c = (t1, . . . , tk1, c , tk+1, . . . , tn), atunci(t1, . . . , tk , . . . , tn) = c
[z (l)] si(t1, . . . , t
k , . . . , tn) = c
[z (r)],deci (X )(t1, . . . , tk , . . . , tn) =s (t1, . . . , t k , . . . , tn) sededuce prin aplicarea regulii SR.
(2) Daca k {1, . . . , n} si tk SR t k atunci(t1, . . . , tk1, tk , tk+1, . . . , tn) SR (t1, . . . , tk1, t k , tk+1, . . . , tn).
(3) (t1, t2, . . . , tn) SR (t 1, t2, . . . , tn) SR (t 1, t 2, t3 . . . , tn)SR (t 1, t 2, t 3, . . . , tn) SR SR (t 1, t 2, . . . , t n)
212
-
Completitudinea SR
(S ,, ) specificatie, X multime de variabile, t, t T(X )s
Teorema 33
Sunt echivalente:
I (a) `R,S ,T ,C,Sub (X )t =s t I (b) `R,S ,T ,SR (X )t =s t
Dem. (a) (b) (SR) Rezulta din Propozitia 32 si dinfaptul ca = este cea mi mica congruenta nchisa lasubstitutie, definita pe T(X ).
(b) (a) (SR) Din corectitudinea regulii SR (Propozitia31) si Teorema de completitudine (Teorema 29), rezultaSR =.
213 214
215 216
-
Programare logica
Rescrierea termenilor
217
Rescrierea
(S ,) signaturaI O regula de rescriere este formata dintr-o multime de variabile
Y si doi termeni l , r de acelasi sort din T(Y ) a..I l nu este variabilaI Var(r) Var(l) = Y .
Vom nota l r (l s r).I Un sistem de rescriere (TRS) este o multime finita de reguli
de rescriere.
I R = {x + 0 x , x + succ(y) succ(x + y)}
218
Relatia R
I Fie R un sistem de rescriere. Daca t, t T(X )s definimrelatia t R t astfel:
t R t t este c[z (l)] sit este c[z (r)], undec T(X {z}), z 6 X , nrz(c) = 1l r R cu Var(l) = Y , : Y T(X ) este o substitutie.
I t R t daca si numai daca t se obtine din t nlocuindo instanta a lui l cu o instanta a lui r .
219
Sistemul de rescriere RE
(S ,) specificatie, E multime de ecuatii neconditionate a..
Var(r) Var(l) = Y or. (Y )l =s r E .RE := {l r | (Y )l =s r E} este sistemul de rescrieredeterminat de E .
In acest caz vom nota E :=RE
ecuatiile devin reguli de rescriere prin orientare
In Maude ecuatiile eq t = t trebuie sa verifice conditiaVar(t) Var(t) deoarece n reduceri ecuatiile sunt folosite careguli de rescriere.
220
-
Exemplu
E = {x + 0 = x , x + succ(y) = succ(x + y)}RE = {x + 0 x , x + succ(y) succ(x + y)}0 + succ(0)E succ(0 + 0)(l := x + succ(y), r := succ(x + y), c := z , := {x , y 0})succ(0 + 0)E succ(0)(l := x + 0, r := x , c := succ(z), := {x 0})0 + succ(0)E succ(0 + 0)E succ(0)
221
Maude
fmod INTLIST is
protecting INT .
sort IntList .
subsort Int < IntList .
op nil : -> IntList .
op _,_ : IntList IntList -> IntList [ assoc id: nil] .
vars L1 L2 L3 : IntList . var x : Int .
eq L1 , x , L2 , - x , L3 = L1 , L2 , L3 .
endfm
set trace on .
reduce 4 , 3 , 5 , 6 , - 3 , 8 , -5 .
222
Maude
reduce in INTLIST : 4,3,5,6,-3,8,-5 .
*********** equation
eq L1,x,L2,- x,L3 = L1,L2,L3 .
L1 --> nil
x --> 5
L2 --> 6,-3,8
L3 --> nil
5,6,-3,8,-5
--->
nil,(6,-3,8),nil
223
Maude
*********** equation
eq L1,x,L2,- x,L3 = L1,L2,L3 .
L1 --> nil
x --> 3
L2 --> 6
L3 --> nil
3,6,-3,8
--->
(nil,6,nil),8
rewrites: 2 in 6264381186ms cpu (27ms real)
result IntList: 4,6,8
224
-
Sisteme de rescriere abstracte
Un sistem de rescriere abstract este o pereche (T ,), unde Teste o multime si T T ( este o relatie binara pe T ).Definitii:=1 (relatia inversa):= (nchiderea simetrica):= () (nchiderea reflexiva si tranzitiva):= () (echivalenta generata)(T(X )s ,s) sistem de rescriere abstract
225
Exemplu
T := N \ {0, 1}, := {(m, k) | k < m, k |m}I = {(k ,m) | k < m, k |m}I = {(k1, k2) | k1 6= k2, k1|k2 sau k2|k1}I += {(m, k) | ex.n 0, ex. k1, , kn T
m k1 kn k}I = + {(k , k)|k T}I Cine este
?
226
Rescriere si deductie
(S ,) signatura, X multime de variabile,E multime de ecuatii neconditionate,RE sistemul de rescriere determinat de E ,E T(X ) T(X ) relatia de rescriere
Teorema 34.
Fie t, t T(X )s . Sunt echivalente:(1) E |= (X )t =s t (2) E `R,S ,T ,C,SubE (X )t =s t (3) E `R,S ,T ,SRE (X )t =s t (4) t
E t ,unde
E este echivalenta generata de E .
227
Continuare
Dem. (1) (2) (3) rezulta din E = E = SR(3) (4) revine la SR = EDin ESR rezulta ESR .Pentru a demonstra implicatia inversa vom arata ca
E estenchisa la C si SubE .
I E este nchisa la SubE(Y )t =s t E , : Y T(X ) substitutie implica t E t sau t E t.Daca t E t atunci (t)E (t ) pentru c = z .Daca t E t atunci (t )E (t) pentru c = z .Rezulta (t)E (t ).
I E este nchisa la CFie : s1 sn s si k {1, . . . , n}.
228
-
Continuare
(1) tkE t k implica (t1, . . . , tk , . . . , tn)E (t1, . . . , t k , . . . , tn)Din ipoteza, tk este c[z (l)], t k este c[z (r)], undec T(X {z}) e un context, l r RE cu Var(l) = Y si : Y T(X ).Definim c := (t1, . . . , c , . . . , tn). Rezulta ca(t1, . . . , tk , . . . , tn) este c
[z (l)] si(t1, . . . , t
k , . . . , tn) este c
[z (r)].(2) Demonstram prin inductie dupa p 1 ca
tkpE t k implica (t1, . . . , tk , . . . , tn)
E (t1, . . . , t k , . . . , tn)Pentru p = 1 aplicam (1) si simetria.
Daca tkp+1 E t k atunci tk
pE t k E t k . Din ip. de inductie(t1, . . . , tk , . . . , tn)
E (t1, . . . , t k , . . . , tn) E (t1, . . . , t k , . . . , tn)deci (t1, . . . , tk , . . . , tn)
E (t1, . . . , t k , . . . , tn).229
Continuare
(3) Din (2), daca t1E t 1, . . ., tn E t n atunci
(t1, . . . , tk , . . . , tn)E (t1, . . . , t k , . . . , tn)
or. k {1, . . . , n}(4) (t1, . . . , tn)
E (t 1, t2 . . . , tn) E (t 1, t 2, . . . , tn) E E (t 1, . . . , t k , tk+1, . . . , tn)
E E (t 1, . . . , t n)
In consecinta,E este nchisa la C si SubE , deci
SR =E E din Propozitia 27.
230
231 232
-
Programare logica
Substitutii. Unificare
F. Baader, T. Nipkow, Terms Rewriting and All That,Cambridge University Press, 1998.
233
Substitutie
(S ,) signatura multisortata, X si Y multimi de variabileO substitutie a variabilelor din X cu termeni din T(Y ) este ofunctie : X T(Y ).Substitutia se extinde la o functie : T(X ) T(Y ) dupacum urmeaza:
I s(x) := (x) or. x Xs ,I s() := or. : s,I s((t1, . . . , tn)) := (s1(t1), . . . , sn(tn)) or. : s1 . . . sn s, or. t1 T(X )s1 , . . ., tn T(X )sn .
Observatie: : T(X ) T(Y ) morfism de (S ,)-algebre.
234
Substitutie
X , Y si Z multimi de variabileI Daca : X T(Y ), : X T(Y ) atunci
= = .I vom identifica uneori cu
I {x1 t1, , xn tn} e notatie pt. : X T(X ),(xi ) := ti or. i = 1, . . . , n si (x) := x pt. x 6= xi
I compunerea substitutiilor : X T(Y ), : Y T(Z ); : X T(Z ), (;)s(x) := ;
I compunerea substitutiilor este asociativa,
I compunerea substitutiilor nu este n general comutativa.
235
Exemplu
S = {s}, = {a : s, p : sssss s, f : s s, g : s s},X = {x , y , z , u, v}t = p(u, v , x , y , z)
= {x f (y), y f (a), z u}(t) = p(u, v , f (y), f (a), u)
= {y g(a), u z , v f (f (a))}; = {x f (g(a)), y f (a), u z , v f (f (a))}(;)(t) = p(z , f (f (a)), f (g(a)), f (a), z)
(; )(t) = p(u, f (f (a)), f (y), g(a), u)
236
-
Termeni. Cazul monosortat
(S ,) signatura monosortata, S = {s}X multime de variabile,T(X ) termenii cu variabile din X
O ecuatie este o pereche de termeni t, t , unde t, t T(X ).Ecuatia t, t o vom nota t = t .
Egalitatea termenilor
Daca t = (t1, . . . , tn) si t = (t 1, . . . , t
k) atunci
t = t = , n = k , ti = t i or. i
= egalitate formala, = egalitate efectiva
237
Unificare. Cazul monosortat.
(S = {s},) signatura, X multime de variabileI O problema de unificare este o multime finita de ecuatii
U = {t1 = t 1, . . . , tn = t n}I Un unificator (o solutie) pentru U este o substitutie : X T(X ) a.. (ti ) = (t i ) or. i = 1, . . . , n.Notam cu Unif (U) multimea unificatorilor lui U.
I Un unificator Unif (U) este un cel mai general unificator(cgu, mgu) daca or. Unif (U) ex. substitutie a.. = ; .
238
Exemplu
S = {s}, = {0 : s,+ : ss s, : ss s}, X = {x , y , z}t = x + (y y) = +(x , (y , y)), u = x + (y x) = +(x , (y , x))I (x) := y , (y) := y , (z) := z ,
I (x) := 0, (y) := 0, (z) := z , = ; {y 0}I (x) := z + 0, (y) := z + 0, (z) := z , = ; {y z + 0}
I (x) := z , (y) := z , (z) := z , = ; {y z}I si sunt cgu
cgu nu este unic
239
Notatii
I Unif (U) := multimea unificatorilor lui U
I Var(U) :=n
i=1(Var(ti )
Var(t i )), undeVar(t) := multimea variabilelor care apar n t T(X )
I daca = {x1 t1, , xn tn} atunci{x1 t1, , xn tn}U := {(t) = (t ) | t = t U}
240
-
Unificare
(S = {},) signatura, X multime de variabileSpunem ca problema de unificare R = {x1 = t1, . . . , xn = tn}este rezolvata daca
I xi X , x1 6= xj or. i 6= jI xi 6
ni=1 Var(ti ) or. i = 1, . . . , n.
O problema rezolvata R defineste o substitutie RI R(xi ) := {x1 t1, . . . , xn tn}I R Unif (R)
Algoritmul transforma o problema de unificare U ntr-o problemade unificare R. Daca R = atunci U nu are unificatori. In cazcontrar, R este rezovata, iar substitutia determinata de R este cgupentru U.
241
Unificare
Propozitia 35.
Daca R = {x1 = t1, . . . , xn = tn} este o problema de unificarerezolvata, atunci R este cgu idempotent pentru R:
I = R ; or. Unif (R),I R ; R = R .
Dem.
(R ; )(x) = (R(x)) =
{ (x) x 6 {x1, . . . , xn}, (ti ) x = xi
Dar (ti ) = (xi ) deoarece Unif (R),deci (R ;
)(x) = (x) or. x X .Pentru = R , rezulta R ; R = R .
242
Algoritmul de unificare
(S = {},) signatura, X multime de variabileIntrare: U = {t1 = t 1, . . . , tn = t n}Initializare: R = USe executa nedeterminist urmatorii pasi, atata timp cat este posibil:(1) Sterge: R {t = t} R(2) Orienteaza: R {t = x} R {x = t} dc. x X , t 6 X(3) Descompune:
. R {(e1, . . . , en) = (e 1, . . . , e n)} R {e1 = e 1, . . . , en = e n}
. R {(e1, . . . , en) = (e 1, . . . , e k)} dc. 6= (4) Elimina:
. R {x = t} {x = t} {x t}R dc.. x Var(R) \ Var(t)
. R {x = t} dc. x Var(t) si t 6= xIesire: daca R = atunci nu exita solutii pentru U
daca R 6= atunci R este cgu pentru U243
{g : s s, h : s s, f : sss s}, X = {x , y , z ,w}
U = R = {g(y) = x , f (x , h(x), y) = f (g(z),w , z)}(2) R = {x = g(y), f (x , h(x), y) = f (g(z),w , z)}(4) R = {x = g(y), f (g(y), h(g(y)), y) = f (g(z),w , z)}(3) R = {x = g(y), g(y) = g(z), h(g(y)) = w , y = z}(3) R = {x = g(y), y = z , h(g(y)) = w , y = z}(4) R = {x = g(z), y = z , h(g(z)) = w , z = z}(2)(1) R = {x = g(z), y = z ,w = h(g(z))}(4) R = {x = g(z), y = z ,w = h(g(z))} cgu
244
-
{a : s, g : s s, h : s s, f : sss s}, X = {x , z ,w}
U = R = {g(a) = x , f (x , h(x), a) = f (g(z),w , z)}(2) R = {x = g(a), f (x , h(x), a) = f (g(z),w , z)}(4) R = {x = g(a), f (g(a), h(g(a)), a) = f (g(z),w , z)}(3) R = {x = g(a), g(a) = g(z), h(g(a)) = w , a = z}(3) R = {x = g(a), a = z , h(g(a)) = w , a = z}(2) R = {x = g(a), z = a,w = h(g(a)), z = a}(4) R = {x = g(a), z = a,w = h(g(a)), a = a}(1) R = {x = g(a), z = a,w = h(g(a))} cgu
245
{b : s, g : s s, h : s s, f : sss s}, X = {x , y , z}
U = R = {g(y) = x , f (x , h(x), y) = f (g(z), b, z)}(2) R = {x = g(y), f (x , h(x), y) = f (g(z), b, z)}
(4) R = {x = g(y), f (g(y), h(g(y)), y) = f (g(z), b, z)}
(3) R = {x = g(y), g(y) = g(z), h(g(y)) = b, y = z}
(3) R = {x = g(y), y = z , h(g(y)) = b, y = z}
(4) R = {x = g(z), y = z , h(g(z)) = b, z = z}(3) R = deoarece b 6= h
246
{g : s s, h : s s, f : sss s}, X = {x , y , z ,w}
U = R = {g(y) = x , f (x , h(x), y) = f (y ,w , z)}(2) R = {x = g(y), f (x , h(x), y) = f (y ,w , z)}
(4) R = {x = g(y), f (g(y), h(g(y)), y) = f (y ,w , z)}
(3) R = {x = g(y), g(y) = y , h(g(y)) = w , y = z}
(2) R = {x = g(z), y = g(y), h(g(y)) = w , y = z}
(4) R = deoarece y Var(g(y))
247
Terminare
Propozitia 36.
Algoritmul de unificare se termina.
Dem. Fie R problema de unificare. Notamnsol := |{x Var(R)|R = R {x = t}, x 6 Var(R ) Var(t)}|,n1 := |Var(R)| nsol , n2 :=
s
=tR(|s|+ |t|),n3 := |{t = x R|t 6 X , x X}|Fiecare pas al algoritmului modifica n1, n2, n3
n1 n2 n3Sterge >Orienteaza = >Descompune >Elimina >
Daca la executia unui pas (n1, n2, n3) se schimba n (n1, n2, n3),
atunci (n1, n2, n3) >lex (n1, n2, n3), adica (n1, n2, n3) descreste
strict n ordine lexicografica.248
-
Corectitudine
Propozitia 37.
Daca R T si T 6= , atunci Unif (R) = Unif (T ).Dem. Evident adevarat pentru Stergesi Orienteaza.Descompune. R = R {(e1, . . . , en) = (e 1, . . . , e n)}
T = R {e1 = e 1, . . . , en = e n}Daca : X T(X ) substitutie, atunci((e1