Algebraische Spezifikation 2 Teil - Institut für Informatik · Algebraische Spezifikation - Teil 2...

Preview:

Citation preview

Algebraische Spezifikation

Teil 2

André Kießling

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

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…

Algebraische Spezifikation - Teil 2 4

Zur Erinnerung: Darstellung

BOOL

¬∧∧∧∧

TRUE FALSE

Algebraische Spezifikation - Teil 2 5

Ablaufplan

Heute:

• Beispiele komplexerer Datentypen

• Homomorphismen

• Abstrakte Datentypen

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

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

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

Algebraische Spezifikation - Teil 2 9

Σ-NATSTACK

BOOL

+inc

0

¬∧∧∧∧,∨∨∨∨

TRUE FALSE

NAT

STACK

new

push

toppop

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

Algebraische Spezifikation - Teil 2 11

Σ-NATQUEUE

BOOL

+inc

0

¬∧∧∧∧,∨∨∨∨

TRUE FALSE

NAT

QUEUE

empty

in

firstout

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

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

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

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

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

Algebraische Spezifikation - Teil 2 17

Ablaufplan

Heute:

• Beispiele komplexerer Datentypen

• Homomorphismen

• Abstrakte Datentypen

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

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

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

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)

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)

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)

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

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∈ ΣΣΣΣ

∀ ω ∈ Ω

Algebraische Spezifikation - Teil 2 26

Graphische Darstellung

Α(s1)x…xΑ(sk)

Β(s1)x…xΒ(sk)

Α(s)

Β(s)

h h

Α(ω)

Β(ω)

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

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∈ ΣΣΣΣ

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

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 ΑΑΑΑ ≃≃≃≃ ΒΒΒΒ

Algebraische Spezifikation - Teil 2 31

Ablaufplan

Heute:

• Beispiele komplexerer Datentypen

• Homomorphismen

• Abstrakte Datentypen

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

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

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

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

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

Algebraische Spezifikation - Teil 2 37

Ende

Danke für Eure Aufmerksamkeit !

Recommended