37
Algebraische Spezifikation Teil 2 André Kießling

Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

  • Upload
    lenga

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation

Teil 2

André Kießling

Page 2: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 2

Zur Erinnerung: Signaturen

Spezifikation

SignaturΣ-BOOL

Sorten

BOOL

Operatoren

TRUE: BOOL

FALSE: BOOL

¬: BOOL BOOL

∧: BOOL x BOOL BOOL

Umsetzung

Algebra

ΑΑΑΑ-BOOL

Trägermenge

0,1

Abbildungen

ΑΑΑΑ(TRUE) = 1;

ΑΑΑΑ(FALSE) = 0

ΑΑΑΑ(¬)(x) = 1 , wenn x=00 , sonst

ΑΑΑΑ(∧)(x,y) = x*y

Page 3: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 3

Zur Erinnerung: Axiome

Spezifikation

SignaturΣ-BOOL

Axiome

vars

x,y,z : BOOL

axs

(1) ∀ x,y,z : x∧(y∧z) = (x∧y)∧z

(2) ¬(TRUE) = FALSE

Umsetzung

Algebra

ΑΑΑΑ-BOOL

Nachweis

Ausrechnen, Beweisen…

Page 4: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 4

Zur Erinnerung: Darstellung

BOOL

¬∧∧∧∧

TRUE FALSE

Page 5: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 5

Ablaufplan

Heute:

• Beispiele komplexerer Datentypen

• Homomorphismen

• Abstrakte Datentypen

Page 6: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 6

Σ-NATBOOL

Σ-NATBOOL:sorts NAT, BOOL

opsTRUE: BOOL

FALSE: BOOL

¬: BOOL BOOL

∧: BOOL x BOOL BOOL

0: NAT

inc: NAT NAT

+: NAT x NAT NAT

≤: NAT x NAT BOOL

BOOL

+

inc

0

¬∧∧∧∧

TRUE FALSE

NAT

Page 7: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 7

Vereinbarung

Im folgenden soll für Σ-NATBOOL gelten:

• Geeignetes Axiomsystem gegeben,

z.B. Axiome der Boolschen Algebra…

• Ebenso geeignete Algebra ΑΑΑΑ-NATBOOL gegeben, die alle Axiome erfüllt

Page 8: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 8

Σ-NATSTACK

Σ-NATSTACK: (normaler LIFO-Stack)

ΣΣΣΣ-NATBOOL+

sorts

STACK

ops

new: STACK

push: STACK x NAT STACK

pop: STACK STACK

top: STACK NAT

Page 9: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 9

Σ-NATSTACK

BOOL

+inc

0

¬∧∧∧∧,∨∨∨∨

TRUE FALSE

NAT

STACK

new

push

toppop

Page 10: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 10

Σ-NATQUEUE

Σ-NATQUEUE: (FIFO-Liste)

ΣΣΣΣ-NATBOOL+

sorts

QUEUE

ops

empty: QUEUE

in: QUEUE x NAT QUEUE

out: QUEUE QUEUE

first: QUEUE NAT

Page 11: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 11

Σ-NATQUEUE

BOOL

+inc

0

¬∧∧∧∧,∨∨∨∨

TRUE FALSE

NAT

QUEUE

empty

in

firstout

Page 12: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 12

Beobachtung

Beide Strukturen fast identisch:Die Signaturen Σ-NATSTACK und

Σ-NATQUEUE unterscheiden sich nur

durch die Namen ihrer Operatoren !

Funktionalität soll aber

unterschiedlich sein !

Lösung: Semantik durch Axiome

Page 13: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 13

Axiome zu Σ-NATSTACK

Σ-NATSTACK:vars

s : STACK, n : NAT

axs

stack funktionalität:

(1) pop(push(s,n))=s

(2) top(push(s,n))=n

sonderfälle abdecken:

(3) pop(new)=new

(4) top(new)=0

Page 14: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 14

Ein Modell von Σ-NATSTACK

Algebra Α-NATSTACK:

TrägermengeΑ(STACK)= (x1,x2,…,xn)|xi ∈ Α(NAT) ∀ 1<i ≤n, n ∈ ℕ

AbbildungenΑ(new) = ( Α(0) )

Α(push)( (x1,x2,…,xn) , n ) = (n,x1,x2,…,xn)

Α(pop)( (x1,x2,…,xn) ) = (x2,…,xn) für n>1

( Α(0) ) für n=1

Α(top)( (x1,x2,…,xn) ) = x1

Page 15: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 15

Nachweis der Axiome

stack funktionalität:

(1) pop(push(s,n))=s

pop(push((x1,x2,…,xn),n)=pop((n,x1,x2,…,xn))=(x1,x2,…,xn)

(2) top(push(s,n))=n

top(push((x1,x2,…,xn),n)=top((n,x1,x2,…,xn))=n

sonderfälle abdecken:

(3) pop(new)=new

pop( (Α(0)) ) = (Α(0))

(4) top(new)=0

top( (Α(0)) ) = Α(0)

Axiome erfüllt, Modell brauchbar

Page 16: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 16

Zusammenfassung

Aufbau beliebig komplexer Strukturen

durch Modularisierung möglich

Gutes Axiomsystem nötig um

Funktionalität zu erreichen

Bei komplexen Operationen wird

Beweis der Funktionalität schwierig

• Formalismen wie Hoare-Kalkül helfen

Page 17: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 17

Ablaufplan

Heute:

• Beispiele komplexerer Datentypen

• Homomorphismen

• Abstrakte Datentypen

Page 18: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 18

Algebren zu Σ-BOOL

Algebra ΑΑΑΑ• Trägermenge

ΑΑΑΑ(BOOL) = 0,1• Abbildungen

ΑΑΑΑ(TRUE) = 1; ΑΑΑΑ(FALSE) = 0ΑΑΑΑ(¬)(x) = 1 , wenn x=0

0 , sonst

ΑΑΑΑ(∧)(x,y) = x*y

Algebra ΒΒΒΒ• Trägermenge

ΑΑΑΑ(BOOL) = #• Abbildungen

ΑΑΑΑ(TRUE) = #; ΑΑΑΑ(FALSE) = #ΑΑΑΑ(¬)(x) = #ΑΑΑΑ(∧)(x,y) = #

BOOL

¬∧∧∧∧

TRUE FALSE

Page 19: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 19

Prüfung der Axiome für ΒΒΒΒ

Algebra ΒΒΒΒTrägermenge:

ΒΒΒΒ(BOOL) = #

Abbildungen:ΒΒΒΒ(TRUE) = #; ΒΒΒΒ(FALSE) = #ΒΒΒΒ(¬)(x) = #ΒΒΒΒ(∧)(x,y) = #

Axiom(1): ∀ x,y,z : x∧(y∧z) = (x∧y)∧z

Nachweis: x∧(y∧z) = #∧(#∧#) = #∧# = (#∧#)∧# = (x∧y)∧z

Axiom(2): ¬(TRUE) = FALSE

Nachweis: ¬(TRUE) = ¬(#) = # = FALSE

Algebra ΒΒΒΒ erfüllt beide Axiome, Modell ist brauchbar

Page 20: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 20

Beobachtung

Beide Algebren sind brauchbare Modelle von Σ-BOOL, dennoch sind sie sehr unterschiedlich

Algebra Α entspricht unserer Intuition, Algebra Βscheint eher unbrauchbar

Was können wir tun um ungewollte Modelle

auszugrenzen?

• Verfeinerung des Axiomsystems (nicht hier)

• Klasseneinteilung mit Isomorphismen (jetzt!)

Page 21: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 21

Beispiel: Homomorphismus

Seien Α,Β die vorigen Algebren zu Σ-BOOL

Sei h:Α(BOOL) Β(BOOL) eine Funktion:

h(0) = # , h(1) = #

Dann gilt:

• h(Α(¬)(0)) = h(1) = # = Β(¬)(#) = Β(¬)(h(0))

• h(Α(¬)(1)) = h(0) = # = Β(¬)(#) = Β(¬)(h(1)) also:

h(ΑΑΑΑ(¬)(x)) = ΒΒΒΒ(¬)(h(x)) ∀ x ∈ Α(BOOL)

Page 22: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 22

Beispiel: Homomorphismus

Ebenso gilt:

h(Α(∧)(x,y)) =

• 1. Fall ΑΑΑΑ(∧∧∧∧)(x,y) = 0

= h(0) = # = Β(∧)(#,#) = Β(∧)(h(x),h(y))

• 2. Fall ΑΑΑΑ(∧∧∧∧)(x,y) = 1

= h(1) = # = Β(∧)(#,#) = Β(∧)(h(x),h(y)) also:

h(ΑΑΑΑ(∧∧∧∧)(x,y)) = ΒΒΒΒ(∧∧∧∧)(h(x),h(y))∀ x,y ∈ Α(BOOL)

Page 23: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 23

Beispiel: Homomorphismus

Für die Konstanten gilt:

• h(Α(TRUE)) = h(1) = # = Β(TRUE)

• h(Α(FALSE)) = h(0) = # = Β(FALSE)

also:

h(ΑΑΑΑ(TRUE)) = ΒΒΒΒ(TRUE)h(ΑΑΑΑ(FALSE)) = ΒΒΒΒ(FALSE)

Page 24: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 24

Beispiel: Homomorphismus

Fassen wir zusammen:

Für alle Operatoren ω ∈ Ω der Signatur Σ-BOOL = (Ω,Σ) gilt:h(Α(ω)(a1,…,ak))=Β(ω)(h(a1),…, h(ak))

h(Α(ω))=Β(ω) für Konstanten (k=0)

∀ (a1,…,ak) ∈ Α(s)x…xΑ(s), s∈ ΣΣΣΣ

Eine solche Funktion h nennt man Σ-Homomorphismus zu Σ-BOOL

Page 25: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 25

Definition: Σ-Homomorphismus

Sei Σ=(Ω,Σ), Α,Β Σ-Algebren, dann ist ein

Σ-Homomorphismus h:Α Β gegeben durch

eine Menge von Funktionen:

hs: ΑΑΑΑ(s) ΒΒΒΒ(s), s ∈∈∈∈ ΣΣΣΣ

Für die gilt:

hs(Α(ω)(a1,…,ak))=Β(ω)(hs1(a1),…, hsk(ak))

hs(Α(ω)) =Β(ω) für Konstanten (k=0)

∀ (a1,…,ak) ∈ Α(s1)x…xΑ(sk), si∈ ΣΣΣΣ

∀ ω ∈ Ω

Page 26: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 26

Graphische Darstellung

Α(s1)x…xΑ(sk)

Β(s1)x…xΒ(sk)

Α(s)

Β(s)

h h

Α(ω)

Β(ω)

Page 27: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 27

Noch eine Algebra zu Σ-BOOL

Algebra ΧΧΧΧ• Trägermenge

ΧΧΧΧ(BOOL) = a,b

• Abbildungen

ΧΧΧΧ(TRUE) = a; ΧΧΧΧ(FALSE) = b

ΧΧΧΧ(¬)(x) = a , wenn x=bb , sonst

ΧΧΧΧ(∧)(x,y) = a , wenn x=y=a

b , sonst

Prüfung der Axiome

• Analog zu Algebra ΑΑΑΑ …

BOOL

¬∧∧∧∧

TRUE FALSE

Page 28: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 28

Beispiel: Isomorphismus

Für die Algebren Α,Χ zu Σ-BOOL ist ein

Σ-Homomorphismus h:Α(BOOL) Χ(BOOL)

Gegeben durch:

h(0) = b , h(1) = a

Man zeigt leicht, dass für alle Operatoren ω ∈ Ω der Signatur Σ-BOOL = (Ω,Σ) gilt:

h(Α(ω)(a1,…,ak))=Β(ω)(h(a1),…, h(ak))

h(Α(ω))=Β(ω) für Konstanten (k=0)

∀ (a1,…,ak) ∈ Α(s)x…xΑ(s), s∈ ΣΣΣΣ

Page 29: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 29

Beispiel: Isomorphismus

Weiterhin gilt sogar:

• Injektivität:

∀ x,y ∈ Α(BOOL) gilt:

h(x) = h(y) x = y

• Surjektivität

∀ z ∈ Χ(BOOL) gilt:

∃ x ∈ Α(BOOL) mit h(x) = z

• h ist bijektiv

Page 30: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 30

Allgemein: Isomorphismus

Einen bijektiven Homomorphismusnennt man Isomorphismus

Für einen Isomorphismus h: Α Β,bestehend aus der Menge von Funktionen h = (hs) s ∈ Σ gilt:h-1=(hs

-1) s ∈ Σ ist ein

Isomorphismus h-1: Β Α

Man schreibt auch ΑΑΑΑ ≃≃≃≃ ΒΒΒΒ

Page 31: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 31

Ablaufplan

Heute:

• Beispiele komplexerer Datentypen

• Homomorphismen

• Abstrakte Datentypen

Page 32: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 32

Definition: Abstrakter Datentyp

Ein Abstrakter Datentyp für eine Signatur Σ

ist eine Klasse Χ ⊆ Alg(Σ) von Σ-Algebren,

die unter Isomorphie abgeschlossen ist, d.h.:

• Wenn ΑΑΑΑ ∈∈∈∈ ΧΧΧΧ und ΑΑΑΑ ≃≃≃≃ ΒΒΒΒ folgt ΒΒΒΒ ∈∈∈∈ ΧΧΧΧ

Ein abstrakter Datentyp ist Monomorph,

wenn alle seine Algebren paarweise

Isomorph sind

Sonst wird er Polymorph genannt

Page 33: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 33

Anmerkung

Monomorphe Datentypen unterscheiden sich nur noch durch Bezeichnungen und die Natur ihrer Trägermenge

Monomorphe Datentypen unterscheiden sich nicht mehr durch ihre Logik

Polymorphe Datentypen zeugen meist von einer unzureichenden Spezifikation

Page 34: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 34

Beispiel Monomorphie

Die Klasse K= J ∈ Alg(Σ) | J ≃ Α ist ein monomorpher Datentyp

K enthält auch die Algebra Χ da Χ ≃ Α

(Χ(BOOL) = a,b … )

K enthält nicht die Algebra Β da kein injektiver Homomorphismus h:Α Β

existiert (Β(BOOL) = # … ), also auch kein Isomorphismus

Β scheidet daher als unbrauchbar aus, wenn wir nur Algebren aus K zulassen

Page 35: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 35

Beispiel Polymorphie

Die KlasseQ= J ∈ Alg(Σ) | J ≃ Α oder J ≃ Β ist

ein polymorpher Datentyp da wie vorher erwähnt kein Isomorphismus h:Α Β existieren kann

Page 36: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 36

Zusammenfassung

Abstrakte Datentypen können durch Isomorphe Klassen von Algebren zu einer Signatur Σ dargestellt werden

Mögliche Anwendung:• Suche eine passende Algebra Α zu Σ die der

Intuition und den Axiomen entspricht

• Versuche bei der Implementierung ein zu Αisomorphes Datenmodell zu verwenden

Page 37: Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2 32 Definition: Abstrakter Datentyp Ein Abstrakter Datentyp für eine Signatur Σ

Algebraische Spezifikation - Teil 2 37

Ende

Danke für Eure Aufmerksamkeit !