algebraische spezifikation 2 teil - institut für informatik .algebraische spezifikation - teil 2

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

Post on 12-Aug-2019

212 views

Category:

Documents

0 download

Embed Size (px)

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=0 0 , 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

    ops TRUE: � 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

    top pop

  • 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

    first out

  • 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) ∀ 11

    ( Α(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=b b , 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 Σ-

Recommended

View more >