algebraische spezifikation 2 teil - institut für informatik · algebraische spezifikation - teil 2...
TRANSCRIPT
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 !