Documente Academic
Documente Profesional
Documente Cultură
Ioana Leustean
http://moodle.fmi.unibuc.ro/course/view.php?id=186
1
Cont inutul cursului
Introducere in MAUDE
Semantica termenilor
Specicat ii algebrice
Rescrierea termenilor
Este un interpretor.
protecting
se foloseste atunci cand datele denite in modulul important
nu sunt afectate de operatiile dau ecuatiile noului modul: nu
se construiesc date noi pe sorturi vechi (no junk) si nu sunt
identicate date care in modulul initial erau diferite (no
confusion)
extending
permite aparitia unor date noi pe sorturile vechi (junk) dar
nu permite identicarea datelor care in modulul initial erau
diferite (no confusion)
including
nu 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 denite cu eq sunt transformate in reguli de rescriere.
Cele doua ecuatii care denesc asociativitatea duc la neterminarea
rescrierii, deci ele nu pot adaugate in sectiunea eq. Efectul
atributului [assoc] este faptul ca rescrierea se face pe clase de
termeni modulo asociativitate. In mod asemanator, atributul
[comm] se foloseste pentru a indica faptul ca o operatie este
comutativa.
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.
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 .
eq L ; nil = L .
endfm
Reprezentarea matematica a unui modul este o
specicatie 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 specicat ie; modelul
matematic al unei specicat ii este o algebra de termeni; o
execut ie 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 deneste 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 deneste
k0
N
k
(secvent ele ordonate nite 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 deneste 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
Observat i suprancarcarea operat 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 .
eq (- x) + x = e .
eq x + (- x) = e .
eq - - x = x .
eq - e = e .
eq - (x + y) = (- y) + (- x) .
endfm
26
TRS canonic
O ecuat ie l = r se transforma, prin orientare de la stanga la
dreapta, ntr-o regula de rescriere l r . Ecuat iile modulului
GRUP determina astfel un sistem de rescriere canonic:
t si t
2
t.
Maude-ul poate 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 _<_ : Nat Nat -> Bool .
...
endfm
30
Exemplul 6
fmod MYNATLIST2 is
protecting MYNATLIST .
op _<_ : Nat Nat -> 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 deneste 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 deneste liste de numere naturale ordonate
crescator.
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 STACKX 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
Instant iind modulul parametru X cu modulul predenit NAT
denim stivele de numere naturale.
view Inst from TRIV to NAT is
sort Elt to Nat .
endv
fmod STACKNAT is
protecting STACK{Inst} .
endfm
34
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 specicat ie bazat pe logica
ecuat ionala. Un program este o colect ie de module. Execut ia este
o rescriere. Cateva din caracteristicile acestui limbaj sunt:
modularizare si parametrizare,
extensibilitate,
sS
.
Daca A = A
s
sS
si B = B
s
sS
atunci
=
s
sS
,
s
= or. s S,
A B A
s
B
s
or. s S,
A B = A
s
B
s
sS
, A B = A
s
B
s
sS
,
A B = A
s
B
s
sS
.
Exemplu: S = nat, bool , A = A
nat
, A
bool
,
A
nat
= N, A
bool
= T, F
sorturi=tipuri, elemente de sort s= date de tip s
38
Funct ii S-sortate
A = A
s
sS
, B = B
s
sS
, C = C
s
sS
sS
, unde f
s
: A
s
B
s
oricare s S.
Daca f : A B si g : B C, denim
f ; g : A C, f ; g = f
s
; g
s
sS
f
s
; g
s
: A
s
C
s
,
f
s
; g
s
(a) := g
s
(f
s
(a)) or. s S, a A
s
1
A
: A A, 1
A
= 1
As
sS
f ; 1
B
= f , 1
A
; f = f or. f : A B
39
Funct ii S-sortate
A = A
s
sS
, B = B
s
sS
,
s
1
, , s
n
,s S
s
1
, , s
n
sorturile argumentelor
s sortul rezultatului
< s
1
s
n
, s > aritatea operat iei
= (
w,s
)
wS
,sS
w,s
: w S
w = s
1
s
n
S
:=
n0
S
n
S
0
:= , S
n
:= s
1
s
n
[s
i
S or. i
= (
w,s
)
wS
,sS
w,s
: w s
w = s
1
s
n
S
BOOL = (S, )
S = bool
= T : bool , F : bool ,
: bool bool ,
: bool bool bool ,
: bool bool bool
NAT = (S, )
S = nat
NATBOOL = (S, )
S = bool , nat
= (
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
STIVA = (S, )
S = elem, stiva
AUTOMAT = (S, )
= s0 : stare,
f : intrare stare stare,
g : stare iesire
GRAF = (S, )
S = arc, nod
condit ia de monotonie
w1,s1
w2,s2
, w
1
w
2
s
1
s
2
Exemplu:
S = elem, stiva, nvstiva, elem stiva, nvstiva stiva
= empty : stiva, push : elem stiva nvstiva,
pop : nvstiva stiva, top : nvstiva elem.
), unde
A
S
= A
s
sS
(mult imea suport)
= A
daca : s atunci A
A
s
daca : s
1
s
n
s atunci A
: A
s1
A
sn
A
s
A = (A
S
, A
BOOL = (S = bool , )
= T : bool , F : bool , : bool bool ,
: bool bool bool , : bool bool bool
BOOL-algebra A:
A
bool
:= 0, 1
A
T
:= 1, A
F
:= 0, A
(x) := 1 x,
A
(x, y) := min(x, y)
BOOL-algebra B:
B
bool
:= T(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:
A
nat
:= N
A
0
:= 0, A
succ
(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
) := 2
n+1
50
Exemple
STIVA-algebra A: A
elem
:= N, A
stiva
:= N
A
0
:= 0, A
empty
:= , A
push
(n, n
1
n
k
) := n n
1
n
k
,
A
pop
() = A
pop
(n) := ,
A
pop
(n
1
n
2
n
k
) := n
2
n
k
pt. k 2,
A
top
() := 0, A
top
(n
1
n
k
) := n
1
pt. k 1.
STIVA-algebra B: B
elem
:= 0, B
stiva
:= N
B
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-algebra A:
A
intrare
= x, y, A
stare
= s0, s1, A
iesire
:= T, F
A
s0
:= s0, A
g
(s0) := F, A
g
(s1) := T,
A
f
(x, s0) := s0, A
f
(y, s0) := s1,
A
f
(x, s1) := s0, A
f
(y, s1) := s1
AUTOMAT-algebra B:
B
intrare
= B
stare
= B
iesire
:= N
B
s0
:= 0, B
f
(m, n) := m + n, B
g
(n) := n + 1
52
Algebre ordonat-sortate
(S, , ) signatura ordonat-sortata
O algebra ordonat-sortata de tipul (S, , ) este o (S, )-algebra
(A
S
, A
s
1
s
2
A
s1
A
s2
w1,s1
w2,s2
, w
1
w
2
A
w2,s2
(x) = A
w1,s1
(x) oricare x A
w1
.
w,s
w,s
[X[ :=
sS
X
s
daca X mult ime S-sortata
O mult ime de variabile este o mult ime S-sortata X a..:
X
s
X
s
= or. s ,= s
t
[X[ [[ =
simbolurile de variabile sunt distincte ntre ele si sunt distincte de
simbolurile de operat ii din
54
Termeni (expresii, cuvinte)
(S, ) signatura, X mult ime de variabile
Mult imea S-sortata termenilor cu variabile din X, T
sS
X
s
w,s
w,s
(, ) ,
care verica urmatoarele proprietat i:
(T1) X
s
T
(X)
s
(X)
s
,
(T3) dc. : s
1
s
n
s si t
i
T
(X)
s
i
or. i = 1, . . . , n
at. (t
1
, . . . , t
n
) T
(X)
s
.
Var (t) := mult imea variabilelor care apar n t T
55
Termeni fara variabile (ground terms)
(S, ) signatura multisortata
Mult imea S-sortata termenilor fara variabile, T
w,s
w,s
(, ) ,
care verica urmatoarele proprietat i:
(T3) dc. : s
1
s
n
s si t
i
T
,s
i
or. i = 1, . . . , n
at. (t
1
, . . . , t
n
) T
,s
.
T
= T
()
56
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
(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), . . .
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)), . . .
NATEXP = (S = nat, )
T
NATEXP
= 0, s(0), s(s(0)), . . .
+(0, 0), (0, +(s(0), 0)), (s(0), s(s(0))), . . .
T
NATEXP
este mult imea expresiilor aritmetice peste N.
60
Induct ia pe termeni
(S, ) signatura multisortata, X mult ime de variabile
Fie P o proprietate a.. urmatoarele condit ii sunt satisfacute:
(X)
s1
, . . ., t
n
T
(X)
sn
si
P(t
1
) = = P(t
n
) = true atunci
P((t
1
, . . . , t
n
)) = true or. : s
1
. . . s
n
s.
Atunci P(t) = true oricare t T
(X).
61
Algebra termenilor
Algebra termenilor
(S, ) signatura, X mult ime de variabile
Mult imea termenilor T
(X) = T
(X)
s
sS
este (S, )-algebra
cu operat iile denite astfel:
:=
pt. : s
1
s
n
s, operat ia corespunzatoare este
T
: T
(X)
s1
T
(X)
sn
T
(X)
s
T
(t
1
, . . . , t
n
) := (t
1
, . . . , t
n
)
or. t
1
T
(X)
s1
, . . ., t
n
T
(X)
sn
T
NATEXP = (S = nat, )
T
0
:= 0,
T
s
(t) := s(t),
T
+
(t
1
, t
2
) := +(t
1
, t
2
)
(t
1
, t
2
) := (t
1
, t
2
)
:= , B
e
:= 0, B
:= +)
O funct ie f : A B este morsm de monoizi daca:
f (1) = 0 f (A
e
) = 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
Morsme
(A
S
, A
), (B
S
, B
) (S, )-algebre
Un morsm de (S, )-algebre ((S, )-morsm) este o funct ie
S-sortata f : A B care verica condit iile de compatibilitate:
f
s
(A
) = (B
) oricare : s,
f
s
(A
(a
1
, . . . , a
n
)) = B
(f
s1
(a
1
), . . . , f
sn
(a
n
))
or. : s
1
s
n
s, or. (a
1
, . . . , a
n
) A
s1
A
sn
.
A
s1
A
sn
A
A
s
f
s1
. . . f
sn
f
s
B
s1
B
sn
B
B
s
Observat ie
1
A
: A A este morsm or. A (S, )-algebra.
67
Exemplu
NAT-algebra A:
A
nat
:= N, A
0
:= 0, A
succ
(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 morsm de NAT-algebre
STIVA-algebra A: A
elem
:= N, A
stiva
:= N
A
0
:= 0, A
empty
:= , A
push
(n, n
1
n
k
) := n n
1
n
k
,
A
pop
() = A
pop
(n) := ,
A
pop
(n
1
n
2
n
k
) := n
2
n
k
pt. k 2,
A
top
() := 0, A
top
(n
1
n
k
) := n
1
pt. k 1.
STIVA-algebra B: B
elem
:= 0, B
stiva
:= N
B
0
:= 0, B
empty
:= 0, B
push
(0, n) := n + 1 or. n,
B
pop
(0) := 0, A
pop
(n) := n 1 pt. n 1,
B
top
(n) := 0 or. n.
69
Exemple
STIVA-algebra A = (A
elem
= N, A
stiva
= 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
(n
1
n
k
) := 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 si g sunt morsme de STIVA-algebre
70
Morsme de mpo
Observat ie.
Mult imile part ial ordonate se pot reprezenta ca (S, )-algebre,
S := elem, bool ,
:= : elem elem bool , T : bool , F : bool .
(x, y) = T x y
: s
(f ; g)
s
(A
) = g
s
(f
s
(A
)) = g
s
(B
) = C
: s
1
s
n
s , (a
1
, . . . , a
n
) A
s1
A
sn
(f ; g)
s
(A
(a
1
, . . . , a
n
)) = g
s
(f
s
(A
(a
1
, . . . , a
n
))) =
g
s
(B
(f
s1
(a
1
), . . . , f
sn
(a
n
))) =C
(g
s1
(f
s1
(a
1
)), . . . , g
sn
(f
sn
(a
n
)))
= C
((g; f )
s1
(a
1
), . . . , (g; f )
sn
(a
n
)). qed
72
Proprietat i
Teorema 2.
Exista un unic morsm f : T
(f
s1
(t
1
), , f
sn
(t
n
))
Conform principiului inductiei pe termeni,
f
s
(t) este denita or. t T
.
73
Continuare
Demonstram ca f este morsm.
dc. : s , at. f
s
(T
) = f
s
() = B
dc. : s
1
. . . s
n
s si
t
1
T
s1
, . . ., t
n
T
sn
at.
f
s
(T
(t
1
, . . . , t
n
)) = f
s
((t
1
, . . . , t
n
))
= B
(f
s1
(t
1
), , f
sn
(t
n
))
74
Continuare
Unicitatea. Fie g : T
B un morsm.
Demonstram ca g = f prin induct ie pe termeni
(P(t) = dc. t T
s
at. g
s
(t) si f
s
(t) sunt egale).
= f
s
(),
(g
s1
(t
1
), , g
sn
(t
n
)) =
B
(f
s1
(t
1
), , f
sn
(t
n
)) = f
s
((t
1
, . . . , t
n
))
Conform principiului inductiei pe termeni,
g
s
(t) = f
s
(t) or. t T
s
, adica g = f . qed
75
Exemplu
(S, ) signatura multisortata
D = (D
S
, D
), D
s
:= N or. s S
daca : s atunci D
:= 0,
daca : 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 morsm
Ce reprezinta valoarea f
D
(t) pentru un termen t?
76
Termeni ca arbori
Un termen t poat reprezentat ca un arbore arb(t) astfel:
T
s
arb() :=
t = (t
1
, . . . , t
n
)
arb(t) :=
arb(t
1
) arb(t
n
)
Pentru orice t valoarea f
D
(t) este adancimea arborelui arb(t).
77
Izomorsme
Un (S, )-morsm f : A B este izomorsm daca exista un
morsm g : B A a.. f ; g = 1
A
si g; f = 1
B
.
Propozit ia 3
Un morsm f : A B este izomorsm daca si numai daca este
funct ie bijectiva, adica f
s
: A
s
B
s
este biject ie oricare s S.
Dem. Revine la a demonstra ca implicat ia:
f morsm si biject ie f
1
morsm.
78
Continuare
Demonstram ca f
1
: B A este morsm.
dc. : s , at. f
s
(A
) = B
, deci f
1
s
(B
) = A
dc. : s
1
. . . s
n
s si
b
1
B
s1
, . . ., b
n
B
sn
at.
ex. a
1
A
s1
, . . ., a
n
A
sn
a..
f
s1
(a
1
) = b
1
, . . ., f
sn
(a
n
) = b
n
si
f
s
(A
(a
1
, . . . , a
n
)) = B
(f
s1
(a
1
), . . . , f
sn
(a
n
)) = B
(b
1
, . . . , b
n
)
Atunci f
s
1
(B
(b
1
, . . . , b
n
)) = A
(a
1
, . . . , a
n
) =
A
(f
s1
1
(b
1
), . . . , f
sn
1
(b
n
)). qed
79
Izomorsme 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
f : A B
f (00) = x
1
, f (01) = x
2
, f (10) = x
3
, f (11) = x
4
este funct ie bijectiva si crescatoare
A , B
80
Izomorsme
Spunem ca algebrele A = (A
S
, A
) si B = (B
S
, B
) sunt izomorfe
daca exista un izomorsm f : A B.
In acest caz notam A B.
A A (1
A
este izomorsm)
A B B A
A B, B C A C
Relat ia de izomorsm este o relat ie de echivalent a (reexiva,
simetrica si tranzitiva).
Observat ie.
A B A
s
B
s
oricare s S
81
Exemple
NAT-algebra A: A
nat
= N, A
0
:= 0, A
succ
(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
) := 2
n+1
A , B
A C
f : A C, f (n) := 2
n
este un NAT-izomorsm.
82
Exemple
BOOL = (S = bool , )
= T : bool , F : bool , : bool bool ,
: bool bool bool , : bool bool bool
A
bool
:= 0, 1
A
T
:= 1, A
F
:= 0, A
(x) := 1 x,
A
(x, y) := min(x, y)
B
bool
:= T(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 funct ie
C
T
(n) := 1, C
F
(n) := 0 or. n N
C
(t
1
, t
2
)(n) := max(t
1
(n), t
2
(n)) or. t
1
, t
2
C
bool
, n N
C
(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 T(N)
f (Y)(n) = 1 daca n Y, f (Y)(n) = 0 daca n , Y
f este BOOL-izomorsm
84
Exemple
STIVA-algebra A = (A
elem
= N, A
stiva
= N
, . . .)
STIVA-algebra B = (B
elem
= 0, B
stiva
:= N, . . .)
A , B
85
Exemple
STIVA-algebra A: A
elem
:= N, A
stiva
:= N
A
0
:= 0,
A
empty
:= , A
push
(n, n
1
n
k
) := n n
1
n
k
,
A
pop
() = A
pop
(n) := ,
A
pop
(n
1
n
2
n
k
) := n
2
n
k
pt. k 2,
A
top
() := 0, A
top
(n
1
n
k
) := n
1
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
k1
x
k
) := x
1
x
k1
pt. k 2,
C
top
() := 0, C
top
(x
1
x
k
) := x
k
pt. k 1.
86
Exemple
STIVA-algebra A: A
elem
:= N, A
stiva
:= N
STIVA-algebra C: C
elem
:= Z, C
stiva
:= Z
f : A C, f = (f
elem
: N Z, f
stiva
: N
)
f
elem
(2k) := k, f
elem
(2k + 1) := k 1 pt. k N,
f
stiva
(n
1
n
k
) := f
elem
(n
k
) f
elem
(n
1
) pt. n
1
n
k
N
.
f este STIVA-izomorsm
O algebra A = (A
S
, A
(b) A
1
si A
2
init iale n / A
1
A
2
.
90
Continuare
Dem. (a) I init iala n /, A / si
A
: A I izomorsm
Fie B / si f
B
: I B unicul morsm. Demonstram ca exista un
unic morsm h : A B.
Existent a. h :=
A
; f
B
: A B mosm
J
(S,)
= I [ I (S, ) -algebra init iala
este un tip abstract de date si T
J
(S,)
.
Un modul funct ional n Maude (care cont ine numai declarat ii
de sorturi si operat ii) deneste un astfel de tip abstract de
date 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 daca
B
s
or. : s,
(b
1
, . . . , b
n
) B
s
or. : s
1
s
n
s,
or. (b
1
, . . . , b
n
) B
s1
B
sn
.
Daca B este parte stabila a lui A atunci
(B
S
= B, B
), unde
:= A
or. : s,
(b
1
, . . . , b
n
) := A
(b
1
, . . . , b
n
) or. : s
1
s
n
s,
or. (b
1
, . . . , b
n
) B
s1
B
sn
.
94
Exemple
BOOL-algebra B:
B
bool
:= T(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 subalgebra.
B
2
= , N n, N n
este subalgebra (n N xat).
95
Exemple
AUTOMAT-algebra A
A
intrare
= x, y, A
stare
= s0, s1, A
iesire
:= T, F
A
s0
:= s0, A
g
(s0) := F, A
g
(s1) := T,
A
f
(x, s0) := s0, A
f
(y, s0) := s1,
A
f
(x, s1) := s0, A
f
(y, s1) := s1
P = P
intrare
:= x, P
stare
:= s0, P
iesire
:= F
este subalgebra A
96
Mult imi de generatori
(S, ) signatura multisortata,
A-algebra, X mult ime, X A
T := B A [B subalgebra, X B
A T, deci T ,=
B
i
i I
T implica
i I
B
i
T
X =
B [ B T
X
0
:= X,
X
n+1,s
:= X
n,s
A
[ : s A
(a
1
, . . . , a
n
) [
: s
1
. . . s
n
s, (a
1
, . . . , a
n
) X
n,s1
X
n,sn
.
Propozit ia 5. X =
n
X
n
.
Dem: va adaugata!
98
Proprietat i
h : A B funct ie
h
1
: T(B) T(A), h
1
(Y) := a A[h(a) Y
imaginea inversa
Propozit ia 6.
Fie h : A B morsm.
(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 subalgebra h( X ) B subalgebra
h( X ) B subalgebra, h(X) h( X ) h(X) h( X )
h
1
(h(X)) A subalgebra, 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
Algebre libere
(S, ) signatura multisortata, X mult ime de variabile
O algebra A este liber generata de X daca
X A,
oricare ar B o algebra si f : X B o funct ie exista un unic
morsm
f : A B cu
f
s
(x) = f
s
(x) oricare x X
s
, s S.
Observat ii
Daca A
1
si A
2
sunt liber generate de X, atunci A
1
A
2
.
STIVA-algebra A: A
elem
:= N, A
stiva
:= N
A
0
:= 0, A
empty
:= , A
push
(n, n
1
n
k
) := n n
1
n
k
,
A
pop
() = A
pop
(n) := ,
A
pop
(n
1
n
2
n
k
) := n
2
n
k
pt. k 2,
A
top
() := 0, A
top
(n
1
n
k
) := n
1
pt. k 1.
Daca P := atunci P
elem
= 0 si P
stiva
= 0
w,s
w,s
[X[ :=
sS
X
s
daca X mult ime S-sortata
O mult ime de variabile este o mult ime S-sortata X a..:
X
s
X
s
= or. s ,= s
t
[X[ [[ =
simbolurile de variabile sunt distincte ntre ele si sunt distincte de
simbolurile de operat ii din
106
Termeni cu variabile din X
(S, ) signatura, X mult ime de variabile
Mult imea S-sortata termenilor cu variabile din X, T
sS
X
s
w,s
w,s
(, ) ,
care verica urmatoarele proprietat i:
(T1) X
s
T
(X)
s
(X)
s
,
(T3) dc. : s
1
s
n
s si t
i
T
(X)
s
i
or. i = 1, . . . , n
at. (t
1
, . . . , t
n
) T
(X)
s
.
107
Algebra de termeni T
(X)
(S, ) signatura, X mult ime de variabile
Mult imea termenilor T
(X) = T
(X)
s
sS
este (S, )-algebra
astfel:
:=
pt. : s
1
s
n
s, operat ia corespunzatoare este
T
: T
(X)
s1
T
(X)
sn
T
(X)
s
T
(t
1
, . . . , t
n
) := (t
1
, . . . , t
n
)
or. t
1
T
(X)
s1
, . . ., t
n
T
(X)
sn
T
(X) A.
Dem.
or. x X
s
, e
s
(x) := e
s
(x),
or. : s, e
s
() := A
or. : s
1
s
n
s, or. t
1
T
(X)
s1
, . . ., t
n
T
(X)
sn
e
s
((t
1
, . . . , t
n
)) := A
(e
s1
(t
1
), . . . , e
sn
(t
n
))
Demonstram ca e : T
Daca f : T
(X) A morsm si f [
X
= e atunci se
demonstreaza prin induct ie pe termeni ca f = e.
109
Semantica expresiilor aritmetice
NATEXP = (S = nat, ), X = x, y
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 = (Z
4
, 0, s, +, ) cu operat iile obisnuite
e : x, y Z
4
, e(x) := 1, e(y) := 3
e(+(x, y)) = A
+
(e(x), e(y)) = 1 + 3 = 0 (mod 4)
e((s(x), s(s(0)))) = A
(A
s
(e(x)), A
s
(A
s
(A
0
))) =
(1 + 1) (0 + 1 + 1) = 2 2 = 0 (mod 4)
110
Exemple
STIVA-algebra A: A
elem
:= N, A
stiva
:= N
A
0
:= 0, A
empty
:= , A
push
(n, n
1
n
k
) := n n
1
n
k
,
A
pop
() = A
pop
(n) := ,
A
pop
(n
1
n
2
n
k
) := n
2
n
k
pt. k 2,
A
top
() := 0, A
top
(n
1
n
k
) := n
1
pt. k 1.
STIVA-algebra B: B
elem
:= 0, B
stiva
:= N
B
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 A
e(x) := 5, e(y) := 3, e(s) := 6 7
e(t) = A
push
(e(x), A
push
(e(y), e(s))) = 5 3 6 7
e : X B
e(x) := 0, e(y) := 0, e(s) := 10
e(t) = B
push
(e(x), B
push
(e(y), e(s))) =(10 + 1) + 1 = 12
112
Consecint e
X =
T
A = T
(Y)
O substitut ie este o atribuire : X T
(Y).
Orice substitut ie : X T
(X) T
(Y).
113
Proprietat i
Propozit ia 8.
Fie A o (S, )-algebra. Daca f : T
(X) A si g : T
(X) A
sunt morsme, atunci g = f g[
X
= f [
X
Dem. Presupunem ca g
s
(x) = f
s
(x) or. s S, x X
s
.
Demonstram ca g = f prin induct ie pe termeni
= f
s
(),
(X)
s1
, . . ., t
n
T
(X)
sn
a.
g
s1
(t
1
) = f
s1
(t
1
), , g
sn
(t
n
) = f
sn
(t
n
) at.
g
s
((t
1
, . . . , t
n
)) = A
(g
s1
(t
1
), , g
sn
(t
n
)) =
A
(f
s1
(t
1
), , f
sn
(t
n
)) = f
s
((t
1
, . . . , t
n
))
Conform principiului inductiei pe termeni,
g
s
(t) = f
s
(t) or. t T
(X)
s
, adica g = f .
114
Proprietat i
Propozit ia 9.
X Y T
(X) T
(Y)
Dem. Fie u : X Y o functie bijectiva. Din Teorema 7 rezulta ca
(X) T
(Y) a.
f
s
(x) = u
s
(x) or. s S, x X
s
,
(Y) T
(X) a.
g
s
(y) = u
1
s
(y) or. s S, y X
s
.
Observam ca (f ; g)
s
(x) = g
s
(f
s
(x)) = x or. s S, x X.
Aplicand Propozitia 6, obt inem ca f ; g = 1
T
(X)
.
Similar, g; f = 1
T
(Y)
, deci T
(X) T
(Y).
115
Proprietat i
Propozit ia 10.
Fie h : A B morsm surjectiv.
Or. f : T
(X) B morsm,
ex. g : T
(X) A a. . g; h = f
A
h
B
T
(X)
f
Dem. Daca f : T
(X)
Denim funct ia termen A
t
: A
n
A prin
A
t
(a
1
, . . . , a
n
) := e(t), unde e(x
i
) := a
i
or. i = 1, . . . , n
A
t
este operat ie derivata pe A
= 0, 1, , ,
(X)
Daca B este o algebra Boole, atunci
B
t
(b
1
, b
2
) = b
1
b
2
oricare b
1
, b
2
B.
117
Semantica instruct iunii de atribuire x:=e
(X)
Mem := e : X D[ e funct ie
Sem(x := t) : Mem Mem
Sem(x := t)(e)(y) :=
_
e(t) daca y = x,
e(y) daca y ,= x.
118
119 120
Programare logica
Ecuat ii. Relat ia de satisfacere.
121
Ecuat iile si semantica lor
(S, ) signatura multisortata
(X).
Vom nota o ecuat ie prin
(X)t
=
s
t
t
.
T
,s
= , T
,bool
= T, F
,[= ()T
=
bool
F
[= (X)T
=
bool
F,
unde X
s
:= x, X
bool
:=
123
Ecuat iile condit ionate
O (S, )-ecuat ie condit ionata este notata prin
(X)t
=
s
t
t
if H.
si este formata din:
(X)
s
.
(X)
s
.
=
s1
v
1
, . . . , u
n
=
sn
v
n
.
Ecuat iile din H sunt cuanticate cu X.
O ecuat ie (X)t
=
s
t
t
este ecuat ie condit ionata n care mult imea
condit iilor H este vida (X)t
=
s
t
t
if .
124
Ecuat iile condit ionate
A (S, )-algebra A, := (X)t
=
s
t
t
if H
A satisface (A este model al lui ) daca,
e
s
(u) = e
s
(v) or. u
=
s
v H e
s
(t) = e
s
(t
t
).
pentru orice e : X A.
Vom nota A [= (X)t
=
s
t
t
if H.
A [= (X)t
=
s
t
t
A [= (X)t
=
s
t
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: A
elem
:= N, A
stiva
:= N
A
0
:= 0, A
empty
:= , A
push
(n, n
1
n
k
) := n n
1
n
k
,
A
pop
() = A
pop
(n) := ,
A
pop
(n
1
n
2
n
k
) := n
2
n
k
pt. k 2,
A
top
() := 0, A
top
(n
1
n
k
) := n
1
pt. k 1.
STIVA-algebra B: B
elem
:= 0, B
stiva
:= N
B
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 [= si 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. . e
stiva
(S) = e
stiva
(push(E, Q)).
Rezulta e
stiva
(S) = A
push
(e
elem
(E), e
stiva
(Q))
Notam n = e
elem
(E), w := e
stiva
(S), w
t
:= e
stiva
(Q).
Rezulta w = nw
t
si
e
elem
(top(S)) = A
top
(e
stiva
(S)) = A
top
(w) =
A
top
(nw
t
) = n = e
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, n
1
n
k
) := n
1
n
k
n,
C
pop
() = C
pop
(n) := ,
C
pop
(n
1
n
2
n
k
) := n
2
n
k
pt. k 2,
C
top
() := 0, C
top
(n
1
n
k
) := n
1
pt. k 1.
C ,[=
e : X C evaluarea denita prin
e
elem
(E) = 2, e
stiva
(Q) = 3 4, e
stiva
(S) = 3 4 2
Atunci e
stiva
(S) = e
stiva
(push(E, Q)),
dar e
elem
(E) = 2 ,= 3 = e
elem
(top(S)).
128
Programare logica
Specicat ii algebrice
129
-algebre
mult ime de ecuat ii condit ionate
O algebra A este -algebra (A este model pentru )
daca A [= oricare .
f
s
(u) =
s
(e
s
(u)) =
s
(e
s
(v)) =
f
s
(v) or. u
=
s
v H
Din ipoteza rezulta
f
s
(t) =
f
s
(t
t
), i.e.
s
(e
s
(t)) =
s
(e
s
(t
t
)).
este injectiv, deci e
s
(t) = e
s
(t
t
).
131
Specicat ii
In Maude teoriile
fth ... endfth
au ca semantica Alg(S, , ), unde S este mult imea
sorturilor, este mult imea simbolurilor de operat ii, este
mult imea ecuat iilor denite n modul, iar ecare ecuat ie
eq t = t si ceq t = t if H
este cuanticata de variabilele care apar n t si t.
132
Specicat 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 .
eq (- x) + x = e .
eq x + (- x) = e .
endfth
133
Consecint e semantice
(S, , ) specicat ie, ecuat ie, mult ime de ecuat ii
Ecuat ia este o consecint a 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
_
1
:= (x, y, z)x
= y if x + z
= y + z,
2
:= (x, y)x + y
= y + x
[=
1
, ,[=
2
135
Specicat ii echivalente
Doua specicat ii (S, ,
1
) si (S, ,
2
) sunt echivalente daca
denesc aceeasi clasa de modele:
A [=
1
A [=
2
Observat ie
Fie si mult imi de ecuat ii. Daca [= atunci (S, , ) si
(S, , ) sunt specicat ii echivalente.
136
-algebra init iala
(S, , ) specicat ie
J
,
:= A [ A init iala n Alg(S, , )
este un tip abstract de date.
J
,
reprezinta semantica unui modul funct ional n Maude
fmod ... endfm
unde S este mult imea sorturilor, este mult imea simbolurilor de
operat ii, este mult imea ecuat iilor denite n modul.
Fiecare ecuat ie
eq t = t si ceq t = t if H
este cuanticata de variabilele care apar n t si t.
137
Specicat ie corecta
(S, ) o signatura multisortata, A (S, )-algebra
O specicat ie (S, , ) este adecvata pentru A daca A este
-algebra init iala, i.e. A J
,
.
Exemplu
Determinat i o specicat ie adecvata pentru A = (Z
4
, 0, succ), unde
succ(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 init iala daca:
(a) A [= or. ,
O relat ie S-sortata =
s
sS
A A este congruent a
daca:
s
A
s
A
s
echivalent a or. s S,
(a
1
, . . . , a
n
)
s
A
(b
1
, . . . , b
n
)
or. : s
1
. . . s
n
s
146
Exemple
(S, ) signatura, A (S, ) algebra
NAT-algebra A:
A
nat
:= N, A
0
:= 0, A
succ
(x) := x + 1
n
1
k
n
2
k[(n
1
n
2
) pentru k N xat
n
1
k
n
2
A
succ
(n
1
)
k
A
succ
(n
2
)
AUTOMAT-algebra B:
B
intrare
= B
stare
= B
iesire
:= N
B
s0
:= 0, B
f
(m, n) := m + n, B
g
(n) := n + 1
este congruent a pe B, unde
intrare
=
stare
=
iesire
:=
k
147
Algebra cat
(S, ) signatura, A algebra, congruent a pe A
[a]
s
:= a
t
A
s
[ a
s
a
t
(clasa lui a)
A
s
/
s
:= [a]
s
[ a A
s
or. s S
A/
:= A
s
/
s
sS
este (S, )-algebra
(A/
:= [A
] or. : s,
(A/
([a
1
]
s
1
, . . . , [a
n
]
sn
) := [A
(a
1
, . . . , a
n
)]
s
or. : s
1
. . . s
n
s si (a
1
, . . . , a
n
) A
s1
A
sn
[]
: A A/
, a [a]
s
or. a A
s
este morsm.
[a]
s
= [b]
s
a
s
b
148
Exemple
STIVA-algebra A: A
elem
:= N, A
stiva
:= N
A
0
:= 0, A
empty
:= , A
push
(n, n
1
n
k
) := n n
1
n
k
,
A
pop
() = A
pop
(n) := ,
A
pop
(n
1
n
2
n
k
) := n
2
n
k
pt. k 2,
A
top
() := 0, A
top
(n
1
n
k
) := n
1
pt. k 1.
elem
:= N N,
stiva
:= (w, w
t
) [ (w, w
t
) N
, [w[ = [w
t
[
=
elem
,
stiva
congruent a
A/
B, unde
STIVA-algebra B: B
elem
:= 0, B
stiva
:= N
B
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, ) signatura, A si B algebre, f : A B morsm
Ker (f ) = Ker (f
s
)
sS
, unde
Ker (f
s
) := (a, a
t
) A
s
A
s
[ f
s
(a) = f
s
(a
t
) or. s S
Propozit ia 12
) =.
Dem. exercit iu
150
Proprietatea de universalitate
(S, ) signatura, A algebra, congruent a pe A
Teorema 13 ( Proprietatea de universalitate a algebrei cat)
Oricare ar B o algebra si h : A B un morsm a.. Ker (h)
exista un unic morsm h : A/
B a.. []
; h = h.
Dem. h : A B, Ker (h)
Existent a: denim h
s
([a]
s
) := h
s
(a)
or. a A
s
A
[]
h
A/
h
.
B
151
Continuare
h este bine denit: [a
1
]
s
= [a
2
]
s
h
s
(a
1
) = h
s
(a
2
)
[a
1
]
s
= [a
2
]
s
(a
1
, a
2
)
s
Ker (h
s
) h
s
(a
1
) = h
s
(a
2
)
h morsm:
dc. : s , at.
h
s
(A/
e
quiv
) = h
s
([A
) = h
s
(A
) = B
dc. : s
1
. . . s
n
s si
a
1
A
s1
, . . ., a
n
A
sn
at.
h
s
(A
([a
1
]
, . . . , [a
n
]
)) = h
s
([A
(a
1
, . . . , a
n
)]
) =
h
s
(A
(a
1
, . . . , a
n
)) == B
(h
s1
(a
1
), , h
sn
(a
n
)) =
B
(h
s1
([a
1
]
), , h
sn
([a
n
]
))
Unicitatea: e g : A/
B a.. []
; g = h
g
s
([a]
s
) = h
s
(a) = h
s
([a]
s
) or. a A
s
.
152
Consecint e
Teorema 14 (Teorema I de izomorsm)
Oricare f : A B morsm, A/
Ker (f )
f (A).
Dem. exercit iu
Propozit ia 15
Fie / o clasa de (S, )-algebre. Daca
l
:=
Ker (h) [ h : T
B /, h morsm,
atunci urmatoarele proprietat i sunt adevarate:
l
este congruent a pe T
K
B.
Dem. Intersect ia unei familii arbitrare de congruent e este
congruent a (exercit iu).
153
Continuare
Fie B / si h : T
B unicul morsm.
Existent a: deoarece
l
Ker (h), din
Proprietatea de universalitate a
algebrei cat ex. unic morsm
h : T
K
B a.. []
K
; h = h.
T
[]
K
h
K
h
B
Unicitatea: e g : T
K
B un morsm; atunci
[]
K
; g : T
B, deci []
K
; g = h, deci g verica proprietatea
care-l deneste n mod unic pe h; rezulta g = h.
154
-algebre
(S, , ) specicat ie,
A algebra si o congruent a pe A
Spunem ca este este nchisa la substitut ie daca:
CS(,A)
or. (X)t
=
s
t
t
if H , or. e : X A
e
s
(u)
s
e
s
(v) or. u
=
s
v H e
s
(t)
s
e
s
(t
t
).
Propozit ia 16
Daca este o congruent a pe A nchisa la substitut ie atunci
A/
[= .
155
Continuare
Dem. Fie (X)t
=
s
t
t
if H si f : T
(X) A/
a..
f
s
(u) = f
s
(v) or. u
=
s
v H.
[]
: A A/
morsm surjectiv,
f : T
(X) A/
morsm
Din Propozit ia 10, ex. e : T
(X) A
a. . e; []
= f
A
[]
A/
(X)
f
Atunci e
s
(u)
s
e
s
(v) or. u
=
s
v H si, deoarece este
nchisa la substitut ie, obt inem e
s
(t)
s
e
s
(t
t
), adica f
s
(t) = f
s
(t
t
).
156
Echivalent a semantica
(S, , ) specicat ie, A o (S, )-algebra
,A
:=
A = T
notam
:=
,T
.
Propozit ia 17
,A
este o congruent a pe A nchisa la substitut ie.
157
Continuare
Dem. Notam :=
,A
Fie (X)t
=
s
t
t
if H si e : X A a..
e
s
(u)
s
e
s
(v) or. u
=
s
v H.
Rezulta (e
s
(u), e
s
(v)) Ker (h) or. h : A B [= , deci
h(e
s
(u)) = h(e
s
(v)) or. u
=
s
v H.
Fie B [= i h : A B. Atunci e; h : T
(X) B si
h(e
s
(u)) = h(e
s
(v)) or. u
=
s
v H, deci h(e
s
(t)) = h(e
s
(t
t
)).
Rezulta (e
s
(t), e
s
(t
t
)) Ker (h) or. h : A B [= , deci
(e
s
(t), e
s
(t
t
)) , i.e. e
s
(t)
s
e
s
(t
t
).
158
-algebra init iala
(S, , ) specicat ie
Denim pe T
congruent a semantica
:=
Ker (f ) [ f : T
A, A [= ,
care este nchisa la substitut ie cf. Propozit iei 17.
=
l
, unde / = Alg(S, , )
or. B [= ex. unic morsm f : T
,
unde S este mult imea sorturilor, este mult imea simbolurilor de
operat ii, este mult imea ecuat iilor denite n modul. Fiecare
ecuat ie
eq t = t si ceq t = t if H
este cuanticata de variabilele care apar n t si t.
160
Consecint e
(S, , ) specicat ie, A algebra, h
A
: T
A unicul morsm
Teorema
Sunt echivalente:
No Junk: h
A
este surjectiv
No Confusion: h
As
(t
1
) = h
As
(t
2
) [= ()t
1
=
s
t
2
or. t
1
, t
2
T
,s
161 162
163 164
Programare logica
Teorema constantelor
Demonstrat ii prin induct ie
165
Demonstrarea ec. condit ionate
(S, ) signatura, X mult ime de variabile
mult ime de ecuat ii condit ionate
?
[= (X)t
=
s
t
t
if H
Propozit ia 19
(X)u
=
s
v [ u
=
s
v H [= (X)t
=
s
t
t
.
(c) Daca
()u
=
s
v [ u
=
s
v H [= ()t
=
s
t
t
atunci [= ()t
=
s
t
t
if H.
166
Continuare
Dem. (a) Fie A [=
(X)u
=
s
v [ u
=
s
v H si e : X A
o evaluare. Dar A [= (X)u
=
s
v or. u
=
s
v H, deci
e
s
(u) = e
s
(v) or. u
=
s
v H. Deoarece A [= , din ipoteza,
A [= (X)t
=
s
t
t
if H. Deoarec e : X A este o evaluare a..
e
s
(u) = e
s
(v) or. u
=
s
v H, rezulta e
s
(t) = e
s
(t
t
).
(b) Implicat ia inversa nu este n general adevarata.
S = s, = 0 : s, X = x, y
(X)x
= 0 [= (X)y
= 0 este adevarata, dar
,[= (X)y
= 0 if x
= 0.
(b) Fie A [= , e : T
()u
=
s
v [ u
=
s
v H. Din
ipoteza, obt inem A [= ()t
=
s
t
t
, deci e
s
(t) = e
s
(t
t
). Am
demonstrat ca daca unicul morsm e : T
A verica
e
s
(u) = e
s
(v) or. u
=
s
v H, atunci e
s
(t) = e
s
(t
t
).
167
(X)
(S, ) signatura, X mult ime de variabile
(X) := ((X)
w,s
)
wS
,sS
(X)
w,s
=
w,s
pentru w ,=
(X)
,s
=
,s
c
x
[x X
s
168
(X)-algebre
A (S, )-algebra, a : X A atribuire
A
cx
:= a
s
(x) oricare x X
s
, s S
sS
T
(X),s
= T
(X)
s
T
cx
:= x oricare x X
s
, s S
Observat ie
T
(X)
este (X)-algebra init iala
(A, a) (X)-algebra
a : T
(X)
A unicul morsm de (X)-algebre
169
Teorema constantelor I
(S, ) signatura, X mult ime de variabile
Teorema 20(Teorema constantelor I)
Sunt echivalente:
(a) A [=
(X)t
=
s
t
t
,
(b) (A, a) [=
(X)
()t
=
s
t
t
or. a : X A.
Dem. Ambele enunt uri sunt echivalente cu:
a
s
(t) = a
s
(t
t
) or. a : X A
170
Teorema constantelor II
(S, ) signatura, X mult ime de variabile
o mult ime de -ecuat ii necondit ionate a..
nici o variabila din X nu apare n .
Teorema 21 (Teorema constantelor II).
Sunt echivalente:
(a) [=
(X)t
=
s
t
t
if H
(b)
()u
=
s
v [ u
=
s
v H [=
(X)
()t
=
s
t
t
Dem. Deoarece nici o variabila din X nu apare n , pentru orice
(S, )-algebra A sunt echivalnte:
A [=
(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. Avem
A [= , deoarece (A, a) [=
(X)
si
a
s
(u) = a
s
(v) or. u
=
s
v H, deoarece
(A, a) [=
(X)
()u
=
s
v [ u
=
s
v H.
Din (a) rezulta ca a
s
(t) = a
s
(t
t
), adica
(A, a) [=
(X)
()t
=
s
t
t
.
(b) (a) Fie A o (S, )-algebra a.. A [=
si
a : X A a.. a
s
(u) = a
s
(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
t
, adica
a
s
(t) = a
s
(t
t
).
172
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 .
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
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
.
In exemplul anterior,
= 0 : MyNat, s : MyNat MyNat,
+ : MyNat MyNat MyNat, : MyNat MyNat MyNat
dar n inducta sructurala am folosit numai
c
= 0 : MyNat, s : MyNat MyNat.
Fie o signatura (monosortata) si A o -algebra . O subsignatura
Cons se numeste signatura de constructori pentru A daca
unicul morsm h : T
Cons
A este surjectiv.
Daca P = (, ) este o prezentare, notam T
P
= T
. Atunci
Cons se numeste signatura de constructori pentru P daca este
signatura de constructori pentru T
P
.
176
Constructori S = s
.
P = (, ) o prezentare, Cons signatura de constructori
T
P
:= T
t T
, [t] := [t]
=
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
=
s1
t
t
1
, . . . , (X)t
n
=
sn
t
t
n
(X)(t
1
, . . . , t
n
)
=
s
(t
t
1
, . . . , t
t
n
)
: s
1
s
n
s
Sub
(X)
(t)
=
s
(t
t
)
unde
(Y)t
=
s
t
t
, : Y T
(X)
182
Deduct ia sintactica
Fie o mult ime de ecuat ii, numite axiome sau ipoteze. Spunem ca
ecuat ia := (X)t
=
s
t
t
se deduce sintactic din daca exista o
secvent a de ecuat ii
1
, . . .,
n
a. .
n
= si
pentru orice i 1, . . . , n
i
sau
i
se obt ine din ecuat iile
1
, . . .,
i1
aplicand una din regulile R, S, T, C
, Sub
1
, . . .,
n
= este o demonstrat 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 + succ(0)
= succ(0 + 0) (1, Subx, y 0)
(3) x + 0 = x E
(4) 0 + 0
= 0 (3, Subx 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)
(Subx, y 0)
x + 0
= x
0 + 0
= 0
Subx 0
succ(0 + 0)
= succ(0)
(C
)
0 + succ(0)
= succ(0)
(T)
184
Axiomele sunt ecuat ii condit ionate
Fie o mult ime de ecuat ii condit ionate.
Sub
(X)(u
1
)
=
s1
(v
1
), . . . , (X)(u
n
)
=
sn
(v
n
)
(X)(t)
=
s
(t
t
)
unde (Y)t
=
s
t
t
if H , H = u
1
=
s1
v
1
, . . . , u
n
=
sn
v
n
si
: Y T
(X) substitut ie
Identicam substitut ia : Y T
(X) cu
: T
(Y) T
(X).
Daca H = atunci
Sub
(X)(t)
=
s
(t
t
)
185
Axiomele sunt ecuat ii condit ionate
NATBOOL = (S, ), S = n, b, = T, F, 0, s, , >
= ,
1
,
2
:= x, y, zx
=
n
y if z x
=
n
z y , z > 0
=
b
T
1
:= a, cs(s(s(0))) a
=
n
s(s(s(0))) c,
2
:= a, cs(s(s(0))) > 0
=
b
T
a, ca
=
n
c
Sub
1
,
2
a
=
s
c
,
n
(x) := a,
n
(y) := c,
n
(z) := s(s(s(0)))
186
187 188
Programare logica
Logica ecuat ionala
Corectitudine. Completitudine
189
Regulile deduct iei ecuat ionale
(S, ) signatura, Xsi Y mult imi de variabile
mult ime de ecuat ii (necondit 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
=
s1
t
t
1
, . . . , (X)t
n
=
sn
t
t
n
(X)(t
1
, . . . , t
n
)
=
s
(t
t
1
, . . . , t
t
n
)
: s
1
s
n
s
Sub
(X)(u
1
)
=
s1
(v
1
), . . . , (X)(u
n
)
=
sn
(v
n
)
(X)
(t)
=
s
(t
t
)
unde
(Y)t
=
s
t
t
if u
1
=
s1
v
1
, . . . , u
n
=
sn
v
n
, : Y T
(X)
190
Corectitudinea regulilor de deduct ie
mult ime de ecuat ii condit ionate
O regula de deductie
1
, . . . ,
n
, Sub
sunt corecte.
191
Continuare
Demonstram ca C
este corecta.
Fie : s
1
s
n
s si presupunem ca
[= (X)t
1
=
s1
t
t
1
, . . ., [= (X)t
n
=
sn
t
t
n
(*)
Trebuie sa aratam ca [= (X)(t
1
, . . . , t
n
)
=
s
(t
t
1
, . . . , t
t
n
).
Fie A [= si f : T
(f
s1
(t
1
), . . . , f
sn
(t
n
)) =
A
(f
s1
(t
t
1
), . . . , f
sn
(t
t
n
)) = f
s
((t
1
, . . . , t
n
)).
In consecint a, A [= (X)(t
1
, . . . , t
n
)
=
s
(t
t
1
, . . . , t
t
n
).
Deoarece A este o -algebra arbitrara,
[= (X)(t
1
, . . . , t
n
)
=
s
(t
t
1
, . . . , t
t
n
).
192
Continuare
Demonstram ca Sub
este corecta.
Fie (Y)t
=
s
t
t
if H , H = u
1
=
s1
v
1
, . . . , u
n
=
sn
v
n
si
: Y T
; f : T
; f )
s1
(u
1
) = (
; f )
s1
(v
1
), . . ., (
; f )
sn
(u
n
) = (
; f )
sn
(v
n
).
Deoarece A [= (Y)t
=
s
t
t
if H , obt inem
(
; f )
s
(t) = (
; f )
s
(t
t
) i.e. f
s
(
(t)) = f
s
(
(t
t
)).
In consecint a, A [= (X)
(t)
=
s
(t
t
).
Deoarece A este o -algebra arbitrara,
[= (X)
(t)
=
s
(t
t
).
193
Corectitudinea deduct iei ecuat ionale
mult ime de ecuat ii condit ionate
Teorema 23 (Corectitudine)
(X)t
=
s
t
t
[= (X)t
=
s
t
t
Dem.: Fie
1
, . . .,
n
= (X)t
=
s
t
t
o demonstrat ie din ipotezele
. Demonstram [=
i
prin induct ie dupa i = 1, . . . , n.
Observam ca
1
sau
1
= (X)t
=
s
t, deci [=
1
.
Presupunem ca [=
1
, . . ., [=
i1
. Stim ca
i
se obt ine din
ecuat iile
1
, . . .,
i1
aplicand una din regulile de
deduct ie.Deoarece R, S, T, C
, Sub
=
s1
t
t
1
, . . . , (X)t
n
=
sn
t
t
n
(X)t
=
s
t
t
Relat ie binara T
(X) T
(X),
.
195
Continuare
Dem. (a)(b) Presupunem ca este congruent a si demontram
nchiderea la C
.Fie : s
1
s
n
s si t
1
s1
t
t
1
, . . ., t
n
sn
t
t
n
.
Deoarece este congruent a, (t
1
, . . . , t
n
)
s
(t
t
1
, . . . , t
t
n
),
deci este nchisa la C
.
(b)(a) Presupunem este echivalent a nchisa la C
si
demonstram ca este compatibila cu operat iile. Fie
: s
1
s
n
s si t
1
s1
t
t
1
, . . ., t
n
sn
t
t
n
. Deoarece este
nchisa la C
, (t
1
, . . . , t
n
)
s
(t
t
1
, . . . , t
t
n
), deci este
compatibila cu operat iile.
196
-algebre
(S, , ) specicat ie, X o mult ime de variabile,
o congruent a pe T
(X)
CS(,T
(X))
or. (Y)t
=
s
t
t
if H , or. h : T
(Y) T
(X) morsm
h
s
(u)
s
h
s
(v) or. u
=
s
v H h
s
(t)
s
h
s
(t
t
).
Propozit ia 25
Sunt echivalente:
(X)),
(c) T
(X)/
[= .
197
Echivalent a sintactica
(S, , ) specicat ie, X o mult ime de variabile
Pe T
este
nchisa la R, S, T, C
, Sub
.
198
Echivalent a semantica
(S, , ) specicat ie, A o (S, )-algebra
,A
:=
,A
este cea mai mica congruent a pe A nchisa la substitut ie.
Dem. Din Propozit ia 17,
,A
este congruent a A nchisa la
substitut ie. Fie o alta congruent a pe A nchisa la substitut ie si
p : A A/
(X)/
este o
-algebra, deci T
(X)/
[= .Fie p : T
(X) T
(X)/
. Rezulta
p
s
(t) = p
s
(t
t
), i.e. [t] = [t
t
].
In consecint a t
s
t
t
, adica
(X)t
=
s
t
t
.
Demonstrat ie scurta:
(X)
s
t
t
(X)t
=
s
t
t
(echiv. sintactica)
t
t
[= (X)t
=
s
t
t
(echiv. semantica)
[= (X)t
=
s
t
t
(X)t
=
s
t
t
201
Reguli de deduct ie
(S, , ) specicat ie, X, Y mult imi disjuncte de variabile
Abstractizarea
(X)t
1
=
s
t
2
(X Y)t
1
=
s
t
2
Concretizarea
(X Y)t
1
=
s
t
2
(X)t
1
=
s
t
2
t
1
, t
2
T
(X)
s
Y
s
,= T
,s
,=
Propozit ia 30
Abstractizarea si Concretizarea sunt reguli de deduct ie corecte.
Dem. exercit iu
202
Exemplu
Orice funct ie 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 (c
x
)
= f (c
y
) () c
x
= c
y
(teorema constantelor)
(1) () f (c
x
)
= f (c
y
) (ipoteza)
(2) () g(f (c
x
))
= g(f (c
y
)) (C
)
(3) () g(f (c
y
))
= c
y
(Subz c
y
)
(4) () g(f (c
x
))
= c
y
(2,3,T)
(5) (z) z
= g(f (z)) (S)
(6) () c
x
= g(f (c
x
)) (5, Subz c
x
)
(7) () c
x
= c
y
(4,6, T)
203 204
Programare logica
Logica ecuat ionala
Regula SR (Subterm
Replacement)
205
Contexte
(S, ) signatura, X mult ime de variabile
Pentru t T
(X) si y X notam
nr
y
(t) = numarul de aparit ii ale lui y n t
(X z) se numeste
context daca nr
z
(c) = 1.
Daca t
0
T
(X) si t
0
are acelasi sort cu z, atunci notam
c[z t
0
] := z t
0
(c)
pentru un context c T
(X z), unde
z t
0
: X z T
(S, , ) specicat ie
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) substitut ie
c T
(X z)
s
, z , X, nr
z
(c) = 1
c = z SR
= Sub
(X) substitut ie
c T
(X z)
s
, z , X, nr
z
(c) = 1
207
Exemplu
E = x + 0
= x, x + succ(y)
= succ(x + y)
E
SR
E
0 + succ(0)
= succ(0)
(1) x + succ(y)
= succ(x + y) E
(2) 0 + succ(0)
= succ(0 + 0) (1
t
, SR
E
, c := z, := x, y 0)
(3) x + 0 = x E
(4) succ(0 + 0)
= succ(0) (3
t
, SR
E
, c := succ(z), := x 0)
(5) 0 + succ(0)
= succ(0) (2
t
, 4
t
, T)
(1) x + succ(y)
= succ(x + y) E
(2) 0 + succ(0)
= succ(0 + 0) (1, Subx, y 0)
(3) x + 0 = x E
(4) 0 + 0
= 0 (3, Subx 0)
(5) succ(0 + 0)
= succ(0) (4, C)
(6) 0 + succ(0)
= succ(0) (2, 5, T)
208
Regula de deduct ie SR
Propozit ia 31
SR
(X) substitut ie
c T
(X z)
s
, z , X, nr
z
(c) = 1 a..
[= (X)(u)
=
s
(v) or. u
=
s
v H.
Demonstram ca [= (X)c[z (l )]
=
s
c[z (r )] prin
induct ie dupa [c[ (lungimea lui c).
este corecta.
209
Continuare
Presupunem ca [= (X)c
t
[z (l )]
=
s
c
t
[z (r )] daca
[c
t
[ < [c[. Atunci ex. : s
1
s
n
s
tt
,
t
1
T
(X)
s1
, . . ., t
n
T
(X)
sn
si k a..
c = (t
1
, . . . , t
k
, . . . , t
n
) si nr
z
(t
k
) = 1.
Pentru t
k
aplicam ipoteza de induct ie:
[= (X)t
k
[z (l )]
=
s
i
t
k
[z (r )].
Deoarece [= (X)t
i
=
s
i
t
i
or. i ,= k, aplicand corectitudinea
regulii C
, obt inem
[= (X)(t
1
, . . . , t
k
[z (l )], . . . , t
n
)
=
s
(t
1
, . . . , t
k
[z (r )], . . . , t
n
).
Observam ca c[z t] = (t
1
, . . . , t
k
[z t], . . . , t
n
) or.
t T
(X)
s
, deci [= (X)c[z (l )]
=
s
c[z (r )].
210
Regula de deduct ie SR
Denim
SR
T
(X) T
(X) prin
t
SR
t
t
R,S,T,SR
(X)t
=
s
t
t
Propozit ia 32
SR
este congruent a nchisa la substitut ie.
Dem. Din denit ie,
SR
este nchisa la R, S, T, deci este o relat ie
de echivalent a.
SR
este nchisa la Sub
Sub
cu c = z.
211
Continuare
SR
este nchisa la C
(schit a)
Fie : s
1
s
n
s
tt
si t
1
SR
t
t
1
, . . ., t
n
SR
t
t
n
.
(1) Daca k 1, . . . , n si (X)t
k
=
s
k
t
t
k
se deduce prin aplicarea
regulii SR
(X) substitut ie c T
(X z)
s
k
, z , X,
nr
z
(c) = 1 a.. t
k
= c[z (l )] si t
t
k
= c[z (r )].
Denim c
t
= (t
1
, . . . , t
k1
, c, t
k+1
, . . . , t
n
), atunci
(t
1
, . . . , t
k
, . . . , t
n
) = c
t
[z (l )] si
(t
1
, . . . , t
t
k
, . . . , t
n
) = c
t
[z (r )],
deci (X)(t
1
, . . . , t
k
, . . . , t
n
)
=
s
(t
1
, . . . , t
t
k
, . . . , t
n
) se
deduce prin aplicarea regulii SR
.
(2) Daca k 1, . . . , n si t
k
SR
t
t
k
atunci
(t
1
, . . . , t
k1
, t
k
, t
k+1
, . . . , t
n
)
SR
(t
1
, . . . , t
k1
, t
t
k
, t
k+1
, . . . , t
n
).
(3) (t
1
, t
2
, . . . , t
n
)
SR
(t
t
1
, t
2
, . . . , t
n
)
SR
(t
t
1
, t
t
2
, t
3
. . . , t
n
)
SR
(t
t
1
, t
t
2
, t
t
3
, . . . , t
n
)
SR
SR
(t
t
1
, t
t
2
, . . . , t
t
n
)
212
Completitudinea SR
(X)
s
Teorema 33
Sunt echivalente:
(a)
R,S,T,C
,Sub
(X)t
=
s
t
t
(b)
R,S,T,SR
(X)t
=
s
t
t
Dem. (a) (b) (
SR
) Rezulta din Propozit ia 32 si din
faptul ca
(X).
(b) (a) (
SR
(Propozit ia
31) si Teorema de completitudine (Teorema 29), rezulta
SR
.
213 214
215 216
Programare logica
Rescrierea termenilor
217
Rescrierea
(S, ) signatura
(Y) a..
l nu este variabila
Var (r ) Var (l ) = Y.
Vom nota l r (l
s
r ).
R = x + 0 x, x + succ(y) succ(x + y)
218
Relat ia
R
(X)
s
denim
relat ia t
R
t
t
astfel:
t
R
t
t
t este c[z (l )] si
t
t
este c[z (r )], unde
c T
(X z), z , X, nr
z
(c) = 1
l r R cu Var (l ) = Y,
: Y T
t
R
t
t
daca si numai daca t
t
se obt ine din t nlocuind
o instant a a lui l cu o instant a a lui r .
219
Sistemul de rescriere R
E
(S, ) specicat ie, E mult ime de ecuat ii necondit ionate a..
Var (r ) Var (l ) = Y or. (Y)l
=
s
r E.
R
E
:= l r [ (Y)l
=
s
r E este sistemul de rescriere
determinat de E.
:= ()
:= ()
(echivalent a generata)
(T
(X)
s
,
s
) sistem de rescriere abstract
225
Exemplu
T := N 0, 1, := (m, k) [ k < m, k[m
= (k
1
, k
2
) [ k
1
,= k
2
, k
1
[k
2
sau k
2
[k
1
+
= (m, k) [ ex.n 0, ex. k
1
, , k
n
T
m k
1
k
n
k
=
+
(k, k)[k T
Cine este
?
226
Rescriere si deduct ie
(S, ) signatura, X mult ime de variabile,
E mult ime de ecuat ii necondit ionate,
R
E
sistemul de rescriere determinat de E,
E
T
(X) T
(X)
s
. Sunt echivalente:
(1) E [= (X)t
=
s
t
t
(2) E
R,S,T,C
,Sub
E
(X)t
=
s
t
t
(3) E
R,S,T,SR
E
(X)t
=
s
t
t
(4) t
E
t
t
,
unde
E
este echivalent a generata de
E
.
227
Continuare
Dem. (1) (2) (3) rezulta din
E
=
E
=
SR
(3) (4) revine la
SR
=
E
Din
E
SR
rezulta
SR
.
Pentru a demonstra implicat ia inversa vom arata ca
E
este
nchisa la C
si Sub
E
.
E
este nchisa la Sub
E
(Y)t
=
s
t
t
E, : Y T
E
este nchisa la C
Fie : s
1
s
n
s
tt
si k 1, . . . , n.
228
Continuare
(1) t
k
E
t
t
k
implica (t
1
, . . . , t
k
, . . . , t
n
)
E
(t
1
, . . . , t
t
k
, . . . , t
n
)
Din ipoteza, t
k
este c[z (l )], t
t
k
este c[z (r )], unde
c T
(X z) e un context, l r R
E
cu Var (l ) = Y si
: Y T
(X).
Denim c
t
:= (t
1
, . . . , c, . . . , t
n
). Rezulta ca
(t
1
, . . . , t
k
, . . . , t
n
) este c
t
[z (l )] si
(t
1
, . . . , t
t
k
, . . . , t
n
) este c
t
[z (r )].
(2) Demonstram prin induct ie dupa p 1 ca
t
k
p
E
t
t
k
implica (t
1
, . . . , t
k
, . . . , t
n
)
E
(t
1
, . . . , t
t
k
, . . . , t
n
)
Pentru p = 1 aplicam (1) si simetria.
Daca t
k
p+1
E
t
t
k
atunci t
k
p
E
t
tt
k
E
t
t
k
. Din ip. de induct ie
(t
1
, . . . , t
k
, . . . , t
n
)
E
(t
1
, . . . , t
k
, . . . , t
n
)
E
(t
1
, . . . , t
k
, . . . , t
n
)
deci (t
1
, . . . , t
k
, . . . , t
n
)
E
(t
1
, . . . , t
t
k
, . . . , t
n
).
229
Continuare
(3) Din (2), daca t
1
E
t
t
1
, . . ., t
n
E
t
t
n
atunci
(t
1
, . . . , t
k
, . . . , t
n
)
E
(t
1
, . . . , t
t
k
, . . . , t
n
)
or. k 1, . . . , n
(4) (t
1
, . . . , t
n
)
E
(t
t
1
, t
2
. . . , t
n
)
E
(t
t
1
, t
t
2
, . . . , t
n
)
E
(t
t
1
, . . . , t
t
k
, t
k+1
, . . . , t
n
)
E
(t
t
1
, . . . , t
t
n
)
In consecint a,
E
este nchisa la C
si Sub
E
, deci
SR
=
E
E
din Propozit ia 27.
230
231 232
Programare logica
Substitut ii. Unicare
F. Baader, T. Nipkow, Terms Rewriting and All That,
Cambridge University Press, 1998.
233
Substitut ie
(S, ) signatura multisortata, X si Y mult imi de variabile
O substitut ie a variabilelor din X cu termeni din T
(Y) este o
funct ie : X T
(Y).
Substitut ia se extinde la o funct ie : T
(X) T
(Y) dupa
cum urmeaza:
s
(x) := (x) or. x X
s
,
s
() := or. : s,
s
((t
1
, . . . , t
n
)) := (
s1
(t
1
), . . . ,
sn
(t
n
)) or.
: s
1
. . . s
n
s, or. t
1
T
(X)
s1
, . . ., t
n
T
(X)
sn
.
Observat ie: : T
(X) T
Daca : X T
(Y), : X T
(Y) atunci
= = .
x
1
t
1
, , x
n
t
n
e notat ie pt. : X T
(X),
(x
i
) := t
i
or. i = 1, . . . , n si (x) := x pt. x ,= x
i
(Y), : Y T
(Z)
; : X T
(Z), (; )
s
(x) := ;
(X).
Ecuat ia t, t
t
o vom nota t
= t
t
.
Egalitatea termenilor
Daca t = (t
1
, . . . , t
n
) si t
t
= (t
t
1
, . . . , t
t
k
) atunci
t = t
t
= , n = k, t
i
= t
t
i
or. i
= t
t
1
, . . . , t
n
= t
t
n
(X) a.. (t
i
) = (t
t
i
) or. i = 1, . . . , n.
Notam cu Unif (U) mult imea unicatorilor lui U.
t
= ; .
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))
t
(x) := 0,
t
(y) := 0,
t
(z) := z,
t
= ; y 0
si sunt cgu
cgu nu este unic
239
Notat ii
Var (U) :=
n
i =1
(Var (t
i
)
Var (t
t
i
)), unde
Var (t) := mult imea variabilelor care apar n t T
(X)
daca = x
1
t
1
, , x
n
t
n
atunci
x
1
t
1
, , x
n
t
n
U := (t)
= (t
t
) [ t
= t
t
U
240
Unicare
(S = , ) signatura, X mult ime de variabile
Spunem ca problema de unicare R = x
1
= t
1
, . . . , x
n
= t
n
x
i
X, x
1
,= x
j
or. i ,= j
x
i
,
n
i =1
Var (t
i
) or. i = 1, . . . , n.
O problema rezolvata R deneste o substitut ie
R
R
(x
i
) := x
1
t
1
, . . . , x
n
t
n
R
Unif (R)
Algoritmul transforma o problema de unicare U ntr-o problema
de unicare R. Daca R = atunci U nu are unicatori.
In caz
contrar, R este rezovata, iar substitut ia determinata de R este cgu
pentru U.
241
Unicare
Propozit ia 35.
Daca R = x
1
= t
1
, . . . , x
n
= t
n
este o problema de unicare
rezolvata, atunci
R
este cgu idempotent pentru R:
t
=
R
;
t
or.
t
Unif (R),
R
;
R
=
R
.
Dem.
(
R
;
t
)(x) =
t
(
R
(x)) =
_
t
(x) x , x
1
, . . . , x
n
,
t
(t
i
) x = x
i
Dar
t
(t
i
) =
t
(x
i
) deoarece
t
Unif (R),
deci (
R
;
t
)(x) =
t
(x) or. x X.
Pentru
t
=
R
, rezulta
R
;
R
=
R
.
242
Algoritmul de unicare
(S = , ) signatura, X mult ime de variabile
Intrare: U = t
1
= t
t
1
, . . . , t
n
= t
t
n
Init ializare: R = U
Se 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 , X
(3) Descompune:
R (e
1
, . . . , e
n
)
= (e
t
1
, . . . , e
t
n
) R e
1
= e
t
1
, . . . , e
n
= e
t
n
R (e
1
, . . . , e
n
)
= (e
t
1
, . . . , e
t
k
) dc. ,=
(4) Elimina:
R x
= t x
= t x tR dc.. x Var (R) Var (t)
R x
= t dc. x Var (t) si t ,= x
Iesire: daca R = atunci nu exita solut ii pentru U
daca R ,= atunci R este cgu pentru U
243
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 ,= 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
Propozit ia 36.
Algoritmul de unicare se termina.
Dem. Fie R problema de unicare. Notam
n
sol
:= [x Var (R)[R = R
t
x
= t, x , Var (R
t
) Var (t)[,
n
1
:= [Var (R)[ n
sol
, n
2
:=
s
=tR
([s[ +[t[),
n
3
:= [t
= x R[t , X, x X[
Fiecare pas al algoritmului modica n
1
, n
2
, n
3
n
1
n
2
n
3
Sterge >
Orienteaza = >
Descompune >
Elimina >
Daca la execut ia unui pas (n
1
, n
2
, n
3
) se schimba n (n
t
1
, n
t
2
, n
t
3
),
atunci (n
1
, n
2
, n
3
) >
lex
(n
t
1
, n
t
2
, n
t
3
), adica (n
1
, n
2
, n
3
) descreste
strict n ordine lexicograca.
248
Corectitudine
Propozit ia 37.
Daca R T si T ,= , atunci Unif (R) = Unif (T).
Dem. Evident adevarat pentru Stergesi Orienteaza.
Descompune. R = R
t
(e
1
, . . . , e
n
)
= (e
t
1
, . . . , e
t
n
)
T = R
t
e
1
= e
t
1
, . . . , e
n
= e
t
n
Daca : X T
Problema de unicare
U = x
1
= f (x
0
, x
0
), x
2
= f (x
1
, x
1
), . . . , x
n
= f (x
n1
, x
n1
)
are cgu R = x
1
f (x
0
, x
0
), x
2
f (f (x
0
, x
0
), f (x
0
, x
0
)), . . ..
(X) a. . (p) = t.
Exemplu.
p = x + (y y), t = (a + y) + (x x)
(x) := a + y, (y) := x
Fie t
t
termenul obt inut din t prin nlocuirea ecarei variabile
x Var (T) cu o operat ie constanta c
x
. Substitut ia poate
determinata aplicnd algoritmul de unicare ecuat iei p
= t
t
.
Exemplu.
x + (y y)
= (a + c
y
) + (c
x
c
x
)
x
= a + c
y
, y
= c
x
t
t
2
(t
1
si t
2
se nt`alnesc, relat ia de ntalnire)
258
Exemple
T := a, b
, := (ubav, uabv)[u, v T
w T este forma normala daca w = a
n
b
k
cu n, k 0
w
1
w
2
daca nr
a
(w
1
) = nr
a
(w
2
) si nr
b
(w
1
) = nr
b
(w
2
)
259
Sisteme de rescriere abstracte
(T, ) sistem de rescriere (T mult ime, T T)
Denit ii (T, ) se numeste
noetherian: nu exista reduceri innite t
0
t
1
(orice rescriere se termina)
conuent: t
1
t
t
2
t
1
t
2
local conuent: t
1
tt
2
t
1
t
2
Church-Rosser: t
1
t
2
t
1
t
2
normalizat: orice element are o forma normala
complet (convergent, canonic): conuent si noetherian
t
t
2
, din conuent a rezulta ca exisa u a..
t
1
u t
2
.
In consecint a t
1
si t
2
sunt reductibile, ceea ce
contrazice faptul ca sunt forme normale.
261
Proprietat i
Propozit ia 41 (Lema lui Newman)
Daca (T, ) este local conuent si noetherian atunci este
conuent.
Dem. Terminarea asigura faptul ca orice termen are o forma
normala. Pentru a demonstra conuent a este sucient sa aratam
ca orice element are o forma normala unica.
U := a T[a
n
1
, a
n
2
, n
1
,= n
2
forme normale
Demonstram ca are loc urmatoarea proprietate:
(*) or. a U ex. b U a.. a b
Daca U ,= , atunci exista (a
n
)
n
U cu
a
1
a
2
a
n
ceea ce contrazice proprietatea de terminare.
In consecint a, U =
si orice termen t are o unica forma normala fn(t).
Daca t
1
t
t
2
, atunci t
1
fn(t)
t
2
, deci T este conuent.
262
Continuare
(*) or. a U ex. b U a.. a b
n
1
a n
2
implica n
1
= n
2
(imposibil)
n
1
a
n
2
implica n
1
a b
n
2
pentru un b T; din
local conuent a, n
1
t
b, dar n
1
este forma normala, deci
t = n
1
; avem b n
1
, b
n
2
, deci b U si a b
n
1
a n
2
implica n
1
b a n
2
pentru un
b T;avem b
n
1
, b n
2
, deci b U si a b
n
1
b a c
n
2
implica b
n
3
c, unde n
3
este
forma normala; deoarece n
1
,= n
2
avem n
1
,= n
3
( b U) sau
n
2
,= n
3
(c U).
263
Exercit iu
T = a, b, c, d
= (a, b), (a, c), (b, a), (b, d)
Putem descrie sistemul de rescriere (T, ) prin
R = a b, a c, b a, b d
Vom identica R = (T, )
aratat i ca R e local conuent
aratat i ca R nu e conuent
aratat i ca R nu e noetherian
determinat i formele normale ale lui R
adaugat i o regula de rescriere a.. R sa devina conuent
sterget i o regula de rescriere a.. R sa devina conuent
264
Teorema
(S, ) signatura, X mult ime de variabile,
E mult ime de ecuat ii necondit ionate,
R
E
sistemul de rescriere determinat de E,
E
T
(X) T
(X)
relat ia de rescriere
t, t
t
T
(X)
s
Teorema 42
Daca R
E
este complet atunci sunt echivalente:
(1) E [= (X)t
=
s
t
t
(2) E (X)t
=
s
t
t
(3) t
E
t
t
(4) fn(t)=fn(t
t
)
(t si t
t
au aceeasi forma normala)
Dem. (1)(2)(3) din Teorema 34.
265
Continuare
(4)(3) t
fn(t)
t
t
(3)(4) Fie t
1
, . . ., t
n
a.. t t
1
t
n
t
t
Demonstram ca fn(t) = fn(t
t
) prin induct ie dupa n.
P(1) Avem t t
t
, adica t t
t
sau t
t
t. Rezulta fn(t) +fn(t
t
).
P(n) P(n + 1) Avem t
t
n+1
t
t
.
Din ipoteza de induct ie, fn(t) = fn(t
n+1
).
Din P(1) rezulta fn(t
n+1
) = fn(t
t
).
t
fn(t)
t
t
fn(t
t
)
E (X)t
=
s
t
t
fn(t) = fn(t
t
)
267 268
Programare logica
Rescrierea termenilor
Terminare. Conuent a.
Completare
269
TRS (Term Rewrite System)
(S, ) signatura
(Y) a..
l nu este variabila
Var (r ) Var (l ) = Y.
Vom nota l r (l
s
r ).
succ(succ(0) + (0 + 0))
succ(succ(0) + 0)
succ(succ(0) + 0)
succ(succ(0)) succ(succ(0))
273
Terminare
(S, ) signatura, R un TRS
Propozit ia 44
Sunt echivalente:
(a) R este noetherian
(b) oricarui termen t i poate asociat un numar natural (t) N
astfel ncat t
R
t
t
implica (t) > (t
t
)
Dem. (a)(b) Din Lema lui Konig rezulta ca ntr-un sistem de
rescriere noetherian orice termen are un arbore de reducere nit si
denim (t) = adancimea arborelui asociat lui t.
(b)(a) rezulta din Propozit ia 43.
Ordine de reducere: t > t
t
ddaca (t) > (t
t
)
Relat ia > se numeste ordine de reducere pentru R.
274
Terminare
(S, ) signatura, R un sistem de rescriere (TRS)
Propozit ia 45
Fie A o (S, )-algebra astfel ncat:
A
s
= N or. s S,
or. : s
1
. . . s
n
s, daca k
i
> k
t
i
atunci
A
(k
1
, . . . , k
i
, . . . k
n
) > A
(k
1
, . . . , k
t
i
, . . . k
n
),
e(l ) > e(r ) or. l r R or. e : Var (l ) A.
Atunci R este noetherian
Dem. Pentru orice termen t denim
(t) = e
0
(t), unde e
0
(x) = 0 or. x Var (t).
Se demonstreaza ca t
R
t
t
implica (t) > (t
t
).
275
Exemplu
R = x + 0 0, x + succ(y) succ(x + y)
A
0
:= 1, A
succ
(k) := k + 1,
A
+
(k, m) := k + 2 m
(k +
A
m := k + 2 m) or. k, m N
e(x) := n, e(y) := m
e(x + 0) = n +
A
0 = n + 2 A
0
= n + 2 > 1 = A
0
= e(0)
e(x + succ(y)) = n +
A
A
succ
(m) = n + 2 (m + 1) =
n + 2 m + 2 > n + 2 m + 1 = A
succ
(n +
A
m) = e(succ(x + y))
276
Conuent a. Perechi critice
(S, ) signatura, R un sistem de rescriere (TRS)
Fie l
1
r
1
, l
2
r
2
R astfel ncat:
Var (l
1
) Var (l
2
) = ,
l
1
= c[z t] unde nr
z
(c) = 1, t nu este variabila
(t este subtermen al lui l
1
care nu este variabila),
c.g.u pentru t si l
2
( (t) = (l
2
)).
Atunci ((r
1
), (c)[z (r
2
)]) este pereche critica.
277
Conuent a. Perechi critice
(l
1
)
(r
1
) (c)[z (r
2
)]
l
1
r
1
, l
2
r
2
R,
Var (l
1
) Var (l
2
) = ,
l
1
= c[z t],
(t) = (l
2
) c.g.u
Teorema 46 (Teorema Perechilor Critice)
t := f (f (x)), c = z, := x y
(r
1
) = y, (c)[z (r
2
)] = y
t := x y, c = z (y v), := x x
t
y
t
, y y
t
v
t
(r
1
) = y
t
v
t
, (c)[z (r
2
)] = y
t
((y
t
v
t
) v)
t := y v, c = (x y) z, := y x
t
y
t
, v y
t
v
t
(r
1
) = x
t
y
t
, (c)[z (r
2
)] = (x (x
t
y
t
)) y
t
CP = (y
t
v
t
, y
t
((y
t
v
t
) v)), (x
t
y
t
, (x (x
t
y
t
)) y
t
)
Deoarece y ((y x) v) > y x si (x (v y)) y > v y,
T := T y ((y x) v) y x, (x (v y)) y v y
Demonstrat i ca T este complet.
281 282
283 284
Programare logica
Logica ecuationala locala
285
Maude
fmod MYNAT is
sort MyNat .
op 0 : -> MyNat .
op s : MyNat -> MyNat .
op _+_ : MyNat MyNat -> MyNat .
op n : -> MyNat .
vars x y z : MyNat .
eq x + 0 = x .
eq x + s(y) = s(x + y) .
eq (x + y) + z = x + ( y + z ) .
endfm
reduce in MYNAT : n + (0 + n) .
result MyNat: n + (0 + n)
286
Maude
fmod MYNAT1 is
sort MyNat .
op 0 : -> MyNat .
op s : MyNat -> MyNat .
op _+_ : MyNat MyNat -> MyNat [assoc] .
op n : -> MyNat .
vars x y : MyNat .
eq x + 0 = x .
eq x + s(y) = s(x + y) .
endfm
reduce in MYNAT1 : n + (0 + n) .
result MyNat: n + n
Termenii sunt unicat i modulo asociativitate
287
Maude Manual
O ecuatie (X)t
=
s
t
t
este o pereche de termeni de acelasi
sort din algebra T
(X).
=
s
[t
t
]
F
, unde [t]
F
, [t
t
]
F
T
(X)/
F
.
In
acest caz, o ecuatie este o pereche de termeni de acelasi sort
din algebra cat T
(X)/
F
.
Pentru un modul in Maude, F este mult imea ecuat iilor
declarate ca atribute.
(X)
s
local a
=
s
c a, c A
s
, A xata
(A)a
=
s
c
In cele ce urmeaza
Sen(A) := a
=
s
c[a, c A
s
, s S propozitiile din A
Vom deni sintaxa si semantica logicii locale asociate lui A.
290
Regulile deduct iei ecuat ionale n A
a, b, c, a
i
, b
i
A
R
a
=
s
a
S
a
=
s
b
b
=
s
a
T
a
=
s
b, b
=
s
c
a
=
s
c
C
a
1
=
s1
b
1
, . . . , a
n
=
sn
b
n
A
(a
1
, . . . , a
n
)
=
s
A
(b
1
, . . . , b
n
)
: s
1
s
n
s
Sub
h
s
(u)
=
s
h
s
(v)[u
=
s
v H
h
s
(t)
=
s
h
s
(t
t
)
h : T
(X) A,
(X)t
=
s
t
if H
291
Deduct ia sintactica in A
Spunem ca ecuat ia := a
=
s
a
t
Sen(A) se deduce sintactic din
daca exista o secvent a de ecuat ii
1
, . . .,
n
a. .
n
= si pentru
orice i 1, . . . , n
i
sau
i
se obt ine din ecuat iile
1
, . . .,
i1
aplicand una din regulile
R, S, T, C
, Sub
n
= este o demonstrat ie n A pentru e din ipotezele . Vom
nota
A
a
=
s
a
t
292
Exemplu
S = s, := 0 : s, + : ss s
A = (N, 0, +)
:= (x)x + x
= 0
Demonstrati ca
A
3
= 1
(1) h(x + x)
= h(0) (Sub
, h : T
(x) A, h(x) := 1)
2
= 0
(2) 1
= 1 (R)
(3) 2 + 1
= 0 + 1 ((1),(2), C
)
3
= 1
293
=
s1
a
t
1
, . . . , a
n
=
sn
a
t
n
a
=
s
a
t
Relat ie binara Q A A este nchisa la Reg daca
(a
1
, a
t
1
) Q
s1
, . . ., (a
n
, a
t
n
) Q
sn
(a, a
t
) Q
s
294
-tautologiile lui A
o multime de ecuatii conditionate
(de forma (X)t
=
s
t
t
if H).
O ecuat ie a
=
s
a
t
Sen(A) este -tautologie daca
h
s
(a) = h
s
(a
t
) or. B [= , or. h : A B morsm.
Vom nota [=
A
a
=
s
a
t
:=
ker(h)[h : A B [=
congruenta semantica a lui A
Propozitia 47
a
A
a
t
A
a
=
s
a
t
(echiv. sintactica)
a
A
a
t
[=
A
a
=
s
a
t
(echiv. semantica)
=
A
(A z), z , A
Un context este un termen c A[z] cu nr
z
(c) = 1, iar
c[a] := c[z a]
A = (N, 0, +)
c = 0 + z
c = 4 + (z + 1000)
297
Inchiderea la contexte
A (S, )-algebra, Q A A
Q este nchisa la contexte daca
(a, a
t
) Q (c[a], c[a
t
]) Q or. c A[z] context
Propozit ia 49
Sunt echivalente:
(a) Q este nchisa la contexte,
(b) Q este compatibila pe componente, i.e.
or. : s
1
. . . s
n
s, i 1, . . . , n,
or. a
1
A
s1
, . . ., a
i 1
A
s
i 1
, a
i +1
A
s
i +1
, . . ., a
n
A
sn
,
or. (a, a
t
) Q
s
i
,
(A
(a
1
, . . . , a
i 1
, a, a
i +1
, . . . , a
n
), A
(a
1
, . . . , a
i 1
, a
t
, a
i +1
, . . . , a
n
)) Q
s
.
298
Continuare
Dem. (a) (b) Fie : s
1
. . . s
n
s, i 1, . . . , n, (a, a
t
) Q
s
i
si
a
1
A
s1
, . . ., a
i 1
A
s
i 1
, a
i +1
A
s
i +1
, . . ., a
n
A
sn
.
Pentru c := A
(a
1
, . . . , a
i 1
, z, a
i +1
, . . . , a
n
) A[z] se obt ine
rezultatul dorit.
(b) (a) Fie (a, a
t
) Q si c A[z] un context.
Demonstram (c[a], c[a
t
]) Q prin induct ie dupa lungimea lui c (
termen n T
(A z)).
Daca [c[ = 1, atunci c = z, c[a] = a, c[a
t
] = a
t
.
Presupunem (c
t
[a], c
t
[a
t
]) Q pentru c
t
A[z] context, [c
t
[ < [c[.
Observam ca exista c
t
context, [c
t
[ < [c[ a..
c = A
(a
1
, . . . , a
i 1
, c
t
, a
i +1
, . . . , a
n
), deci
c[a] = A
(a
1
, . . . , a
i 1
, c
t
[a], a
i +1
, . . . , a
n
) si
c[a
t
] = A
(a
1
, . . . , a
i 1
, c
t
[a
t
], a
i +1
, . . . , a
n
).
Aplicam compatibilitatea pe argumente si ipoteza de induct ie.
299
Inchiderea la contexte
A (S, )-algebra, Q A A
Q
:= (c[a], c[a
t
])[(a, a
t
) Q, c A[z] context
Q
nchiderea reexiva si tranzitiva
Q
:= (a, a
t
)[ ex. b A a. . a
Q
b si a
t
Q
b
Propozit ia 50
(a)
Q
este cea mai mica relat ie nchisa la contexte care include Q.
(b)
Q
este cea mai mica preordine nchisa la C
care include Q.
300
Rescrierea locala
A este (S, )-algebra xata
multime de ecuatii conditionate
Denim (Q
n
)
n
:
Q
n
A A or. n,
Q
0
:= ,
Q
n+1
:=
_
(h
s
(l ), h
s
(r ))[(Y)l
=
s
r if H ,
h : T
(Y) A morsm,
h
s
(u)
Qn
h
s
(v) or . u
=
s
v H
_
Q :=
n
Q
n
Notam
,A
:=
Q
,
,A
:=
Q
301
Rescrierea locala
A este (S, )-algebra xata
multime de ecuatii conditionate, a, a
t
A
s
a
,A
a
t
ex. c A[z], nr
z
(c) = 1
a este c[z h
s
(l )] si b este c[z h
s
(r )],
(Y)l
=
s
r if H ,
h : T
,A
=
,A
A
302
Rescrierea locala
A este (S, )-algebra xata
Relat ia ~ A A este couenta daca or. a, b, c A
a ~ b si a ~ c ex. d A a.. c ~ d si b ~ d
Teorema 52
Fie o multime de ecuatii conditionate a..
este conuenta.
Atunci
=
A
, i.e.
a
A
a
t
a
a
t
303
Maude
fmod RESLOC is
including NAT .
op _++_ : Nat Nat -> Nat .
op rel : Nat Nat -> Bool .
vars x y : Nat .
eq x ++ y = x + y + x * y .
ceq rel(x,y) = true if x ++ y = 4 * x .
ceq rel(x , y) = false if x ++ y =/= 4 * x .
endfm
set trace on .
reduce rel (2 , 2) .
304
Maude
reduce in RESLOC : rel(2, 2) .
*********** trial #1
ceq rel(x, y) = true if x ++ y = x * 4 .
x --> 2
y --> 2
*********** solving condition fragment
x ++ y = x * 4
*********** equation
eq x ++ y = x + y + x * y .
..........
*********** success for condition fragment
x ++ y = x * 4
x --> 2
y --> 2
*********** success #1
h(x + +y) = 8, h(x 4) = 8, (8, 8) Q
1
305
Maude
*********** success for condition fragment
x ++ y = x * 4
x --> 2
y --> 2
*********** success #1
*********** equation
ceq rel(x, y) = true if x ++ y = x * 4 .
x --> 2
y --> 2
rel(2, 2)
--->
true
rewrites: 6 in 7967112414ms cpu (43ms real)
result Bool: true
h(x + +y)
Q1
h(x 4), deci (rel (2, 2), true) = (h(rel (x, y)), true) Q
2
306
307 308
Programare logica
Deductie si rescriere modulo
axiome
309
Maude
fmod MYNAT1 is
sort MyNat .
op 0 : -> MyNat .
op s : MyNat -> MyNat .
op _+_ : MyNat MyNat -> MyNat [assoc] .
op n : -> MyNat .
vars x y : MyNat .
eq x + 0 = x .
eq x + s(y) = s(x + y) .
endfm
reduce in MYNAT1 : n + (0 + n) .
result MyNat: n + n
Termenii sunt unicat i modulo asociativitate
310
Deduct ie din E modulo F
(S, ) signatura multisortata, E mult ime de ecuat ii,
F mult ime de ecuat ii necondit ionate ( axiome)
Exemplu:
fmod MYNAT1 is
...
endfm
E := (x)x +0
=
MyNat
x, (x, y)x +s(y)
=
MyNat
s(x +y)
F := x, y, z(x + y) + z
=
MyNat
x + (y + z)
311
Echivalent a semantica
(S, ) signatura multisortata,
F mult ime de ecuat ii necondit ionate (axiome)
Daca X este o mult ime de variabile, denim
F
:=
Ker (h) [ h : T
(X) B [= F
(echivalent a semantica).
Pentru t T
(X)
s
notam
[t]
F
:= [t]
F
clasa de echivalent a a lui t.
T
,F
(X) := T
(X)/
F
312
F-algebra liber generata
Propozit ia 53
T
,F
(X) este F-algebra liber generata de X, i.e.
or. B [= F, or. e : X B, exista un unic morsm
e : T
,F
(X) B cu e([x]
F
) = e(x) or. x X, si anume
e([t]
F
) = e(t) or. t T
(X)
Dem. Se aplica proprietatea de universalitate a mult imii cat:
T
(X)
[]
F
T
,F
(X)
e
B
Exercit iu: claricat i detaliile acestei demonstrat ii.
313
Ecuat ii si satisfacere modulo F
(S, ) signatura multisortata,
F mult ime de axiome, E mult ime de ecuat ii
=
s
[t
t
]
F
,
unde t, t
t
T
(X)
s
.
=
s
[t
t
]
F
e([t]
F
) = e([t
t
]
F
) or. e : X B.
In acest caz vom nota B [=
F
(X)[t]
F
=
s
[t
t
]
F
.
Notam E [=
F
(X)[t]
F
=
s
[t
t
]
F
daca or. B o F-algebra
B [=
F
(Y)[t
1
]
F
=
s
[t
2
]
F
or. (Y)t
1
=
s
t
2
E
implica B [=
F
(X)[t]
F
=
s
[t
t
]
F
314
Deduct ie din E modulo F
(S, ) signatura multisortata, E mult ime de ecuat ii,
F mult ime de axiome
Propozit ia 54
Daca B [= F atunci sunt echivalente:
(a) B [= (X)t
=
s
t
t
(b) B [=
F
(X)[t]
F
=
s
[t
t
]
F
.
Teorema 55
Sunt echivalente:
(a) E F [= (X)t
=
s
t
t
(b) E [=
F
(X)[t]
F
=
s
[t
t
]
F
Dem. Consecint a directa a Propozit iei 54.
315
Continuare (Propozit ia 54)
Dem. Fie B [= F.
(a) (b) Daca e : X B, atunci e(t) = e(t
t
) din ipoteza.
e([t]
F
) = e(t) = e(t
t
) = e([t
t
]
F
)
(b) (a) Daca e : X B, atunci e([t]
F
) = e([t
t
]
F
) din ipoteza.
e(t) = e([t]
F
) = e([t
t
]
F
) = e(t
t
)
316
Rescrierea modulo axiome
(S, ) signatura multisortata,
R sistem de rescriere,
F mult ime de axiome
Daca t, t
t
T
(X)
s
denim relat ia [t]
F
R/F
[t
t
]
F
astfel:
[t]
F
R/F
[t
t
]
F
t
F
c[z (l )] si
t
t
= c[z (r )], unde
c T
(X z), z , X, nr
z
(c) = 1
l r R cu Var (l ) = Y,
: Y T
=
s
[t
t
]
F
(2) t
EF
t
t
(3) [t]
E/F
[t
t
]
F
(T
,F
(X)
s
,
E/F
) este un sistem de rescriere abstract, pentru care
proprietatile de conuenta, terminare si completare se denesc
uzual. Algoritmul de completare necesita unicare modulo ecuatii,
care este nedecidabila n general.
319 320
Programare Logica
Semantica algebrei init iale
321
Algebra init iala
(S, ) signatura
Teorema 2
Pentru orice (S, )-algebra A exista un unic morsm o
A
: T
A.
o
A
(t) este interpretarea termenului t n A.
Exemplu
SD : T D unicul morsm
dc. t = (t1, . . . , tn) at. arb(t) :=
arb(t1) arb(tn)
Gramaticii G = (S
0
, N, T, P) i asociem signatura
( = (S = N, = P).
Denim (-algebra L
G
astfel ncat o
G,S0
(T
,S0
) = L(G), unde
L(G) este limbajul denit de G, iar o
G
: T
L
G
este unicul
(-morsm. Deoarece G este neambigua, morsmul o
G
este
injectiv.
/i
asociaza lui t
w
o interpretare n /, si anume o
A
(t
w
).
Sem(w) = o
,
(t
w
) = o
,
(o
1
G
(w)) oricare w L(G)
323
Gramatici independente de context (neambigue)
G = (S
0
, N, T, P)
- N este mult imea neterminalelor
- T este mult imea terminalelor
- S
0
este simbolul de start
- P N (N T)
.
Observam ca
p : n
1
n
k
n [p] n t
0
n
1
t
1
n
k
t
k
.
Vom scrie simplu = P.
325
G = (S
0
, N, T, P)
Exemplu.
descrierea unui numar natural ca sir de cifre
Gramatica G Signatura (
N = cifra, nat S = N
T = 0, . . . , 9, S
0
= nat
P = c0, , c9, p1, p2 =
[ci ] cifra i , i = 0, 9 ci : cifra, i = 0, 9
[p1] nat cifra p1 : cifra nat
[p2] nat natcifra p2 : natcifra nat
326
Algebra arborilor de derivare
Arbore de derivare pentru G:
frunzele sunt terminale,
nodurile interioare sunt neterminale,
radacina este neterminal,
daca un nod are eticheta n N, iar succesorii sai sunt etichetat i
cu x
1
, . . . , x
k
N T, atunci (n, x
1
x
k
) P
Observat ie
Mult imea arborilor de derivare are o structura canonica de
(-algebra, Arb, care este izomorfa cu algebra termenilor T
.
Algebra arborilor de derivare Arb este (-algebra init iala.
V.E. Cazanescu, Algebra si rescriere
327
G = (S
0
, N, T, P)
Am denit o signatura multisortata ( = (S = N, = P).
Construim o (-algebra care va permite denirea limbajului generat
de gramatica prin metoda algebrei init iale.
L
G
= (L
S
, L
) (-algebra
L
n
= T
, oricare n N
p : n
1
n
k
n si (w
1
, . . . , w
k
) (T
)
k
L
p
(w
1
, . . . , w
k
) = t
0
w
1
w
k
t
k
,
unde [p] n t
0
n
1
t
1
n
k
t
k
n P.
328
Limbajul L(G)
T
L
G
unicul (-morsm atunci pentru orice
neterminal n N
w T
[ n
w = o
G,n
(T
,n
).
In particular L(G) = o
G,S0
(T
,S0
).
Dem. induct ie dupa lungimea derivarii.
induct ie structurala.
329
Semantica algebrei init iale
pentru limbaje denite prin gramatici indepedente de context
T
S
G
S
A
L
G
/
t
w
S
G
S
A
Sem(w) = o
A
(t
w
)
w sintaxa concreta, t
w
sintaxa abstracta,
A algebra semantica, A
s
domeniu semantic or. s S
o
A
(t) interpretarea (semantica, semnicat ie, denotat ia)
termenului t
instruct iunile, w (t
w
) program, A masina,
Sem(w) = o
A
(t
w
) execut ia programului w pe masina A
330
Exemple
Vom prezenta urmatoarele aplicat ii ale metodei algebrei init iale:
Gramatica G = (S
0
, N, T, P),
N = cifra, nat, S
0
= nat,
T = 0, . . . , 9, P = c0, , c9, p1, p2
Signatura ( = (S = N, = P)
= ci : cifra [ i = 0, 9
p1 : cifra nat,
p2 : natcifra nat
332
Semantica unui sir de cifre
Algebra semantica
Denim / = (A
S
, A
) (-algebra:
A
cifra)
= 0, . . . , 9 N, A
nat)
= N,
A
ci
= i A
cifra)
, i = 0, 9 (operat ie constanta)
A
p1
: 0, . . . , 9 N, A
p1
(i ) = i ,
A
p2
: N 0, . . . , 9 N, A
p2
(m, i ) = m 10 + i
Daca o
A
: T
/ si o
G
: T
L
G
sunt unicele morsme
denite pe T
cifra
cifra
5
2
Sem(25) = o
A
(T
p2
(T
p1
(T
c2
), T
c5
)) =
A
p2
(A
p1
(A
c2
), A
c5
) = A
p1
(A
c2
) 10 + 5 = A
c2
10 + 5 =
2 10 + 5 = 25.
334
Calculatorul de buzunar
0 1 2 3 4 + ( IF M ON
5 6 7 8 9 * ) , E OFF
IF 2+M,(M+45)+3,5+6 E
M este celula de memorie
E comanda de evaluare
val (IF e1, e2, e3) = val (e2) daca val (e1) = 0
val (IF e1, e2, e3) = val (e3) daca val (e1) ,= 0
335
Calculatorul de buzunar
[ci ] cifra i , i = 0, 9
[p1] nat cifra
[p2] nat natcifra
[r 1] exp nat
[r 2] exp M
[r 3] exp exp +exp
[r 4] exp IFexp, exp, exp
[r 5] exp (exp)
[I 1] inst expE OFF
[I 2] inst expEinst
[Pr ] prog ONinst
336
Calculatorul de buzunar
Sem(w) N
+
, unde w este un program
337
Calculatorul de buzunar
Notat ie A B := f [ f : A B funct ie
Sem() N N
+
, unde este o instructiune
A
ci
, A
p1
, A
p2
[r 1] exp nat
A
r 1
: A
nat)
A
exp)
,
A
r 1
: N (N N)
A
r 1
(k) : N N, A
r 1
(k)(m) = k
A
r 2
: N N, A
r 2
(m) = m,
A
r 3
: A
expr )
A
expr )
A
expr )
,
A
r 3
(e1, e2)(m) = e1(m) + e2(m),
A
r 4
: A
expr )
A
expr )
A
expr )
A
expr )
,
A
r 4
(e1, e2, e3)(m) = e2(m) daca e1(m) = 0,
A
r 4
(e1, e2, e3)(m) = e3(m) daca e1(m) ,= 0,
A
r 5
: A
expr )
A
expr )
, A
r 5
(e) = e,
A
I 1
: A
expr )
A
inst)
, A
I 1
(e)(m) = e(m),
A
I 2
: A
expr )
A
inst)
A
inst)
, A
I 2
(e, I ) = e(m)I (e(m)),
A
Pr
: A
inst)
A
prog)
, A
Pr
(I ) = I (0).
340
Semantica algebrei initiale
o
A
: T
/ unicul morsm
o
G
: T
L
G
unicul morsm
w L(G), t
w
T
, o
G
(t
w
) = w (t este unic)
semantica lui w este Sem(w) = o
A
(t
w
)
Exemplu:
w = ON 5 + M E OFF
t
w
= T
Pr )
(T
I 1)
(T
r 3)
(T
r 1)
(T
p1)
(T
c5)
)), T
r 2)
)))
Sem(w) = o
A
(t) = A
Pr )
(A
I 1)
(A
r 3)
(A
r 1)
(A
p1)
(A
c5)
)), A
r 2)
)))
341
Semantica algebrei initiale
w = ON 5 + M E OFF
Sem(w) = A
Pr )
(A
I 1)
(A
r 3)
(A
r 1)
(A
p1)
(A
c5)
)), A
r 2)
)))
A
Pr
(I )=I (0)
=
A
I 1)
(A
r 3)
(A
r 1)
(A
p1)
(A
c5)
)), A
r 2)
))(0) =
A
r 3)
(A
r 1)
(A
p1)
(A
c5)
)), A
r 2)
)(0) =
A
r 1)
(A
p1)
(A
c5)
))(0) + A
r 2)
(0) =
A
p1)
(A
c5)
) + 0 =
A
c5)
+ 0 =
5 + 0 = 5
342
Exemple
Vom prezenta urmatoarele aplicat ii ale metodei algebrei init iale:
G = (S
0
, N, T, P)
N = prog, exp, term, fact, var ,
S
0
= prog,
T = x, y, z, (, ), +, , P = p0, . . . , p9,
344
G = (S
0
, N, T, P) pentru expresii aritmetice
[p0] prog exp
[p1] var x
[p2] var y
[p3] var z
[p4] fact var
[p5] fact (exp)
[p6] term fact
[p7] term fact term
[p8] exp term
[p9] exp exp +term
345
Semantica algebrei init iale
T
S
G
1
.
S
A
L
G
Pol / Cod
t
w
S
G
S
A
Sem(w) = o
A
(t
w
)
346
Algebra Pol - suportul
Pol
var )
= X = x, y, z
Pol
s
= T
k0
T
k
, s N var
347
Algebra Pol - operat iile
Pol
p
: T
Pol
p1
, Pol
p2
, Pol
p3
: X,
Pol
p1
= x, Pol
p2
= y, Pol
p3
= z,
Pol
p4
: X T
, Pol
p4
(v) = v, oricare v X,
Pol
p7
: T
, Pol
p7
(, ) = ,
Pol
p9
: T
, Pol
p7
(, ) = +,
348
Forma poloneza
o
G
: T
L
G
unicul (-morsm
T : T
w = y (x + z)
t
w
= p0(p8(p7(p4(p2), p5(p9(p8(p6(p4(p1))), p6(p4(p3)))))))
T(t
e
) = T(T
p0
(T
p8
(T
p7
(T
p4
(T
p2
), T
p5
(T
p9
(T
p8
(
T
p6
(T
p4
(T
p1
))), T
p6
(T
p4
(T
p3
)))))))) =
Pol
p0
(Pol
p8
(Pol
p7
(Pol
p4
(Pol
p2
), Pol
p5
(Pol
p9
(Pol
p8
(
Pol
p6
(Pol
p4
(Pol
p1
))), Pol
p6
(Pol
p4
(Pol
p3
))))))) =
Pol
p7
(y, Pol
p9
(x, z)) = Pol
p7
(y, xz+) = yxz +
349
Compilarea unei expresii
sS
, C
pi
pi
).
Cod
s
= (Inst(SMA) ; )
, oricare s S = N
Notam SI := Cod
s
, s S
353
Algebra Cod - operat iile
C
p0
: SI SI ,
C
p0
() = ; print
C
p
: SI SI , p p4, p5, p6, p8
C
p
() =
C
p1
, C
p2
, C
p3
: SI ,
C
p1
=ld x, C
p2
=ld y, C
p3
=ld z
C
p7
: SI SI SI ,
C
p7
(, ) = ; st R; inc P; ; Mu R; dec P
C
p9
: SI SI SI ,
C
p9
(, ) = ; st R; inc P; ; Ad R; dec P
354
Compilarea
e = y (x + z)
t
e
= p0(p8(p7(p4(p2), p5(p9(p8(p6(p4(p1))), p6(p4(p3)))))))
((t) = ((T
p0
(T
p8
(T
p7
(T
p4
(T
p2
),
T
p5
(T
p9
(T
p8
(T
p6
(T
p4
(T
p1
))), T
p6
(T
p4
(T
p3
)))))))) =
C
p0
(C
p8
(C
p7
(C
p4
(C
p2
), C
p5
(
C
p9
(C
p8
(C
p6
(C
p4
(C
p1
)))), C
p6
(C
p4
(C
p3
)))))) =
355
Compilarea
C
p0
(C
p7
(C
p2
, C
p9
(C
p1
, C
p3
))) =
C
p7
(C
p2
, C
p9
(C
p1
, C
p3
)) ; print=
C
p2
; st R; inc P; C
p9
(C
p1
, C
p3
) ;
Mu R; dec P ; print=
C
p2
; st R; inc P; C
p1
; st R; inc P; C
p3
;
Ad R; dec P ; Mu R; dec P ; print=
ldy ; st R; inc P; ld x ; st R; inc P; ld z ;
Ad R; dec P ; Mu R; dec P ; print
356
e = y (x + z), x = 3, y = 7, z = 2
Cod R Stiva() P
- - - 1
ld y ; 7 - 1
st R; inc P; 7 7 2
ld x ; 3 7 2
st R; inc P; 3 3 7 3
ld z ; 2 3 7 3
Ad R; dec P; 5 7 2
Mu R; dec P; 35 - 1
print 35
357 358
359 360
Programare logica
Clauze Horn. Rezolutie
361
Signatura multisortata de ordinul I
O signatura multisortata de ordinul I este un triplet (S, , ) unde:
=
w
wS
+ familie de simboluri de predicate.
Exemplu:
NATPRED = (S, , )
S := nat, := 0 : nat, succ : nat nat,
nat
:= pos,
nat nat
:= <
362
Modele si morsme
Un (S, , )-model este A = (A
S
, A
, A
) unde:
(A
S
, A
= A
A
w
[
w
.
Notatie: A
w
:= A
s1
A
sn
daca w = s
1
s
n
.
Fie A si B doua (S, , )-modele. O functie f : A B este
(S, , )-morsm daca:
(a
1
, . . . , a
n
) A
(h
s1
(a
1
), . . . , h
sn
(a
1
)) B
oricare
s1sn
363
Exemplu
NATPRED-modelul A:
A
nat
:= N, A
0
:= 0, A
succ
(n) := n + 1
A
pos
:= n[n > 0, A
<
:= (k, n)[k n
NATPRED-modelul B:
B
nat
:= 2
n
[n N, B
0
:= 1, B
succ
(2
n
) := 2
n+1
B
pos
:= 2
n
[n > 0, B
<
:= (2
k
, 2
n
)[k n
f : A B, f (n) := 2
n
or. n N
morsm de NATPRED-modele
364
Universul Herbrand
(S, , ) signatura multisortata de ordinul I
Universul Herbrand este T
, T
), unde
T
:= oricare .
T
,
este (S, , )-model initial.
365
Clauze Horn
Fie (, ) limbaj de ordinul I .
Denim formulele de ordinul I peste (, ).
formula atomica: (t
1
, , t
n
) cu t
i
T
(X) or. i
literal: (t
1
, , t
n
) sau (t
1
, , t
n
)
(literal pozitiv) (literal negativ)
clauza: L
1
L
m
unde L
i
literali or. i
(X).
A [= (t
1
, . . . , t
n
) (h(t
1
), , h(t
n
)) A
oricare h : T
(X) A morsm
A [= (t
1
, . . . , t
n
) A ,[= (t
1
, . . . , t
n
)
A [= L
1
L
m
A [= L
1
sau sau A [= L
m
[= X(P
1
P
n
),
(X(P
1
P
n
)) nu e satisabila,
(X(P
1
P
n
)) nu e satisabila.
Rezolutia este o metoda prin care vericam daca o multime de
clauze nu este satisabila.
Limbajul PROLOG are la baza rezolut ia SLD pentru clauze Horn.
368
Clauze Horn
O clauza Horn are cel mult un literal pozitiv
Clauzele Horn au trei forme:
rule (clauza denita) P
1
P
n
P
fact (clauza denita) P
query (clauza scop) P
1
P
n
unde P
1
, . . ., P
n
, P sunt formule atomice.
Notatia Prolog este:
P : P
1
, , P
n
: P
1
, , P
n
In aceasta notatie toate variabilele sunt cuanticate universal.
369
Rezolutia SLD
multime de clauze denite
SLD
P
1
P
i
P
n
(P
1
Q
1
Q
m
P
n
)
unde Q Q
1
Q
m
este o clauza denita din
(in care toate variabilele au fost redenumite) si
este c.g.u pentru P
i
si Q.
Notatia Prolog pentru rezolutia SLD:
G
i
este : P
1
, , P
i
, , P
n
C
i
este Q : Q
1
, , Q
m
i
(Q) =
i
(P
i
)
G
i +1
este : (P
1
, , Q
1
, , Q
m
, , P
n
)
i
unde P := (P), (p(t)) := p((t)) cu p
370
Rezolutia SLD
multime de clauze denite, G clauza scop
O derivare din prin rezolutie SLD este o secventa
G
0
:= G, G
1
, . . ., G
k
, . . .
in care G
i +1
se obtine din G
i
prin regula SLD.
Daca exista un k cu G
k
= atunci derivarea se numeste
SLD-respingere.
Completitdinea SLD-rezolutiei
Sunt echivalente:
[= X(P
1
P
n
),
unde G este : P
1
, , P
n
.
371
Exemplu
Fie urmatoarea multime de clauze Horn (baza de date):
(1) stramos(X, Y) : parinte(X, Y)
(2) stramos(X, Y) : parinte(X, Z), stramos(Z, Y)
(3) parinte(dan, bogdan)
(4) parinte(bogdan, ana)
Gasiti o respingere din pentru
: stramos(Y, bogdan), stramos(bogdan, Z)
(exista Y si Z astfel ncat
Y este stramos al lui bogdan si
bogdan este stramos al lui Z)
372
Exemplu
Vom nota p := parinte, q := stramos (predicate binare)
b := bogdan, d := dan, a := ana (constante)
G
0
: q(Y, b), q(b, Z)
(1) q(X
t
, Y
t
) : p(X
t
, Y
t
),
1
:= X
t
Y, Y
t
b
G
1
: p(Y, b), q(b, Z)
(3) p(d, b),
2
:= Y d
G
2
: q(b, Z)
(1) q(X
tt
, Y
tt
) : p(X
tt
, Y
tt
),
3
:= X
tt
b, Y
tt
Z
G
3
: p(b, Z)
(4) p(b, a),
4
:= Z a
G
4
:
373
Signaturi multisortate de ordinul I
(S, , ) signatura multisortata de ordinul I,
O clauza Horn are forma (X)p if p
1
, . . . , p
n
unde p
1
, . . ., p
n
, p formule atomice
(p
i
este (t
1
, . . . , t
m
i
) cu ,
t
1
, . . ., t
m
i
T
(X))
Daca n = 0 clauza are forma (X)p
(X)p if p
1
, . . . , p
n
este o notatie pt. p : p
1
, . . . , p
n
O clauza scop este o multime G de formule atomice.
Fie multime de clauze Horn. Regula rezolutiei este
G p(t)
G C
G este o multime de formule atomice,
(X)p(s) if C (varianta noua)
p , (s) = (t), c.g.u. pentru s si t
374
Clauze Horn ecuationale
Unei signaturi multisortate de ordinul I (S, , ) ii asociem o
signatura multisortata (S
b
,
b
b
) astfel:
S
b
:= S b, unde b , S,
b
:= true : b,
b
w,b
:=
w
(predicatele devin operatii cu rezultat boolean)
Exemplu
NATPRED = (S, , ), S := nat,
:= 0 : nat, succ : nat nat,
nat
:= pos,
nat nat
:= <
NATPRED
b
= (S
b
,
b
b
), S
b
:= nat, b,
b
:= 0 : nat, succ : nat nat, true : b,
nat,b
:= pos : nat b,
nat nat,b
:= <: nat nat b
375
Clauze Horn ecuationale
(S, , ) signatura multisortata de ordinul I,
(S
b
,
b
b
) signatura multisortata asociata
=
b
true, . . . , p
n
=
b
true.
(a
1
, . . . , a
m
) = A
true
Sunt echivalente:
A [=
,
(X)p if p
1
, . . . , p
n
A [=
b
,
b (X)p
=
b
true if p
1
=
b
true, . . . , p
n
=
b
true,
376