Techniken zur Entwicklung Korrekter Software 1

Werbung
Techniken zur Entwicklung Korrekter Software 1
Vorlesung vom 15.01.08:
Beweisen in Isabelle
Christoph Lüth & Lutz Schröder
WS 07/08
Lüth & Schröder: TEKS 1
1
WS 07/08
Wo sind wir?
Aussagenlogik
Prädikatenlogik
Isabelle
Logik höherer Stufe
Isabelle/HOL
Lüth & Schröder: TEKS 1
2
WS 07/08
Fahrplan
Typdefinitionen
Nützliche vordefinierte Datentypen in Isabelle
Automatische Beweisprozeduren
Lüth & Schröder: TEKS 1
3
WS 07/08
Typdefinitionen in Isabelle
Definition eines neuen Typen:
Gegeben Typ R, Prädikat S : R ⇒ Bool
Neuer Typ T mit absT : R ⇒ T , repT : T ⇒ R so dass
S und T isomorph: ∀t.absT (repT t) = t, ∀r .Sr −→ repT (absT r ) = r
T nicht leer: ∃t.St
absT
S
T
R
repT
Lemma: Typdefinitionen sind konservative Erweiterungen.
Lüth & Schröder: TEKS 1
4
WS 07/08
Beispiel: Produkte
Ausgangstyp Rα,β ≡ α ⇒ β ⇒ Bool
Neuer Typ Tα,β ≡ α × β
Idee: Prädikat p : α ⇒ β ⇒ Bool repräsentiert (a, b)
p(x, y ) = > ←→ x = a ∧ y = b
Sf = ∃a b.(f = λx y .x = a ∧ y = b)
Abstraktionsfunktion:
abs × p = ιa b. p a b
Repräsentationsfunktion:
rep × (a, b) = p mit p(x, y ) = > ←→ x = a ∧ y = b
Damit Eigenschaften als Theoreme herleitbar.
Lüth & Schröder: TEKS 1
5
WS 07/08
Natürliche Zahlen und unendliche Datentypen
Natürliche Zahlen: nicht konservativ!
Erfordert zusätzliches Axiom: Unendlichkeit.
Neuer Typ ind mit Z :: ind, S : ind ⇒ S und
inj S
Sx 6= Z
Damit nat definierbar.
Warum ind? Auch für andere Datentypen
Lüth & Schröder: TEKS 1
6
WS 07/08
Algebraische Datentypen
In Isabelle/HOL wie in CASL, aber
Eigenschaften werden (hinter den Kulissen) bewiesen
Einschränkung: nur kovariante Rekursion
Beispiel:
datatype Colour = Red | Green | Blue | Yellow | White
datatype Result = OK | Error nat | Exception string
datatype ’a Tree = Node "’a Tree" ’a "’a Tree"
| Leaf
datatype ’a NTree = Node "nat => ’a"
Nicht erlaubt:
datatype T = C "T=> bool"
Lüth & Schröder: TEKS 1
7
WS 07/08
Nützliche vordefinierte Typen
Theorie Set: getypte Mengen, α set ≡ α ⇒ Bool
Theorien Sum und Produkt: Summe und Produkte
Numerische Typen:
Natürliche Zahlen nat, ganze Zahlen int, reele Zahlen real, komplexe
Zahlen complex.
Arithmetische Operatoren +, -, *; Konstanten (“12343423”);
Entscheidungsprozeduren
Theorie Datatype: α option ist entweder Some x oder None
Theorie List: Listen α list
Theorie Map: partielle Abbildungen α ~=> β
Lüth & Schröder: TEKS 1
8
WS 07/08
Simplifikation
Simplifikation ist Termersetzung:
Gegeben Theorem s = t, ersetze s durch t.
Benutzung: apply (simp)
Nutzt Gleichungen und Ungleichungen:
Funktionsdefinitionen
Vereinfachungsregeln für Datentypen
Deklarierte Theoreme
Annahmen des lokalen Subgoals
Benutzt bedingte Gleichungen: s1 = t1 , . . . , sn = tn =⇒ s = t
Ersetzt s durch t, wenn Gleichungen s1 = t1 . . . sn = tn rekursiv gezeigt
werden können.
Instantiiert keine Meta-Variablen
Erzeugt keine neuen Subgoals, nur Vereinfachung
Lüth & Schröder: TEKS 1
9
WS 07/08
Klassische Beweiser
Beweisplaner: blast
Konstruiert Beweis durch Suche
Gelingt oder schlägt fehl: keine neuen Subgoals
Klassischer Beweiser: clarify
Wendet Einführungs- und Eliminationsregeln systematisch an
Keine neuen Subgoals, nur Vereinfachung
Sicher: keine unbeweisbaren Subgoals
clarsimp: Kombination mit Simplifikation
Vollautomatisch: auto
Kombination verschiedener Beweiser
Instantiiert Meta-Variablen, erzeugt neue Subgoals
Unsicher: kann unbeweisbare Subgoals erzeugen
Lüth & Schröder: TEKS 1
10
WS 07/08
Zusammenfassung
Isabelle: LCF-Architektur mit logischem Kern und Meta-Logik
Typdefinitionen: Einschränkung bestehender Typen
Der Typ ind: Unendlichkeitsaxiom
Nützliche vordefinierte Typen
numerische Typen, Listen, Abbildungen, Mengen. . .
Nützliche Beweisprozeduren: simp, blast, clarify, auto
Lüth & Schröder: TEKS 1
11
WS 07/08
Herunterladen