Sunteți pe pagina 1din 94

Programare Logica

Ioana Leustean
http://moodle.fmi.unibuc.ro/course/view.php?id=186
1
Cont inutul cursului

Introducere in MAUDE

Signaturi si algebre multisortate. Termeni

Morsme. Tipuri abstracte de date. Algebre init iale

Subalgebre. Algebre libere

Semantica termenilor

Ecuat ii. Relat ia de satisfacere

Specicat ii algebrice

-algebra init iala


2

Teorema constantelor. Demonstrat ii prin induct ie

Logica ecuat ionala: sintaxa

Logica ecuat ionala: corectitudine si completitudine

Regula Subterm Replacement

Rescrierea termenilor

Substitut ii. Algoritmul de unicare


3

Sisteme de rescriere abstracte

Rescrierea termenilor: terminare, conuent a, completare

Logica ecuat ionala si rescriere locala

Deduct ie si rescriere modulo axiome

Semantica algebrei init iale

Clauze Horn. Rezolut ie


4
Programare Logica
Maude
http://maude.cs.uiuc.edu/
5
Maude

Este dezvoltat la:

University of Illinois at Urbana-Champaign (UIUC)

Stanford Research Institute (SRI)

Apart ine familiei OBJ, al carei initiator a fost


Joseph Goguen(1941 - 2006).
6
Maude

Poate folosit ca demonstrator. Mecanismul de rescriere este


un procedeu de demonstrare automata, dar sunt implementate
si facilitat i speciale.

Poate un instrument util in dezvoltarea de software,


deoarece permite atat specicarea, cat si analiza unui limbaj
de programare. Faptul ca este executabil ofera si avantajul
unei implementari indirecte.
7
Maude

Este un interpretor.

Comenzile sunt introduse una cate una si sunt executate


imediat.

Un program este o mult ime de module.

Modulele pot scrise n siere sau direct n linia de comanda.

Modulele pot importate. Modulul predenit BOOL este


importat de orice modul.
8
Comenzi sistem
in ../nume-sier.mod
show module nume-modul .
select nume-modul .
show sorts .
show ops .
reduce termen .
reduce termen1 == termen2 .
parse term .
set trace on .
set trace o .
quit
Manual de Maude (html)
9
Maude> in PL/Exemple-Curs1.maude
==========================================
fmod MYNAT
Maude> show module MYNAT .
fmod MYNAT is
sorts Nat .
op 0 : -> Nat .
op s_ : Nat -> Nat .
endfm
Maude> select MYNAT .
10
Maude> reduce s s s s s 0 .
reduce in MYNAT : s s s s s 0 .
rewrites: 0 in 6641663802ms cpu (0ms real) (0 rew/sec)
result Nat: s s s s s 0
Maude> parse s s s s s 0 .
Nat: s s s s s 0
Maude> reduce s s s 0 == s s 0 .
reduce in MYNAT : s s s 0 == s s 0 .
rewrites: 1 in 10534570934ms cpu (0ms real) (0 rew/sec)
result Bool: false
11
Exemplul 1
fmod MYNAT is
sorts Nat .
op 0 : -> Nat .
op s_ : Nat -> Nat .
endfm
Acest modul introduce tipul de date Nat.
Datele de tip Nat sunt:
0, s 0, s s 0, s s s 0, s s s s 0, s s s s s 0, ...
Reprezentarea matematica:
S = Nat, = 0 : Nat, s : Nat Nat
(S, ) este o signatura si deneste o clasa de algebre (structuri,
structuri algebrice). Algebra (N, 0, succesor ) este un obiect
privilegiat al acestei clase.
12
fmod ... endfm
fmod MYNATLIST is
protecting MYNAT .
sort ListNat .
subsort Nat < ListNat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
var L : ListNat .
eq nil ; L = L .
eq L ; nil = L .
endfm
Structura generala a unui modul:
importuri (protecting, extending, including),
declararea sorturilor si a subsorturilor,
declararea operat iilor,
declararea variabilelor,
ecuat ii.
13
Importuri
Exista trei modalitati de importare a modulelor

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:

orice sir de rescrieri se termina,

ordinea de aplicare regulilor de rescriere nu schimba rezultatul


nal.
O ecuat ie t
1
= t
2
din teoria de ordinul I a grupurilor este vericata
n orice grup daca si numai daca exista un termen t astfel ncat
t
1

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,

denirea tipurilor de date este independenta de implementare,

extensibilitate,

permite tratarea erorilor si suprancarcarea operat iilor,

poate folosit ca demonstrator.


36
Programare logica
Signaturi. Algebre. Termeni
37
Mult imi S-sortate
S ,=

O mult ime S- sortata A este o familie A = A


s

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

O funct ie S- sortata f : A B este o familie de funct ii


f = f
s

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 ; g); h = f ; (g; h) (compunerea este asociativa)

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
,

O funct ie S-sortata f : A B se numeste


injectiva, (surjectiva, bijectiva)
daca f
s
este injectiva, (surjectiva, bijectiva) oricare s S.

O funct ie S-sortata f : A B se numeste inversabila daca


exista g : B A a.. f ; g = 1
A
si g; f = 1
B
.
Propozit ie. O funct ie S-sortata f : A B este inversabila daca si
numai daca este bijectiva (f
s
este bijectiva oricare s S).
40
Signaturi multisortate
(S, ) signatura multisortata

S mult imea sorturilor

mult imea simbolurilor de operat ii : s


1
s
n
s

este simbolul (numele) operat iei

s
1
, , s
n
,s S
s
1
, , s
n
sorturile argumentelor
s sortul rezultatului
< s
1
s
n
, s > aritatea operat iei

daca n = 0 atunci : s este simbolul unei operat ii constante

= (
w,s
)
wS

,sS

w,s
: w S
w = s
1
s
n
S

este permisa suprancarcarea operat iilor


41
Signaturi
(S, ) signatura multisortata

:=

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

este suprancarcat (overloaded) daca



w1,s1

w2,s2
si < w
1
, s
1
>,=< w
2
, s
2
>

este permisa suprancarcarea operat iilor


42
Exemple

BOOL = (S, )

S = bool

= T : bool , F : bool ,
: bool bool ,
: bool bool bool ,
: bool bool bool

NAT = (S, )

S = nat

= 0 : nat, succ : nat nat


43
Exemple

NATBOOL = (S, )

S = bool , nat

= T : bool , F : bool , 0 : nat,


succ : nat nat,
: nat nat bool

= (
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

= 0 : elem, empty : stiva,


push : elem stiva stiva,
pop : stiva stiva,
top : stiva elem
45
Exemple

AUTOMAT = (S, )

S = intrare, stare, iesire

= s0 : stare,
f : intrare stare stare,
g : stare iesire

GRAF = (S, )

S = arc, nod

= v0 : arc nod, v1 : arc nod


46
Signaturi ordonat-sortate
(S, , ) signatura ordonat-sortata

(S, ) signatura multisortata

(S, ) mult ime part ial ordonata

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.

In practica se folosesc signaturi ordonat-sortate.


47
Algebre multisortate
(S, ) - signatura multisortata
O algebra multisortata de tip (S, ) este o pereche (A
S
, A

), unde

A
S
= A
s

sS
(mult imea suport)

= A

(familie de operat ii) 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

) este o (S, )-algebra


48
Exemple

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) := max(x, y), 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 = (S = elem, stiva, )


= 0 : elem, empty : stiva, pop : stiva stiva,
push : elem stiva stiva, top : stiva elem

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 = (S = intrare, stare, iesire, )


= s0 : stare, f : intrare stare stare,
g : stare iesire

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

) care satisface urmatoarele proprietat i:

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
.

Semantica unui modul functional in Maude este o algebra


ordonat-sortata.
53
Mult ime de variabile
(S, ) signatura multisortata
[[ :=

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

(X), este cea


mai mica mult ime de siruri nite peste alfabetul
L =

sS
X
s

w,s

w,s
(, ) ,
care verica urmatoarele proprietat i:

(T1) X
s
T

(X)
s

(T2) dc. : s, at. T

(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

, este cea mai


mica mult ime de siruri nite peste alfabetul
L =

w,s

w,s
(, ) ,
care verica urmatoarele proprietat i:

(T2) dc. : s, at. T


,s
,

(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), . . .

siruri care nu sunt termeni


pop(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)), . . .

siruri care nu sunt termeni


(T, F), s (0), Ts(0), . . .
58
Exemple

AUTOMAT = (S, ), S = intrare, stare, iesire,


= s0 : 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


= v0 : arc nod, v1 : 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))), . . .

siruri care nu sunt termeni


+(0), 0(s)s(0), (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:

pasul init ial:


P(x) = true or. x X, P() = true or. : s,

pasul de induct ie:


daca t
1
T

(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, operat ia corespunzatoare este T

:=

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) algebra termenilor cu variabile din X


T

algebra termenilor fara 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
) := +(t
1
, t
2
)

(t
1
, t
2
) := (t
1
, t
2
)

Semantica unui modul n Maude (care cont ine numai


declarat ii de sorturi, operat ii si variabile) este o algebra de
termeni.
63 64
Programare logica
Morsme.
Tipuri abstracte de date.
Algebre init iale
65
Morsme
Exemplu. Signatura
MONOID = (S = s, = e : s, : ss s)
Fie (A, 1, ) si (B, 0, +) monoizi
(A
e
:= 1, A

:= , 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 = (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

f : A B, f = f
nat
, f
nat
(n) = n(mod 2)
este morsm de NAT-algebre

Nu exista morsm de NAT-algebre g : B A.


68
Exemple

STIVA = (S = elem, stiva, )


= 0 : elem, empty : stiva, pop : stiva stiva,
push : elem stiva stiva, top : stiva elem

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 .

Mpo (A, ) este reprezentata ca (S, )-algebra prin


(A, 0, 1 , T, F), unde
A
elem
:= A, A
bool
:= 0, 1, A
T
:= 1, A
F
:= 0,
A

(x, y) = T x y

Ce relat iile este ntre funct ii crescatoare si morsme de


(S, )-algebre?

Orice (S, )-morsm este funct ie crescatoare dar invers nu


este adevarat!
71
Proprietat i
(S, ) signatura multisortata
Propozit ia 1.
Fie A, B, C algebre si f : A B, g : B C morsme. Atunci
f ; g : A C este morsm.
Dem.

: 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

B or. B (S, )-algebra.


Dem. Fie B (S, )-algebra.
Existent a. Denim f : T

B prin induct ie pe termeni


(P(t) = f (t) este denita).

pasul init ial: dc. : s , at. f


s
() := B

pasul de induct ie: dc. : s


1
. . . s
n
s si
t
1
T
s1
, . . ., t
n
T
sn
a. f
s1
(t
1
), , f
sn
(t
n
) denite at.
f
s
((t
1
, . . . , t
n
)) := B

(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).

pasul init ial: dc. : s , at. g


s
() = B

= f
s
(),

pasul de induct ie: dc. : s


1
. . . s
n
s si
t
1
T
s1
, . . ., t
n
T
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
)) = B

(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

A si B sunt (S, )-algebre, unde


S := 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
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 = (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

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) := max(x, y), 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)(n) := 1 t(n) or. t C


bool
, 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

Algebrele izomorfe sunt identice (modulo redenumire).


87
ADT

Un tip abstract de date este o mult ime de date ( valori) si


operat ii asociate lor, a caror descriere (specicare) este
independenta de implementare.
abstract=disassociated from any specic instance

O algebra este formata dintr-o mult ime de elemente si o


mult ime de operat ii. Algebrele pot modela tipuri de date.

Doua algebre izomorfe au acelasi comportament, deci trebuie


sa e modele ale acelasi tip de date. Aceasta asigura
independent a de implementare.
88
ADT

O signatura (S, ) este interfat a sintactica a unui tip abstract


de date.

O algebra A = (A
S
, A

) este o posibila implementare.

Daca A B, atunci A si B implementeaza acelasi tip de date.

Un tip abstract de date este o clasa C de (S, )-algebre cu


proprietatea ca oricare doua algebre sunt izomorfe:
A, B C A B.

[A] := B (S, ) algebra[ A B este tip abstract de date.


89
Algebra init iala
/ clasa de (S, )-algebre

O (S, )-algebra I este init iala n / daca I / si pentru


orice B / exista un unic morsm f : I B.
Propozit ia 4

(a) I init iala n /, A /, A I A init iala n /

(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

Unicitatea. daca g : A B morsm, atunci


A
1
; g : I B
morsm,deci
A
1
; g = f
B
; rezulta g =
A
; f
B
= h.
(b) A
1
si A
2
init iale n /
Exista un unic morsm f : A
1
A
2
si un unic morsm
g : A
2
A
1
. Atunci f ; g : A
1
A
1
si 1
A1
: A
1
A
1
, deci
f ; g = 1
A1
. Analog g; f = 1
A2
, deci A
1
A
2
. qed
91
(S, ) -algebra init iala
(S, ) signatura multisortata

/ clasa tuturor (S, )-algebrelor.

I este (S, )-algebra init iala daca oricare B (S, )-algebra


exista un unic morsm f : I B.
Teorema 2. T

este (S, )-algebra init iala.

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

) este (S, )-subalgebra a lui (A


S
, A

), 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

Algebra generata de X n A este cea mai mica () subalgebra


B a lui A cu X B. Vom nota B = X

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

Spunem ca A este generata de X daca X A si X = A.



In
acest caz X este mult ime de generatori pentru A.
97
Construct ia algebrei generate
(S, ) signatura multisortata,
A-algebra, X mult ime, X A

Construim un sir de mult imi S-sortate (X


n
)
n
astfel:

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.

(a) dc. C A subalgebra at. h(C) B subalgebra,

(b) dc. D B subalgebra at. h


1
(D) B subalgebra,

(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 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
.

Daca X A si A este liber generata de X, atunci X = A.


Invers nu este ntotdeauna a adeva rat.

este liber generata de mult imea .


101
Mult imi de generatori liberi
(S, ) signatura multisortata,
A-algebra, X mult ime de variabile, X A
Daca A este liber generata de X, atunci X = A.
Spunem ca X este mult ime de generatori liberi pentru A.

NAT = (S = s, ), = 0 : nat, succ : nat nat


A
nat
:= N, A
0
:= 0, A
succ
(x) := x + 1
A este liber generata de
1 este mult ime de generatori pentru A
1 nu este mult 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: 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

A este liber generata de X, unde X


elem
:= N si X
stiva
:= .
103 104
Programare logica
Semantica termenilor
105
Mult ime de variabile
(S, ) signatura multisortata
[[ :=

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

(X), este cea


mai mica mult ime de siruri nite peste alfabetul
L =

sS
X
s

w,s

w,s
(, ) ,
care verica urmatoarele proprietat i:

(T1) X
s
T

(X)
s

(T2) dc. : s, at. T

(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, operat ia corespunzatoare este T

:=

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) algebra termenilor cu variabile din X


vom nota (t
1
, . . . , t
n
) := (t
1
, . . . , t
n
)
108
Semantica termenilor
(S, ) signatura, X mult ime de variabile
Teorema 7 (Evaluarea termenilor n algebre).
Fie A o (S, )-algebra. Orice funct ie e : X A (evaluare,
atribuire, interpretare)se extinde la un unic (S, )-morsm
e : T

(X) A.
Dem.

Denim e(t) prin induct ie pe termeni:

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

(X) A este morsm.

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

= 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 = (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 = (S = elem, stiva, )


= 0 : elem, empty : stiva, pop : stiva stiva,
push : elem stiva stiva, top : stiva elem

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) este (S, )-algebra liber generata de X n clasa tuturor


(S, )-algebrelor.
o expresie este un element al unei algebre libere

X =
T

este (S, )-algebra init iala.

A = T

(Y)
O substitut ie este o atribuire : X T

(Y).
Orice substitut ie : X T

(Y) se extinde la un unic


morsm de (S, )-algebre : 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

pasul init ial: dc. s S si x X


s
at. g
s
(x) = f
s
(x) (ipoteza),
dc. : s , at. g
s
() = A

= f
s
(),

pasul de induct ie: dc. : s


1
. . . s
n
s si
t
1
T

(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

exista un unic morsm f : T

(X) T

(Y) a.
f
s
(x) = u
s
(x) or. s S, x X
s
,

exista un unic morsm g : T

(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) B morsm, atunci


or. s S, x X
s
ex. a A
s
a.. h
s
(a) = f
s
(x).
Oricare s S, x X
s
, alegem a A
s
a.. h
s
(a) = f
s
(x) si denim
e
s
(x) := a. Atunci e : X A este o evaluare si .
(e; h)
s
(x) = f
s
(x) r. s S, x X
s
.
Din Teorema 7, e; h = f , deci g := e.
116
Denirea operat iilor derivate
A o -algebra, t 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, , ,

signatura algebrelor Boole,


X = x, y, t = x y T

(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 este mult imea variabilelor, x X, t T

(X)

D este -algebra datelor

o stare a memoriei este o funct ie e : X D

semantica unei instruct iuni descrie modul n care instruct iunea


modica starile memoriei

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

O (S, )-ecuat ie este formata dintr-o mult ime de variabile X


si din doi termeni t si t
t
de acelasi sort din T

(X).
Vom nota o ecuat ie prin
(X)t

=
s
t
t
.

Spunem ca o (S, )-algebra A satisface o ecuat ie (X)t



=
s
t
t
(A este model al ecuat iei) daca e
s
(t) = e
s
(t
t
) pentru orice
e : X A.

In acest caz, vom nota
A [= (X)t

=
s
t
t
.

= egalitate formala, = egalitate efectiva


122
Necesitatea cuanticarii

S = s, bool , := T : bool , F : bool , g : s bool

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:

o mult ime de variabile X,

doi termeni de acelasi sort t, t


t
T

(X)
s
.

o mult ime H de ecuat ii u



=
s
v, cu u,v T

(X)
s
.

In practica H este nita H = u


1

=
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 .

In acest caz, vom nota A [= .


Vom nota cu Alg(S, , ) clasa -algebrelor
Alg(S, , ) := A Alg(S, ) [ A [=
130
-algebre
Teorema 11.
Fie A B (S, )-algebre, := (X)t

=
s
t
t
if H.
A [= B [=
Dem. Notam : B A un izomorsm.
Fie e : X B a.. e
s
(u) = e
s
(v) or. u

=
s
v H.
Denim f : X A prin f := e;
Atunci

f = e; , deoarece

f[
X
= (e; )[
X
.

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

O specicat ie este un triplet (S, , ), unde (S, ) este o


signatura multisortata si este o mult ime de ecuat ii
condit ionate. Specicat ia (S, , ) deneste clasa modelelor
Alg(S, , ), care reprezinta semantica ei.


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. ,

(b) or. B [= ex. unic f : A B morsm.


139
Continuare
A = (Z
4
, 0, succ), unde succ(x) := x + 1
(a) A [= (x)succ(succ(succ(succ(x))))

= x
Daca X := x si e : X A, atunci
e(succ(succ(succ(succ(x))))) =
A
succ
(A
succ
(A
succ
(A
succ
(e(x))))) = e(x) + 4 (mod 4)
= e(x) = e(x)
(b) Fie B o -algebra.
Existent a: denim f : A B prin
f (0) := B
0
, f (x + 1) := B
succ
(f (x)) pt. 0 x 2 .
f morsm: f (A
succ
(x)) = f (x + 1) = B
succ
(f (x)) pt. 0 x 2.
Ramane de demontrat f (A
succ
(3)) = B
succ
(f (3)).
140
Continuare
(1) f (A
succ
(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
t
: X B, e
t
(x) := B
0
obt inem
B
succ
(B
succ
(B
succ
(B
succ
(B
0
)))) = e
t
(succ(succ(succ(succ(x))))) =
e
t
(x) = B
0
Din (1) si (2) rezulta f (A
succ
(3)) = B
succ
(f (3)).
Unicitatea: e g : A B un morsm;
dem. ca g(x) = f (x) prin inductie pt. i 0, 1, 2, 3
g(0) = g(A
0
) = B
0
= f (0),
g(x + 1) = g(A
succ
(x)) = B
succ
(g(x)) = B
succ
(f (x)) =
f (A
succ
(x)) = f (x + 1).
141
Exercit iu
Determinat i un model int ial pentru specicat ia:
fmod NSET is
sorts nat nset .
op 0 : -> nat .
op s : nat -> nat .
op vid : -> nset .
op ins : nat nset -> nset .
vars x y : nat .
var A : nset .
eq ins(x,ins(x,A)) = ins(x,A) .
eq ins(x,ins(y,A)) = ins(y,ins(x,A)) .
endfm
142
143 144
Programare logica
Congruent e. -algebra init iala
145
Congruent e
(S, ) signatura, A (S, ) algebra

O relat ie S-sortata =
s

sS
A A este congruent a
daca:


s
A
s
A
s
echivalent a or. s S,

este compatibila cu operat iile


a
i

si
b
i
or. i = 1, . . . , n A

(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

(a) Ker (f ) este congruent a pe A.

(b) Daca congruent a pe A, atunci Ker ([]

) =.
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

or. B / ex. unic morsm h : 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
:=

Ker (h) [ h : A B morsm B [=


echivalen a semantica pe 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.

[= cf. Propozit iei 16.

=
l
, unde / = Alg(S, , )
or. B [= ex. unic morsm f : T

B cf. Propozit iei 15.


Teorema 18.
T

este -algebra init iala.


159
ADT
(S, , ) specicat ie
J
,
:= A [ A init iala n Alg(S, , )
este un tip abstract de date.
Un modul funct ional fmod ... endfm n Maude deneste tipul
abstract de date J
,
si construiet e efectiv algebra 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:

A este -algebra init iala

A verica urmatoarele proprietat i:

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

(a) Daca [= (X)t



=
s
t
t
if H atunci

(X)u

=
s
v [ u

=
s
v H [= (X)t

=
s
t
t
.

(b) Implicat ia inversa nu este adevarta n general .

(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

A unicul morsm. Daca e


s
(u) = e
s
(v)
or. u

=
s
v H, atunci A [=

()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

mult imea X poate privita ca o signatura care are numai


operat ii constante:
variabila x X
s
devine operat ia constanta c
x
: s

(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, a) este (X)-algebra

A
cx
:= a
s
(x) oricare x X
s
, s S

orice (X)-algebra poate construita astfel


T
(X)
= T
(X),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]

Teorema (Demonstrat ii prin induct ie)

Fie Q o proprietate a elementelor lui T


P
a.. urmatoarele condit ii
sunt satisfacute:

pasul init ial:


Q([]) = true or. Cons
,s

pasul de induct ie:


daca t
1
, . . ., t
n
T
s
si Q([t
1
]) = = Q([t
n
]) = true atunci
Q([(t
1
, . . . , t
n
)]) = true or. Cons
s
n
,s
.
Atunci Q([t]) = true oricare [t] T
P
.
177 178
179 180
Programare logica
Sintaxa logicii ecuat ionale
181
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)

(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

In acest caz scriem si spunem ca este deductibila


(sintactic), demonstrabila, derivabila din . Secvent a

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

este corecta daca


[=
1
, . . ., [=
n
[=
Propozit ia 22
Regulile deduct iei ecuat ionale R, S, T, C

, 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

(X) A un morsm. Din (*),


f
s1
(t
1
) = f
s1
(t
t
1
), . . ., f
sn
(t
n
) = f
sn
(t
t
n
), deci
f
s
((t
1
, . . . , t
n
)) = A

(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

(X) substitut ie a..


[= (X)(u
1
)

=
s1
(v
1
), . . ., [= (X)(u
n
)

=
sn
(v
n
) (*)
Trebuie sa aratam ca [= (X)(t)

=
s
(t
t
).
Fie A [= si f : T

(X) A un morsm. Atunci

; f : T

(Y) A si, din (*),


(

; 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

sunt corecte, rezulta [=


i
.
194

Inchiderea la reguli de deduct ie


(S, ) o signatura multisortata, X o mult ime de variabile
Reg
(X)t
1

=
s1
t
t
1
, . . . , (X)t
n

=
sn
t
t
n
(X)t

=
s
t
t
Relat ie binara T

(X) T

(X) este nchisa la Reg daca


t
1

s1
t
t
1
, . . ., t
n

sn
t
t
n
t
s
t
t
Propozit ia 24
Sunt echivalente:

(a) este congruent a pe T

(X),

(b) este nchisa la R, S, T, C

.
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:

(a) verica CS(,T

(X)),

(b) este nchisa la Sub

(c) T

(X)/

[= .
197
Echivalent a sintactica
(S, , ) specicat ie, X o mult ime de variabile
Pe T

(X) denim urmatoarea relat ie S-sortata


t
s
t
t
(X)t

=
s
t
t
oricare s S.
este echivalent a sintactica determinata de .
Propozit ia 26

este o congruent a nchisa la substitut ie.


Dem. Din denit ia deduct iei sintactice , rezulta ca

este
nchisa la R, S, T, C

, Sub

.
198
Echivalent a semantica
(S, , ) specicat ie, A o (S, )-algebra

,A
:=

Ker (h) [ h : A B morsm B [=


este echivalent a semantica pe A determinata de .
Propozit ia 27

,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/

surject ia canonica ( p(a) = [a]

or. a A). Din


Propozit ia 16, A/

[= , deci = Ker (p)


,A
.
199
Completitudinea deduct iei ecuat ionale
mult ime de ecuat ii condit ionate, = (X)t

=
s
t
t
ecuat ie
Teorema 28 (Completitudine)
[= (X)t

=
s
t
t
(X)t

=
s
t
t
Dem. Din Propozit ia 26 si Propozit ia 16, T

(X)/

este o
-algebra, deci T

(X)/

[= .Fie p : T

(X) T

(X)/

surject ia canonica, p(t) := [t] oricare t T

(X), unde [t] este


clasa de echivalent a a lui t determinata de

. 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:

Se aplica Propozit iile 26 si 27.


200
Teorema de completitudine
(S, ) signatura, X mult ime de variabile, t, t
t
T

(X)
s

t
t
(X)t

=
s
t
t
(echiv. sintactica)

t
t
[= (X)t

=
s
t
t
(echiv. semantica)

Corectitudinea regulilor de deduct ie:

Completitudinea regulilor de deduct ie:

Teorema 29 (Teorema de completitudine)

[= (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

Daca z , X atunci un termen c 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

(X) este substitut ia


z t
0
(z) = t
0
si z t
0
(x) = x or. x X
206
Regula de deduct ie SR

(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

E mult ime de ecuat ii necondit ionate


SR
E
(X)c[z (l )]

=
s
c[z (r )]
unde (Y)l

=
s
r E, : Y T

(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

este regula de deduct ie corecta.


Dem. Fie (Y)l

=
s
r if H , : Y T

(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).

Daca [c[ = 1, atunci c = z si [= (X)(l )



=
s
(r ) deoarece
Sub

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

se obt ine aplicand SR

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

, atunci exista (Y)l



=
s
r if H ,
: Y T

(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

(S, , ) specicat ie, X mult ime de variabile, t, t


t
T

(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

este cea mi mica congruent a nchisa la


substitut ie, denita pe T

(X).
(b) (a) (
SR

) Din corectitudinea regulii SR

(Propozit ia
31) si Teorema de completitudine (Teorema 29), rezulta

SR

.
213 214
215 216
Programare logica
Rescrierea termenilor
217
Rescrierea
(S, ) signatura

O regula de rescriere este formata dintr-o mult ime de variabile


Y si doi termeni l , r de acelasi sort din T

(Y) a..

l nu este variabila

Var (r ) Var (l ) = Y.
Vom nota l r (l
s
r ).

Un sistem de rescriere (TRS) este o mult ime nita de reguli


de rescriere.

R = x + 0 x, x + succ(y) succ(x + y)
218
Relat ia
R

Fie R un sistem de rescriere. Daca t, t


t
T

(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

(X) este o substitut ie.

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.

In acest caz vom nota


E
:=
R
E
ecuat iile devin reguli de rescriere prin orientare

In Maude ecuat iile eq t = t trebuie sa verice condit ia


Var (t) Var (t) deoarece n reduceri ecuat iile sunt folosite ca
reguli de rescriere.
220
Exemplu
E = x + 0

= x, x + succ(y)

= succ(x + y)
R
E
= x + 0 x, x + succ(y) succ(x + y)
0 + succ(0)
E
succ(0 + 0)
(l := x + succ(y), r := succ(x + y), c := z, := x, y 0)
succ(0 + 0)
E
succ(0)
(l := x + 0, r := x, c := succ(z), := x 0)
0 + succ(0)
E
succ(0 + 0)
E
succ(0)
221
Maude
fmod INTLIST is
protecting INT .
sort IntList .
subsort Int < IntList .
op nil : -> IntList .
op _,_ : IntList IntList -> IntList [ assoc id: nil] .
vars L1 L2 L3 : IntList . var x : Int .
eq L1 , x , L2 , - x , L3 = L1 , L2 , L3 .
endfm
set trace on .
reduce 4 , 3 , 5 , 6 , - 3 , 8 , -5 .
222
Maude
reduce in INTLIST : 4,3,5,6,-3,8,-5 .
*********** equation
eq L1,x,L2,- x,L3 = L1,L2,L3 .
L1 --> nil
x --> 5
L2 --> 6,-3,8
L3 --> nil
5,6,-3,8,-5
--->
nil,(6,-3,8),nil
223
Maude
*********** equation
eq L1,x,L2,- x,L3 = L1,L2,L3 .
L1 --> nil
x --> 3
L2 --> 6
L3 --> nil
3,6,-3,8
--->
(nil,6,nil),8
rewrites: 2 in 6264381186ms cpu (27ms real)
result IntList: 4,6,8
224
Sisteme de rescriere abstracte
Un sistem de rescriere abstract este o pereche (T, ), unde T
este o mult ime si T T ( este o relat ie binara pe T).
Denit ii
:=
1
(relat ia inversa)
:= (nchiderea simetrica)

:= ()

(nchiderea reexiva si tranzitiva)

:= ()

(echivalent a generata)
(T

(X)
s
,
s
) sistem de rescriere abstract
225
Exemplu
T := N 0, 1, := (m, k) [ k < m, k[m

= (k, m) [ 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) relat ia de rescriere


Teorema 34.
Fie t, t
t
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

(X) substitut ie implica t


E
t
t
sau t
t

E
t.
Daca t
E
t
t
atunci

(t)
E

(t
t
) pentru c = z.
Daca t
t

E
t atunci

(t
t
)
E

(t) pentru c = z.
Rezulta

(t)
E

(t
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

(Y) morsm de (S, )-algebre.


234
Substitut ie
X, Y si Z mult imi de variabile

Daca : X T

(Y), : X T

(Y) atunci
= = .

vom identica uneori cu

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

compunerea substitut iilor : X T

(Y), : Y T

(Z)
; : X T

(Z), (; )
s
(x) := ;

compunerea substitut iilor este asociativa,

compunerea substitut iilor nu este n general comutativa.


235
Exemplu
S = s, = a : s, p : sssss s, f : s s, g : s s,
X = x, y, z, u, v
t = p(u, v, x, y, z)
= x f (y), y f (a), z u
(t) = p(u, v, f (y), f (a), u)
= y g(a), u z, v f (f (a))
; = x f (g(a)), y f (a), u z, v f (f (a))
(; )(t) = p(z, f (f (a)), f (g(a)), f (a), z)
(; )(t) = p(u, f (f (a)), f (y), g(a), u)
236
Termeni. Cazul monosortat
(S, ) signatura monosortata, S = s
X mult ime de variabile,
T

(X) termenii cu variabile din X


O ecuat ie este o pereche de termeni t, t
t
, unde t, t
t
T

(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

= egalitate formala, = egalitate efectiva


237
Unicare. Cazul monosortat.
(S = s, ) signatura, X mult ime de variabile

O problema de unicare este o mult ime nita de ecuat ii


U = t
1

= t
t
1
, . . . , t
n

= t
t
n

Un unicator (o solut ie) pentru U este o substitut ie


: X T

(X) a.. (t
i
) = (t
t
i
) or. i = 1, . . . , n.
Notam cu Unif (U) mult imea unicatorilor lui U.

Un unicator Unif (U) este un cel mai general unicator


(cgu, mgu) daca or.
t
Unif (U) ex. substitut ie a..

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))

(x) := y, (y) := y, (z) := z,


t
(x) := 0,
t
(y) := 0,
t
(z) := z,
t
= ; y 0

(x) := z + 0, (y) := z + 0, (z) := z,


= ; y z + 0

(x) := z, (y) := z, (z) := z, = ; y z

si sunt cgu
cgu nu este unic
239
Notat ii

Unif (U) := mult imea unicatorilor lui U

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

este rezolvata daca

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

(X) substitut ie, atunci


((e
1
, . . . , e
n
)) = ((e
t
1
, . . . , e
t
n
)) (e
i
) = (e
t
i
) or. i
Elimina:
R = R
t
x

= t, T = x

= t x tR
t
, x Var (R
t
) Var (t)
Unif (R) Unif (R
t
) si Unif (x

= t)
Daca Unif (x

= t) atunci x t; =
Unif (R) x t; Unif (R
t
) si Unif (x

= t)
Unif (x tR
t
) si Unif (x

= t)
Unif (T)
249
Completitudine
Propozit ia 38.
Daca U R atunci U nu are solut ii.
Dem. Distingem doua cazuri.

La pasul Descompune, exista


(e
1
, . . . , e
n
)

= (e
t
1
, . . . , e
t
k
) R cu ,= . Termenii
(e
1
, . . . , e
n
) si (e
t
1
, . . . , e
t
k
) nu pot unicat i deoarece ncep
cu caractere diferite.

La pasul Elimina , exista x



= t R cu x Var (t) si t ,= x.
Daca este o substitut ie, atunci [(t)[ > [(x)[, deci x si t
nu au unicator.
R cont ine o ecuat ie care nu poate unicata, deci R nu are
unicator. Deoarece U si R au aceeasi unicatori, rezulta ca U nu
are unicatori.
250
Complexitate

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
)), . . ..

La pasul Elimina, pentru a verica ca o variabila x


i
nu apare n
membrul drept al ecuat iei ( occur check) facem 2
i
comparat ii.

Algoritmul de unicare prezentat anterior este exponent ial.


Complexitatea poate mbunatat ita printr-o reprezentare
ecienta a termenilor.
K. Knight, Unication: A Multidisciplinary Survey, ACM
Computing Surveys, Vol. 21, No. 1, 1989.
251
Matching problem
fmod MATCH is
sort Elem .
op a : -> Elem .
ops _+_ _*_ : Elem Elem -> Elem .
vars x y : Elem
eq x + (y * y) = x * y .
endfm
reduce in MATCH : (a + y) + (x * x) .
eq x + (y * y) = x * y .
x --> a + y
y --> x
(a + y) + (x * x)
--->
(a + y) * x
rewrites: 1 in 9146759363ms cpu (4ms real)
result Elem: (a + y) * x 252
Matching problem

Fie p si t termeni cu variabile din X. Spunem ca


p matches t (t este o instant a a lui p)
daca exista o substitut ie : X T

(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

O problema de matching poate rezolvata prin unicare.


253 254
255 256
Programare logica
Sisteme de rescriere complete
257
Sisteme de rescriere abstracte
(T, ) sistem de rescriere (T mult ime, T T)
Denit ii
t T este reductibil dc. ex. t
t
T a.. t t
t
t
0
t
1
t
2
reducere
t T este forma normala(ireductibil) dc. nu este reductibil
t
0
este o forma normala a lui t dc. t

t
0
si
t
0
este forma normala
t
1
t
2
dc. ex. t T a.. t
1

t

t
2
(t
1
si t
2
se nt`alnesc, relat ia de ntalnire)
258
Exemple

T := N 0, 1, := (m, k) [ k < m, k[m


k este forma normala daca este numar prim
k
1
k
2
daca nu sunt prime ntre ele
k este forma normala a lui m daca k este factor prim al lui m

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 := N 0, 1, := (k, m) [ k < m, k[m


(T, ) e noetherian, nu e conuent
260
Proprietat i
Propozit ia 39

(T, ) conuent (T, ) Church-Rosser
Propozit ia 40
Daca (T, ) este complet atunci orice termen are o singura forma
normala.

In acest caz vom nota fn(t) forma normala a lui t T.
Dem. Existent a formei normale rezulta din terminare. Fie t un
termen si presupunem ca t
1
si t
2
sunt forme normale distincte ale
lui t.Deoarece t
1

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
).

In consecint a fn(t) = fn(t


t
).
266
Logica ecuat ionala si rescrierea
Terminarea unui sistem de rescriere este nedecidabila.
Pentru sisteme de rescriere particulare putem decide asupra
terminarii.
Pentru sisteme de rescriere noetheriene, conuent a este decidabila.
Daca E este o mult ime de ecuat ii a.. R
E
este un sistem de
rescriere complet atunci deduct ia ecuat ionala E (X)t

=
s
t
t
este
decidabila:

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

O regula de rescriere este formata dintr-o mult ime de variabile


Y si doi termeni l , r de acelasi sort din T

(Y) a..

l nu este variabila

Var (r ) Var (l ) = Y.
Vom nota l r (l
s
r ).

Un sistem de rescriere (TRS) este o mult ime nita de reguli


de rescriere.
Exemplu: R = x + 0 x, x + succ(y) succ(x + y)

prin lungimea unui termen t vom nt elege numarul de


simboluri din scrierea lui t n forma prex.
270
Terminarea
(S, ) signatura, R un TRS
Propozit ie 43
Daca ecarui termen t i poate asociat un numar natural
t (t) N astfel ncat
t
R
t
t
(t) > (t
t
)
oricare t si t
t
, atunci R este noetherian.
Dem. N nu cont ine lant uri innite n
1
> n
2
> > n
k
> .
Exemple

R = x 0 x, succ(x) succ(y) x y noetherian


(t) := lungimea lui t

R = f (g(x), y) f (y, y) nu este noetherian


f (g(x), g(x))
R
f (g(x), g(x))
R

271
Arborele de reducere
(S, ) signatura, R un sistem de rescriere (TRS)

Arborele de reducere al termenului t este denit astfel:


radacina arborelui are eticheta t,
descendent ii nodului cu eticheta u sunt etichetat i cu
termenii u
t
care verica u
R
u
t
.

Orice nod al unui arbore de reducere are un numar nit de


descendent i deoarece R este o mult ime nita.

Daca R se termina atunci


(t) := nalt imea arborelui de reducere asociat lui t.
t
R
t
t
(t) > (t
t
)
272
Arbore de reducere
R = x + 0 x, x + succ(y) succ(x + y)
succ(0) + succ(0 + 0)

succ(0) + succ(0)

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)

Daca R este noetherian atunci sunt echivalente:


(a) R este conuent,
(b) t
1

R
t
2
oricare (t
1
, t
2
) pereche critica.
278
Exemplu
R = f (f (x)) x este conuent.
Determinam perechile critice f (f (x)) x si f (f (y)) y
l
1
:= f (f (x)), r
1
:= x, l
2
:= f (f (y)), r
2
:= y
Subtermenii lui l
1
care nu sunt variabile sunt f (f (x)) si f (x).

t := f (f (x)), c = z, := x y
(r
1
) = y, (c)[z (r
2
)] = y

t := f (x), c = f (z), := x f (y)


(r
1
) = f (y), (c)[z (r
2
)] = f (y)
Perechile critice sunt (y, y) si (f (y), f (y)). Deoarece y y si
f (y) f (y), sistemul de rescriere R este conuent.
279
Completarea unui TRS (Knuth-Bendix)
(S, ) signatura
Intrare. R un sistem de rescriere (TRS) noetherian.
Init ializare. T := R, > ordine de reducere pentru T
Se executa urmatorii pasi, cat timp este posibil:
(1) CP := CP(T) = (t
1
, t
2
)[(t
1
, t
2
) pereche critica n T
(2) Daca t
1
t
2
oricare (t
1
, t
2
) CP,
atunci STOP (T este completarea lui R).
(3) Daca (t
1
, t
2
) CP, t
1
, t
2
, atunci
daca fn(t
1
) > fn(t
2
)
atunci T := T fn(t
1
) fn(t
2
),
altfel daca fn(t
2
) > fn(t
1
)
atunci T := T fn(t
2
) fn(t
1
),
altfel STOP (completarea esuata).
Iesire. T complet (completarea lui R) sau esec.
Atent ie: succesul completarii depinde de relat ia <
280
Exemplu
S := s, := : ss s,
E := x, y, v(x y) (y v)

= y)
T = R
E
:= (x y) (y v) y, (t) := lungimea termenului t
Determinam perechile critice pentru
l
1
:= (x y) (y v), r
1
:= y, l
2
:= (x
t
y
t
) (y
t
v
t
), r
2
:= y
t
Subtermenii lui l
1
care nu sunt variabile sunt (x y) si y v.

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

Semantically, declaring a set of equational attributes for an


operator is equivalent to declaring the corresponding
equations for the operator.

Operationally, using equational attributes to declare such


equations avoids termination problems and leads to much
more ecient evaluation of terms containing such an
operator.

The eect of declaring equational attributes is to compute


with equivalence classes modulo such equations.
288
Punctul de vedere local
(S, ) signatura multisortata

O ecuatie (X)t

=
s
t
t
este o pereche de termeni de acelasi
sort din algebra T

(X).

Fie F mult ime de ecuat ii necondit ionate. O ecuat ie modulo F


are forma (X)[t]
F

=
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.

Putem inlocui termenii cu elemente dintr-o algebra xata A.


Astfel, o ecuatie(propozitie) din A va avea forma a

=
s
c, unde
a, c A
s
. Acesta este punctul de vedere local al logicii
ecuationale.
V.E. Cazanescu, Local Equational Logic,
FUNDAMENTALS OF COMPUTATION THEORY,
LNCS 710 (1993), 162-170.
289
Ecuat iile(propozit iile) din A
clasic (X)t

=
s
t
t
t, t
t
T

(X)
s
local a

=
s
c a, c A
s
, A xata
(A)a

=
s
c

In cele ce urmeaza

A va o (S, )-algebra xata.

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

In acest caz spunem ca este -teorema a lui A. Secvent a


1
, . . .,

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

Inchiderea la reguli de deduct ie


(S, ) o signatura multisortata, X o mult ime de variabile
Reg
a
1

=
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

este cea mai mica congruenta pe A, inchisa la -substitutie.


Dem. exercit iu
295
Teorema de completitudine

a
A

a
t

A
a

=
s
a
t
(echiv. sintactica)

a
A

a
t
[=
A
a

=
s
a
t
(echiv. semantica)

Corectitudinea logicii locale:


A

Completitudinea regulilor de deduct ie:


A

Teorema 48 (Teorema de completitudine a logicii locale)

=
A

Dem. exercii tiu


296
Contexte
(S, )-signatura, A (S, )-algebra
Fie A[z] := T

(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

(Y) A este un morsm,


h
s
(u)
,A
h
s
(v) or. u

=
s
v H
Teorema 51

,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

O ecuat ie modulo F are forma (X)[t]


F

=
s
[t
t
]
F
,
unde t, t
t
T

(X)
s
.

Pentru B o F-algebra denim satisfacerea modulo F:


B [=
F
(X)[t]
F

=
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

(X) este o substitut ie.


[t]
F

R/F
[t
t
]
F
ex. t
0
( t
F
t
0
si t
0

R
t
t
)
317
Exemplu
fmod MYNAT1 is
sort MyNat .
op 0 : -> MyNat .
op s : MyNat -> MyNat .
op _+_ : MyNat MyNat -> MyNat [assoc] .
vars x y : MyNat .
eq x + 0 = x .
eq x + s(y) = s(x + y) .
endfm
R := x + 0 x, x + s(y) s(x + y)
F := x, y, z(x + y) + z

=
MyNat
x + (y + z)
s(0) + (0 + s(0))
F
(s(0) + 0) + s(0)
R
s(0) + s(0)
R
s(s(0))
318
Rescrierea modulo axiome
(S, ) signatura multisortata, F mult ime de axiome,
E mult ime de ecuat ii, R
E
sistemul de rescriere asociat,
Notam
E/F
:=
R
E
/F
Teorema 56

Sunt echivalente:
(1) E [=
F
(X)[t]
F

=
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

D = (DS, D), Ds := N or. s S


daca : s atunci D := 0,
daca : s1 . . . sn s, k1, . . ., kn N
D(k1, . . . , kn) := 1 + max(k1, . . . , kn)

SD : T D unicul morsm
dc. t = (t1, . . . , tn) at. arb(t) :=


arb(t1) arb(tn)

SD(t) = adncimea arb(t)


322
Gramatici independente de context
Vom considera gramatici independente de context neambigue.

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.

Pentru w L(G) exista un unic t T


S0
astfel ncat
o
G
(t) = w. Vom scrie t
w
= o
1
G
(w).

Pentru orice (-algebra /, unicul (-morsm o


A
: T

/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)

mult imea product iilor


S
0
N, T N = ,
o product ie p = (A, ) P va descrisa prin
[p] A
324
G = (S
0
, N, T, P)
Denim signatura ( = (S, ) astfel:

neterminalele devin sorturi: S = N

product iile devin simboluri de operat ie:


p
n1n
k
,n
p = (n , t
0
n
1
t
1
n
k
t
k
) P,
unde n, n
1
, . . . , n
k
N si t
0
, . . . , t
k
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

este (-algebra init iala.


Teorema 57

Daca o
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:

semantica unui sir de cifre ca numar natural,

semantica limbajului unui minicalculator,

reprezentarea expresiilor n forma poloneza inversa,

modelarea algebrica a compilarii unei expresii aritmetice


folosind o masina cu stiva si acumulator.
331
Semantica unui sir de cifre
Semantica unui sir de cifre ca numar natural

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

, atunci semantica unui sir de cifre w L


G
nat
este Sem(w) = o
A
(o
1
G
(w)).
333
Exemplu: Sem(25)
nat

nat

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

La pornirea calculatorului memoria M este initializata cu 0.


La apasarea butonului E, expresia de pe ecran este evaluata
folosind valoarea celulei M. Valoarea astfel obt inuta este
asata pe ecran si este introdusa n M.

Un program este un sir de instruct iuni


ON e1 E e2 E en E OFF
Semantica lui este sirul de numere care apare pe ecran, adica
un element din N
+
.

Sem(w) N
+
, unde w este un program
337
Calculatorul de buzunar
Notat ie A B := f [ f : A B funct ie

O instruct iune este o secvent a


e1 E e2 E en E OFF
care se executa dintr-o anumita stare a memoriei. Semantica
unei instruct iuni va o funct ie I : N N
+
.

Sem() N N
+
, unde este o instructiune

Expresiile sunt termeni n variabila M. Pentru ecare evaluare


se foloseste valoarea curenta a memoriei M.
Semantica unei expresii este o funct ie e : N N

Sem() N N, unde este o expresie


338
Algebra semantica
A este o (-algebra, unde ( = (S, ),
S = cifra, nat, expr , inst, prog
A
cifra)
= 0, . . . , 9, A
nat)
= N,
A
expr )
= N N = e : N N [ e functie,
A
inst)
= N N
+
= I : N N
+
[ I functie,
A
prog)
= N
+
= c0, . . . , c9, p1, p2, r 1, . . . , r 5, I 1, I 2, Pr
Denim operatiile A
p
, cu p .
339
Algebra semantica

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:

reprezentarea expresiilor n forma poloneza inversa,

compilarii unei expresii aritmetice folosind o masina cu stiva si


acumulator.
343
G = (S
0
, N, T, P) pt. expresii
Denim o gramatica pentru expresii construite cu variabilele
X = x, y, z.

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

Denim forma poloneza postx a unei expresii din L(G) prin


metoda algebrei init iale. Pentru aceasta construim (-algebra
semantica Pol , unde ( = (S = N, = P).

Pol
var )
= X = x, y, z
Pol
s
= T

k0
T
k
, s N var
347
Algebra Pol - operat iile

Pol
p
: T

, p p0, p5, p6, p8,


Pol
p
(w) = w oricare w 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

Pol unicul (-morsm

Pentru orice w L(G), forma poloneza postx este T(t


w
),
unde t
w
T

este unicul termen cu o


G
(t
w
) = w.

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

Folosim pentru compilare o masina cu stiva si acumulator


(MSA)

Denim limbajul MSA si algebra semantica


Cod = (Cod
s

sS
, C
pi

pi
).

Compilarea expresiei w L(G) n limbajul MSA este ((t


w
),
unde t
w
T

este unicul termen cu o


G
(t
w
) = w, iar
( : T

Cod este unicul (-morsm.


350
Funct ionarea SMA

La efectuarea operat iei op(e1, . . . , e


n
), valorile
e
1
, . . ., e
n1
vor n stiva, iar valoarea lui e
n
n registru.

Rezultatul evaluarii oricarei expresii este depus n registru.


Registrul este varful real al stivei. Evaluarea unei expresii lasa
stiva neschimbata.
e
n
op(e1, . . . , e
n
)
e
n1
. . .
e
1
. . .
. . .
. . .
351
Instruct iunile SMA

R este registrul (acumulatorul)

P este adresa primei pozit ii libere din stiva

Instruct iunile SMA:


inc P ( incrementeaza P)
dec P ( decrementeaza P)
Ad R ( aduna valoarea din varful stivei cu cea din R,
iar rezultatul este depus n R)
Mu R ( nmult este valoarea din varful stivei cu cea din R,
iar rezultatul este depus n R)
ld v ( ncarca n R valoarea din v)
st R ( muta n stiva valoarea din R )
print ( aseaza cont inutul lui R)
352
Algebra Cod - suportul

Inst(MSA) = instructiunile denite anterior

codul unei expresii este un sir de instruct iuni separate prin ;

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

Pentru orice w L(G), codul evaluarii expresiei w este ((t


w
),
unde t
w
T

este unicul termen cu (


G
(t
w
) = w.

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:

(S, ) este o signatura multisortata,

=
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

) este o (S, )-algebra,

= 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:

f este morsm de (S, )-algebre,

(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

, multimea termenilor fara variabile.

Denim (S, , )-modelul T


,
:= (T

, T

), unde
T

este (S, )-algebra termenilor fara variabile,


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

clauza vida: (disjunctie indexata de )


366
Satisabilitate
Fie A un (, )- model, X o multime de variabile si
t
1
, . . ., t
n
T

(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

Daca este o multime de clauze, atunci


A [= A [= or.
(spunem ca A este model pentru )

O multime de clauze se numeste satisabila daca are un


model. Clauza vida nu este satisabila.
367
Consecinta semantica si satisabilitatea
multime de clauze,
P
1
, , P
n
formule atomice cu variabile din X
Teorema. Sunt echivalente

[= 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:

exista o SLD-respingere a lui G din ,

[= 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

Unei clauza Horn (X)p if p


1
, . . . , p
n
i asociem ecuatia
conditionata (X)p

=
b
true if p
1

=
b
true, . . . , p
n

=
b
true.

Unui (S, , )-model A ii asociem o (S


b
,
b

b
)-algebra A
(a
1
, . . . , a
m
) A

(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

S-ar putea să vă placă și