Sunteți pe pagina 1din 62

Curs 2

2015-2016

Programare Logica
1 / 36

Cuprins

1 Signaturi multisortate

2 Multimi multisortate

3 Algebre multisortate

4 Morfisme de 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

S multimea cuvintelor finite cu elemente din S.

5 / 36

Observatii

S multimea cuvintelor finite cu elemente din S.


Notatii alternative pentru o signatura (S, ):

5 / 36

Observatii

S multimea cuvintelor finite cu elemente din S.


Notatii alternative pentru o signatura (S, ):
(S, {s1 s2 ...sn ,s }s1 s2 ...sn S ,sS )

5 / 36

Observatii

S multimea cuvintelor finite cu elemente din S.


Notatii alternative pentru o signatura (S, ):
(S, {s1 s2 ...sn ,s }s1 s2 ...sn S ,sS )
(S, {w ,s }w S ,sS )
w ,s ddac
a:w s
w = s1 . . . sn S

5 / 36

Observatii

S multimea cuvintelor finite cu elemente din S.


Notatii alternative pentru o signatura (S, ):
(S, {s1 s2 ...sn ,s }s1 s2 ...sn S ,sS )
(S, {w ,s }w S ,sS )
w ,s ddac
a:w s
w = s1 . . . sn S

5 / 36

Observatii

S multimea cuvintelor finite cu elemente din S.


Notatii alternative pentru o signatura (S, ):
(S, {s1 s2 ...sn ,s }s1 s2 ...sn S ,sS )
(S, {w ,s }w S ,sS )
w ,s ddac
a:w s
w = s1 . . . sn S

Este permisa suprancarcarea operatiilor:


este supranc
arcat
a dac
a w1 ,s1 w2 ,s2 si hw1 , s1 i 6= hw2 , s2 i

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

= {, }

w ,s = , pentru orice alt w S si s S

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

= {}

w ,s = , pentru orice alt w S si s S

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

Fixam o multime de sorturi S.

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}

1 este de sort nat


false este de sort bool
sorturi = tipuri
elemente de sort s = date de tip s

15 / 36

Operatii

Operatiile uzuale pe multimi sunt extinse la cazul multisortat pe


componente:
{As }sS {Bs }sS ddaca As Bs , or. s S
{As }sS {Bs }sS = {As Bs }sS
{As }sS {Bs }sS = {As Bs }sS
{As }sS {Bs }sS = {As Bs }sS

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

O functie S-sortata f = {fs }sS : A B se numeste injectiva,


(surjectiva, bijectiva) daca fs este injectiva, (surjectiva, bijectiva),
or. s S.
O functie S-sortata f = {fs }sS : A B se numeste inversabila
daca exista g : B A astfel ncat f ; g = 1A si g ; f = 1B .

18 / 36

Functii

O functie S-sortata f = {fs }sS : A B se numeste injectiva,


(surjectiva, bijectiva) daca fs este injectiva, (surjectiva, bijectiva),
or. s S.
O functie S-sortata f = {fs }sS : A B se numeste inversabila
daca exista g : B A astfel ncat f ; g = 1A si g ; f = 1B .

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

Notatie: As1 ...sn = As1 . . . Asn

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

nteles pentru simboluri

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

Morfisme de algebre multisortate

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

1A : A A este -morfism, pt. or. -algebra A (identitatea)


Compunerea a doua (S, )-morfisme este data de compunerea
functiilor S-sortate.

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

= gs (hs (A (a1 , . . . , an )))


=

gs (B (hs1 (a1 ), . . . , hsn (an )))

C (gs1 (hs1 (a1 )), . . . , gsn (hsn (an )))

C ((h; g )s1 (a1 ), . . . , (h; g )sn (an )).



35 / 36

Pe saptamana viitoare!

36 / 36

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

  • Shark and Fishes Problem
    Shark and Fishes Problem
    Document13 pagini
    Shark and Fishes Problem
    Dani Rvd
    Încă nu există evaluări
  • Lab 04
    Lab 04
    Document28 pagini
    Lab 04
    Dani Rvd
    Încă nu există evaluări
  • C09
    C09
    Document66 pagini
    C09
    Dani Rvd
    Încă nu există evaluări
  • Cursul 5
    Cursul 5
    Document31 pagini
    Cursul 5
    Dani Rvd
    Încă nu există evaluări
  • Cursul 3
    Cursul 3
    Document29 pagini
    Cursul 3
    Dani Rvd
    Încă nu există evaluări
  • C07
    C07
    Document67 pagini
    C07
    Dani Rvd
    Încă nu există evaluări
  • Curs 5: 2015-2016 Programare Logic A
    Curs 5: 2015-2016 Programare Logic A
    Document41 pagini
    Curs 5: 2015-2016 Programare Logic A
    Dani Rvd
    Încă nu există evaluări
  • Laborator2 SQL An2
    Laborator2 SQL An2
    Document8 pagini
    Laborator2 SQL An2
    Dani Rvd
    Încă nu există evaluări
  • Curs 4: 2015-2016 Programare Logic A
    Curs 4: 2015-2016 Programare Logic A
    Document50 pagini
    Curs 4: 2015-2016 Programare Logic A
    Dani Rvd
    Încă nu există evaluări
  • C03 PL
    C03 PL
    Document65 pagini
    C03 PL
    Dani Rvd
    Încă nu există evaluări
  • Cursul 3
    Cursul 3
    Document29 pagini
    Cursul 3
    Dani Rvd
    Încă nu există evaluări
  • Cursul 5
    Cursul 5
    Document31 pagini
    Cursul 5
    Dani Rvd
    Încă nu există evaluări
  • Cursul 6
    Cursul 6
    Document54 pagini
    Cursul 6
    Dani Rvd
    Încă nu există evaluări
  • Cursul 8
    Cursul 8
    Document22 pagini
    Cursul 8
    Dani Rvd
    Încă nu există evaluări
  • Cursul 4
    Cursul 4
    Document26 pagini
    Cursul 4
    Dani Rvd
    Încă nu există evaluări
  • Cursul 6
    Cursul 6
    Document54 pagini
    Cursul 6
    Dani Rvd
    Încă nu există evaluări
  • Cursul 6
    Cursul 6
    Document54 pagini
    Cursul 6
    Dani Rvd
    Încă nu există evaluări
  • Cursul 10 Recapitulare
    Cursul 10 Recapitulare
    Document32 pagini
    Cursul 10 Recapitulare
    Dani Rvd
    Încă nu există evaluări
  • Cursul 8
    Cursul 8
    Document22 pagini
    Cursul 8
    Dani Rvd
    Încă nu există evaluări
  • Cursul 9
    Cursul 9
    Document9 pagini
    Cursul 9
    Dani Rvd
    Încă nu există evaluări
  • TSB
    TSB
    Document4 pagini
    TSB
    Dani Rvd
    Încă nu există evaluări
  • Cursul 7
    Cursul 7
    Document45 pagini
    Cursul 7
    Dani Rvd
    Încă nu există evaluări
  • Baza PA
    Baza PA
    Document4 pagini
    Baza PA
    Dani Rvd
    Încă nu există evaluări
  • Cursul 7
    Cursul 7
    Document45 pagini
    Cursul 7
    Dani Rvd
    Încă nu există evaluări
  • Cursul 10 Recapitulare
    Cursul 10 Recapitulare
    Document32 pagini
    Cursul 10 Recapitulare
    Dani Rvd
    Încă nu există evaluări
  • Cursul 5
    Cursul 5
    Document31 pagini
    Cursul 5
    Dani Rvd
    Încă nu există evaluări
  • Cursul 9
    Cursul 9
    Document9 pagini
    Cursul 9
    Dani Rvd
    Încă nu există evaluări
  • Cursul 4
    Cursul 4
    Document26 pagini
    Cursul 4
    Dani Rvd
    Încă nu există evaluări
  • Cursul 3
    Cursul 3
    Document29 pagini
    Cursul 3
    Dani Rvd
    Încă nu există evaluări