Formale Methoden der Softwaretechnik Vorlesung vom 09.06.11: Das Isabelle-System
Till Mossakowski & Christoph Lüth
Universität Bremen
Sommersemester 2011
Fahrplan
I Aussagenlogik
I Prädikatenlogik
I Isabelle I: Grundlagen
I Aussagenlogik und natürlisches Schließen
I Prädikatenlogik und Quantoren
I Logik höherer Stufe
I Isabelle: Definitionen und konservative Erweiterung
I Isabelle: Automatische Beweisprozeduren
I Isabelle II: Anwendungen
Heute
I Vertrauenswürdigkeitvon Isabelle
I Systemarchitektur
I Konservative Erweiterung
I Typdefinitionen
I Nützliche Typen
Vertrauenswürdigkeit
I Wann können wir Isabelle-Beweisentrauen?
1. SinnvolleModellierung 2. Isabelle korrektimplementiert 3. Logikkonsistent
I Problem: ca. 150 Kloc SML Quellcode, ca. 310 Kloc Beweise
I Maßnahmen:
1. Review
2. LCF-Systemarchitektur 3. Konservative Erweiterung
Vertrauenswürdigkeit
I Wann können wir Isabelle-Beweisentrauen?
1. SinnvolleModellierung 2. Isabelle korrektimplementiert 3. Logikkonsistent
I Problem: ca. 150 Kloc SML Quellcode, ca. 310 Kloc Beweise
I Maßnahmen:
1. Review
2. LCF-Systemarchitektur 3. Konservative Erweiterung
LCF-Architektur
I Problem:Korrektheitder Implementierung
I Reduktiondes Problems:
I Korrektheit eineslogischen Kerns
I Rest durchTypisierung
I Abstrakter Datentypthm,Inferenz-Regelnals Operationen val assume: cterm -> thm
val implies_intr: cterm -> thm -> thm
I Logischer Kern:
I Typcheck,Signaturen,Unifikation,Meta-Logik: ca. 5500 LOC
I HandhabbareGröße
Konservative Erweiterung
I SignaturΣ =hT,Ωi
I TypdeklarationenT, OperationenΩ
I Definiert dieSyntax: TermeTΣ überΣ
I TheorieTh=hΣ,Axi
I AxiomeAx
I Theoreme:Thm(Th)def={t | Th`t}
I Erweiterung:Σ⊆Σ0,Th⊆ Th0
I Konservativ gdw.t ∈Thm(Th0),t ∈TΣ dannt ∈Thm(Th)
I KeineneuenTheoreme über alteSymbole
Konservative Erweiterung
I SignaturΣ =hT,Ωi
I TypdeklarationenT, OperationenΩ
I Definiert dieSyntax: TermeTΣ überΣ
I TheorieTh=hΣ,Axi
I AxiomeAx
I Theoreme:Thm(Th)def={t | Th`t}
I Erweiterung:Σ⊆Σ0,Th⊆ Th0
I Konservativ gdw.t ∈Thm(Th0),t ∈TΣ dannt ∈Thm(Th)
I KeineneuenTheoreme über alteSymbole
Konservative Erweiterung in Isabelle
I Isabelle: Konstruktion von Theorien durch konservative Erweiterungen
I Konstantendefinition (zur SignaturΣ):
c ::σ c ≡t
I c6∈Σ
I t∈TΣ (enthältnichtc)
I Typvariablen int auch inσ
I Lemma: Konstantendefinitionist konservativeErweiterung
I Weitere konservative Erweiterungen:
I Typdefinitionen,Datentypen.
Isabelle Theorien
I Strukturierung der Entwicklung inTheorien
I Theorien bildenDAG
I Theorieelemente (Auszug):
I Konstantendeklaration:consts f :: T
I Konstantendefinitionendefinition f :: T where "f == E"
I Edarf fnicht enthalten,FV(E)⊆FV(f),FVType(E)⊆FVType(f)
I Typdeklaration:typedecl t
I Typsynonym:types t = S
I Beweise:lemmaoder theorem
I Sonstiges (Syntax erweiterbar)
Typdefinitionen in Isabelle
Definitioneines neuenTypen:
I Gegeben TypR, Prädikat S :R⇒Bool
I Neuer TypT mitabsT :R⇒T,repT :T ⇒R so dass
I S undT isomorph:∀t.absT(repTt) =t,∀r.S r−→repT(absTr) =r
I T nicht leer:∃t.S t
R S
repT absT
T
I Lemma:Typdefinitionen sindkonservative Erweiterungen.
I In dieser Formseltendirekt benutzt.
Beispiel: Produkte
I AusgangstypRα,β ≡α⇒β ⇒Bool
I Neuer TypTα,β≡α×β
I Idee: Prädikatp:α⇒β⇒Boolrepräsentiert(a,b) p x y=true←→x=a∧y =b
I S f =∃a b.(f =λx y.x =a∧y =b)
I Repräsentationsfunktion:
rep×(a,b) =p mitp x y =true←→x =a∧y=b
I Abstraktionsfunktion:
abs×p =ιa b.p a b
I DamitEigenschaften als Theoremeherleitbar.
Nützliche Isabelle/HOL-Typen
I Vordefinierte Typen
I Algebraische Datentypen
I Benannte Produkte (labelled records)
Natürliche Zahlen und unendliche Datentypen
I Natürliche Zahlen: nichtkonservativ!
I ErfordertzusätzlichesAxiomUnendlichkeit.
I Neuer Typind mit Konstanten Z ::ind,S :ind⇒indund inj S S x 6=Z
I Damitnat definierbar.
I Warumind? Auch für andereDatentypen
Nützliche vordefinierte Typen
Theorie Typ Bedeutung
Set ’a set getypteMengen∗ (’a=> bool)
Sum ’a + ’b Summentyp
Product_Type ’a * ’b Produktyp
Nat nat Natürliche Zahlen
Int int ganze Zahlen
Real real reelle Zahlen
Complex complex komplexe Zahlen
Datatype ’a option Haskell’sMaybe,Some xoder None
List ’a list Listen
Map ’a ~=> ’b partielle Abbildungen (’a => ’b option)
∗ Typsynonym
http://isabelle.in.tum.de/dist/library/HOL/index.html
Algebraische Datentypen
I InIsabelle/HOLwie in Haskell
I Eigenschaften werden (hinter den Kulissen)bewiesen:
I Injektivitätder Konstruktoren
I Disjunktheitder Konstruktoren
I Generiertheitdurch Konstrukturen
I Abgeleitete Schemen:
I Induktion
I Fallunterscheidung
I Einschränkung: nurkovarianteRekursion
Algebraische Datentypen
I 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 ’a "nat => ’a Ntree"
I Nichterlaubt:
datatype T = C "T=> bool"
Labelled Records
I InIsabelle/HOLähnlich wie inHaskell
I Syntax:
record point2d = x :: int y :: int
I Definiert:
I Konstrukturen(|x= 3, y= 4|)
I Selektorenx :: point2d => int
I Updatep (|x := 3 |)
I Erweiterbar:
record point3d = point2d + z :: int
Definition von Funktionen
I In HOL: alle Funktionentotal
I Need-to-know Prinzip: undefiniert ist unbeweisbar
I Der einfache Fall:primitiv rekursiv
I Der allgemeine Fall
I Immer mitTerminationsbeweis
Rekursion
Primitiv:
funf :: τ where
equations
Allgemein:
functionf :: τ where
equations
bycompleteness-proof
termination bytermination-proof
Zusammenfassung
I Isabelle:LCF-Architektur mit logischem KernundMeta-Logik
I Konservative Erweiterung: erhältKonsistenz
I Typdefinitionen: Einschränkung bestehender Typen
I Der Typind:Unendlichkeitsaxiom
I Nützliche Typen: vordefinierte, algebraische Datentypen, labelled records
I Funktionsdefinition:fun undfunction
I Fast wie in Haskell, aber immertotal.