• Keine Ergebnisse gefunden

Korrekte Software: Grundlagen und Methoden Vorlesung 8 vom 19.05.16: Einführung zu Isabelle

N/A
N/A
Protected

Academic year: 2022

Aktie "Korrekte Software: Grundlagen und Methoden Vorlesung 8 vom 19.05.16: Einführung zu Isabelle"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Korrekte Software: Grundlagen und Methoden Vorlesung 8 vom 19.05.16: Einführung zu Isabelle

Serge Autexier, Christoph Lüth Universität Bremen Sommersemester 2016

18:11:01 2016-07-07 1 [21]

Fahrplan

I Einführung

I Die Floyd-Hoare-Logik I Operationale Semantik I Denotationale Semantik I Äquivalenz der Semantiken

I Verifikation: Vorwärts oder Rückwärts?

I Korrektheit des Hoare-Kalküls I Einführung in Isabelle/HOL

I Weitere Datentypen: Strukturen und Felder I Funktionen und Prozeduren

I Referenzen und Zeiger

I Frame Conditions & Modification Clauses I Ausblick und Rückblick

Korrekte Software 2 [21]

Motivation

I Verwendung des interaktiven Theorembeweisers Isabelle/HOL, um anfallende Beweisverpflichtungen über C0-Software (und kommende Erweiterungen) zu beweisen.

Korrekte Software 3 [21]

Isabelle/HOL

I Ist ein interaktiver Theorembeweiser

I Website:isabelle.in.tum.de I Basiert auf Logik HOL I Umfangreiche Automatisierungen

für Beweissuche I High-level Syntax für

Modellierung und Beweiskonstruktion

I Gute Editor-Integration (jEdit)≈ IDE für Isabelle Theorien und Beweise

I Im Reiter “Documentation”:

Prog-prove, Tutorial

Korrekte Software 4 [21]

HOL Formeln

I HOL is ein getypte Logik höherer Ordnung (ähnlich zu funktionalen Programmiersprachen)

I Basistypen: nat, bool, int

I Typkonstruktoren: list , set

I Funktionstyp: =>

I Typvariablen: ’a ’b ’ c I Typdeklarationen:

I op + :: nat => nat => nat

I <= :: nat => nat => bool

I exp2 :: nat => nat

Korrekte Software 5 [21]

Terme und Formeln

I Terme:

IInfix Notation a = b, a ~= b, a <= b, a + b usw.

IWenn f :: t1 => t2 und t :: t1 dann ist f t :: t2

IFormeln sind Terme vom Typ bool True : : b o o l , F a l s e : : b o o l

n o t : : b o o l => b o o l ~ , \<not>

& : : b o o l => b o o l => b o o l \<and>

| : : b o o l => b o o l => b o o l \<o r >

−−> : : b o o l => b o o l => b o o l \< l o n g r i g h t a r r o w >

= : : ’ a => ’ a => b o o l

ALL x . P \< f o r a l l > x . P

EX x . P \< e x i s t s > x . P

Korrekte Software 6 [21]

Beweiszustände

^x1. . .xn.assumptions =⇒conclusion

^x,y,z.z }| { Jxy;yzK=⇒xz

^x,y,z.z }| { xy=⇒yz=⇒xz

Korrekte Software 7 [21]

Theorien

Dateiname: T.thy

t h e o r y T (∗ Name muss m i t D a t e i n a m e u e b e r e i n s t i m m e n ∗) i m p o r t s Main (∗ i n Main i s t a l l e s d r i n , was man

s o b r a u c h t / e r s t mal ∗) b e g i n

(∗ . . . D e f i n i t i o n e n , Theoreme , B e w e i s e ∗) end

Korrekte Software 8 [21]

(2)

Datentypen

d a t a t y p e ’ a l i s t = N i l | Cons ’ a " ’ a l i s t "

I Listen von Objekten vom Typ ’a

I Nilhat als Notation auch []

I Cons x xshat als Notation auch x#xs Erzeugt Induktionsregeln (für Beweise)

P Nil ^

x,xs.P xs=⇒P (Cons x xs) ALL l . P l

Korrekte Software 9 [21]

Konstanten

d e f i n i t i o n e i n s : : n a t w h e r e " e i n s = Suc 0 "

d e f i n i t i o n z w e i e r l i s t e : : " ’ a => ’ a => ’ a l i s t " w h e r e

" z w e i e r l i s t e x y = x#y # [ ] "

I Erzeugt entsprechende Konstanten, aber keine Simplifikationsregeln

Korrekte Software 10 [21]

Funktionen

fun d i v 2 : : " n a t => n a t " w h e r e

" d i v 2 0 = 0 " |

" d i v 2 ( Suc 0 ) = 0 " |

" d i v 2 ( Suc ( Suc n ) ) = Suc ( d i v 2 n ) "

I Beweis der Terminierung automatisch (falls Fehlschlag, muss man korrigieren oder selber helfen)

I Erzeugt spezielle Induktionsregel

P 0 P (Suc 0) ^

n.P n=⇒P (Suc (Suc n)) ALL n . P n

I Name: div2 . induct

Korrekte Software 11 [21]

Konstanten / Funktionen / Prädikate

fun d i v 2 : : " n a t => n a t " w h e r e

" d i v 2 0 = 0 " |

" d i v 2 ( Suc 0 ) = 0 " |

" d i v 2 ( Suc ( Suc n ) ) = Suc ( d i v 2 n ) "

I Beweis der Terminierung automatisch (falls Fehlschlag, muss man korrigieren oder selber helfen)

I Erzeugt spezielle Induktionsregel

P 0 P (Suc 0) ^

n.P n=⇒P (Suc (Suc n)) ALL n . P n

I Name: div2 . induct

Korrekte Software 12 [21]

Theoreme und Beweise

lemma r e v _ a p p : " r e v ( app x s y s ) = app ( r e v y s ) ( r e v x s ) "

I Beweiszustand

I Ein oder mehrere Unterziele

I Beweisskript bearbeitet immer das erste Unterziele

I Anwendung einer Taktik oder Regel mittels apply

Korrekte Software 13 [21]

Automatisierungen / Beweismethoden

I Es gibt keine vollständige Beweisverfahren für Higher-Order-Logik (HOL), aber Teile lassen sich automatisieren

I Simplifikation: simp

IWendet alle verwendbaren Simplifikationsregeln an

IDatatypdefinitionen, Funktionsdefinitions (auch primrec), keine Konstanten Definitionen

ITheoreme nur wenn sie mit[simp]gekennzeichnet sind.

IKeywords:

add : < l i s t−o f−t he or em−names>

d e l : < l i s t−o f−t he or em−names>

o n l y : < l i s t−o f−t he or em−names>

I Etwas mehr Automatisierung: auto

Korrekte Software 14 [21]

Automatisierung

I Arithmetik:arith (eingebaut insimp, auto)

lemma " [ | ~ (m < n ) ; m < n + ( 1 : : n a t ) | ] ==> m = n "

lemma "m ~= ( n : : n a t ) ==> (m < n | n < m) "

I Noch etwas mehr fastforce (auch Quantoren) lemma " [ | \ < f o r a l l > x s \< i n > A .

\< e x i s t s > y s . x s = y s @ y s ; u s \< i n > A | ]

==> \< e x i s t s > n . l e n g t h u s = n + n "

I Noch etwas mehr:blast I Sehr viel mehr:sledgehammer

Korrekte Software 15 [21]

Darüberhinaus. . .

I Fallunterscheidung: case_tac a p p l y ( c a s e _ t a c x s )

I Induktion: induct

a p p l y ( i n d u c t x s )

a p p l y ( i n d u c t x s : r u l e d i v 2 . i n d u c t )

I Zwischenziele einführen: subgoal_tac

lemma " [ | A−−> B ; B−−> C | ] ==> A−−> C"

Korrekte Software 16 [21]

(3)

Konstanten / Funktionen / Prädikate

fun f o r e v e r : : " n a t => n a t " w h e r e

" f o r e v e r 0 = 1 " |

" f o r e v e r ( Suc n ) = f o r e v e r ( d i v 2 n ) "

I Beweis der Terminierung automatisch (falls Fehlschlag, muss man korrigieren oder selber helfen)

I Erzeugt spezielle Induktionsregel

P 0 ^

n.P (div2 n)=⇒P n ALL n . P n

I Name: div2 . induct

Korrekte Software 17 [21]

Einzelne Regeln

I Manchmal helfen die Taktiken nicht, oder machen zu viel, und man muss einzelne Beweisschritte eingeben.

I Basisbeweisschritte sind Kalkülregeln (ähnlich wie Operationale/Axiomatische Semantik)

Γ =⇒?P Γ =⇒?Q

Γ =⇒?P∧?Q conjI Γ,?P,?Q=⇒G Γ,?P∧?Q=⇒GconjE

I rule: match Conclusion und wendet Regel rückwärts an (Einführungsregeln)

I erule: match Conclusionundeine Assumption, wendet Regel an (Eliminationsregeln)

I drule: match eine Assumption, wendet Regel an und löscht verwendete Assumption

I frule: wie drule ohne das Assumption gelöscht wird.

Korrekte Software 18 [21]

Weitere Einführungsregeln

Γ,A=⇒B Γ =⇒ABimpI

^x.[Γ =⇒(?Px)]

Γ =⇒ ∀x.(?Px) allI

Korrekte Software 19 [21]

Regeln für Gleichheit

Γ;s=t=⇒(Ps)

Γ;s=t=⇒(Pt)subst Γ;s=t=⇒(Pt) Γ;s=t=⇒(Ps)subst I subst, ssubst

I Parameter vorgeben: apply ( rule ssubst [where t="(f x)"and s="x"])

Korrekte Software 20 [21]

Theoreme finden

I Theoreme sind in Lemmata oder Definitionen in importierten Theorien von Main

I Im Reiter “query” im Eingabefeld “find” kann nach Theorem gesucht werden

I Verwende Patterns um nach Struktur zu suchen (Wildcard _)

I "_ + x = x’’

I Weitere Beispiele im Tutorial auf S.34

Korrekte Software 21 [21]

Referenzen

ÄHNLICHE DOKUMENTE

[r]

I Für Iterationen wird eine Invariante benötigt (die nicht hergeleitet werden kann).. Korrekte Software

3 Beweise innerhalb der Schleife

aber mit erheblichen Konsequenzen: Substitution. Korrekte Software

I Wir annotieren daher die Invarianten an Schleifen, und können dann die schwächste Vorbedingung und Verifikationsbedingungen.

I Die (operationale) Semantik einer imperativen Sprache wie C0 ist ein Zustandsübergang: das System hat einen impliziten Zustand, der durch Zuweisung von Werten an Adressen

Korrekte Software: Grundlagen und Methoden Vorlesung 8 vom 29.05.18: Modellierung und Spezifikation.. Serge Autexier,

Korrekte Software: Grundlagen und Methoden Vorlesung 8 vom 22.05.17: Funktionen und Prozeduren. Serge Autexier,