Algebraische Spezifikation von Software und Hardware III

Werbung
Algebraische Spezifikation von
Software und Hardware III
Markus Roggenbach
Mai 2008
5. Spezifikation ‘naiv’
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
5. Spezifikation ‘naiv’
2
Der ‘naive’ Ansatz
Grundlegende Frage:
Gegeben:
• Programm/Algebra (als CASL Spezifikation)
Hat das Programm gewünschte Eigenschaften?
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
5. Spezifikation ‘naiv’
I. Codierung von Programmen/Algebren in
CASL
Wir betrachten nur:
• endliche Mengen
• Funktionen, die durch Wertetabellen gegeben sind
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
3
5. Spezifikation ‘naiv’
4
Programm ‘logisches und’
• endliche Menge Bool = {tt, f f }
• Wertetabelle:
x
tt
tt
ff
ff
y
tt
ff
tt
ff
result
tt
ff
ff
ff
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
Programm ‘logisches und’
Codierung endlicher Mengen in CASL
Kochrezept:
• eine Konstante pro Wert
• mache alle Konstanten verschieden “no confusion”
• stelle sicher, daßs es keine weiteren Werte gibt “no junk”
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
5
Programm ‘logisches und’
6
Die CASL Spezifikation
spec MyBoolean =
sort Bool
ops tt,ff: Bool; __myAnd__: Bool * Bool -> Bool
axioms
not tt = ff %(no_confusion)% ;
forall x: Bool . x=tt \/ x=ff %(no_junk)% ;
axioms
tt myAnd tt = tt;
tt myAnd ff = ff;
ff myAnd tt = ff;
ff myAnd ff = ff;
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
5. Spezifikation ‘naiv’
7
II. Gewünschte Eigenschaft
spec CommutativeOperation =
sort s
op
o: s * s -> s
axiom
forall x,y: s . o(x,y) = o(y,x)
end
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
5. Spezifikation ‘naiv’
III. Und wie geht das nun zusammen?
view IsCommutative:
CommutativeOperation to MyBoolean =
sort s |-> Bool,
op
o |-> __myAnd__
end
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
8
5. Spezifikation ‘naiv’
9
Anmerkungen
• Ein CASL View ist eine Behauptung,
die wahr oder falsch sein kann.
• Die Behauptung von view v: Spec to Imp = ... ist:
Alle Formeln von Spec gelten in Imp.
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
5. Spezifikation ‘naiv’
10
• Dabei dürfen Symbole umbeannt werden.
In unserem Bsp wird aus der Spec Formel
forall x,y: s . o(x,y) = o(y,x)
die Imp Formel
forall x,y: Bool .
myAnd (x,y) =
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
myAnd (y,x)
5. Spezifikation ‘naiv’
Beweisen von Views über FOL mit Hets
1. Aufruf hets -g <dateiname>
2. Edit-Proofs-Automatic: macht die
Beweisverpflichtungen lokal.
3. Node Menu - Prove: öffnet die ‘Werkzeug-Auswahl’
4. Prove mittels SPASS
5. Run innerhalb der SPASS Schnittstelle
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
11
5. Spezifikation ‘naiv’
12
Mögliche Beweisresultate
• + für einen erfolgreichen Beweis.
• - für einen Widerspruch.
• Timeout – SPASS konnte in der gegebenen Zeit den View
weder beweisen noch widerlegen.
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
5. Spezifikation ‘naiv’
13
Eine Entdeckungreise in FOL
1. Wahrheitswerte: true, false
2. Prädikate – Bsp:
a<b<c
hat ein kleinstes Element.
3. Definiertheit – Bsp: der 3-Bit Stream
tt, f f, tt
ist ueberall definiert.
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
5. Spezifikation ‘naiv’
4. Zwei Arten von Gleichheit:
◦ existentiell =e=: beide Terme sind definiert und beide Terme sind
gleich
◦ streng =: entweder beide Terme sind undefiniert oder beide Terme
sind gleich und definiert.
Bsp: Datenbankanfrage
value1 = look_up(update(initial, Hugo, N4711), Erna);
value2 = look_up(initial,Erna)
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
14
5. Spezifikation ‘naiv’
5. Negation – Bsp: ‘−’ ist nicht kommutativ
not ( forall x,y: s . o(x,y) = o(y,x) )
6. Logisches Und – Bsp: “MyAnd” ist commutativ und
associativ.
7. Logisches Oder – Bsp: Totalordnung.
8. Implikation – Bsp: geschützte existentielle Gleichheit.
9. Quantoren – Bsp für Existenzquantor: Surjektivität.
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
15
6. Terme & Formeln
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
17
Terme
Grundlegende Frage:
Gegeben:
• Interface (= Signatur) und
• Programm (= Σ-Algebra)
Wie lassen sich Werte der Trägermenge beschreiben?
; Terme
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
18
Terme
Terme werden geformt aus
• totalen Funktionssymbolen,
• partiellen Funktionssymbolen, und
• (getypten) Variablen
wobei das Typing stimmen muss.
(bedingte Terme in CASL verwenden auch Formeln.)
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
Terme - die formale Definition
Gegeben Σ = (S, T F, P F, P )
Ein Variablen System über Σ ist eine S-getypte, paarweise
disjunkte Familie von Variable X = (Xs)s∈S .
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
19
Terme - die formale Definition
20
Die Mengen TΣ(X)s der mehr-sortigen Σ-Terme in der Sorte
s, s ∈ S, über Variables aus X sind die kleinsten Mengen,
die abgeschlossen sind unter:
• x ∈ TΣ(X)s für x ∈ Xs, und
• fw,s(t1, . . . , tn) ∈ TΣ(X)s,
für ti ∈ TΣ(X)si (i = 1 . . . n), f ∈ T Fw,s ∪ P Fw,s, w =
s1 . . . sn.
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
Terme - die formale Definition
Welche Terme gibt es hier?
spec ListsOfNaturalNumbers =
sort List, Nat
ops 0 :
Nat,
suc :
Nat → Nat;
nil :
List;
:: :
Nat × List → List;
+ + : List × List → List;
take, drop : Nat × List →? List
preds isEmpty : List;
eps : Nat × List
end
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
21
6. Terme & Formeln
22
Variablen-Belegung
Gegeben
• Signatur Σ,
• Variablen System X = (Xs)s∈S ,
• Σ-Algebra A
Eine Variable Belegung ν : X → A ordnet jeder Variable
x:s∈X
einen Wert in der passenden Trägermenge zu, d.h.
ν(x : s) = a ∈ A(s)
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
23
Termauswertung
Gegeben eine Variablen-Belegung ν : X → A, die zugehörige
Termauswertung ν ] : TΣ(X) →?A ist induktiv definiert als:
• νs](x) := ν(x) für x ∈ Xs, s ∈ S.
• 
νs](fw,s(t1, . . . , tn)) :=
]
]
]

(t
))
f
ür
ν
(ti) definiert
A((f
))(ν
(t
),
.
.
.
,
ν
n
w,s
1

s
s
s
n
1



(i = 1 . . . n) und

(A(fw,s))(νs]1 (t1), . . . , νs]n (tn))



definiert


 undefiniert
ansonsten
für f ∈ T Fw,s ∪ P Fw,s, ti ∈ TΣ(X)si (i = 1 . . . n), wobei
w = s1 . . . sn.
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
24
Formeln
Grundlegende Frage:
Gegeben:
• Interface (= Signatur) und
• Programm (= Σ-Algebra)
Wie lassen sich die Programme mit den ‘richtigen’
Eigenschaften auswählen?
; Formeln
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
Logik erster Stufe (FOL) – Syntax
Die Menge F OΣ(X) der mehr-sortigen Σ-Formeln erster
Stufe mit Variablen aus X ist die kleinste Menge
abgeschlossen unter:
1. pw (t1, . . . tn) ∈ F OΣ(X), if
ti ∈ TΣ(X)si , pw ∈ Pw , w = s1 . . . sn ∈ S ∗,
e
2. t1 = t2 ∈ F OΣ(X), if t1, t2 ∈ TΣ(X)s, s ∈ S
(Existentielle Gleichheit),
3. t1 = t2 ∈ F OΣ(X) if t1, t2 ∈ TΣ(X)s, s ∈ S
(starke Gleichheit),
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
25
6. Terme & Formeln
4. def t ∈ F OΣ(X), if t ∈ TΣ(X)
(Definiertheit),
5. F ∈ F OΣ(X) (lese: falsch),
6. ϕ ∧ ψ ∈ F OΣ(X), if ϕ, ψ ∈ F OΣ(X),
7. ϕ ⇒ ψ ∈ F OΣ(X), if ϕ, ψ ∈ F OΣ(X),
8. ∀x : s • ϕ ∈ F OΣ(X), if ϕ ∈ F OΣ(X ∪ {x : s}), s ∈ S,
Ein mehrsortiger Satz über Σ ist eine geschlossene
mehr-sortige Formel erster Stufe über Σ.
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
26
6. Terme & Formeln
27
Und dazu: die klassischen Abkürzungen
¬ϕ
T
(ϕ1 ∨ ϕ2)
(ϕ1 ⇔ ϕ2)
(∃x : s . ϕ)
(∀x1 : s1, . . . , xk : sk . ϕ)
(∃x1 : s1, . . . , xk : sk . ϕ)
ϕ1, ϕ2 beliebige Formeln
für
für
für
für
für
für
für
ϕ⇒F
¬F
(¬((¬ϕ1) ∧ (¬ϕ2)));
((ϕ1 ⇒ ϕ2) ∧ (ϕ2 ⇒ ϕ1));
(¬(∀x : s . (¬ϕ)));
(∀x1 : s1 . (. . . (∀xk : sk . ϕ)));
(∃x1 : s1 . (. . . (∃xk : sk . ϕ)));
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
28
Erfülltheit relativ zu einer Variablen Belegung
Die Erfülltheit einer mehr-sortigen Formel ϕ ∈ F OΣ(X)
relativ zu einer Variablen Belegung ν : X → A ist induktiv
definiert über die Structur von ϕ :
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
28
Erfülltheit relativ zu einer Variablen Belegung
Die Erfülltheit einer mehr-sortigen Formel ϕ ∈ F OΣ(X)
relativ zu einer Variablen Belegung ν : X → A ist induktiv
definiert über die Structur von ϕ :
• ν pw (t1, . . . tn) gdw ν ](ti) ist definiert (i = 1 . . . n) und
(ν ](t1), . . . , ν ](tn)) ∈ A(pw ).
e
• ν t1 = t2 gdw ν ](t1) und ν ](t2) sind beide definiert und
gleich.
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
29
• ν t1=t2 gdw ν ](t1) und ν ](t2) sind entweder beide
undefiniert, oder beide sind definiert und gleich.
• ν def t gdw ν ](t) ist definiert.
• es gilt nicht ν F .
• ν ϕ ∧ ψ gdw ν ϕ und ν ψ.
• ν ϕ ⇒ ψ gdw ν ϕ impliziert ν ψ.
• ν ∀x : s • ϕ gdw für alle Variablen Belegungen
ζ : X ∪ {x : s} → A mit ζ(y) = ν(y) für y 6= x : s, y ∈ X
gilt ζ ϕ.
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
6. Terme & Formeln
30
CASL-Syntax für Logik erster Stufe
BASIC-ITEMS::= SIG-ITEMS
| forall VAR-DECL ;...; VAR-DECL
"." FORMULA "."..."." FORMULA ;/
| axiom/axioms FORMULA; ...; FORMUA ;/
|
...
VAR-DECL
::= VAR ,..., VAR : SORT
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
CASL-Syntax für Logik erster Stufe
FORMULA ::=
|
|
|
|
|
|
|
|
|
|
31
PRED-NAME ( TERM, ..., TERM) (MR-added)
TERM = TERM
TERM =e= TERM
def TERM
true | false
not FORMULA
FORMULA /\ FORMULA /\ ... /\ FORMULA
FORMULA \/ FORMULA \/ ... \/ FORMULA
FORMULA => FORMULA
FORMULA if FORMULA
FORMULA <=> FORMULA
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
CASL-Syntax für Logik erster Stufe
|
|
|
QUANTIFIER VAR-DECL ;...; VAR-DECL
"." FORMULA
( FORMULA )
...
QUANTIFIER ::= forall | exists | ...
Markus Roggenbach: Algebraische Spezifikation von Software und Hardware III, Mai 2008
32
Herunterladen