Programare Logica - Maude

28
Programare logic˘ a Morfisme. Tipuri abstracte de date. Algebra init ¸ial˘ a 1

description

Limbajul Maude de la Programare Logica

Transcript of Programare Logica - Maude

Page 1: Programare Logica - Maude

Programare logica

Morfisme.

Tipuri abstracte de date. Algebra initiala

1

Page 2: Programare Logica - Maude

Morfisme

Exemplu. SignaturaMONOID = (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:

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

I f (x ? y) = f (x) + f (y) ⇔ f (A∗(x , y)) = B∗(f (x), f (y))or. x , y ∈ A.

A × AA∗→ A

f ↓ f ↓ f ↓B × B

B∗→ B

2

Page 3: Programare Logica - Maude

Morfisme

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

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

I fs(Aσ) = (Bσ) oricare σ :→ s,

I fs(Aσ(a1, . . . , an)) = Bσ(fs1(a1), . . . , fsn(an))or. σ : s1 · · · sn → s, or. (a1, . . . , an) ∈ As1 × · · · × Asn .

As1 × · · · × AsnAσ→ As

fs1↓ . . . fsn↓ fs↓Bs1 × · · · × Bsn

Bσ→ Bs

Observatie

1A : A→ A este morfism or. A (S ,Σ)-algebra.

3

Page 4: Programare Logica - Maude

Exemplu

I NAT = (S = {nat},Σ = {0 :→ nat, succ : nat → nat})I NAT -algebra A:

Anat := N, A0 := 0, Asucc(x) := x + 1

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

I f : A→ B, f = {fnat}, fnat(n) = n(mod 2)este morfism de NAT -algebre

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

4

Page 5: Programare Logica - Maude

Exemple

I STIVA = (S = {elem, stiva},Σ)Σ = {0 :→ elem, empty :→ stiva, pop : stiva→ stiva,

push : elem stiva→ stiva, top : stiva→ elem}I STIVA-algebra A: Aelem := N, Astiva := N∗

A0 := 0, Aempty := λ, Apush(n, n1 · · · nk) := n n1 · · · nk ,Apop(λ) = Apop(n) := λ,Apop(n1n2 · · · nk) := n2 · · · nk pt. k ≥ 2,Atop(λ) := 0, Atop(n1 · · · nk) := n1 pt. k ≥ 1.

I STIVA-algebra B: Belem := {0}, Bstiva := NB0 := 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.

5

Page 6: Programare Logica - Maude

Exemple

I STIVA-algebra A = (Aelem = N,Astiva = N∗, . . .)I STIVA-algebra B = (Belem = {0},Bstiva := N, . . .)I f : A→ B, f = (felem : N→ {0}, fstiva : N∗ → N)

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

I g : B → A, g = (gelem : {0} → N, gstiva : N→ N∗)gelem(0) := 0,gstiva(0) := λ, gstiva(k) := 0 · · · 0︸ ︷︷ ︸

k

pt. k ≥ 1

f si g sunt morfisme de STIVA-algebre

6

Page 7: Programare Logica - Maude

Morfisme de mpo

Observatie.

Multimile partial ordonate se pot reprezenta ca (S ,Σ)-algebre,S := {elem, bool},Σ := {≤: elem elem→ bool ,T :→ bool ,F :→ bool}.

I Mpo (A,≤) este reprezentata ca (S ,Σ)-algebra prin(A, {0, 1} ≤,T ,F ), undeAelem := A, Abool := {0, 1}, AT := 1, AF := 0,A≤(x , y) = T ⇔ x ≤ y

I Ce relatiile este ıntre functii crescatoare si morfisme de(S ,Σ)-algebre?

I Orice (S ,Σ)-morfism este functie crescatoare dar invers nueste adevarat!

7

Page 8: Programare Logica - Maude

Proprietati

(S ,Σ) signatura multisortata

Propozitia 1.

Fie A, B, C algebre si f : A→ B, g : B → C morfisme. Atuncif ; g : A→ C este morfism.

Dem.

I σ :→ s ∈ Σ(f ; g)s(Aσ) = gs(fs(Aσ)) = gs(Bσ) = Cσ,

I σ : 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

8

Page 9: Programare Logica - Maude

Proprietati

Teorema 2.

Exista un unic morfism f : TΣ → B or. B (S ,Σ)-algebra.

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

I pasul de inductie: dc. σ : s1 . . . sn → s ∈ Σ sit1 ∈ TΣs1

, . . ., tn ∈ TΣsn a.ı fs1(t1), · · · , fsn(tn) definite at.

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

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

9

Page 10: Programare Logica - Maude

Continuare

Demonstram ca f este morfism.

I dc. σ :→ s ∈ Σ, at. fs(TΣσ) = fs(σ) = Bσ,

I dc. σ : s1 . . . sn → s ∈ Σ sit1 ∈ TΣs1

, . . ., tn ∈ TΣsn at.

fs(TΣσ(t1, . . . , tn)) = fs(σ(t1, . . . , tn))= Bσ(fs1(t1), · · · , fsn(tn))

10

Page 11: Programare Logica - Maude

Continuare

Unicitatea. Fie g : TΣ → B un morfism.Demonstram ca g = f prin inductie pe termeni

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

I pasul initial: dc. σ :→ s ∈ Σ, at. gs(σ) = Bσ = fs(σ),

I pasul de inductie: dc. σ : s1 . . . sn → s ∈ Σ sit1 ∈ TΣs1

, . . ., tn ∈ TΣsn a.ıgs1(t1) = fs1(t1), · · · , gsn(tn) = fsn(tn) at.

gs(σ(t1, . . . , tn)) = Bσ(gs1(t1), · · · , gsn(tn)) =Bσ(fs1(t1), · · · , fsn(tn)) = fs(σ(t1, . . . , tn))

Conform principiului inductiei pe termeni,gs(t) = fs(t) or. t ∈ TΣs , adica g = f . qed

11

Page 12: Programare Logica - Maude

Exemplu

(S ,Σ) signatura multisortata

I D = (DS ,DΣ), Ds := N or. s ∈ Sdaca σ :→ s atunci Dσ := 0,daca σ : s1 . . . sn → s, k1, . . ., kn ∈ N

Dσ(k1, . . . , kn) := 1 + max(k1, . . . , kn)

I fD : TΣ → D unicul morfism

Ce reprezinta valoarea fD(t) pentru un termen t?

12

Page 13: Programare Logica - Maude

Termeni ca arbori

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

I σ ∈ TΣs ⇒ arb(σ) := σ

I t = σ(t1, . . . , tn) ⇒

arb(t) := σ

##{{arb(t1) · · · arb(tn)

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

13

Page 14: Programare Logica - Maude

Izomorfisme

Un (S ,Σ)-morfism f : A→ B este izomorfism daca exista unmorfism g : B → A a.ı. f ; g = 1A si g ; f = 1B .

Propozitia 3

Un morfism f : A→ B este izomorfism daca si numai daca estefunctie bijectiva, adica fs : As → Bs este bijectie oricare s ∈ S .

Dem. Revine la a demonstra ca implicatia:

f morfism si bijectie ⇒ f −1 morfism.

14

Page 15: Programare Logica - Maude

Continuare

Demonstram ca f −1 : B → A este morfism.

I dc. σ :→ s ∈ Σ, at. fs(Aσ) = Bσ, deci f −1s (Bσ) = Aσ,

I dc. σ : s1 . . . sn → s ∈ Σ sib1 ∈ Bs1 , . . ., bn ∈ Bsn at.ex. a1 ∈ As1 , . . ., an ∈ Asn a.ı.fs1(a1) = b1, . . ., fsn(an) = bn si

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

15

Page 16: Programare Logica - Maude

Izomorfisme de mpo

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

I (B = {0, 1}2,≤), unde ≤ ordinea pe componente

I A si B sunt (S ,Σ)-algebre, undeS := {elem, bool},Σ := {≤: elem elem→ bool ,T :→ bool ,F :→ bool}

I f : A→ Bf (00) = x1, f (01) = x2, f (10) = x3, f (11) = x4

este functie bijectiva si crescatoare

I A 6' B

16

Page 17: Programare Logica - Maude

Izomorfisme

Spunem ca algebrele A = (AS ,AΣ) si B = (BS ,BΣ) sunt izomorfedaca exista un izomorfism f : A→ B. In acest caz notam A ' B.

I A ' A (1A este izomorfism)

I A ' B ⇒ B ' A

I A ' B, B ' C ⇒ A ' C

Relatia de izomorfism este o relatie de echivalenta (reflexiva,simetrica si tranzitiva).

Observatie.

A ' B ⇒ As ' Bs oricare s ∈ S

17

Page 18: Programare Logica - Maude

Exemple

I NAT = (S = {nat},Σ = {0 :→ nat, succ : nat → nat})I NAT -algebra A: Anat = N, A0 := 0, Asucc(x) := x + 1

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

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

I A 6' B

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

18

Page 19: Programare Logica - Maude

Exemple

I BOOL = (S = {bool},Σ)Σ = {T :→ bool ,F :→ bool ,¬ : bool → bool ,∨ : bool bool → bool ,∧ : bool bool → bool}

I Abool := {0, 1}AT := 1, AF := 0, A¬(x) := 1− x ,A∨(x , y) := max(x , y), A∧(x , y) := min(x , y)

I Bbool := P(N)BT := N, BF := ∅, B¬(X ) := N \ X ,B∨(X ,Y ) := X ∪ Y , B∧(X ,Y ) := X ∩ Y

I A 6' B

19

Page 20: Programare Logica - Maude

Exemple

I BOOL-algebra C :Cbool := {t : N→ {0, 1}| t functie}CT (n) := 1, CF (n) := 0 or. n ∈ NC¬(t)(n) := 1− t(n) or. t ∈ Cbool , n ∈ NC∨(t1, t2)(n) := max(t1(n), t2(n)) or. t1, t2 ∈ Cbool , n ∈ NC∧(t1, t2)(n) := min(t1(n), t2(n)) or. t1, t2 ∈ Cbool , n ∈ N

I B ' Cf : B → C , f (Y ) := χY oricare Y ∈ P(N)f (Y )(n) = 1 daca n ∈ Y , f (Y )(n) = 0 daca n 6∈ Yf este BOOL-izomorfism

20

Page 21: Programare Logica - Maude

Exemple

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

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

I A 6' B

21

Page 22: Programare Logica - Maude

Exemple

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

I STIVA-algebra C : Celem := Z, Cstiva := Z∗C0 := 0, Cempty := λ, Cpush(x , x1 · · · xk) := x1 · · · xkx ,Cpop(λ) = Cpop(x) := λ,Cpop(x1 · · · xk−1xk) := x1 · · · xk−1 pt. k ≥ 2,Ctop(λ) := 0, Ctop(x1 · · · xk) := xk pt. k ≥ 1.

22

Page 23: Programare Logica - Maude

Exemple

I STIVA-algebra A: Aelem := N, Astiva := N∗

I STIVA-algebra C : Celem := Z, Cstiva := Z∗

I 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

I Algebrele izomorfe sunt ”identice” (modulo redenumire).

23

Page 24: Programare Logica - Maude

ADT

I Un tip abstract de date este o multime de date ( valori) sioperatii asociate lor, a caror descriere (specificare) esteindependenta de implementare.abstract=disassociated from any specific instance

I O algebra este formata dintr-o multime de elemente si omultime de operatii. Algebrele pot modela tipuri de date.

I Doua algebre izomorfe au acelasi comportament, deci trebuiesa fie modele ale acelasi tip de date. Aceasta asiguraindependenta de implementare.

24

Page 25: Programare Logica - Maude

ADT

I O signatura (S ,Σ) este interfata sintactica a unui tip abstractde date.

I O algebra A = (AS ,AΣ) este o posibila implementare.

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

I Un tip abstract de date este o clasa C de (S ,Σ)-algebre cuproprietatea ca oricare doua algebre sunt izomorfe:

A, B ∈ C ⇒ A ' B.

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

25

Page 26: Programare Logica - Maude

Algebra initiala

K clasa de (S ,Σ)-algebre

I O (S ,Σ)-algebra I este initiala ın K daca I ∈ K si pentruorice B ∈ K exista un unic morfism f : I → B.

Propozitia 4

I (a) I initiala ın K, A ∈ K, A ' I ⇒ A initiala ın KI (b) A1 si A2 initiale ın K ⇒ A1 ' A2.

26

Page 27: Programare Logica - Maude

Continuare

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 ununic morfism h : A→ B.

I Existenta. h := ϕA; fB : A→ B mofism

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

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

(b) A1 si A2 initiale ın K

Exista un unic morfism f : A1 → A2 si un unic morfismg : A2 → A1. Atunci f ; g : A1 → A1 si 1A1 : A1 → A1, decif ; g = 1A1 . Analog g ; f = 1A2 , deci A1 ' A2. qed

27

Page 28: Programare Logica - Maude

(S ,Σ) -algebra initiala

(S ,Σ) signatura multisortata

I K clasa tuturor (S ,Σ)-algebrelor.

I I este (S ,Σ)-algebra initiala daca oricare B (S ,Σ)-algebraexista un unic morfism f : I → B.

Teorema 2. TΣ este (S ,Σ)-algebra initiala.

I I(S ,Σ) = {I | I (S ,Σ) -algebra initiala}este un tip abstract de date si TΣ ∈ I(S ,Σ).

Un modul functional ın Maude (care contine numai declaratiide sorturi si operatii) defineste un astfel de tip abstract dedate si construieste efectiv algebra TΣ.

28