Upload
cristi-popa
View
216
Download
0
Embed Size (px)
Citation preview
8/9/2019 ProgLog2011-2012
1/94
Programare Logică
Ioana Leustean
http://moodle.fmi.unibuc.ro/course/view.php?id=186
1
Cont ̧inutul cursului
Introducere in MAUDE
Signaturi şi algebre multisortate. Termeni
Morfisme. Tipuri abstracte de date. Algebre iniţial̆e Subalgebre. Algebre libere
Semantica termenilor
Ecuaţii. Relaţia de satisfacere
Specificaţii algebrice
Γ-algebra iniţială
2
Teorema constantelor. Demonstraţii prin inducţie
Logica ecuaţională: sintaxa Logica ecuaţională: corectitudine şi completitudine
Regula ”Subterm Replacement”
Rescrierea termenilor
Substituţii. Algoritmul de unificare
3
Sisteme de rescriere abstracte
Rescrierea termenilor: terminare, confluenţă, completare Logica ecuaţională şi rescriere local̆a
Deducţie şi rescriere modulo axiome
Semantica algebrei iniţiale
Clauze Horn. Rezoluţie
4
http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/http://moodle.fmi.unibuc.ro/course/view.php?id=186http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/http://moodle.fmi.unibuc.ro/course/view.php?id=186http://moodle.fmi.unibuc.ro/course/view.php?id=186http://moodle.fmi.unibuc.ro/course/view.php?id=186http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/http://moodle.fmi.unibuc.ro/course/view.php?id=186http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/
8/9/2019 ProgLog2011-2012
2/94
8/9/2019 ProgLog2011-2012
3/94
Comenzi sistem
in ../nume-fisier.mod show 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 .
N a t : 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 signatură şi defineşte o clasă de algebre (structuri,structuri algebrice). Algebra (N, 0, succesor ) este un obiect”privilegiat” al acestei clase.
12
http://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.html
8/9/2019 ProgLog2011-2012
4/94
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 .
e q L ; n i l = L .
endfm
Structura generală a unui modul:• importuri (protecting, extending, including),• declararea sorturilor si a subsorturilor,• declararea operaţiilor,• declararea variabilelor,
• ecuaţii.13
Importuri
Exista trei modalitati de importare a modulelor
protectingse foloseste atunci cand datele definite in modulul importantnu sunt afectate de operatiile dau ecuatiile noului modul: nu
se construiesc date noi pe sorturi vechi (”no junk”) si nu suntidentificate date care in modulul initial erau diferite (”noconfusion”)
extendingpermite aparitia unor date noi pe sorturile vechi (”junk”) darnu p ermite identificarea datelor care in modulul initial eraudiferite (”no confusion”)
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 .
e q L ; n i l = L .
endfm
16
8/9/2019 ProgLog2011-2012
5/94
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-sortată): ((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 .
e q L ; n i l = L .
Prezentare (multime de ecuatii):(γ 1)∀L.ListNat (nil ; L = L)(γ 2)∀L.ListNat (L; nil = L)(γ 3)∀L.ListNat ∀P .ListNat ∀Q .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 .
e q L ; n i l = L .
endfm
Reprezentarea matematica a unui modul este o
specificatie algebrica ordonat-sortată((S , ≤), Σ, Γ)
19
Exemplul 2
Date de tipul ListNat sunt:
n i l ; s 0
s s 0 ; s 0 ; 0( n i l ; s 0 ) ; s s 0 ; n i l ; 0
Aceste date le numim expresii sau termeni.Un program este un modul, adică o specificaţie; modelulmatematic al unei specificaţii este o algebră de termeni; oexecuţie este o rescriere ı̂n algebra de termeni asociată.
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
8/9/2019 ProgLog2011-2012
6/94
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
e q n i l ; L = L .
L - - > s 0
nil ; s 0 ---> s 0
*********** equation
e q n i l ; 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 .
e q L ; n i l = 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 .
e q L ; n i l = L .
endfm
Modulul MYNATLIST defineşte
k ≥0Nk
(secvenţele 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 .
e q L ; n i l = L .
eq I ; I = I .
endfm
Maude> reduce (0 ; s 0) == (0 ; s 0 ; 0) ....
result Bool: true
Ce defineste MYNATLIST1 ?24
8/9/2019 ProgLog2011-2012
7/94
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 .
e q 0 + i z = i z .
eq z +i 0 = z .
...
endfm
Observaţi supraı̂ncărcarea operaţiei + 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 .
e q ( - x ) + x = e .
eq x + (- x) = e .
eq - - x = x .
eq - e = e .
e q - ( x + y ) = ( - y ) + ( - x ) .
endfm
26
TRS canonic
O ecuaţie l = r se transformă, prin orientare de la stânga la
dreapta, ı̂ntr-o regulă de rescriere l → r . Ecuaţiile modululuiGRUP determină astfel un sistem de rescriere canonic:
orice şir de rescrieri se termină,
ordinea de aplicare regulilor de rescriere nu schimbă rezultatulfinal.
O ecuaţie t 1 = t 2 din teoria de ordinul I a grupurilor este verificatăı̂n orice grup dacă şi numai dacă există un termen t astfel ı̂nĉatt 1
∗→ t şi t 2
∗→ 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
e q - ( x + y ) = - y + - x .
x - - > - y
y --> x
- ( - y + x ) - - - > - x + - - y
*********** equation
eq - - x = x .
x --> y
- - y - - - > y
28
8/9/2019 ProgLog2011-2012
8/94
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 .
e q L ; n i l = 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 = f alse .
c e q I ; J = J ; I i f ( J < I ) .
endfm
Observati ecuatia conditionala
c e q I ; J = J ; I i f ( J < I ) .
Ce tip de date defineste modulul MYNATLIST2 ?31
Exemplul 6
Maude> select MYNATLIST2 .Maude> r educe s s s 0 ; s s 0 ; s s s 0 ; 0 .
...
r e s u l t L i s t N a t : 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
http://egovbus.net/rdl/articole/No1Art94.pdfhttp://egovbus.net/rdl/articole/No1Art94.pdfhttp://egovbus.net/rdl/articole/No1Art94.pdfhttp://egovbus.net/rdl/articole/No1Art94.pdfhttp://egovbus.net/rdl/articole/No1Art94.pdf
8/9/2019 ProgLog2011-2012
9/94
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 } creaz̆a o stivă generică.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
Instanţiind 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 specificaţie bazat pe logicaecuaţională. Un program este o colecţ ie de module. Execuţia esteo rescriere. Câteva din caracteristicile acestui limbaj sunt:
modularizare si parametrizare,
definirea tipurilor de date este independentă de implementare,
extensibilitate,
permite tratarea erorilor şi supraı̂ncărcarea operaţ iilor,
poate fi folosit ca demonstrator.
36
8/9/2019 ProgLog2011-2012
10/94
Programare logic˘ a
Signaturi. Algebre. Termeni
37
Mult ̧imi S-sortate
S = ∅
O mulţime S - sortată A este o familie A = {As }s ∈S .
Dacă A = {As }s ∈S şi B = {B s }s ∈S atunci ∅ = {∅s }s ∈S , ∅s = ∅ or. s ∈ S , A ⊆ B ⇔ As ⊆ B s or. s ∈ S , A ∪ B = {As ∪ B s }s ∈S , A ∩ B = {As ∩ B s }s ∈S , A × B = {As × B s }s ∈S .
Exemplu: S = {nat , bool }, A = {Anat , Abool },Anat = N, Abool = {T , F }
sorturi=tipuri, elemente de sort s = date de tip s
38
Funct ¸ii S -sortate
A = {As }s ∈S , B = {B s }s ∈S , C = {C s }s ∈S
O funcţie S - sortată f : A → B este o familie de funcţiif = {f s }s ∈S , unde f s : As → B s oricare s ∈ S .
Dacă f : A → B şi g : B → C , definimf ; g : A → C , f ; g = {f s ; g s }s ∈S
f s ; g s : As → C s ,f s ; g s (a) := g s (f s (a)) or. s ∈ S , a ∈ As
1A : A → A, 1A = {1As }s ∈S (f ; g ); h = f ; (g ; h) (compunerea este asociativă)
f ; 1B = f , 1A; f = f or. f : A → B
39
Funct ¸ii S -sortate
A = {As }s ∈S , B = {B s }s ∈S , O funcţie S -sortat̆a f : A → B se numeşte
injectivă, (surjectivă, bijectivă)dacă f s este injectivă, (surjectivă, bijectivă) oricare s ∈ S .
O funcţie S -sortat̆a f : A → B se numeşte inversabil̆a dacăexist̆a g : B → A a.̂ı. f ; g = 1A şi g ; f = 1B .
Propoziţie. O funcţie S -sortat̆a f : A → B este inversabilă dac̆a şinumai dacă este bijectivă (f s este bijectivă oricare s ∈ S ).
40
8/9/2019 ProgLog2011-2012
11/94
8/9/2019 ProgLog2011-2012
12/94
8/9/2019 ProgLog2011-2012
13/94
Exemple
BOOL = (S = {bool }, Σ)Σ = {T :→ bool , F :→ bool , ¬ : bool → bool ,
∨ : bool bool → bool , ∧ : bool bool → bool }
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 )
BOOL-algebra B :B bool := P (N)B T := N, B F := ∅, B ¬(X ) := N \ X ,B ∨(X , Y ) := X ∪ Y , B ∧(X , Y ) := X ∩ Y
49
Exemple
NAT = (S = {nat }, Σ)Σ = {0 :→ nat , succ : nat → nat }
NAT -algebra A:
Anat := NA0 := 0, Asucc (x ) := x + 1
NAT -algebra B :B nat := {0, 1}B 0 := 0, B succ (x ) := 1 − x
NAT -algebra C :C nat := {2n|n ∈ N}C 0 := 1, C succ (2
n) := 2n+1
50
Exemple
STIVA = (S = {elem, stiva}, Σ)Σ = {0 :→ elem, empty :→ stiva, pop : stiva → stiva,
push : elem stiva → stiva, top : stiva → elem}
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.
STIVA-algebra B : B elem := {0}, B stiva := NB 0 := 0, B empty := 0, B push(0, n) := n + 1 or. n,B pop (0) := 0, B pop (n) := n − 1 pt. n ≥ 1,
B top (n) := 0 or. n.
51
Exemple
AUTOMAT = (S = {intrare , stare , iesire }, Σ)
Σ = {s 0 :→ stare , f : intrare stare → stare ,g : stare → iesire }
AUTOMAT -algebra A:Aintrare = {x , y }, Astare = {s 0, s 1}, A iesire := {T , F }As 0 := s 0, Ag (s 0) := F , Ag (s 1) := T ,Af (x , s 0) := s 0, A f (y , s 0) := s 1,Af (x , s 1) := s 0, A f (y , s 1) := s 1
AUTOMAT -algebra B :B intrare = B stare = B iesire := NB s 0 := 0, B f (m, n) := m + n, B g (n) := n + 1
52
8/9/2019 ProgLog2011-2012
14/94
Algebre ordonat-sortate
(S , ≤, Σ) signatură ordonat-sortatăO algebră ordonat-sortată de tipul (S , ≤, Σ) este o (S , Σ)-algebră
(AS , AΣ) care satisface următoarele proprietăţi: s 1 ≤ s 2 ⇒ As 1 ⊆ As 2 σ ∈ Σw 1,s 1 ∩ Σw 2,s 2 , w 1 ≤ w 2 ⇒
Aw 2,s 2σ (x) = Aw 1,s 1σ (x) oricare x ∈ Aw 1 .
Semantica unui modul functional in Maude este o algebrăordonat-sortată.
53
Mult ̧ime de variabile
(S , Σ) signatură multisortată
|Σ| :=
w ,s Σw ,s
|X | := s ∈S X s dacă X mulţime S -sortat̆aO mulţime de variabile este o mulţime S -sortată X a.̂ ı.:
X s ∩ X s = ∅ or. s = s
|X | ∩ |Σ| = ∅
simbolurile de variabile sunt distincte ı̂ntre ele şi sunt distincte desimbolurile de operaţii din Σ
54
Termeni (expresii, cuvinte)
(S , Σ) signatură, X mulţime de variabile
Mulţimea S -sortat̆a termenilor cu variabile din X , T Σ(X ), este ceamai mică mulţime de şiruri finite peste alfabetul
L =
s ∈S X s ∪
w ,s Σw ,s ∪ {(, )} ∪ {,}care verifică următoarele proprietăţ i:
(T1) X s ⊆ T Σ(X )s (T2) dc. σ :→ s , at. σ ∈ T Σ(X )s ,
(T3) dc. σ : s 1 · · · s n → s şi t i ∈ T Σ(X )s i or. i = 1, . . . , nat. σ(t1, . . . , tn) ∈ T Σ(X )s .
• Var (t ) := mulţimea variabilelor care apar ı̂n t ∈ T Σ
55
Termeni fără variabile (ground terms)
(S , Σ) signatură multisortată
Mulţimea S -sortat̆a termenilor fără variabile, T Σ, este cea mai mică mulţime de şiruri finite peste alfabetul
L =
w ,s Σw ,s ∪ {(, )} ∪ {,}care verifică următoarele proprietăţ i:
(T2) dc. σ :→ s , at. σ ∈ T Σ,s ,
(T3) dc. σ : s 1 · · · s n → s şi t i ∈ T Σ,s i or. i = 1, . . . , nat. σ(t1, . . . , tn) ∈ T Σ,s .
• T Σ = T Σ(∅)
56
8/9/2019 ProgLog2011-2012
15/94
Exemple
STIVA = (S , Σ)S = {elem, stiva}, X elem = {x , y }, X stiva = ∅,Σ = {0 :→ elem, empty :→ stiva,
push : elem stiva → stiva,pop : stiva → stiva,top : stiva → elem}
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), . . .}
şiruri care nu sunt termenipop (0), (pop )top (empty ), empty (y ), . . .
57
Exemple
NATBOOL = (S , Σ)S = {bool , nat }Σ = {T :→ bool , F :→ bool , 0 :→ nat ,
s : nat → nat ,≤: nat nat → bool }
T NATBOOL,nat = {0, s(0), s(s(0)), . . .}T NATBOOL,bool = {T, F,≤ (0, 0),≤ (0, s(0)), . . .}
şiruri care nu sunt termeni≤ (T , F ), s ≤ (0), Ts (0), . . .
58
Exemple
AUTOMAT = (S , Σ), S = {
intrare , stare , iesire }
,Σ = {s 0 :→ stare ,
f : intrare stare → stare ,g : stare → iesire }
T AUTOMAT ,stare = {s0}, T AUTOMAT ,intrare = ∅,T AUTOMAT ,iesire = {g(s0)}
GRAF = (S , Σ), S = {arc , nod }Σ = {v 0 : arc → nod , v 1 : arc → nod }T GRAF ,arc = T GRAF ,nod = ∅
59
Expresii aritmetice
NATEXP = (S = {nat }, Σ) Σ = {0 :→ nat , s : nat → nat ,
+ : nat nat → nat , ∗ : nat nat → nat }
T NATEXP = {0, s(0), s(s(0)), . . .+(0, 0),∗(0, +(s(0), 0)),∗(s(0), s(s(0))), . . .}
şiruri care nu sunt termeni+(0), 0(s )s (0), ∗(0), . . .
T NATEXP este mulţimea expresiilor aritmetice peste N.
60
8/9/2019 ProgLog2011-2012
16/94
Induct ̧ia pe termeni
(S , Σ) signatură multisortată, X mulţime de variabileFie P o proprietate a.̂ı. următoarele condiţii sunt satisfăcute:
pasul iniţial:
P(x ) = true or. x ∈ X , P(σ) = true or. σ :→ s , pasul de inducţie:
dacă t 1 ∈ T Σ(X )s 1 , . . ., t n ∈ T Σ(X )s n şiP(t 1) = · · · = P(t n) = true atunciP(σ(t1, . . . , tn)) = true or. σ : s 1 . . . s n → s .
Atunci P(t ) = true oricare t ∈ T Σ(X ).
61
Algebra termenilor
Algebra termenilor
(S , Σ) signatură, X mulţime de variabileMulţimea termenilor T Σ(X ) = {T Σ(X )s }s ∈S este (S , Σ)-algebră
cu operaţiile definite astfel: pt. σ :→ s , operaţia corespunzătoare este T σ := σ
pt. σ : s 1 · · · s n → s , operaţia corespunzătoare esteT σ : T Σ(X )s 1 × · · · × T Σ(X )s n → T Σ(X )s T σ(t 1, . . . , t n) := σ(t1, . . . , tn)or. t 1 ∈ T Σ(X )s 1 , . . ., t n ∈ T Σ(X )s n
T Σ(X ) algebra termenilor cu variabile din X T Σ algebra termenilor fără variabile (X = ∅)
62
Algebra expresiilor aritmetice
NATEXP = (S = {nat }, Σ)
Σ = {0 :→ nat , s : nat → nat ,+ : nat nat → nat , ∗ : nat nat → nat }
T 0 := 0,
T s (t ) := s(t),
T +(t 1, t 2) := +(t1, t2)
T ∗(t 1, t 2) := ∗(t1, t2)
Semantica unui modul ı̂n Maude (care conţine numaideclaraţii de sorturi, operaţii şi variabile) este o algebră de
termeni.
63 64
8/9/2019 ProgLog2011-2012
17/94
Programare logic˘ a
Morfisme.Tipuri abstracte de date.Algebre iniţiale
65
Morfisme
Exemplu. SignaturaMONOID = (S = {s }, Σ = {e :→ s , ∗ : ss → s })Fie (A, 1, ) şi (B , 0, +) monoizi(Ae := 1, A∗ := , B e := 0, B ∗ := +)
O funcţie f : A → B este morfism de monoizi dacă: f (1) = 0 ⇔ f (Ae ) = B e f (x y ) = f (x ) + f (y ) ⇔ f (A∗(x , y )) = B ∗(f (x ), f (y ))
or. x , y ∈ A.
A × A A∗→ A
f ↓ f ↓ f ↓
B × B B ∗→ B
66
Morfisme
(AS , AΣ), (B S , B Σ) (S , Σ)-algebre
Un morfism de (S , Σ)-algebre ((S , Σ)-morfism) este o funcţieS -sortată f : A → B care verifică condiţ iile de compatibilitate:
f s (Aσ) = (B σ) oricare σ :→ s ,
f s (Aσ(a1, . . . , an)) = B σ(f s 1(a1), . . . , f s n (an))or. σ : s 1 · · · s n → s , or. (a1, . . . , an) ∈ As 1 × · · · × As n .
As 1 × · · · × As nAσ→ As
f s 1↓ . . . f s n ↓ f s ↓
B s 1 × · · · × B s nB σ→ B s
Observat ̧ie 1A : A → A este morfism or. A (S , Σ)-algebră.
67
Exemplu
NAT = (S = {nat }, Σ = {0 :→ nat , succ : nat → nat })
NAT -algebra A:Anat := N, A0 := 0, Asucc (x ) := x + 1
NAT -algebra B :B nat := {0, 1}, B 0 := 0, B succ (x ) := 1 − x
f : A → B , f = {f nat }, f nat (n) = n(mod 2)este morfism de NAT -algebre
Nu există morfism de NAT -algebre g : B → A.
68
8/9/2019 ProgLog2011-2012
18/94
Exemple
STIVA = (S = {elem, stiva}, Σ)Σ = {0 :→ elem, empty :→ stiva, pop : stiva → stiva,
push : elem stiva → stiva, top : stiva → elem}
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.
STIVA-algebra B : B elem := {0}, B stiva := NB 0 := 0, B empty := 0, B push(0, n) := n + 1 or. n,B pop (0) := 0, Apop (n) := n − 1 pt. n ≥ 1,B top (n) := 0 or. n.
69
Exemple
STIVA-algebra A = (Aelem = N, Astiva = N∗, . . .)
STIVA-algebra B = (B elem = {0}, B stiva := N, . . .)
f : A → B , f = (f elem
: N → {0}, f stiva
: N∗ → N)f elem(n) := 0 or. n,f stiva(λ) := 0, f stiva(n1 · · · nk ) := k pt. k ≥ 1
g : B → A, g = (g elem : {0} → N, g stiva : N → N∗)
g elem(0) := 0,g stiva(0) := λ, g stiva(k ) := 0 · · · 0
k
pt. k ≥ 1
f şi g sunt morfisme de STIVA-algebre
70
Morfisme de mpo
Observat ̧ie.
Mulţimile parţial ordonate se pot reprezenta ca (S , Σ)-algebre,
S := {elem, bool },Σ := {≤: elem elem → bool , T :→ bool , F :→ bool }.
Mpo (A, ≤) este reprezentată ca (S , Σ)-algebră prin(A, {0, 1} ≤, T , F ), undeAelem := A, Abool := {0, 1}, AT := 1, AF := 0,A≤(x , y ) = T ⇔ x ≤ y
Ce relaţiile este ı̂ntre funcţ ii crescătoare şi morfisme de(S , Σ)-algebre?
Orice (S , Σ)-morfism este funcţie crescătoare dar invers nueste adevărat!
71
Proprietăt ̧i
(S , Σ) signatură multisortată
Propozit ̧ia 1.
Fie A, B , C algebre şi f : A → B , g : B → C morfisme. Atuncif ; g : A → C este morfism.
Dem.
σ :→ s ∈ Σ(f ; g )s (Aσ) = g s (f s (Aσ)) = g s (B σ) = C σ,
σ : s 1 · · · s n → s ∈ Σ, (a1, . . . , an) ∈ As 1 × · · · × As n(f ; g )s (Aσ(a1, . . . , an)) = g s (f s (Aσ(a1, . . . , an))) =
g s (B σ(f s 1(a1), . . . , f s n (an))) =C σ(g s 1(f s 1(a1)), . . . , g s n (f s n (an)))
= C σ((g ; f )s 1(a1), . . . , (g ; f )s n (an)). qed
72
8/9/2019 ProgLog2011-2012
19/94
Proprietăt ̧i
Teorema 2.
Exista un unic morfism f : T Σ → B or. B (S , Σ)-algebr̆a.
Dem. Fie B (S , Σ)-algebră.
Existent ̧a. Definim f : T Σ → B prin inducţie pe termeni(P(t ) = ” f (t ) este definită”).
pasul iniţial: dc. σ :→ s ∈ Σ, at. f s (σ) := B σ,
pasul de inducţie: dc. σ : s 1 . . . s n → s ∈ Σ şit 1 ∈ T Σs 1 , . . ., t n ∈ T Σs n a.̂ı f s 1(t 1), · · · , f s n (t n) definite at.
f s (σ(t1, . . . , tn)) := B σ(f s 1(t 1), · · · , f s n (t n))
Conform principiului inductiei pe termeni,f s (t ) este definită or. t ∈ T Σ.
73
Continuare
Demonstrăm c ̆a f este morfism.
dc. σ :→ s ∈ Σ, at. f s (T Σσ) = f s (σ) = B σ, dc. σ : s 1 . . . s n → s ∈ Σ şi
t 1 ∈ T Σs 1 , . . ., t n ∈ T Σs n at.
f s (T Σσ(t 1, . . . , t n)) = f s (σ(t1, . . . , tn))= B σ(f s 1(t 1), · · · , f s n (t n))
74
Continuare
Unicitatea. Fie g : T Σ → B un morfism.Demonstram că g = f prin inducţie pe termeni
(P(t ) = ” dc. t ∈ T Σs at. g s (t ) şi f s (t ) sunt egale”).
pasul iniţial: dc. σ :→ s ∈ Σ, at. g s (σ) = B σ = f s (σ),
pasul de inducţie: dc. σ : s 1 . . . s n → s ∈ Σ şit 1 ∈ T Σs 1 , . . ., t n ∈ T Σs n a.̂ı
g s 1(t 1) = f s 1(t 1), · · · , g s n (t n) = f s n (t n) at.
g s (σ(t1, . . . , tn)) = B σ(g s 1(t 1), · · · , g s n (t n)) =B σ(f s 1(t 1), · · · , f s n (t n)) = f s (σ(t1, . . . , tn))
Conform principiului inductiei pe termeni,g s (t ) = f s (t ) or. t ∈ T Σs , adică g = f . qed
75
Exemplu
(S , Σ) signatură multisortată
D = (D S , D Σ), D s := N or. s ∈ S dacă σ :→ s atunci D σ := 0,dacă σ : s 1 . . . s n → s , k 1, . . ., k n ∈ N
D σ(k 1, . . . , k n) := 1 + max (k 1, . . . , k n)
f D : T Σ → D unicul morfism
Ce reprezintă valoarea f D (t ) pentru un termen t ?
76
8/9/2019 ProgLog2011-2012
20/94
Termeni ca arbori
Un termen t poat fi reprezentat ca un arbore arb (t ) astfel:
σ ∈ T Σs ⇒ arb (σ) := σ
t = σ(t1, . . . , tn) ⇒
arb (t ) := σ
arb (t 1) · · · arb (t n)
Pentru orice t valoarea f D (t ) este adâncimea arborelui arb (t ).
77
Izomorfisme
Un (S , Σ)-morfism f : A → B este izomorfism dacă exist̆a unmorfism g : B → A a.̂ı. f ; g = 1A şi g ; f = 1B .
Propozit ̧ia 3 Un morfism f : A → B este izomorfism dacă şi numai dacă estefuncţie bijectivă, adică f s : As → B s este bijecţie oricare s ∈ S .
Dem. Revine la a demonstra că implicaţia:
f morfism şi bijecţ ie ⇒ f −1 morfism.
78
Continuare
Demonstrăm c ̆a f −1 : B → A este morfism.
dc. σ :→ s ∈ Σ, at. f s (Aσ) = B σ, deci f −1s (B σ) = Aσ,
dc. σ : s 1 . . . s n → s ∈ Σ şib 1 ∈ B s 1 , . . ., b n ∈ B s n at.ex. a1 ∈ As 1 , . . ., an ∈ As n a.̂ı.f s 1(a1) = b 1, . . ., f s n (an) = b n şi
f s (Aσ(a1, . . . , an)) = B σ(f s 1(a1), . . . , f s n (an)) = B σ(b 1, . . . , b n)
Atunci f s −1(B σ(b 1, . . . , b n)) = Aσ(a1, . . . , an) =
Aσ(f s 1−1(b 1), . . . , f s n
−1(b n)). qed
79
Izomorfisme de mpo
(A = {x 1, x 2, x 3, x 4}, ≤), unde x 1 ≤ x 2 ≤ x 3 ≤ x 4 (B = {0, 1}2, ≤), unde ≤ ordinea pe componente
A şi B sunt (S , Σ)-algebre, undeS := {elem, bool },Σ := {≤: elem elem → bool , T :→ bool , F :→ bool }
f : A → B f (00) = x 1, f (01) = x 2, f (10) = x 3, f (11) = x 4este funcţie bijectivă şi crescătoare
A B
80
8/9/2019 ProgLog2011-2012
21/94
Izomorfisme
Spunem că algebrele A = (AS , AΣ) şi B = (B S , B Σ) sunt izomorfedacă există un izomorfism f : A → B . În acest caz notăm A B .
A A (1A este izomorfism)
A B ⇒ B A A B , B C ⇒ A C
Relaţia de izomorfism este o relaţie de echivalenţă (reflexivă,simetrică şi tranzitivă).
Observat ̧ie.
A B ⇒ As B s oricare s ∈ S
81
Exemple
NAT = (S = {nat }, Σ = {0 :→ nat , succ : nat → nat })
NAT -algebra A: Anat = N, A0 := 0, Asucc (x ) := x + 1
NAT -algebra B : B nat := {0, 1}, B 0 := 0, B succ (x ) := 1 − x NAT -algebra C : C nat := {2
n|n ∈ N}C 0 := 1, C succ (2
n) := 2n+1
A B
A C f : A → C , f (n) := 2n este un NAT -izomorfism.
82
Exemple
BOOL = (S = {bool }, Σ)
Σ = {T :→ bool , F :→ bool , ¬ : bool → bool ,∨ : bool bool → bool , ∧ : bool bool → bool }
Abool := {0, 1}AT := 1, AF := 0, A¬(x ) := 1 − x ,A∨(x , y ) := max (x , y ), A∧(x , y ) := min(x , y )
B bool := P (N)B T := N, B F := ∅, B ¬(X ) := N \ X ,B ∨(X , Y ) := X ∪ Y , B ∧(X , Y ) := X ∩ Y
A B
83
Exemple
BOOL-algebra C :
C bool := {t : N → {0, 1}| t funcţie}C T (n) := 1, C F (n) := 0 or. n ∈ NC ¬(t )(n) := 1 − t (n) or. t ∈ C bool , n ∈ NC ∨(t 1, t 2)(n) := max (t 1(n), t 2(n)) or. t 1, t 2 ∈ C bool , n ∈ NC ∧(t 1, t 2)(n) := min(t 1(n), t 2(n)) or. t 1, t 2 ∈ C bool , n ∈ N
B C f : B → C , f (Y ) := χY oricare Y ∈ P (N)f (Y )(n) = 1 dacă n ∈ Y , f (Y )(n) = 0 dacă n ∈ Y f este BOOL-izomorfism
84
8/9/2019 ProgLog2011-2012
22/94
Exemple
STIVA-algebra A = (Aelem = N, Astiva = N∗
, . . .) STIVA-algebra B = (B elem = {0}, B stiva := N, . . .)
A B
85
Exemple
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.
STIVA-algebra C : C elem := Z, C stiva := Z∗
C 0 := 0, C empty := λ, C push(x , x 1 · · · x k ) := x 1 · · · x k x ,C pop (λ) = C pop (x ) := λ,C pop (x 1 · · · x k −1x k ) := x 1 · · · x k −1 pt. k ≥ 2,C top (λ) := 0, C top (x 1 · · · x k ) := x k pt. k ≥ 1.
86
Exemple
STIVA-algebra A: Aelem := N, Astiva := N∗
STIVA-algebra C : C elem := Z, C stiva := Z∗
f : A → C , f = (f elem : N → Z, f stiva : N∗ → Z∗)
f elem(2k ) := k , f elem(2k + 1) := −k − 1 pt. k ∈ N,
f stiva(n1 · · · nk ) := f elem(nk ) · · · f elem(n1) pt. n1 · · · nk ∈ N∗.
f este STIVA-izomorfism
Algebrele izomorfe sunt ”identice” (modulo redenumire).
87
ADT
Un tip abstract de date este o mulţime de date ( valori) şioperaţii asociate lor, a căror descriere (specificare) esteindependentă de implementare.abstract=disassociated from any specific instance
O algebră este formată dintr-o mulţime de elemente şi omulţime de operaţii. Algebrele pot modela tipuri de date.
Două algebre izomorfe au acelaşi comportament, deci trebuiesa fie modele ale acelaşi tip de date. Aceasta asigurăindependenţa de implementare.
88
8/9/2019 ProgLog2011-2012
23/94
ADT
O signatură (S , Σ) este interfaţa sintactică a unui tip abstractde date.
O algebră A = (AS , AΣ) este o posibilă implementare. Dacă A B , atunci A şi B implementează acelaşi t ip de date.
Un tip abstract de date este o clasă C de (S , Σ)-algebre cuproprietatea că oricare două algebre sunt izomorfe:
A, B ∈ C ⇒ A B .
[A] := {B (S , Σ) algebr̆a| A B } este tip abstract de date.
89
Algebra init ̧ială
K clasă de (S , Σ)-algebre
O (S , Σ)-algebr̆a I este iniţială ı̂n K dacă I ∈ K şi pentru
orice B ∈ K exist̆a un unic morfism f : I → B .
Propozit ̧ia 4
(a) I iniţială ı̂n K, A ∈ K, A I ⇒ A iniţială ı̂n K
(b) A1 şi A2 iniţiale ı̂n K ⇒ A1 A2.
90
Continuare
Dem. (a) I iniţială ı̂n K, A ∈ K şi ϕA : A → I izomorfism
Fie B ∈ K şi f B
: I → B unicul morfism. Demonstrăm că există ununic morfism h : A → B .
Existent ̧a. h := ϕA; f B : A → B mofism
Unicitatea. dacă g : A → B morfism, atunci ϕA−1; g : I → B
morfism,deci ϕA−1; g = f B ; rezultă g = ϕA; f B = h.
(b) A1 şi A2 iniţiale ı̂n K
Există un unic morfism f : A1 → A2 şi un unic morfismg : A2 → A1. Atunci f ; g : A1 → A1 şi 1A1 : A1 → A1, deci
f ; g = 1A1 . Analog g ; f = 1A2 , deci A1 A2. qed
91
(S , Σ) -algebra init ̧ială
(S , Σ) signatură multisortată
K clasa tuturor (S , Σ)-algebrelor. I este (S , Σ)-algebră iniţial̆a dacă oricare B (S , Σ)-algebră
există un unic morfism f : I → B .
Teorema 2. T Σ este (S , Σ)-algebră iniţ ială.
I (S ,Σ) = {I | I (S , Σ) -algebră iniţială}este un tip abstract de date şi T Σ ∈ I (S ,Σ).
Un modul funcţional ı̂n Maude (care conţine numai declaraţiide sorturi şi operaţii) defineşte un astfel de tip abstract de
date şi construieşte efectiv algebra T Σ.
92
8/9/2019 ProgLog2011-2012
24/94
Programare logic˘ a
Subalgebre. Algebre libere
93
Subalgebre
(S , Σ) - signatură multisortată, A (S , Σ)-algebr̆a
B ⊆ A este parte stabil ă a lui A dacă
Aσ ∈ B s or. σ :→ s ,
Aσ(b 1, . . . , b n) ∈ B s or. σ : s 1 · · · s n → s ,or. (b 1, . . . , b n) ∈ B s 1 × · · · × B s n .
Daca B este parte stabila a lui A atunci(B S = B , B Σ) este (S , Σ)-subalgebră a lui (AS , AΣ), unde
B σ := Aσ or. σ :→ s ,
B σ(b 1, . . . , b n) := Aσ(b 1, . . . , b n) or. σ : s 1 · · · s n → s ,or. (b 1, . . . , b n) ∈ B s 1 × · · · × B s n .
94
Exemple
BOOL-algebra B :B bool := P (N)B T := N, B F := ∅, B ¬(X ) := N \ X ,B ∨(X , Y ) := X ∪ Y , B ∧(X , Y ) := X ∩ Y
B 1 = {∅,N} ∪ { {n}|n ∈ N}nu este subalgebră.
B 2 = {∅,N} ∪ { {n},N \ {n}}este subalgebr̆a (n ∈ N fixat).
95
Exemple
AUTOMAT -algebra AAintrare = {x , y }, Astare = {s 0, s 1}, A iesire := {T , F }As 0 := s 0, Ag (s 0) := F , Ag (s 1) := T ,Af (x , s 0) := s 0, A f (y , s 0) := s 1,Af (x , s 1) := s 0, A f (y , s 1) := s 1
P = {P intrare := {x }, P stare := {s 0}, P iesire := {F }}este subalgebră A
96
8/9/2019 ProgLog2011-2012
25/94
Mult ̧imi de generatori
(S , Σ) signatură multisortată,A-algebr̆a, X mulţime, X ⊆ A
Algebra generat̆a de X ı̂n A este cea mai mică (⊆) subalgebră
B a lui A cu X ⊆ B . Vom nota B = X F := {B ⊆ A |B subalgebr̆a, X ⊆ B }
A ∈ F , deci F = ∅ {B i }i ∈I ⊆ F implică
i ∈I B i ∈ F
X =
{B | B ∈ F}
Spunem că A este generat̆a de X dacă X ⊆ A şi X = A. Înacest caz X este mulţime de generatori pentru A.
97
Construct ̧ia algebrei generate
(S , Σ) signatură multisortată,A-algebr̆a, X mulţime, X ⊆ A
Construim un şir de mulţimi S -sortate (X n)n astfel: X 0 := X , X n+1,s := X n,s ∪ {Aσ | σ :→ s } ∪ {Aσ(a1, . . . , an) |
σ : s 1 . . . s n → s , (a1, . . . , an) ∈ X n,s 1 × · · · × X n,s n }.
Propoziţia 5. X =
n X n.Dem: va fi adăugat̆a!
98
Proprietăt ̧i
h : A → B funcţieh−1 : P (B ) → P (A), h−1(Y ) := {a ∈ A|h(a) ∈ Y }
imaginea inversă
Propozit ̧ia 6.
Fie h : A → B morfism.
(a) dc. C ⊆ A subalgebră at. h(C ) ⊆ B subalgebră,
(b) dc. D ⊆ B subalgebră at. h−1(D ) ⊆ B subalgebră,
(c) h( X ) = h(X ) pentru X ⊆ A,
(d) h−1(Y ) ⊆ h−1( Y ) pentru Y ⊆ B .
Dem. (a), (b), (d) exercitii.
99
Continuare
(c) h( X ) = h(X ) pentru X ⊆ A,.
X ⊆ A subalgebr̆a ⇒ h( X ) ⊆ B subalgebră
h( X ) ⊆ B subalgebră, h(X ) ⊆ h( X ) ⇒ h(X ) ⊆ h( X )
h−1(h(X )) ⊆ A subalgebr̆a, X ⊆ h−1(h(X ))⇒ X ⊆ h−1(h(X )) ⇒h(X ) ⊆ h(h−1(h(X ))) ⊆ h(X )
h(X ) ⊆ h( X ) csi h(X ) ⊆ h(X ) ⇒ h(X ) = h(X )
100
8/9/2019 ProgLog2011-2012
26/94
Algebre libere
(S , Σ) signatură multisortată, X mulţime de variabile
O algebră A este liber generată de X dacă
• X ⊆ A,
• oricare ar fi B o algebră şi f : X → B o funcţie există un unicmorfism f̃ : A → B cu f̃ s (x ) = f s (x ) oricare x ∈ X s , s ∈ S .
Observat ̧ii ∗ Dacă A1 şi A2 sunt liber generate de X , atunci A1 A2.∗ Dacă X ⊆ A şi A este liber generată de X , atunci X = A.
Invers nu este ı̂ntotdeauna a adevă rat.
T Σ este liber generată de mulţimea ∅.
101
Mult ̧imi de generatori liberi
(S , Σ) signatură multisortată,A-algebr̆a, X mulţime de variabile, X ⊆ A
Dacă A este liber generată de X , atunci X = A.
Spunem că X este mulţime de generatori liberi pentru A.
NAT = (S = {s }, Σ), Σ = {0 :→ nat , succ : nat → nat }Anat := N, A0 := 0, Asucc (x ) := x + 1• A este liber generată de ∅• {1} este mulţime de generatori pentru A• {1} nu este mulţime de generatori liberi pentru A
102
Exemple
STIVA = (S = {elem, stiva}, Σ)Σ = {0 :→ elem, empty :→ stiva, pop : stiva → stiva,
push : elem stiva → stiva, top : stiva → elem}
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.
Dacă P := ∅ atunci P elem = {0} şi P stiva = {0}∗.
A este liber generată de X , unde X elem := N şi X stiva := ∅.
103 104
8/9/2019 ProgLog2011-2012
27/94
Programare logic˘ a
Semantica termenilor
105
Mult ̧ime de variabile
(S , Σ) signatură multisortată
|Σ| :=
w ,s Σw ,s
|X | := s ∈S X s dacă X mulţime S -sortat̆aO mulţime de variabile este o mulţime S -sortată X a.̂ ı.:
X s ∩ X s = ∅ or. s = s
|X | ∩ |Σ| = ∅
simbolurile de variabile sunt distincte ı̂ntre ele şi sunt distincte desimbolurile de operaţii din Σ
106
Termeni cu variabile din X
(S , Σ) signatură, X mulţime de variabile
Mulţimea S -sortat̆a termenilor cu variabile din X , T Σ(X ), este ceamai mică mulţime de şiruri finite peste alfabetul
L =
s ∈S X s ∪
w ,s Σw ,s ∪ {(, )} ∪ {,}care verifică următoarele proprietăţ i:
(T1) X s ⊆ T Σ(X )s (T2) dc. σ :→ s , at. σ ∈ T Σ(X )s ,
(T3) dc. σ : s 1 · · · s n → s şi t i ∈ T Σ(X )s i or. i = 1, . . . , nat. σ(t1, . . . , tn) ∈ T Σ(X )s .
107
Algebra de termeni T Σ(X )
(S , Σ) signatură, X mulţime de variabile
Mulţimea termenilor T Σ(X ) = {T Σ(X )s }s ∈S este (S , Σ)-algebrăastfel:
pt. σ :→ s , operaţia corespunzătoare este T σ := σ
pt. σ : s 1 · · · s n → s , operaţia corespunzătoare esteT σ : T Σ(X )s 1 × · · · × T Σ(X )s n → T Σ(X )s T σ(t 1, . . . , t n) := σ(t1, . . . , tn)or. t 1 ∈ T Σ(X )s 1 , . . ., t n ∈ T Σ(X )s n
• T Σ(X ) algebra termenilor cu variabile din X • vom nota σ(t1, . . . , tn) := σ(t 1, . . . , t n)
108
8/9/2019 ProgLog2011-2012
28/94
Semantica termenilor
(S , Σ) signatură, X mulţime de variabile
Teorema 7 (Evaluarea termenilor ı̂n algebre).
Fie A o (S , Σ)-algebră. Orice funcţie e : X → A (evaluare,atribuire, interpretare)se extinde la un unic (S , Σ)-morfism
ẽ : T Σ(X ) → A.
Dem.
Definim ẽ(t ) prin inducţie pe termeni: or. x ∈ X s , ẽs (x ) := es (x ), or. σ :→ s , ẽs (σ) := Aσ or. σ : s 1 · · · s n → s , or. t 1 ∈ T Σ(X )s 1 , . . ., t n ∈ T Σ(X )s n
ẽs (σ(t 1, . . . , t n)) := Aσ(ẽs 1(t 1), . . . , ẽs n (t n))
Demonstrăm că ẽ : T Σ(X ) → A este morfism. Dacă f : T Σ(X ) → A morfism şi f |X = e atunci se
demonstrează prin inducţie pe termeni că f = ẽ. 109
Semantica expresiilor aritmetice
NATEXP = (S = {nat }, Σ), X = {x , y }
Σ = {0 :→ nat , s : nat → nat ,+ : nat nat → nat , ∗ : nat nat → nat }
T NATEXP (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 ))), . . .}
A = (Z4, 0, s , +, ∗) cu operaţiile obişnuite
e : {x , y } → Z4, e(x ) := 1, e(y ) := 3
ẽ(+(x, y)) = A+(e(x ), e(y )) = 1 + 3 = 0 (mod 4)ẽ(∗(s(x), s(s(0)))) = A∗(As (e(x )), As (As (A0))) =(1 + 1) ∗ (0 + 1 + 1) = 2 ∗ 2 = 0 (mod 4)
110
Exemple
STIVA = (S = {elem, stiva}, Σ)Σ = {0 :→ elem, empty :→ stiva, pop : stiva → stiva,
push : elem stiva → stiva, top : stiva → elem} 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.
STIVA-algebra B : B elem := {0}, B stiva := NB 0 := 0, B empty := 0, B push(0, n) := n + 1 or. n,B pop (0) := 0, B pop (n) := n − 1 pt. n ≥ 1,
B top (n) := 0 or. n.
111
Exemplu
X elem := {x , y }, X stiva := {s },
t := push(x, push(y, s)) ∈ T Σ(X )stiva
e : X → Ae(x ) := 5, e(y ) := 3, e(s ) := 6 7
ẽ(t ) = Apush(e(x ), Apush(e(y ), e(s ))) = 5 3 6 7
e : X → B e(x ) := 0, e(y ) := 0, e(s ) := 10
ẽ(t ) = B push(e(x ), B push(e(y ), e(s ))) =(10 + 1) + 1 = 12
112
8/9/2019 ProgLog2011-2012
29/94
Consecint ̧e
T Σ(X ) este (S , Σ)-algebră liber generată de X ı̂n clasa tuturor(S , Σ)-algebrelor.
o expresie este un element al unei algebre libere
X = ∅T Σ este (S , Σ)-algebră iniţial̆a.
A = T Σ(Y )O substituţie este o atribuire ν : X → T Σ(Y ).
Orice substituţie ν : X → T Σ(Y ) se extinde la un unicmorfism de (S , Σ)-algebre ν̃ : T Σ(X ) → T Σ(Y ).
113
Proprietăt ̧i
Propozit ̧ia 8.
Fie A o (S , Σ)-algebră. Dacă f : T Σ(X ) → A şi g : T Σ(X ) → A
sunt morfisme, atunci g = f ⇔ g |X = f |X
Dem. Presupunem că g s (x ) = f s (x ) or. s ∈ S , x ∈ X s .
Demonstram că g = f prin inducţie pe termeni pasul iniţial: dc. s ∈ S şi x ∈ X s at. g s (x ) = f s (x ) (ipoteză),
dc. σ :→ s ∈ Σ, at. g s (σ) = Aσ = f s (σ), pasul de inducţie: dc. σ : s 1 . . . s n → s ∈ Σ şi
t 1 ∈ T Σ(X )s 1 , . . ., t n ∈ T Σ(X )s n a.̂ıg s 1(t 1) = f s 1(t 1), · · · , g s n (t n) = f s n (t n) at.
g s (σ(t1, . . . , tn)) = Aσ(g s 1(t 1), · · · , g s n (t n)) =Aσ(f s 1(t 1), · · · , f s n (t n)) = f s (σ(t1, . . . , tn))
Conform principiului inductiei pe termeni,
g s (t ) = f s (t ) or. t ∈ T Σ(X )s , adică g = f . 114
Proprietăt ̧i
Propozit ̧ia 9.
X Y ⇔ T Σ
(X ) T Σ
(Y )
Dem. Fie u : X → Y o functie bijectiva. Din Teorema 7 rezult̆a că
există un unic morfism f : T Σ(X ) → T Σ(Y ) âı.f s (x ) = us (x ) or. s ∈ S , x ∈ X s ,
există un unic morfism g : T Σ(Y ) → T Σ(X ) âı.g s (y ) = u
−1s (y ) or. s ∈ S , y ∈ X s .
Observ̆am c̆a (f ; g )s (x ) = g s (f s (x )) = x or. s ∈ S , x ∈ X .Aplicand Propozitia 6, obţinem că f ; g = 1T Σ(X ).
Similar, g ; f = 1T Σ(Y ), deci T Σ(X ) T Σ(Y ).
115
Proprietăt ̧i
Propozit ̧ia 10.
Fie h : A → B morfism surjectiv .Or. f : T Σ(X ) → B morfism,ex. g : T Σ(X ) → A a. ı̂. g ; h = f
A h B
T Σ(X )
f
g
Dem. Dacă f : T Σ(X ) → B morfism, atuncior. s ∈ S , x ∈ X s ex. a ∈ As a.̂ı. hs (a) = f s (x ).Oricare s ∈ S , x ∈ X s , alegem a ∈ As a.̂ı. hs (a) = f s (x ) şi definimes (x ) := a. Atunci e : X → A este o evaluare şi .(ẽ; h)s (x ) = f s (x ) r. s ∈ S , x ∈ X s .
Din Teorema 7, ẽ; h = f , deci g := ẽ.
116
8/9/2019 ProgLog2011-2012
30/94
Definirea operat ̧iilor derivate
A o Σ-algebră, t ∈ T Σ(X )
Definim funcţia termen At : An → A prin
At (a1, . . . , an) := ẽ(t ), unde e(x i ) := ai or. i = 1, . . . , nAt este operaţie derivată pe A
Σ = {0, 1, ∨, ∧,− } signatura algebrelor Boole,X = {x , y }, t = x ∨ y ∈ T Σ(X )Dacă B este o algebră Boole, atunciB t (b 1, b 2) = b 1 → b 2 oricare b 1, b 2 ∈ B .
117
Semantica instruct ̧iunii de atribuire x:=e
X este mulţimea variabilelor, x ∈ X , t ∈ T Σ(X )
D este Σ-algebra datelor
o stare a memoriei este o funcţie e : X → D semantica unei instrucţiuni descrie modul ı̂n care instrucţiunea
modifică starile memoriei
Mem := {e : X → D | e funcţie}Sem(x := t ) : Mem → Mem
Sem(x := t )(e)(y ) :=
ẽ(t ) dacă y = x ,e(y ) dacă y = x .
118
119 120
8/9/2019 ProgLog2011-2012
31/94
Programare logic˘ a
Ecuaţii. Relaţia de satisfacere.
121
Ecuat ̧iile şi semantica lor
(S , Σ) signatură multisortată
O (S , Σ)-ecuaţie este formată dintr-o mulţime de variabile X şi din doi termeni t şi t de acelaşi sort din T Σ(X ).Vom nota o ecuaţie prin
(∀X )t ·
=s t .
Spunem că o (S , Σ)-algebră A satisface o ecuaţie (∀X )t ·=s t
(A este model al ecuaţiei) dacă ẽs (t ) = ẽs (t ) pentru orice
e : X → A. În acest caz, vom nota
A |= (∀X )t ·=s t
.
·= egalitate formală, = egalitate efectivă
122
Necesitatea cuantificării
S = {s , bool }, Σ := {T :→ bool , F :→ bool , g : s → bool }
T Σ,s = ∅, T Σ,bool = {T , F }
T Σ |= (∀∅)T ·=bool F
T Σ |= (∀X )T ·=bool F ,
unde X s := {x }, X bool := ∅
123
Ecuat ̧iile condit ̧ionate
O (S , Σ)-ecuaţie condiţionată este notată prin
(∀X )t ·=s t
if H .
şi este formată din:
o mulţime de variabile X ,
doi termeni de acelaşi sort t , t ∈ T Σ(X )s .
o mulţime H de ecuaţii u ·=s v , cu u ,v ∈ T Σ(X )s .
În practică H este finită H = {u 1·
=s 1 v 1, . . . , u n·
=s n v n}.Ecuaţiile din H sunt cuantificate cu X .
O ecuaţie (∀X )t ·=s t
este ecuaţie condiţionată ı̂n care mulţimea
condiţiilor H este vidă (∀X )t ·=s t if ∅.
124
8/9/2019 ProgLog2011-2012
32/94
Ecuat ̧iile condit ̧ionate
A (S , Σ)-algebră A, γ := (∀X )t ·=s t
if H
A satisface γ (A este model al lui γ ) dacă,
ẽs (u ) = ẽs (v ) or. u ·=s v ∈ H ⇒ ẽs (t ) = ẽs (t
).
pentru orice e : X → A.
Vom nota A |= (∀X )t ·=s t
if H .
A |= (∀X )t ·=s t
⇔ A |= (∀X )t ·=s t
if ∅
125
Exemplu
STIVA = (S , Σ), X elem := {E }, X stiva := {S , Q }
γ := (∀X )top (S ) ·=elem E if {S
·=stiva push(E , Q )}
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.
STIVA-algebra B : B elem := {0}, B stiva := NB 0 := 0, B empty := 0, B push(0, n) := n + 1 or. n,B pop (0) := 0, B pop (n) := n − 1 pt. n ≥ 1, B top (n) := 0 or. n.
A |= γ şi B |= γ
126
Exemplu
X elem := {E }, X stiva := {S , Q }
A |= (∀X )top (S ) ·=elem E if {S
·=stiva push(E , Q )}
Fie e : X → A evaluare a. ı̂. ẽstiva(S ) = ẽstiva(push(E , Q )).
Rezultă ẽstiva(S ) = Apush(ẽelem(E ), ẽstiva(Q ))
Notam n = ẽelem(E ), w := ẽstiva(S ), w := ẽstiva(Q ).
Rezulta w = nw şi
ẽelem(top (S )) = Atop (ẽstiva(S )) = Atop (w ) =Atop (nw
) = n = ẽelem(E )
127
Exemplu
STIVA = (S , Σ), X elem := {E }, X stiva := {S , Q }
γ := (∀X )top (S ) ·=elem E if {S
·=stiva push(E , Q )}
STIVA-algebra C : C elem := N, C stiva := N∗C 0 := 0, C empty := λ, C push(n, n1 · · · nk ) := n1 · · · nk n,C pop (λ) = C pop (n) := λ,C pop (n1n2 · · · nk ) := n2 · · · nk pt. k ≥ 2,C top (λ) := 0, C top (n1 · · · nk ) := n1 pt. k ≥ 1.
C |= γ e : X → C evaluarea definită prin
eelem(E ) = 2, estiva(Q ) = 3 4, estiva(S ) = 3 4 2
Atunci ẽstiva(S ) = ẽstiva(push(E , Q )),dar ẽelem(E ) = 2 = 3 = ẽelem(top (S )).
128
8/9/2019 ProgLog2011-2012
33/94
Programare logic˘ a
Specificaţii algebrice
129
Γ-algebre
Γ mulţime de ecuaţii condiţionate
O algebră A este Γ-algebr̆a (A este model pentru Γ)dacă A |= γ oricare γ ∈ Γ.
În 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. Notăm ϕ : B → A un izomorfism.”⇒”Fie e : X → B a.̂ı. ẽs (u ) = ẽs (v ) or. u
·=s v ∈ H .
Definim f : X → A prin f := e; ϕAtunci f̃ = ẽ; ϕ, deoarece f̃ |X = ( ẽ; ϕ)|X .
f̃ s (u ) = ϕs (ẽs (u )) = ϕs (ẽs (v )) = f̃ s (v ) or. u ·=s v ∈ H
Din ipoteză rezultă f̃ s (t ) = f̃ s (t ), i.e.
ϕs (ẽs (t )) = ϕs (ẽs (t )).
ϕ este injectiv, deci ẽs (t ) = ẽs (t ).
131
Specificat ̧ii
O specificaţie este un triplet (S , Σ, Γ), unde (S , Σ) este osignatură multisortată şi Γ este o mulţ ime de ecuaţiicondiţionate. Specificaţia (S , Σ, Γ) defineşte clasa modelelorAlg (S , Σ, Γ), care reprezint̆a semantica ei.
În Maude teoriile
fth ... endfth
au ca semantică Alg (S , Σ, Γ), unde S este mulţimeasorturilor, Σ este mulţimea simbolurilor de operaţii, Γ estemulţimea ecuaţiilor definite ı̂n modul, iar fiecare ecuaţiee q t = t ’ şi ceq t = t’ if Heste cuantificată de variabilele care apar ı̂n t şi t’.
132
8/9/2019 ProgLog2011-2012
34/94
Specificat ̧ii 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 .
e q ( - x ) + x = e .
eq x + (- x) = e .
endfth
133
Consecint ̧e semantice
(S , Σ, Γ) specificaţie, θ ecuaţie, Θ mulţime de ecuaţii
Ecuaţia θ este o consecinţă semantică a lui Γ dacă
A |= Γ implică A |= θ
pentru orice algebră A. În 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
θ1 := (∀{x , y , z })x ·= y if {x + z
·= y + z },
θ2 := (∀{x , y })x + y ·= y + x
Γ |= θ1, Γ |= θ2
135
Specificat ̧ii echivalente
Două specificaţii (S , Σ, Γ1) şi (S , Σ, Γ2) sunt echivalente dacădefinesc aceeaşi clasă de modele:
A |= Γ1 ⇔ A |= Γ2
Observat ̧ie
Fie Γ şi Θ mulţ imi de ecuaţii. Dacă Γ |= Θ atunci (S , Σ, Γ) şi(S , Σ, Γ ∪ Θ) sunt specificaţii echivalente.
136
8/9/2019 ProgLog2011-2012
35/94
Γ-algebra init ̧ială
(S , Σ, Γ) specificaţie
I Σ,Γ := {A | A iniţială ı̂n Alg (S , Σ, Γ)}
este un tip abstract de date.
I Σ,Γ reprezintă semantica unui modul funcţional ı̂n Maude
fmod ... endfm
unde S este mulţimea sorturilor, Σ este mulţimea simbolurilor deoperaţ ii, Γ este mulţimea ecuaţiilor definite ı̂n modul.Fiecare ecuaţiee q t = t ’ şi ceq t = t’ if Heste cuantificată de variabilele care apar ı̂n t şi t’ .
137
Specificat ̧ie corecta
(S , Σ) o signatură multisortată, A (S , Σ)-algebr̆a
O specificaţie (S , Σ, Γ) este adecvată pentru A dacă A este
Γ-algebră iniţ ială, i.e. A ∈ I Σ,Γ.
Exemplu
Determinaţi o specificaţie adecvată pentru A = (Z4, 0, succ ), undesucc (x ) := x + 1 (mod 4).
138
Continuare
fmod Z4 is
sort s .
o p 0 : - > s .op succ : s -> s .
v a r s 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 Γ-algebră iniţială dacă:
(a) A |= γ or. γ ∈ Γ, (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 )))) ·= x
Dacă X := {x } şi e : X → A, atunci
ẽ(succ (succ (succ (succ (x ))))) =Asucc (Asucc (Asucc (Asucc (e(x ))))) = e(x ) + 4 (mod 4)
= e(x ) = ẽ(x )
(b) Fie B o Γ-algebră.Existenţa: definim f : A → B prinf (0) := B 0, f (x + 1) := B succ (f (x )) pt. 0 ≤ x ≤ 2 .
f morfism: f (Asucc (x )) = f (x + 1) = B succ (f (x )) pt. 0 ≤ x ≤ 2.
Ramâne de demontrat f (Asucc (3)) = B succ (f (3)).
140
8/9/2019 ProgLog2011-2012
36/94
Continuare
(1) f (Asucc (3)) = f (0) = B 0
(2) B succ (f (3)) = B succ (B succ (f (2))) =B succ (B succ (B succ (B succ (B 0)))
Deoarece B |= (∀x )succ (succ (succ (succ (x )))) ·= x ,
pentru e
: X → B , e
(x ) := B 0 obţinemB succ (B succ (B succ (B succ (B 0)))) = ẽ
(succ (succ (succ (succ (x ))))) =ẽ(x ) = B 0
Din (1) şi (2) rezultă f (Asucc (3)) = B succ (f (3)).
Unicitatea: fie g : A → B un morfism;dem. că g (x ) = f (x ) prin inductie pt. i ∈ {0, 1, 2, 3}
g (0) = g (A0) = B 0 = f (0),g (x + 1) = g (Asucc (x )) = B succ (g (x )) = B succ (f (x )) =
f (Asucc (x )) = f (x + 1).141
Exercit ̧iu
Determinaţi un model inţial pentru specificaţia:
fmod NSET is
sorts nat nset .
op 0 : -> nat .op s : n at -> n at .
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
8/9/2019 ProgLog2011-2012
37/94
Programare logic˘ a
Congruenţe. Γ-algebra iniţială
145
Congruent ̧e
(S , Σ) signatură, A (S , Σ) algebră
O relaţie S -sortat̆a ≡= {≡s }s ∈S ⊆ A × A este congruenţadacă:
≡s ⊆ As × As echivalenţă or. s ∈ S , ≡ este compatibilă cu operaţiile
ai ≡s i b i or. i = 1, . . . , n ⇒ Aσ(a1, . . . , an) ≡s Aσ(b 1, . . . , b n)or. σ : s 1 . . . s n → s
146
Exemple
(S , Σ) signatură, A (S , Σ) algebră
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)
AUTOMAT -algebra B :B intrare = B stare = B iesire := NB s 0 := 0, B f (m, n) := m + n, B g (n) := n + 1≡ este congruenţă pe B , unde ≡intrare =≡stare =≡iesire :=≡k
147
Algebra cât
(S , Σ) signatură, A algebr̆a, ≡ congruenţ̆a pe A
[a]≡s := {a ∈ As | a ≡s a} (clasa lui a) As /≡s := {[a]≡s | a ∈ As } or. s ∈ S A/≡ := {As /≡s }s ∈S este (S , Σ)-algebră
(A/≡)σ := [Aσ] or. σ :→ s , (A/≡)σ([a1]≡s 1 , . . . , [an]≡s n ) := [Aσ(a1, . . . , an)]≡s
or. σ : s 1 . . . s n → s şi (a1, . . . , an) ∈ As 1 × · · · × As n [·]≡ : A → A/≡, a → [a]≡s or. a ∈ As este morfism.
[a]≡s = [b ]≡s ⇔ a ≡s b
148
8/9/2019 ProgLog2011-2012
38/94
Exemple
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. ≡elem:= N × N,
≡stiva:= {(w , w ) | (w , w ) ∈ N∗ × N∗, |w | = |w |}
≡= {≡elem, ≡stiva} congruenţă
A/≡ B , undeSTIVA-algebra B : B elem := {0}, B stiva := NB 0 := 0, B empty := 0, B push(0, n) := n + 1 or. n,B pop (0) := 0, B pop (n) := n − 1 pt. n ≥ 1, B top (n) := 0 or. n.
149
Ker (f )
(S , Σ) signatură, A şi B algebre, f : A → B morfism
Ker (f ) = {Ker (f s )}s ∈S , unde
Ker (f s ) := {(a, a
) ∈ As × As | f s (a) = f s (a
)} or. s ∈ S
Propozit ̧ia 12
(a) Ker (f ) este congruenţă pe A.
(b) Dacă ≡ congruenţ̆a pe A, atunci Ker ([·]≡) =≡.
Dem. exerciţiu
150
Proprietatea de universalitate
(S , Σ) signatură, A algebr̆a, ≡ congruenţ̆a pe A
Teorema 13 ( Proprietatea de universalitate a algebrei cˆ at)
Oricare ar fi B o algebră şi h : A → B un morfism a.ı̂. ≡⊆ Ker (h)există un unic morfism h : A/≡ → B a.̂ ı. [·]≡; h = h.
Dem. h : A → B , ≡⊆ Ker (h)
Existenţa: definim h s ([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: dc. σ :→ s ∈ Σ, at.
hs (A/e quiv σ) = hs ([Aσ]≡) = hs (Aσ) = B σ,
dc. σ : s 1 . . . s n → s ∈ Σ şia1 ∈ As 1 , . . ., an ∈ As n at.
hs (A≡σ([a1]≡, . . . , [an]≡)) = hs ([Aσ(a1, . . . , an)]≡) =hs (Aσ(a1, . . . , an)) == B σ(hs 1(a1), · · · , hs n (an)) =
B σ(hs 1([a1]≡), · · · , hs n ([an]≡))
Unicitatea: fie g : A/≡ → B a.̂ ı. [·]≡; g = h
g s ([a]s ) = hs (a) = hs ([a]≡s ) or. a ∈ As .
152
8/9/2019 ProgLog2011-2012
39/94
Consecint ̧e
Teorema 14 (Teoremă I de izomorfism)
Oricare f : A → B morfism, A/Ker (f ) f (A).
Dem. exerciţiu
Propozit ̧ia 15 Fie K o clasă de (S , Σ)-algebre. Dacă
≡K:=
{Ker (h) | h : T Σ → B ∈ K, h morfism},
atunci următoarele proprietăţi sunt adevărate:
≡K este congruenţ̆a pe T Σ,
or. B ∈ K ex. unic morfism h : T Σ/≡K → B .
Dem. Intersecţia unei familii arbitrare de congruenţe este
congruenţă (exerciţiu). 153
Continuare
Fie B ∈ K si h : T Σ → B unicul morfism.
Existenţa: deoarece ≡K⊆ Ker (h), din
Proprietatea de universalitate aalgebrei cât 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 verifică proprietateacare-l defineşte ı̂n mod unic pe h ; rezult̆a g = h.
154
Γ-algebre
(S , Σ, Γ) specificaţie,A algebră şi ≡ o congruenţ̆a pe A
Spunem că ≡ este este ı̂nchisă la substituţie dacă:CS(Γ,A)
or. (∀X )t ·=s t
if H ∈ Γ, or. e : X → A
ẽs (u ) ≡s ẽs (v ) or. u ·=s v ∈ H ⇒ ẽs (t ) ≡s ẽs (t
).
Propozit ̧ia 16
Dacă ≡ este o congruenţă pe A ı̂nchisă la substituţie atunciA/≡ |= Γ.
155
Continuare
Dem. Fie (∀X )t ·=s t
if H ∈ Γ şi f : T Σ(X ) → A/≡ a.̂ı.
f s (u ) = f s (v ) or. u ·
=s v ∈ H .[·]≡ : A → A/≡ morfism surjectiv ,f : T Σ(X ) → A/≡ morfism
Din Propoziţia 10, ex. ẽ : T Σ(X ) → Aa. ı̂. ẽ; [·]≡ = f
A[·]≡ A/≡
T Σ(X )
f
ẽ
Atunci ẽs (u ) ≡s ẽs (v ) or. u ·=s v ∈ H şi, deoarece ≡ este
ı̂nchisă la substituţie, obţinem ẽs (t ) ≡s ẽs (t ), adică f s (t ) = f s (t
).
156
C
8/9/2019 ProgLog2011-2012
40/94
Echivalent ̧a semantică
(S , Σ, Γ) specificaţie, A o (S , Σ)-algebr̆a
≡Γ,A:=
{Ker (h) | h : A → B morfism B |= Γ}echivalena̧ semantică pe A
A = T Σ notăm ≡Γ:=≡Γ,T Σ.
Propozit ̧ia 17
≡Γ,A este o congruenţă pe A ı̂nchisă la substituţie.
157
Continuare
Dem. Notăm ≡:=≡Γ,A
Fie (∀X )t ·=s t
if H ∈ Γ şi e : X → A a.̂ı.
ẽs
(u ) ≡s
ẽs
(v ) or. u
·
=s
v ∈ H .Rezultă (ẽs (u ), ẽs (v )) ∈≡⊆ Ker (h) or. h : A → B |= Γ, deci
h(ẽs (u )) = h(ẽs (v )) or. u ·=s v ∈ H .
Fie B |= Γ i̧ h : A → B . Atunci ẽ; h : T Σ(X ) → B şi
h(ẽs (u )) = h(ẽs (v )) or. u ·=s v ∈ H , deci h(ẽs (t )) = h(ẽs (t
)).Rezultă (ẽs (t ), ẽs (t
)) ∈ Ker (h) or. h : A → B |= Γ, deci(ẽs (t ), ẽs (t
)) ∈≡, i.e. ẽs (t ) ≡s ẽs (t ).
158
Γ-algebra init ̧ială
(S , Σ, Γ) specificaţie
Definim pe T Σ congruenţa semantică≡Γ:=
{Ker (f ) | f : T Σ → A, A |= Γ},care este ı̂nchisă la substituţie cf. Propoziţiei 17.
T Σ/≡Γ |= Γ cf. Propoziţiei 16.
≡Γ=≡K, unde K = Alg (S , Σ, Γ)or. B |= Γ ex. unic morfism f : T Σ/≡Γ → B cf. Propoziţiei 15.
Teoremă 18.
T Σ/≡Γ este Γ-algebră iniţial̆a.
159
ADT
(S , Σ, Γ) specificaţie
I Σ,Γ := {A | A iniţială ı̂n Alg (S , Σ, Γ)}este un tip abstract de date.
Un modul funcţional fmod ... endfm ı̂n Maude defineşte tipulabstract de date I Σ,Γ şi construieţ e efectiv algebra T Σ/≡Γ ,unde S este mulţimea sorturilor, Σ este mulţimea simbolurilor deoperaţ ii, Γ este mulţimea ecuaţiilor definite ı̂n modul. Fiecareecuaţiee q t = t ’ şi ceq t = t’ if Heste cuantificată de variabilele care apar ı̂n t şi t’ .
160
C i
8/9/2019 ProgLog2011-2012
41/94
Consecint ̧e
(S , Σ, Γ) specificaţie, A algebr̆a, hA : T Σ → A unicul morfism
Teoremă
Sunt echivalente: A este Γ-algebră iniţială A verifică următoarele proprietăţ i:
No Junk: hA este surjectiv No Confusion: hAs (t 1) = hAs (t 2) ⇔ Γ |= (∀∅)t 1
·=s t 2
or. t 1, t 2 ∈ T Σ,s
161 162
163 164
P l i ˘ D di i
8/9/2019 ProgLog2011-2012
42/94
Programare logic˘ a
Teorema constantelorDemonstraţii prin inducţie
165
Demonstrarea ec. condit ̧ionate
(S , Σ) signatura, X mulţime de variabileΓ mulţime de ecuaţii condiţionate
Γ?
|= (∀X )t ·=s t
if H
Propozit ̧ia 19
(a) Dacă Γ |= (∀X )t ·=s t
if H atunci
Γ
{(∀X )u ·=s v | u
·=s v ∈ H } |= (∀X )t
·=s t
.
(b) Implicaţia inversă nu este adevărtă ı̂n general .
(c) Dacă Γ
{(∀∅)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 } şi e : X → A
o evaluare. Dar A |= (∀X )u ·=s v or. u
·=s v ∈ H , deci
ẽs (u ) = ẽs (v ) or. u ·=s v ∈ H . Deoarece A |= Γ, din ipoteză,
A |= (∀X )t ·
=s t if H . Deoarec e : X → A este o evaluare a.̂ı.ẽs (u ) = ẽs (v ) or. u
·=s v ∈ H , rezultă ẽs (t ) = ẽs (t
).
(b) Implicaţia inversă nu este ı̂n general adevărată.S = {s }, Σ = {0 :→ s }, X = {x , y }
{(∀X )x ·= 0} |= (∀X )y
·= 0 este adevărată, dar
|= (∀X )y ·= 0 if {x
·= 0}.
(b) Fie A |= Γ, ẽ : T Σ → A unicul morfism. Dacă ẽs (u ) = ẽs (v )
or. u ·=s v ∈ H , atunci A |= Γ
{(∀∅)u
·=s v | u
·=s v ∈ H }. Din
ipoteză, obţinem A |= (∀∅)t ·=s t
, deci ẽs (t ) = ẽs (t ). Am
demonstrat ca dacă unicul morfism ẽ : T Σ → A verificăẽs (u ) = ẽs (v ) or. u
·=s v ∈ H , atunci ẽs (t ) = ẽs (t
).167
Σ(X )
(S , Σ) signatură, X mulţime de variabile
mulţimea X poate fi privită ca o signatură care are numaioperaţii constante:variabila x ∈ X s devine operaţia constantă c x :→ s
Σ(X ) := (Σ(X )w ,s )w ∈S ∗,s ∈S Σ(X )w ,s = Σw ,s pentru w = λ Σ(X )λ,s = Σλ,s ∪ {c x |x ∈ X s }
168
8/9/2019 ProgLog2011-2012
43/94
D t tii i i d ti ( + ) ( ) + ( )
8/9/2019 ProgLog2011-2012
44/94
Demonstrat ̧ii prin induct ̧ie
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 .
e q x + s y = s ( x + y ) .
eq x * 0 = 0 .
e q 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
r e d 0 * ( c y + c z ) = = 0 * c y + 0 * c z .
fmod IND is
including IND0 .
op cx : -> MyNat .
*** ipoteza inductie
e q c x * ( c y + c z ) = c x * c y + c x * c z .
endfm
*** pasul de inductie
r e d s c x * ( c y + c z ) = = s c x * c y + s c x * c z .
174
Demonstrat ̧ii prin induct ̧ie
==========================================
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 }
. În exemplul anterior,Σ = {0 :→ MyNat , s : MyNat → MyNat ,
+ : MyNat MyNat → MyNat , ∗ : MyNat MyNat → MyNat }dar ı̂n inductıa sructurală am folosit numaiΣc = {0 :→ MyNat , s : MyNat → MyNat }.
Fie Σ o signatură (monosortată) şi A o Σ-algebră . O subsignaturăCons Σ ⊆ Σ se numeşte signatură de constructori p entru A dacăunicul morfism h : T Cons Σ → A este surjectiv.
Dacă P = (Σ, Γ) este o prezentare, notăm T P = T Σ/≡Γ . AtunciCons Σ se numeşte signatură de constructori pentru P dacă estesignatură de constructori pentru T
P .
176
Constructori S {s}
8/9/2019 ProgLog2011-2012
45/94
Constructori S = {s }
.P = (Σ, Γ) o prezentare, Cons Σ signatură de constructoriT P := T Σ/≡Γt ∈ T Σ, [t ] := [t ]≡Γ
Teorema (Demonstrat ̧ii prin induct ̧ie)∗
Fie Q o proprietate a elementelor lui T P a .̂ı. următoarele condiţ iisunt satisfăcute:
pasul iniţial:Q([σ]) = true or. σ ∈ Cons Σλ,s
pasul de inducţie:dacă t 1, . . ., t n ∈ T Σs şi Q([t 1]) = · · · = Q([t n]) = true atunciQ([σ(t1, . . . , tn)]) = true or. σ ∈ Cons Σs n,s .
Atunci Q([t ]) = true oricare [t ] ∈ T P .
177 178
179 180
Programare logică Regulile deductiei ecuationale
8/9/2019 ProgLog2011-2012
46/94
Programare logic a
Sintaxa logicii ecuaţionale
181
Regulile deduct ̧iei ecuat ̧ionale
(S , Σ) signatură, X ̧si Y mulţimi de variabileΓ mulţime de ecuaţii (necondiţionate)
R(∀X )t
·=s t
S (∀X )t 1
·=s t 2
(∀X )t 2 ·=s t 1
T (∀X )t 1
·=s t 2, (∀X )t 2
·=s t 3
(∀X )t 1·
=s t 3
CΣ(∀X )t 1
·=s 1 t
1, . . . , (∀X )t n
·=s n t
n
(∀X )σ(t 1, . . . , t n) ·=s σ(t 1, . . . , t
n)
σ : s 1 · · · s n → s
SubΓ(∀X )θ̃(t )
·=s θ̃(t )
unde
(∀Y )t ·=s t
∈ Γ , θ : Y → T Σ(X )
182
Deduct ̧ia sintactică
Fie Γ o mulţime de ecuaţii, numite axiome sau ipoteze. Spunem că
ecuaţia := (∀X )t
·
=s t
se deduce sintactic din Γ dac̆a exist̆a osecvenţă de ecuaţii 1, . . ., n a. ı̂.
n = şi
pentru orice i ∈ {1, . . . , n} i ∈ Γ sau i se obţine din ecuaţiile1, . . ., i−1 aplicând una din regulile R, S, T, CΣ, SubΓ.
În acest caz scriem Γ şi spunem c̆a este deductibil ă(sintactic), demonstrabilă, derivabil ă din Γ. Secvenţa1, . . ., n = este o demonstraţie 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 +�