Sunteți pe pagina 1din 94

Continutul cursului

Programare Logic
a
Ioana Leustean

http://moodle.fmi.unibuc.ro/course/view.php?id=186

Introducere in MAUDE

Signaturi si algebre multisortate. Termeni

Morfisme. Tipuri abstracte de date. Algebre initiale

Subalgebre. Algebre libere

Semantica termenilor

Ecuatii. Relatia de satisfacere

Specificatii algebrice

-algebra initiala

Teorema constantelor. Demonstratii prin inductie

Sisteme de rescriere abstracte

Logica ecuationala: sintaxa

Rescrierea termenilor: terminare, confluenta, completare

Logica ecuationala: corectitudine si completitudine

Logica ecuationala si rescriere locala

Regula Subterm Replacement

Deductie si rescriere modulo axiome

Rescrierea termenilor

Semantica algebrei initiale

Substitutii. Algoritmul de unificare

Clauze Horn. Rezolutie

Maude

Programare Logica
I

Maude

Este dezvoltat la:


I
I

University of Illinois at Urbana-Champaign (UIUC)


Stanford Research Institute (SRI)

Apartine familiei OBJ, al carei initiator a fost


Joseph Goguen(1941 - 2006).

http://maude.cs.uiuc.edu/

Maude

Maude

Poate fi folosit ca demonstrator. Mecanismul de rescriere este


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

Este un interpretor.

Comenzile sunt introduse una cate una si sunt executate


imediat.

Poate fi un instrument util in dezvoltarea de software,


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

Un program este o multime de module.

Modulele pot fi scrise n fisiere sau direct n linia de comanda.

Modulele pot fi importate. Modulul predefinit BOOL este


importat de orice modul.

Comenzi sistem
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 .

in ../nume-fisier.mod
show module nume-modul .
select nume-modul .
show sorts .
show ops .
reduce termen .
reduce termen1 == termen2 .
parse term .
set trace on .
set trace off .
quit
Manual de Maude (html)

10

Exemplul 1
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

fmod MYNAT is
sorts Nat .
op 0 : -> Nat .
op s_ : Nat -> Nat .
endfm
Acest modul introduce tipul de date Nat.
Datele de tip Nat sunt:
0, s 0, s s 0, s s s 0, s s s s 0, s s s s s

0, ...

Reprezentarea matematica:
S = {Nat}, = {0 : Nat, s : Nat Nat}
(S, ) este o signatura si defineste o clasa de algebre (structuri,
structuri algebrice). Algebra (N, 0, succesor ) este un obiect
privilegiat al acestei clase.
11

12

fmod ... endfm

Importuri

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

Exista trei modalitati de importare a modulelor

Structura general
a a unui modul:
importuri (protecting, extending, including),
declararea sorturilor si a subsorturilor,
declararea operatiilor,
declararea variabilelor,
ecuatii.

protecting
se foloseste atunci cand datele definite 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
identificate date care in modulul initial erau diferite (no
confusion)

extending
permite aparitia unor date noi pe sorturile vechi (junk) dar
nu permite identificarea datelor care in modulul initial erau
diferite (no confusion)

including
nu are restrictii

13

[assoc]

14

Exemplul 2

op _;_ : ListNat ListNat -> ListNat [ assoc ] .


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

Atributul [assoc] inlocuieste ecuatiile:


eq (L;P);Q = L;(P;Q) .
eq L;(P;Q) = (L;P);Q .
Ecuatiile definite cu eq sunt transformate in reguli de rescriere.
Cele doua ecuatii care definesc asociativitatea duc la neterminarea
rescrierii, deci ele nu pot fi 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

16

Exemplul 2

Exemplul 2

Reprezentarea matematica:

Reprezentarea matematica:

sort Nat ListNat .


subsort Nat < ListNat .
op 0 : -> Nat .
op s_ : Nat -> Nat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat .

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 }

Signatura (ordonat-sortat
a): ((S, ), )
S = {Nat, ListNat}, S S, = {(Nat, ListNat)}
= {0 : Nat, s : Nat Nat, nil : ListNat,
; : ListNat ListNat ListNat}

17

Exemplul 2

18

Exemplul 2
Date de tipul ListNat sunt:

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

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, adic
a o specificatie; modelul
matematic al unei specificatii este o algebr
a de termeni; o
executie este o rescriere n algebra de termeni asociat
a.
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

Reprezentarea matematica a unui modul este o


specificatie algebrica ordonat-sortat
a
((S, ), , )
19

20

Exemplul 2

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

fmod MYNATLIST is
protecting MYNAT .
sort ListNat .
subsort Nat < ListNat .
op nil : -> ListNat .
op _;_ : ListNat ListNat -> ListNat [ assoc ] .
var L : ListNat .
eq nil ; L = L .
eq L ; nil = L .
endfm
Ce date defineste MYNATLIST?

21

Exemplul 2

Exemplul 3

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
S
Modulul MYNATLIST defineste k0 Nk
(secventele ordonate finite de numere naturale ).
Maude> reduce (0 ; s 0 ) == (0 ; s 0 ; 0) .
...
result Bool: false

22

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)
...
result Bool: true
23

== (0 ; s 0 ; 0) .

24

Exemplul 4

Exemplul 5

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

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

Observati suprancarcarea operatiei + si atributul [ditto]


+ : Int Int > Int
+ : ComplexInt ComplexInt > ComplexInt
25

TRS canonic

Exemplul 5

Maude> select GRUP .


Maude> reduce x + (-(
reduce in GRUP : x + *********** equation
eq - (x + y) = - y + x --> - y
y --> x
- (- y + x) ---> - x +
*********** equation
eq - - x = x .
x --> y
- - y ---> y

O ecuatie l = r se transforma, prin orientare de la stanga la


dreapta, ntr-o regula de rescriere l r . Ecuatiile modulului
GRUP determina astfel un sistem de rescriere canonic:
I

orice sir de rescrieri se termina,

ordinea de aplicare regulilor de rescriere nu schimba rezultatul


final.

26

O ecuatie t1 = t2 din teoria de ordinul I a grupurilor este verificata


n orice grup daca si numai daca exista un termen t astfel ncat

t1 t si t2 t.
Maude-ul poate fi utilizat ca demonstrator.

27

- y + x)) == y .
(- y + x) == y .
x .

- - y

28

Exemplul 5

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

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

fmod MYNATLIST2 is
protecting MYNATLIST .
op _<_ : Nat Nat -> Bool .
...
endfm
29

Exemplul 6

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

Maude> select MYNATLIST2 .


Maude> reduce s s s 0 ; s s 0 ; s s s 0 ; 0 .
...
result ListNat: 0 ; s s 0 ; s s s 0 ; s s s 0
Modulul MYNATLIST2 defineste liste de numere naturale ordonate
crescator.

Observati ecuatia conditionala

A se vedea si D. Dragulici, Revista de logica

ceq I ; J = J ; I if (J < I ) .
Ce tip de date defineste modulul MYNATLIST2 ?
31

32

Exemplul 7

Exemplul 8

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

fth TRIV is
sort Elt.
endfh
fmod STACK{X :: TRIV} is ... endfm
Instantiind modulul parametru X cu modulul predefinit NAT
definim stivele de numere naturale.
view Inst from TRIV to NAT is
sort Elt to Nat .
endv

Modulul STACK{X } creaza o stiva generica.


Parametrul formal X este descris de teoria TRIV
fth TRIV is sort Elt. endfh

fmod STACKNAT is
protecting STACK{Inst} .
endfm
34

33

Exemplul 8

Maude> select STACKNAT .


Maude> show sorts .
sort Bool .
sort Zero .
subsort Zero < Nat .
sort NzNat .
subsort NzNat < Nat .
sort Nat .
subsorts NzNat Zero < Nat .
sort EmptyStack{Inst} .
subsort EmptyStack{Inst} < Stack{Inst} .
sort NonEmptyStack{Inst} .
subsort NonEmptyStack{Inst} < Stack{Inst} .
sort Stack{Inst} .
subsorts NonEmptyStack{Inst} EmptyStack{Inst} < Stack{Inst} .

35

Limbajul Maude este un limbaj de specificatie bazat pe logica


ecuationala. Un program este o colectie de module. Executia este
o rescriere. Cateva din caracteristicile acestui limbaj sunt:
I

modularizare si parametrizare,

definirea tipurilor de date este independenta de implementare,

extensibilitate,

permite tratarea erorilor si suprancarcarea operatiilor,

poate fi folosit ca demonstrator.

36

Programare logica

Multimi S-sortate

S 6=
I
I

O multime S- sortata A este o familie A = {As }sS .


Daca A = {As }sS si B = {Bs }sS atunci
I
I

Signaturi. Algebre. Termeni

I
I

= {s }sS , s = or. s S,
A B As Bs or. s S,
A B = {As Bs }sS , A B = {As Bs }sS ,
A B = {As Bs }sS .

Exemplu: S = {nat, bool}, A = {Anat , Abool },


Anat = N, Abool = {T , F }
sorturi=tipuri, elemente de sort s= date de tip s

37

38

Functii S-sortate

Functii S-sortate

A = {As }sS , B = {Bs }sS , C = {Cs }sS


I

A = {As }sS , B = {Bs }sS ,

O functie S- sortata f : A B este o familie de functii


f = {fs }sS , unde fs : As Bs oricare s S.

Daca f : A B si g : B C , definim
f ; g : A C , f ; g = {fs ; gs }sS

fs ; gs : As Cs ,
fs ; gs (a) := gs (fs (a)) or. s S, a As

1A : A A, 1A = {1As }sS

(f ; g ); h = f ; (g ; h) (compunerea este asociativa)

f ; 1B = f , 1A ; f = f or. f : A B

O functie S-sortata f : A B se numeste


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

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


exista g : B A a.. f ; g = 1A si g ; f = 1B .

Propozitie. O functie S-sortata f : A B este inversabila daca si


numai daca este bijectiva (fs este bijectiva oricare s S).

39

40

Signaturi multisortate

Signaturi

(S, ) signatura multisortata


I
I

S multimea sorturilor
multimea simbolurilor de operatii : s1 sn s
I
I

(S, ) signatura multisortata


S
n
I S :=
n0 S
S 0 := {}, S n := {s1 sn |si S or. i}

este simbolul (numele) operatiei


s1 , , sn ,s S
s1 , , sn sorturile argumentelor
s sortul rezultatului
< s1 sn , s > aritatea operatiei
daca n = 0 atunci : s este simbolul unei operatii constante

= (w ,s )w S ,sS
w ,s : w S
w = s1 sn S

= (w ,s )w S ,sS
w ,s : w s
w = s1 sn S

este suprancarcat (overloaded) daca


w1 ,s1 w2 ,s2 si < w1 , s1 >6=< w2 , s2 >

este permisa suprancarcarea operatiilor

este permisa suprancarcarea operatiilor


41

42

Exemple

BOOL = (S, )
I
I

Exemple

S = {bool}
= {T : bool, F : bool,
: bool bool,
: bool bool bool,
: bool bool bool}

NAT = (S, )
I
I

NATBOOL = (S, )

S = {nat}
= {0 : nat, succ : nat nat}

43

S = {bool, nat}
= {T : bool, F : bool, 0 : nat,
succ : nat nat,
: nat nat bool}

= (w ,s )w S ,sS
,bool = {T , F }, ,nat = {0},
nat,nat = {succ}, nat nat,bool = {},
w ,s = pentru celelalte < w , s > S S

44

Exemple

Exemple

I
I

STIVA = (S, )
I
I

AUTOMAT = (S, )
I

S = {elem, stiva}
= {0 : elem, empty : stiva,
push : elem stiva stiva,
pop : stiva stiva,
top : stiva elem}

S = {intrare, stare, iesire}


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

GRAF = (S, )
I
I

S = {arc, nod}
= {v 0 : arc nod, v 1 : arc nod}

45

46

Signaturi ordonat-sortate

Algebre multisortate

(S, , ) signatura ordonat-sortata


I

(S, ) signatura multisortata

(S, ) multime partial ordonata

conditia de monotonie
w1 ,s1 w2 ,s2 , w1 w2 s1 s2

(S, ) - signatura multisortata


O algebra multisortata de tip (S, ) este o pereche (AS , A ), unde
I
I

AS = {As }sS (multimea suport)


A = {A } (familie de operatii) a..
I

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.

daca : s atunci A As
daca : s1 sn s atunci A : As1 Asn As

A = (AS , A ) este o (S, )-algebra

47

48

Exemple

Exemple

BOOL = (S = {bool}, )
= {T : bool, F : bool, : bool bool,
: bool bool bool, : bool bool bool}
BOOL-algebra A:
Abool := {0, 1}
AT := 1, AF := 0, A (x) := 1 x,
A (x, y ) := max(x, y ), A (x, y ) := min(x, y )
BOOL-algebra B:
Bbool := P(N)
BT := N, BF := , B (X ) := N \ X ,
B (X , Y ) := X Y , B (X , Y ) := X Y

NAT = (S = {nat}, )
= {0 : nat, succ : nat nat}

NAT -algebra A:
Anat := N
A0 := 0, Asucc (x) := x + 1

NAT -algebra B:
Bnat := {0, 1}
B0 := 0, Bsucc (x) := 1 x

NAT -algebra C :
Cnat := {2n |n N}
C0 := 1, Csucc (2n ) := 2n+1

50

49

Exemple

STIVA = (S = {elem, stiva}, )


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

STIVA-algebra A:
Aelem := N, Astiva := N
A0 := 0, Aempty := , Apush (n, n1 nk ) := n n1 nk ,
Apop () = Apop (n) := ,
Apop (n1 n2 nk ) := n2 nk pt. k 2,
Atop () := 0, Atop (n1 nk ) := n1 pt. k 1.

STIVA-algebra B:
Belem := {0}, Bstiva := N
B0 := 0, Bempty := 0, Bpush (0, n) := n + 1 or. n,
Bpop (0) := 0, Bpop (n) := n 1 pt. n 1,
Btop (n) := 0 or. n.

Exemple

51

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


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

AUTOMAT -algebra A:
Aintrare = {x, y }, Astare = {s0, s1}, Aiesire := {T , F }
As0 := s0, Ag (s0) := F , Ag (s1) := T ,
Af (x, s0) := s0, Af (y , s0) := s1,
Af (x, s1) := s0, Af (y , s1) := s1

AUTOMAT -algebra B:
Bintrare = Bstare = Biesire := N
Bs0 := 0, Bf (m, n) := m + n, Bg (n) := n + 1

52

Algebre ordonat-sortate

Multime de variabile

(S, ) signatura multisortata


S
|| := w ,s w ,s
S
|X | := sS Xs daca X multime S-sortata

(S, , ) signatura ordonat-sortata


O algebra ordonat-sortata de tipul (S, , ) este o (S, )-algebra
(AS , A ) care satisface urmatoarele proprietati:
I

s1 s2 As1 As2

w1 ,s1 w2 ,s2 , w1 w2

O multime de variabile este o multime S-sortata X a..:

2 ,s2
1 ,s1
Aw
(x) = Aw
(x) oricare x Aw1 .

Semantica unui modul functional in Maude este o algebra


ordonat-sortata.

Xs Xs 0 = or. s 6= s 0

|X | || =

simbolurile de variabile sunt distincte ntre ele si sunt distincte de


simbolurile de operatii din

54

53

Termeni (expresii, cuvinte)

Termeni fara variabile (ground terms)

(S, ) signatura, X multime de variabile

(S, ) signatura multisortata

Multimea S-sortata termenilor cu variabile din X , T (X ), este cea


mai mica mult
iruri finite peste alfabetul
Sime de sS
L = sS Xs w ,s w ,s {(, )} {,}
care verifica urmatoarele proprietati:
I

(T1) Xs T (X )s

(T2) dc. : s, at. T (X )s ,

(T3) dc. : s1 sn s si ti T (X )si or. i = 1, . . . , n


at. (t1 , . . . , tn ) T (X )s .

Multimea S-sortata termenilor fara variabile, T , este cea mai


mica multime
S de siruri finite peste alfabetul
L = w ,s w ,s {(, )} {,}
care verifica urmatoarele proprietati:
I

(T2) dc. : s, at. T,s ,

(T3) dc. : s1 sn s si ti T,si or. i = 1, . . . , n


at. (t1 , . . . , tn ) T,s .

T = T ()

Var (t) := multimea variabilelor care apar n t T

55

56

Exemple

Exemple

STIVA = (S, )
S = {elem, stiva}, Xelem = {x, y }, Xstiva = ,
= {0 : elem, empty : stiva,
push : elem stiva stiva,
pop : stiva stiva,
top : stiva elem}
T (X )elem = {0, x, y , top(pop(empty)),
top(push(x, empty)), . . .}
T (X )stiva = {empty, push(y , empty), pop(empty),
push(top(empty), empty), . . .}

NATBOOL = (S, )
S = {bool, nat}
= {T : bool, F : bool, 0 : nat,
s : nat nat,
: nat nat bool}

TNATBOOL,nat = {0, s(0), s(s(0)), . . .}


TNATBOOL,bool = {T, F, (0, 0), (0, s(0)), . . .}

siruri care nu sunt termeni


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

siruri care nu sunt termeni


pop(0), (pop)top(empty ), empty (y ), . . .

58

57

Exemple

Expresii aritmetice

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


= {s0 : stare,
f : intrare stare stare,
g : stare iesire}
TAUTOMAT ,stare = {s0}, TAUTOMAT ,intrare = ,
TAUTOMAT ,iesire = {g(s0)}

NATEXP = (S = {nat}, )

= {0 : nat, s : nat nat ,


+ : nat nat nat, : nat nat nat}

TNATEXP = {0, s(0), s(s(0)), . . .


+(0, 0), (0, +(s(0), 0)), (s(0), s(s(0))), . . .}

GRAF = (S, ), S = {arc, nod}


= {v 0 : arc nod, v 1 : arc nod}
TGRAF ,arc = TGRAF ,nod =

siruri care nu sunt termeni


+(0), 0(s)s(0), (0), . . .

TNATEXP este multimea expresiilor aritmetice peste N.

59

60

Inductia pe termeni

Algebra termenilor

Algebra termenilor

(S, ) signatura multisortata, X multime de variabile


Fie P o proprietate a.. urmatoarele conditii sunt satisfacute:
I

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

pasul de inductie:
daca t1 T (X )s1 , . . ., tn T (X )sn si
P(t1 ) = = P(tn ) = true atunci
P((t1 , . . . , tn )) = true or. : s1 . . . sn s.

(S, ) signatura, X multime de variabile


Multimea termenilor T (X ) = {T (X )s }sS este (S, )-algebra
cu operatiile definite astfel:

Atunci P(t) = true oricare t T (X ).

pt. : s, operatia corespunzatoare este T :=

pt. : s1 sn s, operatia corespunzatoare este


T : T (X )s1 T (X )sn T (X )s
T (t1 , . . . , tn ) := (t1 , . . . , tn )
or. t1 T (X )s1 , . . ., tn T (X )sn

T (X ) algebra termenilor cu variabile din X


T algebra termenilor fara variabile (X = )

61

62

63

64

Algebra expresiilor aritmetice

NATEXP = (S = {nat}, )

= {0 : nat, s : nat nat ,


+ : nat nat nat, : nat nat nat}

T0 := 0,

Ts (t) := s(t),

T+ (t1 , t2 ) := +(t1 , t2 )

T (t1 , t2 ) := (t1 , t2 )

Semantica unui modul n Maude (care contine numai


declaratii de sorturi, operatii si variabile) este o algebra de
termeni.

Programare logica

Morfisme

Exemplu. Signatura
MONOID = (S = {s}, = {e : s, : ss s})
Fie (A, 1, ?) si (B, 0, +) monoizi
(Ae := 1, A := ?, Be := 0, B := +)
O functie f : A B este morfism de monoizi daca:

Morfisme.
Tipuri abstracte de date.
Algebre initiale

f (1) = 0 f (Ae ) = Be

f (x ? y ) = f (x) + f (y ) f (A (x, y )) = B (f (x), f (y ))


or. x, y A.
A

A
f

A
f

A
f
B

66

65

Morfisme

Exemplu

(AS , A ), (BS , B ) (S, )-algebre


Un morfism de (S, )-algebre ((S, )-morfism) este o functie
S-sortata f : A B care verifica conditiile de compatibilitate:

NAT = (S = {nat}, = {0 : nat, succ : nat nat})

fs (A ) = (B ) oricare : s,

fs (A (a1 , . . . , an )) = B (fs1 (a1 ), . . . , fsn (an ))


or. : s1 sn s, or. (a1 , . . . , an ) As1 Asn .

NAT -algebra A:
Anat := N, A0 := 0, Asucc (x) := x + 1

NAT -algebra B:
Bnat := {0, 1}, B0 := 0, Bsucc (x) := 1 x

f : A B, f = {fnat }, fnat (n) = n(mod 2)


este morfism de NAT -algebre

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

As1
fs1

Bs1

...

Asn
fsn

Bsn

As
fs
Bs

Observatie
1A : A A este morfism or. A (S, )-algebra.
67

68

Exemple

Exemple

STIVA = (S = {elem, stiva}, )


= {0 : elem, empty : stiva, pop : stiva stiva,
push : elem stiva stiva, top : stiva elem}
N

STIVA-algebra A:
Aelem := N, Astiva :=
A0 := 0, Aempty := , Apush (n, n1 nk ) := n n1 nk ,
Apop () = Apop (n) := ,
Apop (n1 n2 nk ) := n2 nk pt. k 2,
Atop () := 0, Atop (n1 nk ) := n1 pt. k 1.

STIVA-algebra A = (Aelem = N, Astiva = N , . . .)

STIVA-algebra B = (Belem = {0}, Bstiva := N, . . .)

f : A B, f = (felem : N {0}, fstiva : N N)


felem (n) := 0 or. n,
fstiva () := 0, fstiva (n1 nk ) := k pt. k 1

g : B A, g = (gelem : {0} N, gstiva : N N )


gelem (0) := 0,
gstiva (0) := , gstiva (k) := |0 {z
0} pt. k 1

STIVA-algebra B:
Belem := {0}, Bstiva := N
B0 := 0, Bempty := 0, Bpush (0, n) := n + 1 or. n,
Bpop (0) := 0, Apop (n) := n 1 pt. n 1,
Btop (n) := 0 or. n.

f si g sunt morfisme de STIVA-algebre

69

70

Morfisme de mpo

Proprietati

Observatie.

(S, ) signatura multisortata

Multimile partial ordonate se pot reprezenta ca (S, )-algebre,


S := {elem, bool},
:= {: elem elem bool, T : bool, F : bool}.

Propozitia 1.

Fie A, B, C algebre si f : A B, g : B C morfisme. Atunci


f ; g : A C este morfism.

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


(A, {0, 1} , T , F ), unde
Aelem := A, Abool := {0, 1}, AT := 1, AF := 0,
A (x, y ) = T x y

Ce relatiile este ntre functii crescatoare si morfisme de


(S, )-algebre?

Orice (S, )-morfism este functie crescatoare dar invers nu


este adevarat!

Dem.
I

: s
(f ; g )s (A ) = gs (fs (A )) = gs (B ) = C ,

: s1 sn s , (a1 , . . . , an ) As1 Asn


(f ; g )s (A (a1 , . . . , an )) = gs (fs (A (a1 , . . . , an ))) =
gs (B (fs1 (a1 ), . . . , fsn (an ))) =C (gs1 (fs1 (a1 )), . . . , gsn (fsn (an )))
= C ((g ; f )s1 (a1 ), . . . , (g ; f )sn (an )). qed

71

72

Proprietati

Continuare

Teorema 2.
Exista un unic morfism f : T B or. B (S, )-algebra.
Demonstram ca f este morfism.

Dem. Fie B (S, )-algebra.


Existenta. Definim f : T B prin inductie pe termeni
(P(t) = f (t) este definita).
I

pasul initial: dc. : s , at. fs () := B ,

pasul de inductie: dc. : s1 . . . sn s si


t1 T s1 , . . ., tn T sn a. fs1 (t1 ), , fsn (tn ) definite at.

dc. : s , at. fs (T ) = fs () = B ,

dc. : s1 . . . sn s si
t1 T s1 , . . ., tn T sn at.
fs (T (t1 , . . . , tn )) = fs ((t1 , . . . , tn ))
= B (fs1 (t1 ), , fsn (tn ))

fs ((t1 , . . . , tn )) := B (fs1 (t1 ), , fsn (tn ))


Conform principiului inductiei pe termeni,
fs (t) este definita or. t T .
73

74

Continuare

Exemplu

Unicitatea. Fie g : T B un morfism.


Demonstram ca g = f prin inductie pe termeni

(S, ) signatura multisortata

(P(t) = dc. t T s at. gs (t) si fs (t) sunt egale).


I

pasul initial: dc. : s , at. gs () = B = fs (),

pasul de inductie: dc. : s1 . . . sn s si


t1 T s1 , . . ., tn T sn a.
gs1 (t1 ) = fs1 (t1 ), , gsn (tn ) = fsn (tn ) at.

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 )

gs ((t1 , . . . , tn )) = B (gs1 (t1 ), , gsn (tn )) =


B (fs1 (t1 ), , fsn (tn )) = fs ((t1 , . . . , tn ))

fD : T D unicul morfism
Ce reprezinta valoarea fD (t) pentru un termen t?

Conform principiului inductiei pe termeni,


gs (t) = fs (t) or. t T s , adica g = f . qed
75

76

Termeni ca arbori

Izomorfisme

Un (S, )-morfism f : A B este izomorfism daca exista un


morfism g : B A a.. f ; g = 1A si g ; f = 1B .

Un termen t poat fi reprezentat ca un arbore arb(t) astfel:


I

T s

t = (t1 , . . . , tn )

arb() :=

Propozitia 3

arb(t) :=

Un morfism f : A B este izomorfism daca si numai daca este


functie bijectiva, adica fs : As Bs este bijectie oricare s S.

arb(t1 )

Dem. Revine la a demonstra ca implicatia:

arb(tn )

f morfism si bijectie f 1 morfism.


Pentru orice t valoarea fD (t) este adancimea arborelui arb(t).

77

78

Continuare

Izomorfisme de mpo

Demonstram ca f 1 : B A este morfism.


I

dc. : s , at. fs (A ) = B , deci

dc. : s1 . . . sn s si
b1 Bs1 , . . ., bn Bsn at.
ex. a1 As1 , . . ., an Asn a..
fs1 (a1 ) = b1 , . . ., fsn (an ) = bn si

fs1 (B )

= A ,

(A = {x1 , x2 , x3 , x4 }, ), unde x1 x2 x3 x4

(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 :AB
f (00) = x1 , f (01) = x2 , f (10) = x3 , f (11) = x4
este functie bijectiva si crescatoare

A 6' B

fs (A (a1 , . . . , an )) = B (fs1 (a1 ), . . . , fsn (an )) = B (b1 , . . . , bn )


Atunci fs 1 (B (b1 , . . . , bn )) = A (a1 , . . . , an ) =
A (fs1 1 (b1 ), . . . , fsn 1 (bn )). qed

79

80

Izomorfisme

Exemple

Spunem ca algebrele A = (AS , A ) si B = (BS , B ) sunt izomorfe


daca exista un izomorfism f : A B. In acest caz notam A ' B.

NAT = (S = {nat}, = {0 : nat, succ : nat nat})

A ' A (1A este izomorfism)

NAT -algebra A: Anat = N, A0 := 0, Asucc (x) := x + 1

A'B B'A

NAT -algebra B: Bnat := {0, 1}, B0 := 0, Bsucc (x) := 1 x

A ' B, B ' C A ' C

NAT -algebra C : Cnat := {2n |n N}


C0 := 1, Csucc (2n ) := 2n+1

A 6' B

A'C
f : A C , f (n) := 2n este un NAT -izomorfism.

Relatia de izomorfism este o relatie de echivalenta (reflexiva,


simetrica si tranzitiva).

Observatie.
A ' B As ' Bs oricare s S

81

82

Exemple

BOOL = (S = {bool}, )
= {T : bool, F : bool, : bool bool,
: bool bool bool, : bool bool bool}

Abool := {0, 1}
AT := 1, AF := 0, A (x) := 1 x,
A (x, y ) := max(x, y ), A (x, y ) := min(x, y )

Bbool := P(N)
BT := N, BF := , B (X ) := N \ X ,
B (X , Y ) := X Y , B (X , Y ) := X Y

A 6' B

Exemple

83

BOOL-algebra C :
Cbool := {t : N {0, 1}| t functie}
CT (n) := 1, CF (n) := 0 or. n N
C (t)(n) := 1 t(n) or. t Cbool , n N
C (t1 , t2 )(n) := max(t1 (n), t2 (n)) or. t1 , t2 Cbool , n N
C (t1 , t2 )(n) := min(t1 (n), t2 (n)) or. t1 , t2 Cbool , n N

B'C
f : B C , f (Y ) := Y oricare Y P(N)
f (Y )(n) = 1 daca n Y , f (Y )(n) = 0 daca n 6 Y
f este BOOL-izomorfism

84

Exemple

Exemple

STIVA-algebra A = (Aelem = N, Astiva = N , . . .)

STIVA-algebra B = (Belem = {0}, Bstiva := N, . . .)

STIVA-algebra A:
Aelem := N, Astiva := N
Aempty := , Apush (n, n1 nk ) := n n1 nk ,
Apop () = Apop (n) := ,
Apop (n1 n2 nk ) := n2 nk pt. k 2,
Atop () := 0, Atop (n1 nk ) := n1 pt. k 1.

STIVA-algebra C :
Celem := Z, Cstiva := Z
C0 := 0, Cempty := , Cpush (x, x1 xk ) := x1 xk x,
Cpop () = Cpop (x) := ,
Cpop (x1 xk1 xk ) := x1 xk1 pt. k 2,
Ctop () := 0, Ctop (x1 xk ) := xk pt. k 1.

A 6' B

A0 := 0,

85

86

Exemple

ADT

STIVA-algebra A:

Aelem := N, Astiva := N

STIVA-algebra C :

Celem := Z, Cstiva := Z

f : A C , f = (felem : N Z, fstiva : N Z )
felem (2k) := k, felem (2k + 1) := k 1 pt. k N,
fstiva (n1 nk ) := felem (nk ) felem (n1 ) pt. n1 nk N .
f este STIVA-izomorfism

Algebrele izomorfe sunt identice (modulo redenumire).

87

Un tip abstract de date este o multime de date ( valori) si


operatii asociate lor, a caror descriere (specificare) este
independenta de implementare.
abstract=disassociated from any specific instance

O algebra este formata dintr-o multime de elemente si o


multime de operatii. Algebrele pot modela tipuri de date.

Doua algebre izomorfe au acelasi comportament, deci trebuie


sa fie modele ale acelasi tip de date. Aceasta asigura
independenta de implementare.

88

ADT

Algebra initiala

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


de date.

O algebra A = (AS , 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:

K clasa de (S, )-algebre


I

Propozitia 4

A, B C A ' B.
I

O (S, )-algebra I este initiala n K daca I K si pentru


orice B K exista un unic morfism f : I B.

(a) I initiala n K, A K, A ' I A initiala n K

(b) A1 si A2 initiale n K A1 ' A2 .

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

89

90

Continuare

(S, ) -algebra initiala

(S, ) signatura multisortata

Dem. (a) I initiala n K, A K si A : A I izomorfism


Fie B K si fB : I B unicul morfism. Demonstram ca exista un
unic morfism h : A B.
I

Existenta. h := A ; fB : A B mofism

Unicitatea. daca g : A B morfism, atunci A 1 ; g : I B


morfism,deci A 1 ; g = fB ; rezulta g = A ; fB = h.

K clasa tuturor (S, )-algebrelor.

I este (S, )-algebra initiala daca oricare B (S, )-algebra


exista un unic morfism f : I B.
Teorema 2. T este (S, )-algebra initiala.

(b) A1 si A2 initiale n K

I(S,) = {I | I (S, ) -algebra initiala}


este un tip abstract de date si T I(S,) .

Exista un unic morfism f : A1 A2 si un unic morfism


g : A2 A1 . Atunci f ; g : A1 A1 si 1A1 : A1 A1 , deci
f ; g = 1A1 . Analog g ; f = 1A2 , deci A1 ' A2 . qed

Un modul functional n Maude (care contine numai declaratii


de sorturi si operatii) defineste un astfel de tip abstract de
date si construieste efectiv algebra T .

91

92

Programare logica

Subalgebre

(S, ) - signatura multisortata, A (S, )-algebra


B A este parte stabila a lui A daca

Subalgebre. Algebre libere

A Bs or. : s,

A (b1 , . . . , bn ) Bs or. : s1 sn s,
or. (b1 , . . . , bn ) Bs1 Bsn .

Daca B este parte stabila a lui A atunci


(BS = B, B ) este (S, )-subalgebra a lui (AS , A ), unde
I

B := A or. : s,

B (b1 , . . . , bn ) := A (b1 , . . . , bn ) or. : s1 sn s,


or. (b1 , . . . , bn ) Bs1 Bsn .

93

94

Exemple

Exemple

BOOL-algebra B:
Bbool := P(N)
BT := N, BF := , B (X ) := N \ X ,
B (X , Y ) := X Y , B (X , Y ) := X Y
B1 = {, N} {{n}|n N}
nu este subalgebra.
B2 = {, N} {{n}, N \ {n}}
este subalgebra (n N fixat).

95

AUTOMAT -algebra A
Aintrare = {x, y }, Astare = {s0, s1}, Aiesire := {T , F }
As0 := s0, Ag (s0) := F , Ag (s1) := T ,
Af (x, s0) := s0, Af (y , s0) := s1,
Af (x, s1) := s0, Af (y , s1) := s1

P = {Pintrare := {x}, Pstare := {s0}, Piesire := {F }}


este subalgebra A

96

Multimi de generatori

Constructia algebrei generate

(S, ) signatura multisortata,


A-algebra, X multime, X A
I

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


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

F := {B A |B subalgebra, X B}
I
I
I

(S, ) signatura multisortata,


A-algebra, X multime, X A
Construim un sir de multimi S-sortate (Xn )n astfel:
I
I

A F, deci F 6= T
{Bi }iI F implica iI Bi F
T
X = {B | B F}

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


acest caz X este multime de generatori pentru A.

X0 := X ,
Xn+1,s := Xn,s {A | : s} {A (a1 , . . . , an ) |
: s1 . . . sn s, (a1 , . . . , an ) Xn,s1 Xn,sn }.

S
Propozitia 5. X = n Xn .
Dem: va fi adaugata!

98

97

Proprietati

Continuare

h : A B functie
h1 : P(B) P(A), h1 (Y ) := {a A|h(a) Y }
imaginea inversa

(c) h( X ) = h(X ) pentru X A,.


X A subalgebra h( X ) B subalgebra

Propozitia 6.
Fie h : A B morfism.
I

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

(b) dc. D B subalgebra at. h1 (D) B subalgebra,

(c) h( X ) = h(X ) pentru X A,

(d) h1 (Y ) h1 ( Y ) pentru Y B.

h( X ) B subalgebra, h(X ) h( X ) h(X ) h( X )


h1 (h(X )) A subalgebra, X h1 (h(X )) X h1 (h(X ))
h(X ) h(h1 (h(X ))) h(X )
h(X ) h( X ) csi h(X ) h(X ) h(X ) = h(X )

Dem. (a), (b), (d) exercitii.

99

100

Algebre libere

Multimi de generatori liberi

(S, ) signatura multisortata, X multime de variabile


(S, ) signatura multisortata,
A-algebra, X multime de variabile, X A

O algebra A este liber generata de X daca


X A,

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


Spunem ca X este multime de generatori liberi pentru A.

oricare ar fi B o algebra si f : X B o functie exista un unic


morfism f : A B cu fs (x) = fs (x) oricare x Xs , s S.

Observatii

Daca A1 si A2 sunt liber generate de X , atunci A1 ' A2 .

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


Invers nu este ntotdeauna a adeva rat.

T este liber generata de multimea .

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


Anat := N, A0 := 0, Asucc (x) := x + 1
A este liber generata de
{1} este multime de generatori pentru A
{1} nu este multime de generatori liberi pentru A

101

102

103

104

Exemple

STIVA = (S = {elem, stiva}, )


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

STIVA-algebra A:
Aelem := N, Astiva := N
A0 := 0, Aempty := , Apush (n, n1 nk ) := n n1 nk ,
Apop () = Apop (n) := ,
Apop (n1 n2 nk ) := n2 nk pt. k 2,
Atop () := 0, Atop (n1 nk ) := n1 pt. k 1.

Daca P := atunci Pelem = {0} si Pstiva = {0} .

A este liber generata de X , unde Xelem := N si Xstiva := .

Programare logica

Multime de variabile

(S, ) signatura multisortata


S
|| := w ,s w ,s
S
|X | := sS Xs daca X multime S-sortata
O multime de variabile este o multime S-sortata X a..:

Semantica termenilor

Xs Xs 0 = or. s 6= s 0

|X | || =

simbolurile de variabile sunt distincte ntre ele si sunt distincte de


simbolurile de operatii din

105

106

Termeni cu variabile din X

Algebra de termeni T (X )

(S, ) signatura, X multime de variabile

(S, ) signatura, X multime de variabile


Multimea termenilor T (X ) = {T (X )s }sS este (S, )-algebra
astfel:

Multimea S-sortata termenilor cu variabile din X , T (X ), este cea


mai mica mult
iruri finite peste alfabetul
Sime de sS
L = sS Xs w ,s w ,s {(, )} {,}
care verifica urmatoarele proprietati:
I

(T1) Xs T (X )s

(T2) dc. : s, at. T (X )s ,

(T3) dc. : s1 sn s si ti T (X )si or. i = 1, . . . , n


at. (t1 , . . . , tn ) T (X )s .

pt. : s, operatia corespunzatoare este T :=

pt. : s1 sn s, operatia corespunzatoare este


T : T (X )s1 T (X )sn T (X )s
T (t1 , . . . , tn ) := (t1 , . . . , tn )
or. t1 T (X )s1 , . . ., tn T (X )sn

T (X ) algebra termenilor cu variabile din X


vom nota (t1 , . . . , tn ) := (t1 , . . . , tn )

107

108

Semantica termenilor

Semantica expresiilor aritmetice

(S, ) signatura, X multime de variabile

Teorema 7 (Evaluarea termenilor n algebre).


Fie A o (S, )-algebra. Orice functie e : X A (evaluare,
atribuire, interpretare)se extinde la un unic (S, )-morfism

e : T (X ) A.
Dem.
I Definim
e(t) prin inductie pe termeni:
I
I
I

I
I

or. x Xs ,
es (x) := es (x),
or. : s,
es () := A
or. : s1 sn s, or. t1 T (X )s1 , . . ., tn T (X )sn

es ((t1 , . . . , tn )) := A (
es1 (t1 ), . . . ,
esn (tn ))

Demonstram ca
e : T (X ) A este morfism.
Daca f : T (X ) A morfism si f |X = e atunci se
.
demonstreaza prin inductie pe termeni ca f = e

NATEXP = (S = {nat}, ), X = {x, y }

= {0 : nat, s : nat nat ,


+ : nat nat nat, : nat nat nat}

TNATEXP (X ) = {0, x, y , s(0), s(x), s(y ), s(s(0)), . . .


+(0, 0), +(0, x), +(x, y ), (0, +(s(0), x)), (s(y ), s(s(x))), . . .}

A = (Z4 , 0, s, +, ) cu operatiile obisnuite

e : {x, y } Z4 , 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 (As (e(x)), As (As (A0 ))) =


(1 + 1) (0 + 1 + 1) = 2 2 = 0 (mod 4)

110

109

Exemple

STIVA = (S = {elem, stiva}, )


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

STIVA-algebra A:
Aelem := N, Astiva := N
A0 := 0, Aempty := , Apush (n, n1 nk ) := n n1 nk ,
Apop () = Apop (n) := ,
Apop (n1 n2 nk ) := n2 nk pt. k 2,
Atop () := 0, Atop (n1 nk ) := n1 pt. k 1.

Exemplu

Xelem := {x, y }, Xstiva := {s},


t := push(x, push(y, s)) T (X )stiva
I

e:X A
e(x) := 5, e(y ) := 3, e(s) := 6 7

e(t) = Apush (e(x), Apush (e(y ), e(s))) = 5 3 6 7

STIVA-algebra B:
Belem := {0}, Bstiva := N
B0 := 0, Bempty := 0, Bpush (0, n) := n + 1 or. n,
Bpop (0) := 0, Bpop (n) := n 1 pt. n 1,
Btop (n) := 0 or. n.

e:X B
e(x) := 0, e(y ) := 0, e(s) := 10

e(t) = Bpush (e(x), Bpush (e(y ), e(s))) =(10 + 1) + 1 = 12

111

112

Consecinte

Proprietati
Propozitia 8.

Fie A o (S, )-algebra. Daca f : T (X ) A si g : T (X ) A


sunt morfisme, atunci g = f g |X = f |X

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

A = T (Y )
O substitutie este o atribuire : X T (Y ).

Dem. Presupunem ca gs (x) = fs (x) or. s S, x Xs .


Demonstram ca g = f prin inductie pe termeni
I pasul init
ial: dc. s S si x Xs at. gs (x) = fs (x) (ipoteza),
dc. : s , at. gs () = A = fs (),
I pasul de induct
ie: dc. : s1 . . . sn s si
t1 T (X )s1 , . . ., tn T (X )sn a.
gs1 (t1 ) = fs1 (t1 ), , gsn (tn ) = fsn (tn ) at.
gs ((t1 , . . . , tn )) = A (gs1 (t1 ), , gsn (tn )) =
A (fs1 (t1 ), , fsn (tn )) = fs ((t1 , . . . , tn ))
Conform principiului inductiei pe termeni,
gs (t) = fs (t) or. t T (X )s , adica g = f .

Orice substitutie : X T (Y ) se extinde la un unic


morfism de (S, )-algebre : T (X ) T (Y ).

113

Proprietati

Proprietati

Propozitia 10.

Propozitia 9.
X ' Y T (X ) ' T (Y )

Fie h : A B morfism surjectiv.


Or. f : T (X ) B morfism,
ex. g : T (X ) A a. . g ; h = f

Dem. Fie u : X Y o functie bijectiva. Din Teorema 7 rezulta ca


I

exista un unic morfism f : T (X ) T (Y ) a.


fs (x) = us (x) or. s S, x Xs ,

exista un unic morfism g : T (Y ) T (X ) a.


gs (y ) = u1
s (y ) or. s S, y Xs .

114

Ab

h
g

/B
O

f
T (X )

Dem. Daca f : T (X ) B morfism, atunci


or. s S, x Xs ex. a As a.. hs (a) = fs (x).
Oricare s S, x Xs , alegem a As a.. hs (a) = fs (x) si definim
es (x) := a. Atunci e : X A este o evaluare si .
(
e; h)s (x) = fs (x) r. s S, x Xs .
Din Teorema 7,
e; h = f , deci g :=
e.

Observam ca (f ; g )s (x) = gs (fs (x)) = x or. s S, x X .


Aplicand Propozitia 6, obtinem ca f ; g = 1T (X ) .
Similar, g ; f = 1T (Y ) , deci T (X ) ' T (Y ).
115

116

Definirea operatiilor derivate

Semantica instructiunii de atribuire x:=e

A o -algebra, t T (X )

X este multimea variabilelor, x X , t T (X )

Definim functia termen At : An A prin

D este -algebra datelor

At (a1 , . . . , an ) :=
e(t), unde e(xi ) := ai or. i = 1, . . . , n

o stare a memoriei este o functie e : X D

semantica unei instructiuni descrie modul n care instructiunea


modifica starile memoriei

Mem := {e : X D| e functie}
Sem(x := t) : Mem  Mem

e(t) daca y = x,
Sem(x := t)(e)(y ) :=
e(y ) daca y =
6 x.

At este operatie derivata pe A


I

= {0, 1, , , } signatura algebrelor Boole,


X = {x, y }, t = x y T (X )
Daca B este o algebra Boole, atunci
Bt (b1 , b2 ) = b1 b2 oricare b1 , b2 B.

117

118

119

120

Programare logica

Ecuatiile si semantica lor

(S, ) signatura multisortata


I

O (S, )-ecuatie este formata dintr-o multime de variabile X


si din doi termeni t si t 0 de acelasi sort din T (X ).
Vom nota o ecuatie prin

(X )t =s t 0 .

Ecuatii. Relatia de satisfacere.

Spunem ca o (S, )-algebra A satisface o ecuatie (X )t =s t 0


(A este model al ecuatiei) daca
es (t) =
es (t 0 ) pentru orice
e : X A. In acest caz, vom nota

A |= (X )t =s t 0 .

= egalitate formala, = egalitate efectiva

121

122

Necesitatea cuantificarii

Ecuatiile conditionate

O (S, )-ecuatie conditionata este notata prin

(X )t =s t 0 if H.
si este formata din:
I

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

T,s = , T,bool = {T , F }

T 6|= ()T =bool F

T |= (X )T =bool F ,
unde Xs := {x}, Xbool :=

o multime de variabile X ,

doi termeni de acelasi sort t, t 0 T (X )s .

o multime H de ecuatii u =s 0 v , cu u,v T (X )s 0 .

In practica H este finita H = {u1 = s v1 , . . . , un = sn vn }.


1
Ecuatiile din H sunt cuantificate cu X .

O ecuatie (X )t =s t 0 este ecuatie conditionata n care multimea

conditiilor H este vida (X )t =s t 0 if .


123

124

Ecuatiile conditionate

Exemplu

A (S, )-algebra A, := (X )t =s t 0 if H

STIVA = (S, ), Xelem := {E }, Xstiva := {S, Q}

:= (X )top(S) =elem E if {S =stiva push(E , Q)}

A satisface (A este model al lui ) daca,

STIVA-algebra A:
Aelem := N, Astiva := N
A0 := 0, Aempty := , Apush (n, n1 nk ) := n n1 nk ,
Apop () = Apop (n) := ,
Apop (n1 n2 nk ) := n2 nk pt. k 2,
Atop () := 0, Atop (n1 nk ) := n1 pt. k 1.

STIVA-algebra B:
Belem := {0}, Bstiva := N
B0 := 0, Bempty := 0, Bpush (0, n) := n + 1 or. n,
Bpop (0) := 0, Bpop (n) := n 1 pt. n 1, Btop (n) := 0 or. n.

A |= si B |=

es 0 (u) =
es 0 (v ) or. u =s 0 v H
es (t) =
es (t 0 ).
pentru orice e : X A.

Vom nota A |= (X )t =s t 0 if H.
I

A |= (X )t =s t 0 A |= (X )t =s t 0 if

126

125

Exemplu

Exemplu

Xelem := {E }, Xstiva := {S, Q}

STIVA = (S, ), Xelem := {E }, Xstiva := {S, Q}

:= (X )top(S) =elem E if {S =stiva push(E , Q)}

STIVA-algebra C :
Celem := N, Cstiva := N
C0 := 0, Cempty := , Cpush (n, n1 nk ) := n1 nk n,
Cpop () = Cpop (n) := ,
Cpop (n1 n2 nk ) := n2 nk pt. k 2,
Ctop () := 0, Ctop (n1 nk ) := n1 pt. k 1.

C 6|=
e : X C evaluarea definita prin

A |= (X )top(S) =elem E if {S =stiva push(E , Q)}


Fie e : X A evaluare a. .
estiva (S) =
estiva (push(E , Q)).
Rezulta
estiva (S) = Apush (
eelem (E ),
estiva (Q))
Notam n =
eelem (E ), w :=
estiva (S), w 0 :=
estiva (Q).
Rezulta w = nw 0 si

eelem (top(S)) = Atop (


estiva (S)) = Atop (w ) =
Atop (nw 0 ) = n =
eelem (E )

eelem (E ) = 2, estiva (Q) = 3 4, estiva (S) = 3 4 2


Atunci
estiva (S) =
estiva (push(E , Q)),
dar
eelem (E ) = 2 6= 3 =
eelem (top(S)).
127

128

Programare logica

-algebre

multime de ecuatii conditionate


O algebra A este -algebra (A este model pentru )
daca A |= oricare .

Specificatii algebrice

In acest caz, vom nota A |= .


Vom nota cu Alg (S, , ) clasa -algebrelor
Alg (S, , ) := {A Alg (S, ) | A |= }

130

129

-algebre

Specificatii

Teorema 11.

Fie A ' B (S, )-algebre, := (X )t =s

t0

if H.

A |= B |=
I

Dem. Notam : B A un izomorfism.

es 0 (u) =
es 0 (v ) or. u =s 0 v H.
Fie e : X B a..
Definim f : X A prin f := e;
Atunci f =
e; , deoarece f|X = (
e; )|X .

fs 0 (u) = s 0 (
es 0 (u)) = s 0 (
es 0 (v )) = fs 0 (v ) or. u =s 0 v H
Din ipoteza rezulta fs (t) = fs (t 0 ), i.e.
s (
es (t)) = s (
es (t 0 )).
este injectiv, deci
es (t) =
es (t 0 ).

O specificatie este un triplet (S, , ), unde (S, ) este o


signatura multisortata si este o multime de ecuatii
conditionate. Specificatia (S, , ) defineste clasa modelelor
Alg (S, , ), care reprezinta semantica ei.
In Maude teoriile
fth ...

endfth

au ca semantica Alg (S, , ), unde S este multimea


sorturilor, este multimea simbolurilor de operatii, este
multimea ecuatiilor definite n modul, iar fiecare ecuatie
eq t = t
si
ceq t = t if H
este cuantificata de variabilele care apar n t si t.

131

132

Specificatii echivalente

Consecinte semantice

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

(S, , ) specificatie, ecuatie, multime de ecuatii


Ecuatia este o consecinta semantica a lui daca
A |= implica A |=
pentru orice algebra A. In acest caz, vom nota |= .
|= |= or.

133

Teoria grupurilor

134

Specificatii echivalente

(S = n{Element}, := {e, , +}, )

:= ({x, y , z})(x + y ) + z = x + (y + z),


Doua specificatii (S, , 1 ) si (S, , 2 ) sunt echivalente daca
definesc aceeasi clasa de modele:

({x})e + x = x,

({x})x + e = x,

({x})(x) + x = e,o

({x})x + (x) = e

A |= 1 A |= 2

Observatie
I
I

1 := ({x, y , z})x = y if {x + z = y + z},

Fie si multimi de ecuatii. Daca |= atunci (S, , ) si


(S, , ) sunt specificatii echivalente.

2 := ({x, y })x + y = y + x
|= 1 , 6|= 2

135

136

-algebra initiala

Specificatie corecta

(S, , ) specificatie
I, := {A | A initiala n Alg (S, , )}

(S, ) o signatura multisortata, A (S, )-algebra

este un tip abstract de date.

O specificatie (S, , ) este adecvata pentru A daca A este


-algebra initiala, i.e. A I, .

I, reprezinta semantica unui modul functional n Maude


fmod ...

Exemplu

endfm

Determinati o specificatie adecvata pentru A = (Z4 , 0, succ), unde


succ(x) := x + 1 (mod 4).

unde S este multimea sorturilor, este multimea simbolurilor de


operatii, este multimea ecuatiilor definite n modul.
Fiecare ecuatie
eq t = t
si
ceq t = t if H
este cuantificata de variabilele care apar n t si t.
137

Continuare

Continuare

A = (Z4 , 0, succ), unde succ(x) := x + 1

fmod Z4 is
sort s .
op 0 : -> s .
op succ : s -> s .
vars x : s .
eq succ(succ(succ(succ(x)))) = x .
endfm

(a) A |= (x)succ(succ(succ(succ(x)))) = x
Daca X := {x} si e : X A, atunci

e(succ(succ(succ(succ(x))))) =
Asucc (Asucc (Asucc (Asucc (e(x))))) = e(x) + 4 (mod 4)
= e(x) =
e(x)
(b) Fie B o -algebra.
Existenta: definim f : A B prin
f (0) := B0 , f (x + 1) := Bsucc (f (x)) pt. 0 x 2 .

S := {s}, := {0 : s, succ : s s},

:= {(x)succ(succ(succ(succ(x)))) = x}
A este -algebra initiala daca:
I

(a) A |= or. ,

(b) or. B |= ex. unic f : A B morfism.

138

f morfism: f (Asucc (x)) = f (x + 1) = Bsucc (f (x)) pt. 0 x 2.


Ramane de demontrat f (Asucc (3)) = Bsucc (f (3)).
139

140

Continuare

Exercitiu

(1) f (Asucc (3)) = f (0) = B0

Determinati un model intial pentru specificatia:

(2) Bsucc (f (3)) = Bsucc (Bsucc (f (2))) =


Bsucc (Bsucc (Bsucc (Bsucc (B0 )))

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

Deoarece B |= (x)succ(succ(succ(succ(x)))) = x,
pentru e0 : X B, e0 (x) := B0 obtinem
Bsucc (Bsucc (Bsucc (Bsucc (B0 )))) =
e0 (succ(succ(succ(succ(x))))) =

e0 (x) = B0
Din (1) si (2) rezulta f (Asucc (3)) = Bsucc (f (3)).
Unicitatea: fie g : A B un morfism;
dem. ca g (x) = f (x) prin inductie pt. i {0, 1, 2, 3}
g (0) = g (A0 ) = B0 = f (0),
g (x + 1) = g (Asucc (x)) = Bsucc (g (x)) = Bsucc (f (x)) =
f (Asucc (x)) = f (x + 1).
141

142

143

144

Programare logica

Congruente

(S, ) signatura, A (S, ) algebra


I

Congruente. -algebra initial


a

O relatie S-sortata = {s }sS A A este congruenta


daca:
I
I

s As As echivalenta or. s S,
este compatibila cu operatiile
ai si bi or. i = 1, . . . , n A (a1 , . . . , an ) s A (b1 , . . . , bn )
or. : s1 . . . sn s

145

146

Exemple

Algebra cat

(S, ) signatura, A algebra, congruenta pe A

(S, ) signatura, A (S, ) algebra


I

NAT -algebra A:
Anat := N, A0 := 0, Asucc (x) := x + 1
n1 k n2 k|(n1 n2 ) pentru k N fixat
n1 k n2 Asucc (n1 ) k Asucc (n2 )

[a]s := {a0 As | a s a0 } (clasa lui a)

As /s := {[a]s | a As } or. s S
A/ := {As /s }sS este (S, )-algebra

I
I

AUTOMAT -algebra B:
Bintrare = Bstare = Biesire := N
Bs0 := 0, Bf (m, n) := m + n, Bg (n) := n + 1
este congruenta pe B, unde intrare =stare =iesire :=k

(A/ ) := [A ] or. : s,
(A/ ) ([a1 ]s1 , . . . , [an ]sn ) := [A (a1 , . . . , an )]s
or. : s1 . . . sn s si (a1 , . . . , an ) As1 Asn

[] : A A/ , a 7 [a]s or. a As este morfism.


[a]s = [b]s a s b

147

148

Exemple

Ker (f )

STIVA-algebra A:
Aelem := N, Astiva := N
A0 := 0, Aempty := , Apush (n, n1 nk ) := n n1 nk ,
Apop () = Apop (n) := ,
Apop (n1 n2 nk ) := n2 nk pt. k 2,
Atop () := 0, Atop (n1 nk ) := n1 pt. k 1.

(S, ) signatura, A si B algebre, f : A B morfism


Ker (f ) = {Ker (fs )}sS , unde
Ker (fs ) := {(a, a0 ) As As | fs (a) = fs (a0 )} or. s S

elem := N N,
stiva := {(w , w 0 ) | (w , w 0 ) N N , |w | = |w 0 |}
= {elem , stiva } congruenta

Propozitia 12

A/ ' B, unde
STIVA-algebra B:
Belem := {0}, Bstiva := N
B0 := 0, Bempty := 0, Bpush (0, n) := n + 1 or. n,
Bpop (0) := 0, Bpop (n) := n 1 pt. n 1, Btop (n) := 0 or. n.

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

(b) Daca congruenta pe A, atunci Ker ([] ) =.

Dem. exercitiu

149

150

Proprietatea de universalitate

Continuare
h este bine definit: [a1 ]s = [a2 ]s hs (a1 ) = hs (a2 )
[a1 ]s = [a2 ]s (a1 , a2 ) s Ker (hs ) hs (a1 ) = hs (a2 )

(S, ) signatura, A algebra, congruenta pe A

h morfism:

Teorema 13 ( Proprietatea de universalitate a algebrei cat)

Oricare ar fi B o algebra si h : A B un morfism a.. Ker (h)


exista un unic morfism h : A/ B a.. [] ; h = h.

dc. : s , at.
hs (A/e quiv ) = hs ([A ] ) = hs (A ) = B ,

dc. : s1 . . . sn s si
a1 As1 , . . ., an Asn at.

Dem. h : A B, Ker (h)


Existenta: definim hs ([a]s ) := hs (a)
or. a As

[]

/ A/

hs (A ([a1 ] , . . . , [an ] )) = hs ([A (a1 , . . . , an )] ) =


hs (A (a1 , . . . , an )) == B (hs1 (a1 ), , hsn (an )) =
B (hs1 ([a1 ] ), , hsn ([an ] ))

 }

Unicitatea: fie g : A/ B a.. [] ; g = h


gs ([a]s ) = hs (a) = hs ([a]s ) or. a As .
151

152

Consecinte

Continuare

Teorema 14 (Teorema I de izomorfism)


Oricare f : A B morfism, A/Ker (f ) ' f (A).
Fie B K si h : T B unicul morfism.

Dem. exercitiu

Existenta: deoarece K Ker (h), din


Proprietatea de universalitate a
algebrei cat ex. unic morfism
h : T /K B a.. []K ; h = h.

Propozitia 15
Fie K o clasa de (S, )-algebre. Daca
K :=

{Ker (h) | h : T B K, h morfism},

K este congruenta pe T ,

or. B K ex. unic morfism h : T /K B.

Dem. Intersectia unei familii arbitrare de congruente este


congruenta (exercitiu).

[]K

/ T /
K

 {

Unicitatea: fie g : T /K B un morfism; atunci


[]K ; g : T B, deci []K ; g = h, deci g verifica proprietatea
care-l defineste n mod unic pe h; rezulta g = h.

atunci urmatoarele proprietati sunt adevarate:


I

153

-algebre

154

Continuare

(S, , ) specificatie,
A algebra si o congruenta pe A

Dem. Fie (X )t =s t 0 if H si f : T (X ) A/ a..

fs 0 (u) = fs 0 (v ) or. u =s 0 v H.
[]
[] : A A/ morfism surjectiv,
/ A/
Ab
O
f : T (X ) A/ morfism
f
Din Propozitia 10, ex.
e : T (X ) A

e
a. .
e; [] = f
T (X )

Spunem ca este este nchisa la substitutie daca:


CS(,A)

or. (X )t =s t 0 if H , or. e : X A

es 0 (u) s 0
es 0 (v ) or. u =s 0 v H
es (t) s
es (t 0 ).

Propozitia 16

Atunci
es 0 (u) s 0
es 0 (v ) or. u =s 0 v H si, deoarece este
nchisa la substitutie, obtinem
es (t) s
es (t 0 ), adica fs (t) = fs (t 0 ).

Daca este o congruenta pe A nchisa la substitutie atunci


A/ |= .

155

156

Echivalenta semantica

Continuare

Dem. Notam :=,A

(S, , ) specificatie, A o (S, )-algebra


T
,A := {Ker (h) | h : A B morfism B |= }
echivalena semantica pe A
I

Fie (X )t =s t 0 if H si e : X A a..

es 0 (u) s 0
es 0 (v ) or. u =s 0 v H.
Rezulta (
es 0 (u),
es 0 (v )) Ker (h) or. h : A B |= , deci

es 0 (v )) or. u =s 0 v H.
h(
es 0 (u)) = h(
Fie B |= i h : A B. Atunci
e; h : T (X ) B si

es (t)) = h(
es (t 0 )).
h(
es 0 (u)) = h(
es 0 (v )) or. u =s 0 v H, deci h(
0
Rezulta (
es (t),
es (t )) Ker (h) or. h : A B |= , deci
0
(
es (t),
es (t )) , i.e.
es (t) s
es (t 0 ).

A = T notam :=,T .

Propozitia 17
,A este o congruenta pe A nchisa la substitutie.

157

-algebra initiala

ADT

(S, , ) specificatie

(S, , ) specificatie
I

I, := {A | A initiala n Alg (S, , )}

Definim
T pe T congruenta semantica
:= {Ker (f ) | f : T A, A |= },
care este nchisa la substitutie cf. Propozitiei 17.

T / |= cf. Propozitiei 16.

=K , unde K = Alg (S, , )


or. B |= ex. unic morfism f : T / B cf. Propozitiei 15.

158

este un tip abstract de date.


Un modul functional fmod ... endfm n Maude defineste tipul
abstract de date I, si construiete efectiv algebra T / ,
unde S este multimea sorturilor, este multimea simbolurilor de
operatii, este multimea ecuatiilor definite n modul. Fiecare
ecuatie
eq t = t
si
ceq t = t if H
este cuantificata de variabilele care apar n t si t.

Teorema 18.
T / este -algebra initiala.

159

160

Consecinte

(S, , ) specificatie, A algebra, hA : T A unicul morfism

Teorema
Sunt echivalente:
I
I

A este -algebra initiala


A verifica urmatoarele proprietati:
I
I

No Junk: hA este surjectiv

No Confusion: hA s (t1 ) = hA s (t2 ) |= ()t1 =s t2


or. t1 , t2 T,s

161

162

163

164

Programare logica

Demonstrarea ec. conditionate


(S, ) signatura, X multime de variabile
multime de ecuatii conditionate
?

|= (X )t =s t 0 if H

Teorema constantelor
Demonstratii prin inductie

Propozitia 19

(a) Daca |= (X )t =s t 0 if H atunci


S

{(X )u =s 0 v | u =s 0 v H} |= (X )t =s t 0 .

(b) Implicatia inversa nu este adevarta n general .


S

(c) Daca {()u =s 0 v | u =s 0 v H} |= ()t =s t 0

atunci |= ()t =s t 0 if H.

165

166

Continuare

(X )

Dem. (a) Fie A |= {(X )u =s 0 v | u =s 0 v H} si e : X A

o evaluare. Dar A |= (X )u =s 0 v or. u =s 0 v H, deci

es 0 (u) =
es 0 (v ) or. u =s 0 v H. Deoarece A |= , din ipoteza,

A |= (X )t =s t 0 if H. Deoarec e : X A este o evaluare a..

es 0 (u) =
es 0 (v ) or. u =s 0 v H, rezulta
es (t) =
es (t 0 ).

(S, ) signatura, X multime de variabile

(b) Implicatia inversa nu este n general adevarata.


S = {s}, = {0 : s}, X = {x, y }

{(X )x = 0} |= (X )y = 0 este adevarata, dar

6|= (X )y = 0 if {x = 0}.

multimea X poate fi privita ca o signatura care are numai


operatii constante:
variabila x Xs devine operatia constanta cx : s

(X ) := ((X )w ,s )w S ,sS
I

(b) Fie A |= ,
e : T A unicul morfism. Daca
es 0 (u) =
es 0 (v )
S

or. u =s 0 v H, atunci A |= {()u =s 0 v | u =s 0 v H}. Din

ipoteza, obtinem A |= ()t =s t 0 , deci


es (t) =
es (t 0 ). Am
demonstrat ca daca unicul morfism
e : T A verifica

es 0 (u) =
es 0 (v ) or. u =s 0 v H, atunci
es (t) =
es (t 0 ).

167

(X )w ,s = w ,s pentru w 6=
(X ),s = ,s {cx |x Xs }

168

(X )-algebre

Teorema constantelor I

A (S, )-algebra, a : X A atribuire


I

(A, a) este (X )-algebra

Acx := as (x) oricare x Xs , s S

orice (X )-algebra poate fi construita astfel

(S, ) signatura, X multime de variabile

Teorema 20(Teorema constantelor I)


Sunt echivalente:

T(X ) = {T(X ),s }sS


I

T(X ),s = T (X )s

Tcx := x oricare x Xs , s S

(a) A |= (X )t =s t 0 ,

(b) (A, a) |=(X ) ()t =s t 0 or. a : X A.

Dem. Ambele enunturi sunt echivalente cu:

as (t) =
as (t 0 ) or. a : X A

Observatie
T(X ) este (X )-algebra initiala
(A, a) (X )-algebra
: T(X ) A unicul morfism de (X )-algebre
a

170

169

Teorema constantelor II

Continuare

(S, ) signatura, X multime de variabile


o multime de -ecuatii neconditionate a..
nici o variabila din X nu apare n .

(a) (b) Fie (A, a) o (X )-algebra a..


S

(A, a) |=(X ) {()u =s 0 v | u =s 0 v H}. Avem


A |= , deoarece (A, a) |=(X ) si

as 0 (u) =
as 0 (v ) or. u =s 0 v H, deoarece

(A, a) |=(X ) {()u =s 0 v | u =s 0 v H}.


Din (a) rezulta ca
as (t) =
as (t 0 ), adica

(A, a) |=(X ) ()t =s t 0 .

Teorema 21 (Teorema constantelor II).


Sunt echivalente:
I
I

(a) |= (X )t =s t 0 if H
S

(b) {()u =s 0 v | u =s 0 v H} |=(X ) ()t =s t 0

(b) (a) Fie A o (S, )-algebra a.. A |= si

a : X A a..
as 0 (u) =
as 0 (v ) or. u =s 0 v H.Atunci
(A, a) |=(X ) si

(A, a) |=(X ) {()u =s 0 v | u =s 0 v H}.

Din (b) rezulta ca (A, a) |=(X ) ()t =s t 0 , adica

as (t) =
as (t 0 ).

Dem. Deoarece nici o variabila din X nu apare n , pentru orice


(S, )-algebra A sunt echivalnte:
I A |= ,
I (A, a) |=(X ) or. a : X A.
171

172

cx (cy + cz) = (cx cy ) + (cx cz)

Demonstratii prin inductie

fmod MYNAT is
sort
MyNat .
op 0 : -> MyNat .
op s_ : MyNat -> MyNat .
op _+_ : MyNat MyNat -> MyNat [comm assoc prec 50 ] .
op _*_ : MyNat MyNat -> MyNat [ comm assoc prec 49 ] .
vars x y
: MyNat .
eq x + 0 = x .
eq x + s y = s(x + y) .
eq x * 0 = 0 .
eq x * s y = (x * y) + x .
endfm

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

173

Constructori S = {s}

Demonstratii prin inductie

==========================================
fmod MYNAT
==========================================
fmod IND0
==========================================
reduce in IND0 : 0 * (cy + cz) == 0 * cy + 0 * cz .
rewrites: 5 in 10534559934ms cpu (0ms real)
result Bool: true
==========================================
fmod IND
==========================================
reduce in IND : s cx * (cy + cz) == cy * s cx + cz * s cx .
rewrites: 5 in 10534543934ms cpu (0ms real)
result Bool: true
175

. 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 morfism h : TCons A este surjectiv.
Daca P = (, ) este o prezentare, notam TP = T / . Atunci
Cons se numeste signatura de constructori pentru P daca este
signatura de constructori pentru TP .

176

Constructori S = {s}
.
P = (, ) o prezentare, Cons signatura de constructori
TP := T /
t T , [t] := [t]

Teorema (Demonstratii prin inductie)


Fie Q o proprietate a elementelor lui TP a.. urmatoarele conditii
sunt satisfacute:
I

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

pasul de inductie:
daca t1 , . . ., tn T s si Q([t1 ]) = = Q([tn ]) = true atunci
Q([(t1 , . . . , tn )]) = true or. Conss n ,s .

Atunci Q([t]) = true oricare [t] TP .


177

178

179

180

Programare logica

Regulile deductiei ecuationale


(S, ) signatura, X si Y multimi de variabile
multime de ecuatii (neconditionate)
R

(X )t =s t

(X )t1 =s t2

(X )t2 =s t1

Sintaxa logicii ecuationale

(X )t1 =s t2 , (X )t2 =s t3

(X )t1 =s t3

(X )t1 =s1 t10 , . . . , (X )tn =sn tn0

: s1 sn s

(X )(t1 , . . . , tn ) =s (t10 , . . . , tn0 )

Sub

unde
= s (t
0)
(X )(t)

(Y )t =s t 0 , : Y T (X )
182

181

Deductia sintactica

Exemplu

Fie o multime de ecuatii, numite axiome sau ipoteze. Spunem ca

ecuatia  := (X )t =s t 0 se deduce sintactic din daca exista o


secventa de ecuatii 1 , . . ., n a. .
I

n =  si

pentru orice i {1, . . . , n} i sau i se obtine din ecuatiile


1 , . . ., i1 aplicand una din regulile R, S, T, C , Sub .

= {x + 0 = x, x + succ(y ) = succ(x + y )}

E ` 0 + succ(0) = succ(0)

(1) x + succ(y ) = succ(x + y ) E

(2) 0 + succ(0) = succ(0 + 0) (1, Sub{x, y 0})


(3) x + 0 = x E

(4) 0 + 0 = 0 (3, Sub{x 0})

(5) succ(0 + 0) = succ(0) (4, C )

(6) 0 + succ(0) = succ(0) (2, 5, T )

In acest caz scriem `  si spunem ca  este deductibila


(sintactic), demonstrabila, derivabila din . Secventa
1 , . . ., n =  este o demonstratie pentru  din ipotezele .

x +0=x

Sub{x 0}

0
+
0
=
0
(Sub{x, y 0})
(C )

0 + succ(0) = succ(0 + 0)
succ(0 + 0) = succ(0)

x + succ(y ) = succ(x + y )

0 + succ(0) = succ(0)
183

(T )
184

Axiomele sunt ecuatii conditionate

Axiomele sunt ecuatii conditionate

Fie o multime de ecuatii conditionate.

Sub

NATBOOL = (S, ), S = {n, b}, = {T , F , 0, s, , >}


= {, 1 , 2 }

:= {x, y , z}x =n y if {z x =n z y , z > 0 =b T }

1 := {a, c}s(s(s(0))) a =n s(s(s(0))) c,

2 := {a, c}s(s(s(0))) > 0 =b T

(X )(u1 ) =s1 (v1 ), . . . , (X )(un ) =sn (vn )

(X )(t) =s (t 0 )

unde (Y )t =s t 0 if H , H = {u1 =s1 v1 , . . . , un =sn vn } si


: Y T (X ) substitutie
I

` {a, c}a =n c

Identificam substitutia : Y T (X ) cu
: T (Y ) T (X ).
Daca H = atunci

Sub

Sub

1 , 2

a =s c

, n (x) := a, n (y ) := c, n (z) := s(s(s(0)))

(X )(t) =s (t 0 )

185

186

187

188

Programare logica

Regulile deductiei ecuationale


(S, ) signatura, X si Y multimi de variabile
multime de ecuatii (neconditionate)
R

(X )t =s t

(X )t1 =s t2

(X )t2 =s t1

Logic
a ecuational
a
Corectitudine. Completitudine

(X )t1 =s t2 , (X )t2 =s t3

(X )t1 =s t3

(X )t1 =s1 t10 , . . . , (X )tn =sn tn0

(X )(t1 , . . . , tn ) =s (t10 , . . . , tn0 )

Sub

: s1 sn s

(X )(u1 ) =s1 (v1 ), . . . , (X )(un ) =sn (vn )


= s (t
0)
(X )(t)

unde

(Y )t =s t 0 if {u1 =s1 v1 , . . . , un =sn vn } , : Y T (X )


190

189

Corectitudinea regulilor de deductie

Continuare

multime de ecuatii conditionate


O regula de deductie

Demonstram ca C este corecta.

Fie : s1 sn s si presupunem ca

|= (X )t1 =s1 t10 , . . ., |= (X )tn =sn tn0 (*)

Trebuie sa aratam ca |= (X )(t1 , . . . , tn ) =s (t10 , . . . , tn0 ).


Fie A |= si f : T (X ) A un morfism. Din (*),
fs1 (t1 ) = fs1 (t10 ), . . ., fsn (tn ) = fsn (tn0 ), deci

1 , . . . ,  n
este corecta daca


|= 1 , . . ., |= n |= 

fs ((t1 , . . . , tn )) = A (fs1 (t1 ), . . . , fsn (tn )) =


A (fs1 (t10 ), . . . , fsn (tn0 )) = fs ((t1 , . . . , tn )).
In consecinta, A |= (X )(t1 , . . . , tn ) = s (t 0 , . . . , tn0 ).
1
Deoarece A este o -algebra arbitrara,

|= (X )(t1 , . . . , tn ) =s (t10 , . . . , tn0 ).

Propozitia 22
Regulile deductiei ecuationale R, S, T, C , Sub sunt corecte.

191

192

Continuare

Corectitudinea deductiei ecuationale

Demonstram ca Sub este corecta.

multime de ecuatii conditionate

Fie (Y )t =s t 0 if H , H = {u1 =s1 v1 , . . . , un =sn vn } si


: Y T (X ) substitutie a..

|= (X )(u1 ) =s1 (v1 ), . . ., |= (X )(un ) =sn (vn ) (*)

Trebuie sa aratam ca |= (X )(t) =s (t 0 ).


Fie A |= si f : T (X ) A un morfism. Atunci
f : T (Y ) A si, din (*),
;
f )s (u1 ) = (;
f )s (v1 ), . . ., (;
f )sn (un ) = (;
f )sn (vn ).
(;
1
1

Deoarece A |= (Y )t =s t 0 if H , obtinem

Teorema 23 (Corectitudine)

` (X )t =s t 0 |= (X )t =s t 0

Dem.: Fie 1 , . . ., n = (X )t =s t 0 o demonstratie din ipotezele


. Demonstram |= i prin inductie dupa i = 1, . . . , n.

Observam ca 1 sau 1 = (X )t =s t, deci |= 1 .


tim ca i se obtine din
Presupunem ca |= 1 , . . ., |= i1 . S
ecuatiile 1 , . . ., i1 aplicand una din regulile de
deductie.Deoarece R, S, T, C , Sub sunt corecte, rezulta |= i .

f )s (t) = (;
f )s (t 0 ) i.e. fs ((t))

0 )).
(;
= fs ((t
In consecinta, A |= (X )(t)
= s (t
0 ).
Deoarece A este o -algebra arbitrara,
= s (t
0 ).
|= (X )(t)

194

193

Inchiderea la reguli de deductie

Continuare

(S, ) o signatura multisortata, X o multime de variabile

Reg

(X )t1 =s1 t10 , . . . , (X )tn =sn tn0

Dem. (a)(b) Presupunem ca este congruenta si demontram


nchiderea la C .Fie : s1 sn s si t1 s1 t10 , . . ., tn sn tn0 .
Deoarece este congruenta, (t1 , . . . , tn ) s (t10 , . . . , tn0 ),
deci este nchisa la C .

(X )t =s t 0

Relatie binara T (X ) T (X ) este nchisa la Reg daca

(b)(a) Presupunem este echivalenta nchisa la C si


demonstram ca este compatibila cu operatiile. Fie
: s1 sn s si t1 s1 t10 , . . ., tn sn tn0 . Deoarece este
nchisa la C , (t1 , . . . , tn ) s (t10 , . . . , tn0 ), deci este
compatibila cu operatiile.

t1 s1 t10 , . . ., tn sn tn0 t s t 0

Propozitia 24
Sunt echivalente:
I

(a) este congruenta pe T (X ),

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


195

196

-algebre

Echivalenta sintactica

(S, , ) specificatie, X o multime de variabile,


o congruenta pe T (X )

(S, , ) specificatie, X o multime de variabile


Pe T (X ) definim urmatoarea relatie S-sortata

CS(,T (X ))

or. (Y )t =s t 0 if H , or. h : T (Y ) T (X ) morfism

hs 0 (u) s 0 hs 0 (v ) or. u =s 0 v H hs (t) s hs (t 0 ).

t s t 0 ` (X )t =s t 0 oricare s S.
este echivalenta sintactica determinata de .

Propozitia 25
Propozitia 26

Sunt echivalente:
I

(a) verifica CS(,T (X )),

este o congruenta nchisa la substitutie.

(b) este nchisa la Sub ,

(c) T (X )/ |= .

Dem. Din definitia deductiei sintactice `, rezulta ca este


nchisa la R, S, T, C , Sub .

197

Echivalenta semantica

198

Completitudinea deductiei ecuationale

multime de ecuatii conditionate,  = (X )t =s t 0 ecuatie


(S, , ) specificatie, A o (S, )-algebra
,A :=

Teorema 28 (Completitudine)

{Ker (h) | h : A B morfism B |= }

|= (X )t =s t 0 ` (X )t =s t 0

este echivalenta semantica pe A determinata de .

Dem. Din Propozitia 26 si Propozitia 16, T (X )/ este o


-algebra, deci T (X )/ |= .Fie p : T (X ) T (X )/
surjectia canonica, p(t) := [t] oricare t T (X ), unde [t] este
clasa de echivalenta a lui t determinata de . Rezulta
ps (t) = ps (t 0 ), i.e. [t] = [t 0 ].In consecinta t s t 0 , adica

` (X )t =s t 0 .

Propozitia 27
,A este cea mai mica congruenta pe A nchisa la substitutie.
Dem. Din Propozitia 17, ,A este congruenta A nchisa la
substitutie. Fie o alta congruenta pe A nchisa la substitutie si
p : A A/ surjectia canonica ( p(a) = [a] or. a A). Din
Propozitia 16, A/ |= , deci = Ker (p) ,A .

Demonstratie scurta:
Se aplica Propozitiile 26 si 27.
199

200

Teorema de completitudine

Reguli de deductie

(S, , ) specificatie, X , Y multimi disjuncte de variabile


(S, ) signatura, X multime de variabile, t, t 0 T (X )s

t t 0 ` (X )t =s t 0 (echiv. sintactica)

t t 0 |= (X )t =s t 0 (echiv. semantica)

Corectitudinea regulilor de deductie:

Completitudinea regulilor de deductie:

(X )t1 =s t2

Abstractizarea

(X Y )t1 =s t2

Concretizarea

(X Y )t1 =s t2

(X )t1 =s t2

t1 , t2 T (X )s
Ys 6= T,s 6=

Teorema 29 (Teorema de completitudine) =

Propozitia 30

|= (X )t =s t 0 ` (X )t =s t 0

Abstractizarea si Concretizarea sunt reguli de deductie corecte.


Dem. exercitiu
201

202

203

204

Exemplu
Orice functie inversabila la dreapta este injectiva.
S := {s}, := {f : s s, g : s s}

:= {({z}) g (f (z)) = z} (g inversa la dreapta a lui f )

` ({x, y }) x = y if {f (x) = f (y )}

{() f (cx ) = f (cy )} ` () cx = cy (teorema constantelor)

(1) () f (cx ) = f (cy ) (ipoteza)

(2) () g (f (cx )) = g (f (cy )) (C )

(3) () g (f (cy )) = cy (Sub{z cy })

(4) () g (f (cx )) = cy (2,3,T)

(5) ({z}) z = g (f (z)) (S)

(6) () cx = g (f (cx )) (5, Sub{z cx })

(7) () cx = cy (4,6, T)

Programare logica

Contexte

(S, ) signatura, X multime de variabile

Logic
a ecuational
a
Regula SR (Subterm
Replacement)

Pentru t T (X ) si y X notam
nry (t) = numarul de aparitii ale lui y n t

Daca z 6 X atunci un termen c T (X {z}) se numeste


context daca nrz (c) = 1.

Daca t0 T (X ) si t0 are acelasi sort cu z, atunci notam


c[z t0 ] := {z t0 }(c)
pentru un context c T (X {z}), unde
{z t0 } : X {z} T (X ) este substitutia
{z t0 }(z) = t0 si {z t0 }(x) = x or. x X

206

205

Regula de deductie SR

Exemplu

(S, , ) specificatie

(X )(u) =s 0 (v ) or. u =s v H

SR

(X )c[z (l)] =s 00 c[z (r )]

unde (Y )l =s r if H , : Y T (X ) substitutie
c T (X {z})s 00 , z 6 X , nrz (c) = 1
I
I

c = z SR = Sub
E multime de ecuatii neconditionate
SRE

E = {x + 0 = x, x + succ(y ) = succ(x + y )}

E `SRE 0 + succ(0) = succ(0)

(X )c[z (l)] =s 00 c[z (r )]

unde (Y )l =s r E , : Y T (X ) substitutie
c T (X {z})s 00 , z 6 X , nrz (c) = 1
207

(1)
(2)
(3)
(4)
(5)

x + succ(y ) = succ(x + y ) E

0 + succ(0) = succ(0 + 0) (10 , SRE , c := z, := {x, y 0})


x +0=x E

succ(0 + 0) = succ(0) (30 , SRE , c := succ(z), := {x 0})

0 + succ(0) = succ(0) (20 , 40 , T )

(1)
(2)
(3)
(4)
(5)
(6)

x + succ(y ) = succ(x + y ) E

0 + succ(0) = succ(0 + 0) (1, Sub{x, y 0})


x +0=x E

0 + 0 = 0 (3, Sub{x 0})

succ(0 + 0) = succ(0) (4, C )

0 + succ(0) = succ(0) (2, 5, T )

208

Regula de deductie SR

Continuare

Propozitia 31
SR este regula de deductie corecta.

Dem. Fie (Y )l =s r if H , : Y T (X ) substitutie


c T (X {z})s 00 , z 6 X , nrz (c) = 1 a..

|= (X )(u) =s 0 (v ) or. u =s v H.

Demonstram ca |= (X )c[z (l)] =s 00 c[z (r )] prin


inductie dupa |c| (lungimea lui c).
I

Daca |c| = 1, atunci c = z si |= (X )(l) =s (r ) deoarece


Sub este corecta.

Presupunem ca |= (X )c 0 [z (l)] =s 00 c 0 [z (r )] daca


|c 0 | < |c|. Atunci ex. : s1 sn s 00 ,
t1 T (X )s1 , . . ., tn T (X )sn si k a..
c = (t1 , . . . , tk , . . . , tn ) si nrz (tk ) = 1.
Pentru tk aplicam ipoteza de inductie:

|= (X )tk [z (l)] =si tk [z (r )].

Deoarece |= (X )ti =si ti or. i 6= k, aplicand corectitudinea


regulii C , obtinem

|= (X )(t1 , . . . , tk [z (l)], . . . , tn ) =s 00
(t1 , . . . , tk [z (r )], . . . , tn ).
Observam ca c[z t] = (t1 , . . . , tk [z t], . . . , tn ) or.

t T (X )s , deci |= (X )c[z (l)] =s 00 c[z (r )].

210

209

Regula de deductie SR

Continuare
SR este nchisa la C (schita)
Fie : s1 sn s 00 si t1 SR t10 , . . ., tn SR tn0 .

(1) Daca k {1, . . . , n} si (X )tk =sk tk0 se deduce prin aplicarea

regulii SR , atunci exista (Y )l =s r if H ,


: Y T (X ) substitutie c T (X {z})sk , z 6 X ,
nrz (c) = 1 a.. tk = c[z (l)] si tk0 = c[z (r )].
Definim c 0 = (t1 , . . . , tk1 , c, tk+1 , . . . , tn ), atunci
(t1 , . . . , tk , . . . , tn ) = c 0 [z (l)] si
(t1 , . . . , tk0 , . . . , tn ) = c 0 [z (r )],

deci (X )(t1 , . . . , tk , . . . , tn ) =s (t1 , . . . , tk0 , . . . , tn ) se


deduce prin aplicarea regulii SR .
(2) Daca k {1, . . . , n} si tk SR tk0 atunci
(t1 , . . . , tk1 , tk , tk+1 , . . . , tn ) SR (t1 , . . . , tk1 , tk0 , tk+1 , . . . , tn ).
(3) (t1 , t2 , . . . , tn ) SR (t10 , t2 , . . . , tn ) SR (t10 , t20 , t3 . . . , tn )
SR (t10 , t20 , t30 , . . . , tn ) SR SR (t10 , t20 , . . . , tn0 )
I

Definim SR T (X ) T (X ) prin

t SR t 0 `R,S,T ,SR (X )t =s t 0

Propozitia 32
SR este congruenta nchisa la substitutie.
Dem. Din definitie, SR este nchisa la R, S, T, deci este o relatie
de echivalenta.
I

SR este nchisa la Sub


Sub se obtine aplicand SR cu c = z.

211

212

Completitudinea SR

(S, , ) specificatie, X multime de variabile, t, t 0 T (X )s

Teorema 33
Sunt echivalente:

(a) `R,S,T ,C ,Sub (X )t =s t 0

(b) `R,S,T ,SR (X )t =s t 0

Dem. (a) (b) ( SR ) Rezulta din Propozitia 32 si din


faptul ca = este cea mi mica congruenta nchisa la
substitutie, definita pe T (X ).
(b) (a) (SR ) Din corectitudinea regulii SR (Propozitia
31) si Teorema de completitudine (Teorema 29), rezulta
SR = .
213

214

215

216

Programare logica

Rescrierea

(S, ) signatura
I O regul
a de rescriere este formata dintr-o multime de variabile
Y si doi termeni l, r de acelasi sort din T (Y ) a..
I
I

l nu este variabila
Var (r ) Var (l) = Y .

Vom nota l r (l s r ).

Rescrierea termenilor

Un sistem de rescriere (TRS) este o multime finita de reguli


de rescriere.

R = {x + 0 x, x + succ(y ) succ(x + y )}

217

Relatia R

218

Sistemul de rescriere RE

(S, ) specificatie, E multime de ecuatii neconditionate a..

Var (r ) Var (l) = Y or. (Y )l =s r E .

t0

Fie R un sistem de rescriere. Daca t, T (X )s definim


relatia t R t 0 astfel:
t R t 0 t este c[z (l)] si
t 0 este c[z (r )], unde
c T (X {z}), z 6 X , nrz (c) = 1
l r R cu Var (l) = Y ,
: Y T (X ) este o substitutie.

RE := {l r | (Y )l =s r E } este sistemul de rescriere


determinat de E .
In acest caz vom nota E :=R
E
ecuatiile devin reguli de rescriere prin orientare

t R t 0 daca si numai daca t 0 se obtine din t nlocuind


o instanta a lui l cu o instanta a lui r .

In Maude ecuatiile eq t = t trebuie sa verifice conditia


Var (t) Var (t) deoarece n reduceri ecuatiile sunt folosite ca
reguli de rescriere.

219

220

Exemplu

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

E = {x + 0 = x, x + succ(y ) = succ(x + y )}
RE = {x + 0 x, x + succ(y ) succ(x + y )}
0 + succ(0) E succ(0 + 0)
(l := x + succ(y ), r := succ(x + y ), c := z, := {x, y 0})
succ(0 + 0) E succ(0)
(l := x + 0, r := x, c := succ(z), := {x 0})
0 + succ(0) E succ(0 + 0) E succ(0)

set trace on .
reduce 4 , 3 , 5 , 6 , - 3 , 8 , -5 .

221

Maude

222

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

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

224

Sisteme de rescriere abstracte

Exemplu

T := N \ {0, 1}, := {(m, k) | k < m, k|m}

Un sistem de rescriere abstract este o pereche (T , ), unde T


este o multime si T T ( este o relatie binara pe T ).
Definitii
:=1 (relatia inversa)
:= (nchiderea simetrica)

:= () (nchiderea reflexiva si tranzitiva)

:= () (echivalenta generata)
(T (X )s , s ) sistem de rescriere abstract

= {(k, m) | k < m, k|m}

= {(k1 , k2 ) | k1 6= k2 , k1 |k2 sau k2 |k1 }

= {(m, k) | ex.n 0, ex. k1 , , kn T


m k1 kn k}

= {(k, k)|k T }

Cine este ?

226

225

Rescriere si deductie

Continuare
Dem. (1) (2) (3) rezulta din E = E = SR

(S, ) signatura, X multime de variabile,


E multime de ecuatii neconditionate,
RE sistemul de rescriere determinat de E ,
E T (X ) T (X ) relatia de rescriere

(3) (4) revine la SR = E

Din E SR rezulta E SR .

Pentru a demonstra implicatia inversa vom arata ca E este


nchisa la C si SubE .

Teorema 34.

Fie t, t 0 T (X )s . Sunt echivalente:

(1) E |= (X )t =s t 0

(2) E `R,S,T ,C ,SubE (X )t =s t 0

(3) E `R,S,T ,SRE (X )t =s t 0

(4) t E t 0 ,

unde E este echivalenta generata de E .

E este nchisa la SubE

(Y )t =s t 0 E , : Y T (X ) substitutie implica t E t 0
sau t 0 E t.
E (t
0 ) pentru c = z.
Daca t E t 0 atunci (t)
0
0
) E (t)
pentru c = z.
Daca t E t atunci (t
0

Rezulta (t) E (t ).

E este nchisa la C
Fie : s1 sn s 00 si k {1, . . . , n}.

227

228

Continuare

Continuare

(1) tk E tk0 implica (t1 , . . . , tk , . . . , tn ) E (t1 , . . . , tk0 , . . . , tn )


Din ipoteza, tk este c[z (l)], tk0 este c[z (r )], unde
c T (X {z}) e un context, l r RE cu Var (l) = Y si
: Y T (X ).
Definim c 0 := (t1 , . . . , c, . . . , tn ). Rezulta ca
(t1 , . . . , tk , . . . , tn ) este c 0 [z (l)] si
(t1 , . . . , tk0 , . . . , tn ) este c 0 [z (r )].

(4) (t1 , . . . , tn ) E (t10 , t2 . . . , tn ) E (t10 , t20 , . . . , tn ) E

E (t10 , . . . , tk0 , tk+1 , . . . , tn ) E E (t10 , . . . , tn0 )

(2) Demonstram prin inductie dupa p 1 ca


p

tk E tk0 implica (t1 , . . . , tk , . . . , tn ) E (t1 , . . . , tk0 , . . . , tn )


Pentru p = 1 aplicam (1) si simetria.
p+1

(3) Din (2), daca t1 E t10 , . . ., tn E tn0 atunci

(t1 , . . . , tk , . . . , tn ) E (t1 , . . . , tk0 , . . . , tn )


or. k {1, . . . , n}

In consecinta,
nchisa la C si SubE , deci
E este

SR =E E din Propozitia 27.

Daca tk E tk0 atunci tk E tk00 E tk0 . Din ip. de inductie

(t1 , . . . , tk , . . . , tn ) E (t1 , . . . , tk00 , . . . , tn ) E (t1 , . . . , tk0 , . . . , tn )

deci (t1 , . . . , tk , . . . , tn ) E (t1 , . . . , tk0 , . . . , tn ).


229

230

231

232

Programare logica

Substitutie

(S, ) signatura multisortata, X si Y multimi de variabile


O substitutie a variabilelor din X cu termeni din T (Y ) este o
functie : X T (Y ).
Substitutia se extinde la o functie : T (X ) T (Y ) dupa
cum urmeaza:

Substitutii. Unificare
F. Baader, T. Nipkow, Terms Rewriting and All That,
Cambridge University Press, 1998.

s (x) := (x) or. x Xs ,

s () := or. : s,

s ((t1 , . . . , tn )) := (
s1 (t1 ), . . . , sn (tn )) or.
: s1 . . . sn s, or. t1 T (X )s1 , . . ., tn T (X )sn .

Observatie: : T (X ) T (Y ) morfism de (S, )-algebre.

233

Substitutie

Exemplu

S = {s}, = {a : s, p : sssss s, f : s s, g : s s},


X = {x, y , z, u, v }

X , Y si Z multimi de variabile
I Dac
a : X T (Y ), : X T (Y ) atunci
= =
.
I

t = p(u, v , x, y , z)

vom identifica uneori cu

{x1 t1 , , xn tn } e notatie pt. : X T (X ),


(xi ) := ti or. i = 1, . . . , n si (x) := x pt. x 6= xi

compunerea substitutiilor : X T (Y ), : Y T (Z )
; : X T (Z ), (; )s (x) := ;

compunerea substitutiilor este asociativa,

compunerea substitutiilor nu este n general comutativa.

234

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

235

236

Termeni. Cazul monosortat

Unificare. Cazul monosortat.

(S, ) signatura monosortata, S = {s}


X multime de variabile,
T (X ) termenii cu variabile din X
O ecuatie este o pereche de termeni

Ecuatia ht, t 0 i o vom nota t = t 0 .

ht, t 0 i,

(S = {s}, ) signatura, X multime de variabile


I

unde t,

t0

O problema de unificare este o multime finita de ecuatii

T (X ).

U = {t1 = t10 , . . . , tn = tn0 }


I

Un unificator (o solutie) pentru U este o substitutie


: X T (X ) a.. (ti ) = (ti0 ) or. i = 1, . . . , n.
Notam cu Unif (U) multimea unificatorilor lui U.

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


(cgu, mgu) daca or. 0 Unif (U) ex. substitutie a..
0 = ; .

Egalitatea termenilor
Daca t = (t1 , . . . , tn ) si t 0 = (t10 , . . . , tk0 ) atunci
t = t 0 = , n = k, ti = ti0 or. i

= egalitate formala, = egalitate efectiva

237

238

Exemplu

Notatii

S = {s}, = {0 : s, + : ss s, : ss s}, X = {x, y , z}


t = x + (y y ) = +(x, (y , y )), u = x + (y x) = +(x, (y , x))
I
I

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

0 (x) := 0, 0 (y ) := 0, 0 (z) := z, 0 = ; {y 0}

(x) := z + 0, (y ) := z + 0, (z) := z,
= ; {y z + 0}

I
I

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

Unif (U) := multimea unificatorilor lui U


S
S
Var (U) := ni=1 (Var (ti ) Var (ti0 )), unde
Var (t) := multimea variabilelor care apar n t T (X )
daca = {x1 t1 , , xn tn } atunci

{x1 t1 , , xn tn }U := {(t) = (t 0 ) | t = t 0 U}

si sunt cgu
cgu nu este unic

239

240

Unificare

Unificare

(S = {}, ) signatura, X multime de variabile

Spunem ca problema de unificare R = {x1 = t1 , . . . , xn = tn }


este rezolvata daca
I
I

Propozitia 35.

xi X , x1 6= xj or. i 6= j
S
xi 6 ni=1 Var (ti ) or. i = 1, . . . , n.

O problema rezolvata R defineste o substitutie R


I
I

Daca R = {x1 = t1 , . . . , xn = tn } este o problema de unificare


rezolvata, atunci R este cgu idempotent pentru R:
I

0 = R ; 0 or. 0 Unif (R),

R ; R = R .

Dem.

R (xi ) := {x1 t1 , . . . , xn tn }
R Unif (R)

(R

Algoritmul transforma o problema de unificare U ntr-o problema


de unificare R. Daca R = atunci U nu are unificatori. In caz
contrar, R este rezovata, iar substitutia determinata de R este cgu
pentru U.

; 0 )(x)

0 (R (x))

0 (x) x 6 {x1 , . . . , xn },
0 (ti ) x = xi

Dar 0 (ti ) = 0 (xi ) deoarece 0 Unif (R),


deci (R ; 0 )(x) = 0 (x) or. x X .
Pentru 0 = R , rezulta R ; R = R .
241

242

{g : s s, h : s s, f : sss s}, X = {x, y , z, w }

Algoritmul de unificare
(S = {}, ) signatura, X multime de variabile

Intrare: U = {t1 = t10 , . . . , tn = tn0 }


Initializare: 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 6 X


(3) Descompune:

. R {(e1 , . . . , en ) = (e10 , . . . , en0 )} R {e1 = e10 , . . . , en = en0 }

. R {(e1 , . . . , en ) = (e10 , . . . , ek0 )} dc. 6=


(4) Elimina:

. R {x = t} {x = t} {x t}R dc.. x Var (R) \ Var (t)

. R {x = t} dc. x Var (t) si t 6= x


Iesire: daca R = atunci nu exita solutii pentru U
daca R 6= atunci R este cgu pentru U

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

243

244

{a : s, g : s s, h : s s, f : sss s}, X = {x, z, w }

{b : s, g : s s, h : s s, f : sss s}, X = {x, y , z}

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

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

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

(3) R = deoarece b 6= h

(1) R = {x = g (a), z = a, w = h(g (a))} cgu

245

{g : s s, h : s s, f : sss s}, X = {x, y , z, w }

246

Terminare
Propozitia 36.

Algoritmul de unificare se termina.

U = R = {g (y ) = x, f (x, h(x), y ) = f (y , w , z)}

Dem. Fie R problema de unificare. Notam

nsol := |{x Var (R)|R = R 0 P


{x = t}, x 6 Var (R 0 ) Var (t)}|,
n1 := |Var (R)| nsol , n2 := s =tR
(|s| + |t|),

(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

n3 := |{t = x R|t 6 X , x X }|
Fiecare pas al algoritmului modifica n1 , n2 , n3
n1 n2 n3
S
terge
>
Orienteaza
= >
Descompune >
Elimina
>
Daca la executia unui pas (n1 , n2 , n3 ) se schimba n (n10 , n20 , n30 ),
atunci (n1 , n2 , n3 ) >lex (n10 , n20 , n30 ), adica (n1 , n2 , n3 ) descreste
strict n ordine lexicografica.

248

Corectitudine

Completitudine

Propozitia 37.

Propozitia 38.

Daca R T si T 6= , atunci Unif (R) = Unif (T ).

Daca U R atunci U nu are solutii.

Dem. Evident adevarat pentru S


tergesi Orienteaza.

Descompune. R = R 0 {(e1 , . . . , en ) = (e10 , . . . , en0 )}

T = R 0 {e1 = e10 , . . . , en = en0 }


Daca : X T (X ) substitutie, atunci
((e1 , . . . , en )) = ((e10 , . . . , en0 )) (ei ) = (ei0 ) or. i
Elimina:

R = R 0 {x = t}, T = {x = t} {x t}R 0 , x Var (R 0 ) \ Var (t)

Unif (R) Unif (R 0 ) si Unif ({x = t})

Daca Unif ({x = t}) atunci {x t}; =

Unif (R) {x t}; Unif (R 0 ) si Unif ({x = t})

Unif ({x t}R 0 ) si Unif ({x = t})


Unif (T )

Dem. Distingem doua cazuri.


I La pasul Descompune, exist
a

0
0
(e1 , . . . , en ) = (e1 , . . . , ek ) R cu 6= . Termenii
(e1 , . . . , en ) si (e10 , . . . , ek0 ) nu pot fi unificati deoarece ncep
cu caractere diferite.
I

La pasul Elimina , exista x = t R cu x Var (t) si t 6= x.


Daca este o substitutie, atunci |(t)| > |(x)|, deci x si t
nu au unificator.

R contine o ecuatie care nu poate fi unificata, deci R nu are


unificator. Deoarece U si R au aceeasi unificatori, rezulta ca U nu
are unificatori.
250

249

Complexitate

Problema de unificare

U = {x1 = f (x0 , x0 ), x2 = f (x1 , x1 ), . . . , xn = f (xn1 , xn1 )}


are cgu R = {x1 f (x0 , x0 ), x2 f (f (x0 , x0 ), f (x0 , x0 )), . . .}.

La pasul Elimina, pentru a verifica ca o variabila xi nu apare n


membrul drept al ecuatiei ( occur check) facem 2i comparatii.

Algoritmul de unificare prezentat anterior este exponential.


Complexitatea poate fi mbunatatita printr-o reprezentare
eficienta a termenilor.

Matching problem

K. Knight, Unification: A Multidisciplinary Survey, ACM


Computing Surveys, Vol. 21, No. 1, 1989.

251

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 instanta a lui p)
daca exista o substitutie : X T (X ) a. . (p) = t.
Exemplu.
p = x + (y y ), t = (a + y ) + (x x)
(x) := a + y , (y ) := x

Fie t 0 termenul obtinut din t prin nlocuirea fiecarei variabile


x Var (T ) cu o operatie constanta cx . Substitutia poate fi

determinata aplicnd algoritmul de unificare ecuatiei p = t 0 .


Exemplu.

x + (y y ) = (a + cy ) + (cx cx )

{x = a + cy , y = cx }

O problema de matching poate fi rezolvata prin unificare.


253

254

255

256

Programare logica

Sisteme de rescriere abstracte

(T , ) sistem de rescriere (T multime, T T )


Definitii
t T este reductibil dc. ex. t 0 T a.. t t 0
t0 t1 t2 reducere
t T este forma normala(ireductibil) dc. nu este reductibil

t0 este o forma normala a lui t dc. t t0 si


t0 este forma normala

t1 t2 dc. ex. t T a.. t1 t t2


(t1 si t2 se nt`alnesc, relatia de ntalnire)

Sisteme de rescriere complete

257

258

Exemple

Sisteme de rescriere abstracte

(T , ) sistem de rescriere (T multime, T T )


I

T := N \ {0, 1}, := {(m, k) | k < m, k|m}


k este forma normala daca este numar prim
k1 k2 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 = an b k cu n, k 0
w1 w2 daca nra (w1 ) = nra (w2 ) si nrb (w1 ) = nrb (w2 )

Definitii (T , ) se numeste
noetherian: nu exista reduceri infinite t0 t1
(orice rescriere se termina)

confluent: t1 t t2 t1 t2
local confluent: t1 tt2 t1 t2

Church-Rosser: t1 t2 t1 t2
normalizat: orice element are o forma normala
complet (convergent, canonic): confluent si noetherian
I

259

T := N \ {0, 1}, := {(k, m) | k < m, k|m}


(T , ) e noetherian, nu e confluent

260

Proprietati

Proprietati

Propozitia 41 (Lema lui Newman)


Propozitia 39

Daca (T , ) este local confluent si noetherian atunci este


confluent.

(T , ) confluent (T , ) Church-Rosser

Dem. Terminarea asigura faptul ca orice termen are o forma


normala. Pentru a demonstra confluenta este suficient sa aratam
ca orice element are o forma normala unica.

U := {a T |a n1 , a n2 , n1 6= n2 forme normale}
Demonstram ca are loc urmatoarea proprietate:
(*) or. a U ex. b U a.. a b
Daca U 6= , atunci exista (an )n U cu
a1 a2 an
ceea ce contrazice proprietatea de terminare. In consecinta, U =
si orice termen t are o unica forma normala fn(t).

Daca t1 t t2 , atunci t1 fn(t) t2 , deci T este confluent.

Propozitia 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. Existenta formei normale rezulta din terminare. Fie t un
termen si presupunem ca t1 si t2 sunt forme normale distincte ale

lui t.Deoarece t1 t t2 , din confluenta rezulta ca exisa u a..


t1 u t2 .In consecinta t1 si t2 sunt reductibile, ceea ce
contrazice faptul ca sunt forme normale.

262

261

Continuare

Exercitiu

T = {a, b, c, d}

(*) or. a U ex. b U a.. a b


I

n1 a n2 implica n1 = n2 (imposibil)

n1 a n2 implica n1 a b n2 pentru un b T ; din

local confluenta, n1 t b, dar n1 este forma normala, deci

t = n1 ; avem b n1 , b n2 , deci b U si a b

n1 a n2 implica n1 b a n2 pentru un

b T ;avem b n1 , b n2 , deci b U si a b

n1 b a c n2 implica b n3 c, unde n3 este


6 n3 ( b U) sau
forma normala; deoarece n1 6= n2 avem n1 =
n2 6= n3 (c U).

= {(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 identifica R = (T , )

263

aratati ca R e local confluent


aratati ca R nu e confluent
aratati ca R nu e noetherian
determinati formele normale ale lui R
adaugati o regula de rescriere a.. R sa devina confluent
stergeti o regula de rescriere a.. R sa devina confluent

264

Teorema

Continuare

(S, ) signatura, X multime de variabile,


E multime de ecuatii neconditionate,
RE sistemul de rescriere determinat de E , E T (X ) T (X )
relatia de rescriere
t, t 0 T (X )s

(4)(3) t fn(t) t 0
(3)(4) Fie t1 , . . ., tn a.. t t1 tn t 0
Demonstram ca fn(t) = fn(t 0 ) prin inductie dupa n.

Teorema 42

P(1) Avem t t 0 , adica t t 0 sau t 0 t. Rezulta fn(t) + fn(t 0 ).

Daca RE este complet atunci sunt echivalente:

(1) E |= (X )t =s t 0

(2) E ` (X )t =s t 0

(3) t E t 0
(4) fn(t)=fn(t 0 )
(t si t 0 au aceeasi forma normala)

P(n) P(n + 1) Avem t tn+1 t 0 .

Din ipoteza de inductie, fn(t) = fn(tn+1 ).


Din P(1) rezulta fn(tn+1 ) = fn(t 0 ).
In consecinta fn(t) = fn(t 0 ).

Dem. (1)(2)(3) din Teorema 34.


265

266

267

268

Logica ecuationala si rescrierea

Terminarea unui sistem de rescriere este nedecidabila.


Pentru sisteme de rescriere particulare putem decide asupra
terminarii.
Pentru sisteme de rescriere noetheriene, confluenta este decidabila.
Daca E este o multime de ecuatii a.. RE este un sistem de

rescriere complet atunci deductia ecuationala E ` (X )t =s t 0 este


decidabila:

t fn(t)

t 0 fn(t 0 )

E ` (X )t =s t 0 fn(t) = fn(t 0 )

Programare logica

TRS (Term Rewrite System)

(S, ) signatura
I O regul
a de rescriere este formata dintr-o multime de variabile
Y si doi termeni l, r de acelasi sort din T (Y ) a..
I

Rescrierea termenilor
Terminare. Confluent
a.
Completare

l nu este variabila
Var (r ) Var (l) = Y .

Vom nota l r (l s r ).
I

Un sistem de rescriere (TRS) este o multime finita de reguli


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

prin lungimea unui termen t vom ntelege numarul de


simboluri din scrierea lui t n forma prefix.

269

270

Terminarea

Arborele de reducere

(S, ) signatura, R un TRS

Propozitie 43

(S, ) signatura, R un sistem de rescriere (TRS)

Daca fiecarui termen t i poate fi asociat un numar natural


t 7 (t) N astfel ncat

Arborele de reducere al termenului t este definit astfel:


radacina arborelui are eticheta t,
descendentii nodului cu eticheta u sunt etichetati cu
termenii u 0 care verifica u R u 0 .

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


descendenti deoarece R este o multime finita.

Daca R se termina atunci


(t) := naltimea arborelui de reducere asociat lui t.
t R t 0 (t) > (t 0 )

t R t 0 (t) > (t 0 )
oricare t si t 0 , atunci R este noetherian.
Dem. N nu contine lanturi infinite n1 > n2 > > nk > .

Exemple
I

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

272

Arbore de reducere

Terminare
(S, ) signatura, R un TRS

R = {x + 0 x, x + succ(y ) succ(x + y )}

Propozitia 44

succ(0) + succ(0 + 0)
u
succ(0) + succ(0)

*
succ(succ(0) + (0 + 0))


succ(succ(0) + 0)


succ(succ(0) + 0)


succ(succ(0))


succ(succ(0))

Sunt echivalente:
(a) R este noetherian
(b) oricarui termen t i poate fi asociat un numar natural (t) N
astfel ncat t R t 0 implica (t) > (t 0 )
Dem. (a)(b) Din Lema lui Konig rezulta ca ntr-un sistem de
rescriere noetherian orice termen are un arbore de reducere finit si
definim (t) = adancimea arborelui asociat lui t.
(b)(a) rezulta din Propozitia 43.

Ordine de reducere: t > t 0 ddaca (t) > (t 0 )


Relatia > se numeste ordine de reducere pentru R.
274

273

Terminare

Exemplu

(S, ) signatura, R un sistem de rescriere (TRS)

Propozitia 45

R = {x + 0 0, x + succ(y ) succ(x + y )}
A0 := 1, Asucc (k) := k + 1,
A+ (k, m) := k + 2 m
(k +A m := k + 2 m) or. k, m N

Fie A o (S, )-algebra astfel ncat:


I

As = N or. s S,

or. : s1 . . . sn s, daca ki > ki0 atunci


A (k1 , . . . , ki , . . . kn ) > A (k1 , . . . , ki0 , . . . kn ),

(l) > e
(r ) or. l r R or. e : Var (l) A.
e

e(x) := n, e(y ) := m
(0)
(x + 0) = n +A 0 = n + 2 A0 = n + 2 > 1 = A0 = e
e
(x + succ(y )) = n +A Asucc (m) = n + 2 (m + 1) =
e
(succ(x + y ))
n + 2 m + 2 > n + 2 m + 1 = Asucc (n +A m) = e

Atunci R este noetherian


Dem. Pentru orice termen t definim
(t) = e0 (t), unde e0 (x) = 0 or. x Var (t).
Se demonstreaza ca t R t 0 implica (t) > (t 0 ).
275

276

Confluenta. Perechi critice

Confluenta. Perechi critice

(S, ) signatura, R un sistem de rescriere (TRS)

(l1 )

Fie l1 r1 , l2 r2 R astfel ncat:


I

Var (l1 ) Var (l2 ) = ,

l1 = c[z t] unde nrz (c) = 1, t nu este variabila


(t este subtermen al lui l1 care nu este variabila),

c.g.u pentru t si l2 ( (t) = (l2 )).

(r1 )

&

l1 r1 , l2 r2 R,
Var (l1 ) Var (l2 ) = ,
l1 = c[z t],
(t) = (l2 ) c.g.u

(c)[z (r2 )]

Teorema 46 (Teorema Perechilor Critice)


Daca R este noetherian atunci sunt echivalente:
(a) R este confluent,
(b) t1 R t2 oricare (t1 , t2 ) pereche critica.

Atunci ((r1 ), (c)[z (r2 )]) este pereche critica.

277

Exemplu

Completarea unui TRS (Knuth-Bendix)


(S, ) signatura
Intrare. R un sistem de rescriere (TRS) noetherian.
Initializare. T := R, > ordine de reducere pentru T
Se executa urmatorii pasi, cat timp este posibil:
(1) CP := CP(T ) = {(t1 , t2 )|(t1 , t2 ) pereche critica n T }
(2) Daca t1 t2 oricare (t1 , t2 ) CP,
atunci STOP (T este completarea lui R).
(3) Daca (t1 , t2 ) CP, t16 t2 , atunci
daca fn(t1 ) > fn(t2 )
atunci T := T {fn(t1 ) fn(t2 )},
altfel daca fn(t2 ) > fn(t1 )
atunci T := T {fn(t2 ) fn(t1 )},
altfel STOP (completarea esuata).
Iesire. T complet (completarea lui R) sau esec.

R = {f (f (x)) x} este confluent.


Determinam perechile critice f (f (x)) x si f (f (y )) y
l1 := f (f (x)), r1 := x, l2 := f (f (y )), r2 := y
Subtermenii lui l1 care nu sunt variabile sunt f (f (x)) si f (x).
I

t := f (f (x)), c = z, := {x y }
(r1 ) = y , (c)[z (r2 )] = y

t := f (x), c = f (z), := {x f (y )}
(r1 ) = f (y ), (c)[z (r2 )] = f (y )

278

Perechile critice sunt (y , y ) si (f (y ), f (y )). Deoarece y y si


f (y ) f (y ), sistemul de rescriere R este confluent.

Atentie: succesul complet


arii depinde de relatia <
279

280

Exemplu
S := {s}, := { : ss s},

E := {{x, y , v }(x y ) (y v ) = y )}
T = RE := {(x y ) (y v ) y }, (t) := lungimea termenului t
Determinam perechile critice pentru
l1 := (x y ) (y v ), r1 := y , l2 := (x 0 y 0 ) (y 0 v 0 ), r2 := y 0
Subtermenii lui l1 care nu sunt variabile sunt (x y ) si y v .
I t := x y , c = z (y v ), := {x x 0 y 0 , y y 0 v 0 }
(r1 ) = y 0 v 0 , (c)[z (r2 )] = y 0 ((y 0 v 0 ) v )
I t := y v , c = (x y ) z, := {y x 0 y 0 , v y 0 v 0 }
(r1 ) = x 0 y 0 , (c)[z (r2 )] = (x (x 0 y 0 )) y 0
CP = {(y 0 v 0 , y 0 ((y 0 v 0 ) v )), (x 0 y 0 , (x (x 0 y 0 )) y 0 )}
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 }
Demonstrati ca T este complet.
281

282

283

284

Programare logica

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

Logica ecuational
a local
a

reduce in MYNAT : n + (0 + n) .
result MyNat: n + (0 + n)
286

285

Maude

Maude Manual

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

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 efficient evaluation of terms containing such an
operator.

The effect of declaring equational attributes is to compute


with equivalence classes modulo such equations.

Termenii sunt unificati modulo asociativitate


287

288

Punctul de vedere local

Ecuatiile(propozitiile) din A

(S, ) signatura multisortata


I
I

O ecuatie (X )t =s t 0 este o pereche de termeni de acelasi


sort din algebra T (X ).
Fie F multime de ecuatii neconditionate. O ecuatie modulo F

are forma (X )[t]F =s [t 0 ]F , unde [t]F , [t 0 ]F T (X )/F . In


acest caz, o ecuatie este o pereche de termeni de acelasi sort
din algebra cat T (X )/F .

t, t 0 T (X )s
a, c As , A fixata

In cele ce urmeaza

Pentru un modul in Maude, F este multimea ecuatiilor


declarate ca atribute.
Putem inlocui termenii cu elemente dintr-o algebra fixata A.

Astfel, o ecuatie(propozitie) din A va avea forma a =s c, unde


a, c As . Acesta este punctul de vedere local al logicii
ecuationale.
V.E. C
az
anescu, Local Equational Logic,
FUNDAMENTALS OF COMPUTATION THEORY,
LNCS 710 (1993), 162-170.

(X )t =s t 0

a =s c

(A)a =s c

clasic
local

A va fi o (S, )-algebra fixata.

Sen(A) := {a =s c|a, c As , s S} propozitiile din A

Vom defini sintaxa si semantica logicii locale asociate lui A.

290

289

Regulile deductiei ecuationale n A

Deductia sintactica in A

a, b, c, ai , bi A

Spunem ca ecuatia  := a =s a0 Sen(A) se deduce sintactic din


daca exista o secventa de ecuatii 1 , . . ., n a. . n =  si pentru
orice i {1, . . . , n}

a =s a

a =s b

b =s a

a =s b, b =s c

a =s c

A (a1 , . . . , an ) =s A (b1 , . . . , bn )

Sub

{hs 0 (u) =s 0 hs 0 (v )|u =s 0 v H}

hs (t) =s hs (t 0 )

i sau

i se obtine din ecuatiile 1 , . . ., i1 aplicand una din regulile


R, S, T, C , Sub .

In acest caz spunem ca  este -teorema a lui A. Secventa 1 , . . .,


n =  este o demonstratie n A pentru e din ipotezele . Vom

nota `A a =s a0

a1 =s1 b1 , . . . , an =sn bn

: s1 sn s
h : T (X ) A,

(X )t =s t 0 if H

291

292

Inchiderea la reguli de deductie

Exemplu

S = {s}, := {0 : s, + : ss s}
A = (N, 0, +)

:= {({x})x + x = 0}

Demonstrati ca `A 3 = 1

(S, ) o signatura multisortata, X o multime de variabile

Reg

a =s a0

(1) h(x + x) = h(0) (Sub , h : T ({x}) A, h(x) := 1)

2=0

a1 =s1 a10 , . . . , an =sn an0

Relatie binara Q A A este nchisa la Reg daca


(a1 , a10 ) Qs1 , . . ., (an , an0 ) Qsn (a, a0 ) Qs

(2) 1 = 1 (R)

(3) 2 + 1 = 0 + 1 ((1),(2), C )

3=1

293

294

-tautologiile lui A

Teorema de completitudine

o multime de ecuatii conditionate

(de forma (X )t =s t 0 if H).

a0

O ecuatie a =s Sen(A) este -tautologie daca


hs (a) = hs (a0 ) or. B |= , or. h : A B morfism.

a0

Vom nota |=A a =s


T
A
{ker(h)|h : A B |= }
:=
congruenta semantica a lui A

0
0
a A
a)
a `A a =s a (echiv. sintactic

0
0
a A
a |=A a =s a (echiv. semantica)

A
Corectitudinea logicii locale: A

A
Completitudinea regulilor de deductie: A

Teorema 48 (Teorema de completitudine a logicii locale)


A
A
=

Propozitia 47

Dem. exerciitiu

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

296

Contexte

Inchiderea la contexte

A (S, )-algebra, Q A A
Q este nchisa la contexte daca
(a, a0 ) Q (c[a], c[a0 ]) Q or. c A[z] context

(S, )-signatura, A (S, )-algebra


Fie A[z] := T (A {z}), z 6 A
Un context este un termen c A[z] cu nrz (c) = 1, iar
c[a] := c[z a]

Propozitia 49
Sunt echivalente:
(a) Q este nchisa la contexte,
(b) Q este compatibila pe componente, i.e.
or. : s1 . . . sn s, i {1, . . . , n},
or. a1 As1 , . . ., ai1 Asi1 , ai+1 Asi+1 , . . ., an Asn ,
or. (a, a0 ) Qsi ,
(A (a1 , . . . , ai1 , a, ai+1 , . . . , an ), A (a1 , . . . , ai1 , a0 , ai+1 , . . . , an )) Qs .

A = (N, 0, +)
c =0+z
c = 4 + (z + 1000)

297

298

Continuare

Inchiderea la contexte

Dem. (a) (b) Fie : s1 . . . sn s, i {1, . . . , n}, (a, a0 ) Qsi


si
a1 As1 , . . ., ai1 Asi1 , ai+1 Asi+1 , . . ., an Asn .
Pentru c := A (a1 , . . . , ai1 , z, ai+1 , . . . , an ) A[z] se obtine
rezultatul dorit.
(b) (a) Fie (a, a0 ) Q si c A[z] un context.
Demonstram (c[a], c[a0 ]) Q prin inductie dupa lungimea lui c (
termen n T (A {z})).
Daca |c| = 1, atunci c = z, c[a] = a, c[a0 ] = a0 .
Presupunem (c 0 [a], c 0 [a0 ]) Q pentru c 0 A[z] context, |c 0 | < |c|.
Observam ca exista c 0 context, |c 0 | < |c| a..
c = A (a1 , . . . , ai1 , c 0 , ai+1 , . . . , an ), deci
c[a] = A (a1 , . . . , ai1 , c 0 [a], ai+1 , . . . , an ) si
c[a0 ] = A (a1 , . . . , ai1 , c 0 [a0 ], ai+1 , . . . , an ).
Aplicam compatibilitatea pe argumente si ipoteza de inductie.

A (S, )-algebra, Q A A
Q := {(c[a], c[a0 ])|(a, a0 ) Q, c A[z] context}

Q nchiderea reflexiva si tranzitiva

Q := {(a, a0 )| ex. b A a. . a Q b si a0 Q b}

Propozitia 50

(a) Q este cea mai mica relatie nchisa la contexte care include Q.

(b) Q este cea mai mica preordine nchisa la C care include Q.

299

300

Rescrierea locala

Rescrierea locala

A este (S, )-algebra fixata


multime de ecuatii conditionate

A este (S, )-algebra fixata


multime de ecuatii conditionate, a, a0 As
a ,A a0 ex. c A[z], nrz (c) = 1
a este c[z hs (l)] si b este c[z hs (r )],

(Y )l =s r if H ,
h : T (Y ) A este un morfism,

hs 0 (u),A hs 0 (v ) or. u =s 0 v H

Definim (Qn )n :
Qn A A or. n,
Q0 := , n

Qn+1 := (hs (l), hs (r ))|(Y )l =s r if H ,


h : T (Y ) A morfism,
o

hs 0 (u)Qn hs 0 (v ) or . u =s 0 v H
S
Q := n Qn

Teorema 51

,A = ,A A

Notam ,A := Q , ,A := Q

302

301

Rescrierea locala

Maude

A este (S, )-algebra fixata

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

Relatia  A A este cofluenta 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 confluenta.


Atunci = A
, i.e.

set trace on .
reduce rel (2 , 2) .

0
0
a A
a a a

303

304

Maude

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

*********** 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 ) = 8, h(x 4) = 8, (8, 8) Q1

h(x + +y ) Q1 h(x 4), deci (rel(2, 2), true) = (h(rel(x, y )), true) Q2
305

306

307

308

Programare logica

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

Deductie si rescriere modulo


axiome

Termenii sunt unificati modulo asociativitate


309

Deductie din E modulo F

310

Echivalenta semantica

(S, ) signatura multisortata, E multime de ecuatii,


F multime de ecuatii neconditionate ( axiome)

(S, ) signatura multisortata,


F multime de ecuatii neconditionate (axiome)

Exemplu:

Daca XT este o multime de variabile, definim


F := {Ker (h) | h : T (X ) B |= F }
(echivalenta semantica).

fmod MYNAT1 is
...
endfm

Pentru t T (X )s notam
[t]F := [t]F clasa de echivalenta a lui t.
T,F (X ) := T (X )/F

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

312

F -algebra liber generata

Ecuatii si satisfacere modulo F

Propozitia 53

(S, ) signatura multisortata,


F multime de axiome, E multime de ecuatii

T,F (X ) este F -algebra liber generata de X , i.e.


or. B |= F , or. e : X B, exista un unic morfism
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 )

O ecuatie modulo F are forma (X )[t]F =s [t 0 ]F ,


unde t, t 0 T (X )s .

Pentru B o F -algebra definim satisfacerea modulo F :

B |=F (X )[t]F =s [t 0 ]F e([t]F ) = e([t 0 ]F ) or. e : X B.

Dem. Se aplica proprietatea de universalitate a multimii cat:


T (X )

[]F

 y

In acest caz vom nota B |=F (X )[t]F =s [t 0 ]F .

/ T,F (X )

Notam E |=F (X )[t]F =s [t 0 ]F daca or. B o F -algebra

B |=F (Y )[t1 ]F =s 0 [t2 ]F or. (Y )t1 =s 0 t2 E

implica B |=F (X )[t]F =s [t 0 ]F

Exercitiu: clarificati detaliile acestei demonstratii. 


314

313

Deductie din E modulo F

Continuare (Propozitia 54)

(S, ) signatura multisortata, E multime de ecuatii,


F multime de axiome
Dem. Fie B |= F .

Propozitia 54

(a) (b) Daca e : X B, atunci


e(t) =
e(t 0 ) din ipoteza.

Daca B |= F atunci sunt echivalente:

(a) B |= (X )t =s t 0

(b) B |=F (X )[t]F =s [t 0 ]F .

e([t]F ) =
e(t) =
e(t 0 ) = e([t 0 ]F )
(b) (a) Daca e : X B, atunci e([t]F ) = e([t 0 ]F ) din ipoteza.

Teorema 55

e(t) = e([t]F ) = e([t 0 ]F ) =


e(t 0 )

Sunt echivalente:

(a) E F |= (X )t =s t 0

(b) E |=F (X )[t]F =s [t 0 ]F


Dem. Consecinta directa a Propozitiei 54.
315

316

Rescrierea modulo axiome

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

(S, ) signatura multisortata,


R sistem de rescriere,
F multime de axiome
Daca t, t 0 T (X )s definim relatia [t]F R/F [t 0 ]F astfel:
[t]F R/F [t 0 ]F

t F c[z (l)] si
t 0 = c[z (r )], unde
c T (X {z}), z 6 X , nrz (c) = 1
l r R cu Var (l) = Y ,
: Y T (X ) este o substitutie.

R := {x + 0 x, x + s(y ) s(x + y )}

F := {{x, y , z}(x + y ) + z =MyNat x + (y + z)}

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

s(0) + (0 + s(0)) F (s(0) + 0) + s(0) R s(0) + s(0) R s(s(0))


317

318

319

320

Rescrierea modulo axiome


(S, ) signatura multisortata, F multime de axiome,
E multime de ecuatii, RE sistemul de rescriere asociat,
Notam E /F :=RE /F

Teorema 56

Sunt echivalente:

(1) E |=F (X )[t]F =s [t 0 ]F

(2) t E F t 0

(3) [t] E /F [t 0 ]F
(T,F (X )s , E /F ) este un sistem de rescriere abstract, pentru care
proprietatile de confluenta, terminare si completare se definesc
uzual. Algoritmul de completare necesita unificare modulo ecuatii,
care este nedecidabila n general.

Programare Logica

Algebra initiala
(S, ) signatura

Teorema 2
Pentru orice (S, )-algebra A exista un unic morfism SA : T A.
SA (t) este interpretarea termenului t n A.

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

Semantica algebrei initiale

dac
a : s atunci D := 0,
dac
a : s1 . . . sn s, k1 , . . ., kn N
D (k1 , . . . , kn ) := 1 + max(k1 , . . . , kn )
I SD : T D unicul morfism

dc. t = (t1 , . . . , tn ) at. arb(t) :=

. &
arb(t1 ) arb(tn )

I SD (t) = adncimea arb(t)


321

322

Gramatici independente de context

Gramatici independente de context (neambigue)

Vom considera gramatici independente de context neambigue.


I

Gramaticii G = (S0 , N, T , P) i asociem signatura


G = (S = N, = P).

Definim G-algebra LG astfel ncat SG ,S0 (T,S0 ) = L(G ), unde


L(G ) este limbajul definit de G , iar SG : T LG este unicul
G-morfism. Deoarece G este neambigua, morfismul SG este
injectiv.

Pentru w L(G ) exista un unic t T S0 astfel ncat


SG (t) = w . Vom scrie tw = SG1 (w ).

Pentru orice G-algebra A, unicul G-morfism SA : T A i


asociaza lui tw o interpretare n A, si anume SA (tw ).

Sem(w ) = SA (tw ) = SA (SG1 (w )) oricare w L(G )

G = (S0 , N, T , P)
- N este multimea neterminalelor
- T este multimea terminalelor
- S0 este simbolul de start
- P N (N T ) multimea productiilor

S0 N, T N = ,
o productie p = (A, ) P va fi descrisa prin
[p] A

323

324

G = (S0 , N, T , P)

G = (S0 , N, T , P)

Definim signatura G = (S, ) astfel:


I

neterminalele devin sorturi: S = N

productiile devin simboluri de operatie:

Exemplu.
descrierea unui numar natural ca sir de cifre
Gramatica G
N = {hcifrai, hnati}
T = {0, . . . , 9}, S0 = hnati
P = {c0, , c9, p1, p2}
[ci] hcifrai i, i = 0, 9
[p1] hnati hcifrai
[p2] hnati hnatihcifrai

p n1 nk ,n p = (n , t0 n1 t1 nk tk ) P,
unde n, n1 , . . . , nk N si t0 , . . . , tk T .
Observam ca
p : n1 nk n [p] n t0 n1 t1 nk tk .
Vom scrie simplu = P.

Signatura G
S =N
={
ci : hcifrai, i = 0, 9
p1 : hcifrai hnati
p2 : hnatihcifrai hnati }

326

325

Algebra arborilor de derivare

G = (S0 , N, T , P)

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 etichetati
cu x1 , . . . , xk N T , atunci (n, x1 xk ) P

Am definit o signatura multisortata G = (S = N, = P).


Construim o G-algebra care va permite definirea limbajului generat
de gramatica prin metoda algebrei initiale.
I

LG = (LS , L ) G-algebra
I

Observatie

Multimea arborilor de derivare are o structura canonica de


G-algebra, Arb, care este izomorfa cu algebra termenilor T .

Ln = T , oricare n N
p : n1 nk n si (w1 , . . . , wk ) (T )k
Lp (w1 , . . . , wk ) = t0 w1 wk tk ,
unde [p] n t0 n1 t1 nk tk n P.

Algebra arborilor de derivare Arb este G-algebra initiala.


V.E. Cazanescu, Algebra si rescriere
327

328

Limbajul L(G )

Semantica algebrei initiale


pentru limbaje definite prin gramatici indepedente de context

T este G-algebra initiala.

Teorema 57

Daca SG : T LG unicul G-morfism atunci pentru orice


neterminal n N

SG

/ LG

tw o

SA

SG

SA

Sem(w ) = SA (tw )

{w T | n w } = SG ,n (T,n ).
In particular L(G ) = SG ,S0 (T,S0 ).

w sintaxa concreta, tw sintaxa abstracta,


A algebra semantica, As domeniu semantic or. s S
SA (t) interpretarea (semantica, semnificatie, denotatia)
termenului t

instructiunile, w (tw ) program, A masina,


Sem(w ) = SA (tw ) executia programului w pe masina A

Dem. inductie dupa lungimea derivarii.


inductie structurala.

329

330

Exemple

Semantica unui sir de cifre

Semantica unui sir de cifre ca numar natural


Vom prezenta urmatoarele aplicatii ale metodei algebrei initiale:
I

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

Gramatica G = (S0 , N, T , P),


N = {hcifrai, hnati}, S0 = hnati,
T = {0, . . . , 9}, P = {c0, , c9, p1, p2}

Signatura G = (S = N, = P)
= {ci : hcifrai | i = 0, 9}
{p1 : hcifrai hnati,
p2 : hnatihcifrai hnati}

332

Semantica unui sir de cifre

Exemplu: Sem(25)

hnati

Algebra semantica
I

Definim A = (AS , A ) G-algebra:


Ahcifrai = {0, . . . , 9} N, Ahnati = N,
Aci = i Ahcifrai , i = 0, 9 (operatie constanta)
Ap1 : {0, . . . , 9} N, Ap1 (i) = i,
Ap2 : N {0, . . . , 9} N, Ap2 (m, i) = m 10 + i

hnati


hcifrai

Daca SA : T A si SG : T LG sunt unicele morfisme


definite pe T , atunci semantica unui sir de cifre w LG hnati
este Sem(w ) = SA (SG1 (w )).

Sem(25) = SA (Tp2 (Tp1 (Tc2 ), Tc5 )) =


Ap2 (Ap1 (Ac2 ), Ac5 ) = Ap1 (Ac2 ) 10 + 5 = Ac2 10 + 5 =
2 10 + 5 = 25.

Calculatorul de buzunar

1
6

2
7

3
8

4
9

334

333

0
5

hcifrai

Calculatorul de buzunar

+
*

(
)

IF
,

M
E

[ci] hcifrai i, i = 0, 9
[p1] hnati hcifrai
[p2] hnati hnatihcifrai
[r 1] hexpi hnati
[r 2] hexpi M
[r 3] hexpi hexpi + hexpi
[r 4] hexpi IF hexpi, hexpi, hexpi
[r 5] hexpi (hexpi)
[I 1] hinsti hexpiE OFF
[I 2] hinsti hexpiE hinsti
[Pr ] hprog i ONhinsti

ON
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) 6= 0

335

336

Calculatorul de buzunar

Calculatorul de buzunar

Notatie A B := {f | f : A B functie}
I

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 obtinuta este
afisata pe ecran si este introdusa n M.

O instructiune este o secventa


e1 E e2 E en E OFF

Un program este un sir de instructiuni

care se executa dintr-o anumita stare a memoriei. Semantica


unei instructiuni va fi o functie I : N N+ .

ON e1 E e2 E en E OFF

Semantica lui este sirul de numere care apare pe ecran, adica


un element din N+ .
I

Sem(w ) N+ , unde w este un program

Sem() N N+ , unde este o instructiune

Expresiile sunt termeni n variabila M. Pentru fiecare evaluare


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

Sem() N N, unde  este o expresie

337

338

Algebra semantica

Algebra semantica
I
I

A este o G-algebra, unde G = (S, ),


S = {hcifrai, hnati, hexpr i, hinsti, hprog i}
Ahcifrai = {0, . . . , 9}, Ahnati = N,
Ahexpr i = N N = {e : N N | e functie},
Ahinsti = N N+ = {I : N N+ | I functie},
Ahprog i = N+

I
I
I

= {c0, . . . , c9, p1, p2, r 1, . . . , r 5, I 1, I 2, Pr }


I

Definim operatiile Ap , cu p .

I
I
I
339

Aci , Ap1 , Ap2


[r 1] hexpi hnati
Ar 1 : Ahnati Ahexpi ,
Ar 1 : N (N N)
Ar 1 (k) : N N, Ar 1 (k)(m) = k
Ar 2 : N N, Ar 2 (m) = m,
Ar 3 : Ahexpr i Ahexpr i Ahexpr i ,
Ar 3 (e1, e2)(m) = e1(m) + e2(m),
Ar 4 : Ahexpr i Ahexpr i Ahexpr i Ahexpr i ,
Ar 4 (e1, e2, e3)(m) = e2(m) daca e1(m) = 0,
Ar 4 (e1, e2, e3)(m) = e3(m) daca e1(m) 6= 0,
Ar 5 : Ahexpr i Ahexpr i , Ar 5 (e) = e,
AI 1 : Ahexpr i Ahinsti , AI 1 (e)(m) = e(m),
AI 2 : Ahexpr i Ahinsti Ahinsti , AI 2 (e, I ) = e(m)I (e(m)),
APr : Ahinsti Ahprog i , APr (I ) = I (0).
340

Semantica algebrei initiale

SA : T A unicul morfism

SG : T LG unicul morfism

w L(G ), tw T , SG (tw ) = w (t este unic)

Semantica algebrei initiale

w = ON 5 + M E OFF
APr (I )=I (0)
Sem(w ) = AhPr i (AhI 1i (Ahr 3i (Ahr 1i (Ahp1i (Ahc5i )), Ahr 2i )))
=
AhI 1i (Ahr 3i (Ahr 1i (Ahp1i (Ahc5i )), Ahr 2i ))(0) =
Ahr 3i (Ahr 1i (Ahp1i (Ahc5i )), Ahr 2i )(0) =
Ahr 1i (Ahp1i (Ahc5i ))(0) + Ahr 2i (0) =
Ahp1i (Ahc5i ) + 0 =
Ahc5i + 0 =
5+0=5

semantica lui w este Sem(w ) = SA (tw )

Exemplu:
w = ON 5 + M E OFF
tw = ThPr i (ThI 1i (Thr 3i (Thr 1i (Thp1i (Thc5i )), Thr 2i )))
Sem(w ) = SA (t) = AhPr i (AhI 1i (Ahr 3i (Ahr 1i (Ahp1i (Ahc5i )), Ahr 2i )))

341

342

Exemple

G = (S0 , N, T , P) pt. expresii

Definim o gramatica pentru expresii construite cu variabilele


X = {x, y , z}.

Vom prezenta urmatoarele aplicatii ale metodei algebrei initiale:


I

reprezentarea expresiilor n forma poloneza inversa,

compilarii unei expresii aritmetice folosind o masina cu stiva si


acumulator.

343

G = (S0 , N, T , P)
N = {hprog i, hexpi, htermi, hfacti, hvar i},
S0 = hprog i,
T = {x, y , z, (, ), +, }, P = {p0, . . . , p9},

344

G = (S0 , N, T , P) pentru expresii aritmetice

[p0]
[p1]
[p2]
[p3]
[p4]
[p5]
[p6]
[p7]
[p8]
[p9]

Semantica algebrei initiale

hprog i hexpi
hvar i x
hvar i y
hvar i z
hfacti hvar i
hfacti (hexpi)
htermi hfacti
htermi hfacti htermi
hexpi htermi
hexpi hexpi + htermi

Pol

SG
C

SA

"

tw o


/ LG

Cod

SG

SA

Sem(w ) = SA (tw )

346

345

Algebra Pol - suportul

Algebra Pol - operatiile

Definim forma poloneza postfix a unei expresii din L(G ) prin


metoda algebrei initiale. Pentru aceasta construim G-algebra
semantica Pol, unde G = (S = N, = P).
Polhvar i = X = {x, y , z}
S
Pols = T = k0 T k , s N \ {hvar i}

347

Polp : T T , p {p0, p5, p6, p8},


Polp (w ) = w oricare w T ,

Polp1 , Polp2 , Polp3 : X ,


Polp1 = x, Polp2 = y , Polp3 = z,

Polp4 : X T , Polp4 (v ) = v , oricare v X ,

Polp7 : T T T , Polp7 (, ) = ,

Polp9 : T T T , Polp7 (, ) = +,

348

Forma poloneza

Compilarea unei expresii

SG : T LG unicul G-morfism
P : T Pol unicul G-morfism

Pentru orice w L(G ), forma poloneza postfix este P(tw ),


unde tw T este unicul termen cu SG (tw ) = w .

Folosim pentru compilare o masina cu stiva si acumulator


(MSA)

w = y (x + z)
tw = p0(p8(p7(p4(p2), p5(p9(p8(p6(p4(p1))), p6(p4(p3)))))))

Definim limbajul MSA si algebra semantica


Cod = ({Cods }sS , {Cpi }pi ).

P(te ) = P(Tp0 (Tp8 (Tp7 (Tp4 (Tp2 ), Tp5 (Tp9 (Tp8 (


Tp6 (Tp4 (Tp1 ))), Tp6 (Tp4 (Tp3 )))))))) =
Polp0 (Polp8 (Polp7 (Polp4 (Polp2 ), Polp5 (Polp9 (Polp8 (
Polp6 (Polp4 (Polp1 ))), Polp6 (Polp4 (Polp3 ))))))) =
Polp7 (y , Polp9 (x, z)) = Polp7 (y , xz+) = yxz +

Compilarea expresiei w L(G ) n limbajul MSA este C(tw ),


unde tw T este unicul termen cu SG (tw ) = w , iar
C : T Cod este unicul G-morfism.

350

349

Functionarea SMA

Instructiunile SMA

La efectuarea operatiei op(e1, . . . , en ), valorile


e1 , . . ., en1 vor fi n stiva, iar valoarea lui en n registru.

R este registrul (acumulatorul)

P este adresa primei pozitii libere din stiva

Rezultatul evaluarii oricarei expresii este depus n registru.


Registrul este varful real al stivei. Evaluarea unei expresii lasa
stiva neschimbata.

Instructiunile 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 ( nmulteste 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 ( afiseaza continutul lui R)

en

op(e1, . . . , en )

en1
...
e1

...
...
...

351

352

Algebra Cod - suportul

Inst(MSA) = instructiunile definite anterior

codul unei expresii este un sir de instructiuni separate prin ;

Cods = (Inst(SMA) {; }) , oricare s S = N

Notam SI := Cods , s S

Algebra Cod - operatiile

Cp0 : SI SI ,
Cp0 () = ; print

Cp : SI SI , p {p4, p5, p6, p8}


Cp () =

Cp1 , Cp2 , Cp3 : SI ,


Cp1 =ld x, Cp2 =ld y , Cp3 =ld z

Cp7 : SI SI SI ,
Cp7 (, ) = ; st R ; inc P ; ; Mu R ; dec P

Cp9 : SI SI SI ,
Cp9 (, ) = ; st R ; inc P ; ; Ad R ; dec P

354

353

Compilarea

Compilarea

Cp0 (Cp7 (Cp2 , Cp9 (Cp1 , Cp3 ))) =


I

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


unde tw T este unicul termen cu CG (tw ) = w .

Cp7 (Cp2 , Cp9 (Cp1 , Cp3 )) ; print=

e = y (x + z)
te = p0(p8(p7(p4(p2), p5(p9(p8(p6(p4(p1))), p6(p4(p3)))))))

Cp2 ; st R ; inc P ; Cp9 (Cp1 , Cp3 ) ;


Mu R ; dec P ; print=

C(t) = C(Tp0 (Tp8 (Tp7 (Tp4 (Tp2 ),


Tp5 (Tp9 (Tp8 (Tp6 (Tp4 (Tp1 ))), Tp6 (Tp4 (Tp3 )))))))) =
Cp0 (Cp8 (Cp7 (Cp4 (Cp2 ), Cp5 (
Cp9 (Cp8 (Cp6 (Cp4 (Cp1 )))), Cp6 (Cp4 (Cp3 )))))) =

Cp2 ; st R ; inc P ; Cp1 ; st R ; inc P ; Cp3 ;


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

355

356

e = y (x + z), x = 3, y = 7, z = 2

Cod
ld y ;
st R ; inc P ;
ld x ;
st R ; inc P ;
ld z ;
Ad R ; dec P ;
Mu R ; dec P ;
print

R
7
7
3
3
2
5
35
35

Stiva()
7
7
3 7
3 7
7
-

P
1
1
2
2
3
3
2
1

357

358

359

360

Programare logica

Signatura multisortata de ordinul I

O signatura multisortata de ordinul I este un triplet (S, , ) unde:

Clauze Horn. Rezolutie

(S, ) este o signatura multisortata,

= {w }w S + familie de simboluri de predicate.

Exemplu:
NATPRED = (S, , )
S := {nat}, := {0 : nat, succ : nat nat},
nat := {pos}, nat nat := {<}

362

361

Modele si morfisme

Exemplu

Un (S, , )-model este A = (AS , A , A ) unde:


I

(AS , A ) este o (S, )-algebra,

A = {A Aw | w }.

Notatie: Aw := As1 Asn daca w = s1 sn .


Fie A si B doua (S, , )-modele. O functie f : A B este
(S, , )-morfism daca:
I

f este morfism de (S, )-algebre,

(a1 , . . . , an ) A (hs1 (a1 ), . . . , hsn (a1 )) B


oricare s1 sn

363

NATPRED-modelul A:
Anat := N, A0 := 0, Asucc (n) := n + 1
Apos := {n|n > 0}, A< := {(k, n)|k n}

NATPRED-modelul B:
Bnat := {2n |n N}, B0 := 1, Bsucc (2n ) := 2n+1
Bpos := {2n |n > 0}, B< := {(2k , 2n )|k n}

f : A B, f (n) := 2n or. n N
morfism de NATPRED-modele

364

Universul Herbrand

Clauze Horn

Fie (, ) limbaj de ordinul I .


Definim formulele de ordinul I peste (, ).

(S, , ) signatura multisortata de ordinul I


Universul Herbrand este T , multimea termenilor fara variabile.
I

Definim (S, , )-modelul T, := (T , T ), unde


T este (S, )-algebra termenilor fara variabile,
T := oricare .
T, este (S, , )-model initial.

formula atomica: (t1 , , tn ) cu ti T (X ) or. i

literal: (t1 , , tn ) sau (t1 , , tn )


(literal pozitiv) (literal negativ)

clauza: L1 Lm unde Li literali or. i

clauza vida:  (disjunctie indexata de )

365

366

Satisfiabilitate

Consecinta semantica si satisfiabilitatea

Fie A un (, )- model, X o multime de variabile si


t1 , . . ., tn T (X ).
I

multime de clauze,
P1 , , Pn formule atomice cu variabile din X

A |= (t1 , . . . , tn ) (h(t1 ), , h(tn )) A


oricare h : T (X ) A morfism

Teorema. Sunt echivalente

A |= (t1 , . . . , tn ) A 6|= (t1 , . . . , tn )

|= X (P1 Pn ),

A |= L1 Lm A |= L1 sau sau A |= Lm

{(X (P1 Pn ))} nu e satisfiabila,

Daca este o multime de clauze, atunci


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

{(X (P1 Pn ))} nu e satisfiabila.

Rezolutia este o metoda prin care verificam daca o multime de


clauze nu este satisfiabila.

O multime de clauze se numeste satisfiabila daca are un


model. Clauza vida  nu este satisfiabila.

Limbajul PROLOG are la baza rezolutia SLD pentru clauze Horn.

367

368

Clauze Horn

Rezolutia SLD

O clauza Horn are cel mult un literal pozitiv

multime de clauze definite

Clauzele Horn au trei forme:


rule (clauza definita)
fact (clauza definita)
query (clauza scop)

SLD

P1 Pn P
P
P1 Pn

unde Q Q1 Qm este o clauza definita din


(in care toate variabilele au fost redenumite) si
este c.g.u pentru Pi si Q.

unde P1 , . . ., Pn , P sunt formule atomice.

Notatia Prolog pentru rezolutia SLD:


Gi este : P1 , , Pi , , Pn
Ci este Q : Q1 , , Qm
i (Q) = i (Pi )
Gi+1 este : (P1 , , Q1 , , Qm , , Pn )i

Notatia Prolog este:


I

P : P1 , , Pn

: P1 , , Pn

P1 Pi Pn
(P1 Q1 Qm Pn )

unde P := (P), (p(t)) := p((t)) cu p

In aceasta notatie toate variabilele sunt cuantificate universal.


369

370

Rezolutia SLD

Exemplu

multime de clauze definite, G clauza scop

Fie urmatoarea multime de clauze Horn (baza de date):

O derivare din prin rezolutie SLD este o secventa


G0 := G , G1 , . . ., Gk , . . .
in care Gi+1 se obtine din Gi prin regula SLD.
Daca exista un k cu Gk =  atunci derivarea se numeste
SLD-respingere.

(1)
(2)
(3)
(4)

stramos(X , Y ) : parinte(X , Y )
stramos(X , Y ) : parinte(X , Z ), stramos(Z , Y )
parinte(dan, bogdan)
parinte(bogdan, ana)

Gasiti o respingere din pentru

Completitdinea SLD-rezolutiei

: stramos(Y , bogdan), stramos(bogdan, Z )

Sunt echivalente:
I

exista o SLD-respingere a lui G din ,

|= X (P1 Pn ),
unde G este : P1 , , Pn .

(exista Y si Z astfel ncat


Y este stramos al lui bogdan si
bogdan este stramos al lui Z )

371

372

Exemplu

Signaturi multisortate de ordinul I


(S, , ) signatura multisortata de ordinul I,

Vom nota p := parinte, q := stramos (predicate binare)


b := bogdan, d := dan, a := ana (constante)
G0 : q(Y , b), q(b, Z )

O clauza Horn are forma (X )p if {p1 , . . . , pn }


unde p1 , . . ., pn , p formule atomice
(pi este (t1 , . . . , tmi ) cu ,
t1 , . . ., tmi T (X ))

(1) q(X 0 , Y 0 ) : p(X 0 , Y 0 ), 1 := {X 0 Y , Y 0 b}


G1 : p(Y , b), q(b, Z )

Daca n = 0 clauza are forma (X )p


(3) p(d, b), 2 := { Y d }
G2 : q(b, Z )

(X )p if {p1 , . . . , pn } este o notatie pt. p : p1 , . . . , pn


O clauza scop este o multime G de formule atomice.

(1) q(X 00 , Y 00 ) : p(X 00 , Y 00 ), 3 := {X 00 b, Y 00 Z }


G3 : p(b, Z )

Fie multime de clauze Horn. Regula rezolutiei este


G {p(t)}
G C

(4) p(b, a), 4 := { Z a }


G4 : 

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

373

Clauze Horn ecuationale

Clauze Horn ecuationale

Unei signaturi multisortate de ordinul I (S, , ) ii asociem o


signatura multisortata (S b , b b ) astfel:
I

Sb

I b

(S, , ) signatura multisortata de ordinul I,


(S b , b b ) signatura multisortata asociata

:= S {b}, unde b 6 S,
:= {true : b},

Unei clauza Horn (X )p if {p1 , . . . , pn } i asociem ecuatia

conditionata (X )p =b true if {p1 =b true, . . . , pn =b true}.

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

I b
w ,b

:= w
(predicatele devin operatii cu rezultat boolean)

Exemplu

(a1 , . . . , am ) A A (a1 , . . . , am ) = Atrue

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

Sunt echivalente:
A |=, (X )p if {p1 , . . . , pn }

A |=b ,b (X )p =b true if {p1 =b true, . . . , pn =b true},

376