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