Documente Academic
Documente Profesional
Documente Cultură
2015-2016
Programare Logica
1 / 36
Cuprins
1 Signaturi multisortate
2 Multimi multisortate
3 Algebre multisortate
2 / 36
Signaturi multisortate
3 / 36
Definitie
Definitie
O signatura multisortata este o pereche (S, ), unde
4 / 36
Definitie
Definitie
O signatura multisortata este o pereche (S, ), unde
S 6= este o multime de sorturi.
4 / 36
Definitie
Definitie
O signatura multisortata este o pereche (S, ), unde
S 6= este o multime de sorturi.
este o multime de simboluri de operatii de forma
: s1 s2 . . . sn s.
4 / 36
Definitie
Definitie
O signatura multisortata este o pereche (S, ), unde
S 6= este o multime de sorturi.
este o multime de simboluri de operatii de forma
: s1 s2 . . . sn s.
este numele operatiei
s1 , . . . , sn , s S
hs1 s2 . . . sn , si este aritatea operatiei
s1 , . . . , sn sunt sorturile argumentelor
s este sortul rezultatului
dac
a n = 0, atunci : s este simbolul unei constante
4 / 36
Observatii
5 / 36
Observatii
5 / 36
Observatii
5 / 36
Observatii
5 / 36
Observatii
5 / 36
Observatii
5 / 36
Exemple
Exemplu
NAT = (S, )
S = {nat}
= {0 : nat, succ : nat nat}
Cum arata = {w ,s }w S ,sS n acest caz?
,nat = {0} si nat,nat = {succ}
w ,s = , pentru orice alt w S si s S
Modul n Maude:
fmod MYNAT-SIMPLE is
sort Nat .
op 0 : -> Nat .
op succ : Nat -> Nat .
endfm
6 / 36
Exemple
Exemplu
BOOL = (S, )
S = {bool}
= {T : bool, F : bool,
: bool bool,
: bool bool bool, : bool bool bool}
Cum arata = {w ,s }w S ,sS n acest caz?
,bool = {T , F }
bool,bool = {}
bool
bool,bool
= {, }
7 / 36
Exemple
Exemplu
NATBOOL = (S, )
S = {bool, nat}
= {T : bool, F : bool,
0 : nat, succ : nat nat,
: nat nat bool}
Cum arata = {w ,s }w S ,sS n acest caz?
,bool = {T , F }
,nat = {0}
nat,nat = {succ}
nat
nat,bool
= {}
8 / 36
Exemple
Exemplu
STIVA = (S, )
S = {elem, stiva}
= {0 : elem, empty : stiva,
push : elem stiva stiva,
pop : stiva stiva,
top : stiva elem}
9 / 36
Signaturi ordonat-sortate
Definitie
O signatura ordonat-sortata este un triplet (S, , ) unde
(S, ) signatura multisortata
(S, ) multime partial ordonata
conditia de monotonie:
daca w1 ,s1 w2 ,s2 atunci w1 w2 s1 s2
10 / 36
Exemple
Exemplu
NAT = (S, , )
S = {zero, nznat, nat}
zero nat, nznat nat
= {0 : zero, succ : nat nznat}
Modul n Maude:
fmod MYNAT is
sorts Zero NzNat Nat .
subsort Zero NzNat < Nat .
op 0 : -> Zero .
op succ : Nat -> NzNat .
endfm
11 / 36
Exemple
Exemplu
STIVA = (S, , )
S = {elem, stiva, nvstiva}
elem stiva, nvstiva stiva
= {0 : elem, empty : stiva,
push : elem stiva nvstiva,
pop : nvstiva stiva,
top : nvstiva elem}
In practica se folosesc signaturi ordonat-sortate.
12 / 36
Multimi multisortate
13 / 36
Definitie
Definitie
O multime S-sortata este o familie de multimi A = {As }sS indexata
dupa S.
Pentru orice sort s S, avem o multime As .
Pentru orice sort s S si a As , spunem ca a este de sort s.
14 / 36
Exemplu
Exemplu
Multime de sorturi: S = {nat, bool}
Multime S-sortata: A = {Anat , Abool }, unde
Anat = N
Abool = {true, false}
15 / 36
Operatii
16 / 36
Functii
Fixam A = {As }sS , B = {Bs }sS , C = {Cs }sS multimi S-sortate.
Definitie
O functie S-sortata f : A B este o familie de functii f = {fs }sS , unde
fs : As Bs , pt. or. s S.
Daca f : A B si g : B C , definim compunerea
f ; g = {(f ; g )s }sS : A C
(f ; g )s (a) = (fs ; gs )(a) = gs (fs (a)), or. a A.
Compunerea este asociativa: (f ; g ); h = f ; (g ; h).
Functia identitate: 1A : A A, 1A = {1As }sS .
Observati ca f ; 1B = f , 1A ; f = f , or. f : A B.
17 / 36
Functii
18 / 36
Functii
Propozitie
O functie S-sortata f : A B este inversabila este bijectiva.
Demonstratie
Exercitiu!
18 / 36
Algebre multisortate
19 / 36
Definitie
Fixam o signatura multisortata (S, ).
Definitie
O algebra multisortata de tip (S, ) este o structura A = (AS , A ) unde
AS = {As }sS este o multime S-sortata (multimea suport).
A = {A } este o familie de operatii astfel ncat
dac
a : s1 . . . sn s n , atunci A : As1 . . . Asn As
(operatie).
dac
a : s n , atunci A As (constant
a).
20 / 36
Definitie
Fixam o signatura multisortata (S, ).
Definitie
O algebra multisortata de tip (S, ) este o structura A = (AS , A ) unde
AS = {As }sS este o multime S-sortata (multimea suport).
A = {A } este o familie de operatii astfel ncat
dac
a : s1 . . . sn s n , atunci A : As1 . . . Asn As
(operatie).
dac
a : s n , atunci A As (constant
a).
Exprimari alternative:
A = (AS , A ) este o (S, )-algebr
a sau o -algebr
a
A este o -algebr
a
A este o algebr
a
20 / 36
Exemple
Exemplu
NAT = (S, )
S = {nat}
= {0 : nat, succ : nat nat}
21 / 36
Exemple
Exemplu
NAT = (S, )
S = {nat}
= {0 : nat, succ : nat nat}
NAT -algebra A
Multimea suport: Anat := N
Operatii: A0 := 0, Asucc (x) := x + 1
21 / 36
Exemple
Exemplu
NAT = (S, )
S = {nat}
= {0 : nat, succ : nat nat}
NAT -algebra A
Multimea suport: Anat := N
Operatii: A0 := 0, Asucc (x) := x + 1
NAT -algebra B
Multimea suport: Bnat := {0, 1}
Operatii: B0 := 0, Bsucc (x) := 1 x
21 / 36
Exemple
Exemplu
NAT = (S, )
S = {nat}
= {0 : nat, succ : nat nat}
NAT -algebra A
Multimea suport: Anat := N
Operatii: A0 := 0, Asucc (x) := x + 1
NAT -algebra B
Multimea suport: Bnat := {0, 1}
Operatii: B0 := 0, Bsucc (x) := 1 x
NAT -algebra C
Multimea suport: Cnat := {2n | n N}
Operatii: C0 := 1, Csucc (2n ) := 2n+1
21 / 36
Exemple
Exemplu
BOOL = (S, )
S = {bool}
= {T : bool, F : bool, : bool bool,
: bool bool bool, : bool bool bool}
22 / 36
Exemple
Exemplu
BOOL = (S, )
S = {bool}
= {T : bool, F : bool, : bool bool,
: bool bool bool, : bool bool bool}
BOOL-algebra A
Multimea suport: Abool := {0, 1}
Operatii:
AT := 1,
AF := 0,
A (x) := 1 x
A (x, y ) := max(x, y ),
A (x, y ) := min(x, y )
22 / 36
Exemple
Exemplu
BOOL = (S, )
S = {bool}
= {T : bool, F : bool, : bool bool,
: bool bool bool, : bool bool bool}
23 / 36
Exemple
Exemplu
BOOL = (S, )
S = {bool}
= {T : bool, F : bool, : bool bool,
: bool bool bool, : bool bool bool}
BOOL-algebra B
Multimea suport: Bbool := P(N)
Operatii:
BT := N,
BF := ,
B (X ) := N \ X
B (X , Y ) := X Y ,
B (x, y ) := X Y
23 / 36
Exemple
Exemplu
STIVA = (S, )
S = {elem, stiva}
= {0 : elem, empty : stiva, push : elem stiva stiva,
pop : stiva stiva, top : stiva elem}
24 / 36
Exemple
Exemplu
STIVA = (S, )
S = {elem, stiva}
= {0 : elem, empty : stiva, push : elem stiva stiva,
pop : stiva stiva, top : stiva elem}
STIVA-algebra A
Multimea suport:
Aelem := N,
Astiva := N
24 / 36
Exemple
Exemplu
STIVA = (S, )
S = {elem, stiva}
= {0 : elem, empty : stiva, push : elem stiva stiva,
pop : stiva stiva, top : stiva elem}
STIVA-algebra A
Multimea suport:
Aelem := N,
Astiva := N
Operatii:
A0 := 0,
Aempty := ,
Apush (n, n1 . . . nk ) := nn1 . . . nk ,
Apop () := , Apop (n) := , Apop (n1 n2 . . . nk ) := n2 . . . nk , pt k 2
Atop () := 0, Atop (n1 . . . nk ) := n1 , pt. k 1
24 / 36
Exemple
Exemplu
STIVA = (S, )
S = {elem, stiva}
= {0 : elem, empty : stiva, push : elem stiva stiva,
pop : stiva stiva, top : stiva elem}
STIVA-algebra B
Multimea suport:
Belem := {0},
Bstiva := N
25 / 36
Exemple
Exemplu
STIVA = (S, )
S = {elem, stiva}
= {0 : elem, empty : stiva, push : elem stiva stiva,
pop : stiva stiva, top : stiva elem}
STIVA-algebra B
Multimea suport:
Belem := {0},
Bstiva := N
Operatii:
B0 := 0,
Bempty := 0,
Bpush (0, n) := n + 1,
Bpop (0) := 0, Bpop (n) := n 1, pt. n 1,
Btop (n) := 0
25 / 36
Privire de ansamblu
signatura (multisortata)
simboluri
-algebra
26 / 36
Algebre ordonat-sortate
Fixam o signatura ordonat-sortata (S, , ).
Definitie
O algebra ordonat-sortata de tip (S, , ) este o (S, )-algebra
A = (AS , A ) astfel ncat
daca s1 s2 , atunci As1 As2 .
daca w1 ,s1 w2 ,s2 si w1 w2 , atunci
2 ,s2
1 ,s1
Aw
(x) = Aw
(x),
oricare x Aw1 .
Semantica unui modul n Maude este o algebra ordonat-sortata.
27 / 36
28 / 36
Definitie
Fie doua (S, )-algebre A = (AS , A ) si B = (BS , B ).
29 / 36
Definitie
Fie doua (S, )-algebre A = (AS , A ) si B = (BS , B ).
Definitie
Un morfism de (S, )-algebre h : A B este o functie S-sortata
h = {hs }sS : {As }sS {Bs }sS care verifica conditia de
compatibilitate:
29 / 36
Definitie
Fie doua (S, )-algebre A = (AS , A ) si B = (BS , B ).
Definitie
Un morfism de (S, )-algebre h : A B este o functie S-sortata
h = {hs }sS : {As }sS {Bs }sS care verifica conditia de
compatibilitate:
pt. or. : s din avem hs (A ) = B .
29 / 36
Definitie
Fie doua (S, )-algebre A = (AS , A ) si B = (BS , B ).
Definitie
Un morfism de (S, )-algebre h : A B este o functie S-sortata
h = {hs }sS : {As }sS {Bs }sS care verifica conditia de
compatibilitate:
pt. or. : s din avem hs (A ) = B .
pt. or. : s1 . . . sn s din si or. a1 As1 , . . . , an Asn avem
hs (A (a1 , . . . , an )) = B (hs1 (a1 ), . . . , hsn (an )).
As1
h s1
Bs1
...
Asn
h sn
Bsn
As
hs
Bs
29 / 36
Observatii
Exprimari alternative:
morfism de -algebre
-morfism
30 / 36
Exemple
Exemplu
NAT = (S, )
S = {nat} si = {0 : nat, succ : nat nat}
NAT -algebra A
Multimea suport: Anat := N
Operatii: A0 := 0, Asucc (x) := x + 1
NAT -algebra B
Multimea suport: Bnat := {0, 1}
Operatii: B0 := 0, Bsucc (x) := 1 x
Morfismul de NAT-algebre f : A B
f = {fnat } : {Anat } {Bnat }
fnat (n) := n(mod2)
31 / 36
Exemple
Exemplu (cont.)
NU exista niciun morfism de NAT-algebre g : B A!
32 / 36
Exemple
Exemplu (cont.)
NU exista niciun morfism de NAT-algebre g : B A!
Pres. g = {gnat } : {Bnat } {Anat } a..
gnat (0) := z1 si gnat (1) := z2 .
32 / 36
Exemple
Exemplu (cont.)
NU exista niciun morfism de NAT-algebre g : B A!
Pres. g = {gnat } : {Bnat } {Anat } a..
gnat (0) := z1 si gnat (1) := z2 .
Conditia de compatibilitate:
32 / 36
Exemple
Exemplu (cont.)
NU exista niciun morfism de NAT-algebre g : B A!
Pres. g = {gnat } : {Bnat } {Anat } a..
gnat (0) := z1 si gnat (1) := z2 .
Conditia de compatibilitate:
gnat (B0 ) = A0 , deci z1 = gnat (0) = 0
32 / 36
Exemple
Exemplu (cont.)
NU exista niciun morfism de NAT-algebre g : B A!
Pres. g = {gnat } : {Bnat } {Anat } a..
gnat (0) := z1 si gnat (1) := z2 .
Conditia de compatibilitate:
gnat (B0 ) = A0 , deci z1 = gnat (0) = 0
gnat (Bsucc (0)) = Asucc (gnat (0)), deci z2 = gnat (1) = Asucc (0) = 1
32 / 36
Exemple
Exemplu (cont.)
NU exista niciun morfism de NAT-algebre g : B A!
Pres. g = {gnat } : {Bnat } {Anat } a..
gnat (0) := z1 si gnat (1) := z2 .
Conditia de compatibilitate:
gnat (B0 ) = A0 , deci z1 = gnat (0) = 0
gnat (Bsucc (0)) = Asucc (gnat (0)), deci z2 = gnat (1) = Asucc (0) = 1
gnat (Bsucc (1)) = Asucc (gnat (1)), deci 0 = z1 = gnat (0) = Asucc (1) = 2
(contradictie!)
32 / 36
Exemple
Exemplu
STIVA = (S, )
S = {elem, stiva}
= {0 : elem, empty : stiva, push : elem stiva stiva,
pop : stiva stiva, top : stiva elem}
STIVA-algebra A
Multimea suport: Aelem := N, Astiva := N
Operatii: A0 := 0, Aempty := , Apush (n, n1 . . . nk ) := nn1 . . . 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
Multimea suport: Belem := {0}, Bstiva := N
Operatii: B0 := 0, Bempty := 0, Bpush (0, n) := n + 1,
Bpop (0) := 0, Bpop (n) := n 1, pt. n 1, Btop (n) := 0
33 / 36
Exemple
Exemplu (cont.)
STIVA-algebra A cu Aelem = N, Astiva = N , etc.
STIVA-algebra B cu Belem = {0}, Bstiva = N, etc.
STIVA-morfism f : A B
f = {felem , fstiva }
felem : N {0}, felem (n) := 0, or. n N
fstiva : N N, fstiva () := 0, fstiva (n1 . . . nk ) = k, or. k 1
STIVA-morfism g : B A
g = {gelem , gstiva }
gelem : {0} N, gelem (0) := 0
gstiva : N N , gstiva (0) := , gstiva (k) := |0 {z
0}, or. k 1
k
34 / 36
Proprietati
Fixam signatura multisortata .
Propozitie
Compunerea a doua -morfisme este un -morfism.
Demonstratie
Fie h : A B si g : B C doua -morfisme.
Aratam ca h; g : A C este -morfism.
Fie : s1 . . . sn s n si a1 As1 , . . . , an Asn . Se observa ca:
(h; g )s (A (a1 , . . . , an ))
Pe saptamana viitoare!
36 / 36