Formale Methoden der Softwaretechnik Vorlesung vom 09.06.11: Das Isabelle-System
Till Mossakowski & Christoph Lüth Universität Bremen Sommersemester 2011
Rev. 1483 1 [19]
Fahrplan
I Aussagenlogik I Prädikatenlogik I Isabelle I: Grundlagen
IAussagenlogik und natürlisches Schließen
IPrädikatenlogik und Quantoren
ILogik höherer Stufe
IIsabelle: Definitionen und konservative Erweiterung
IIsabelle: Automatische Beweisprozeduren I Isabelle II: Anwendungen
2 [19]
Heute
I Vertrauenswürdigkeitvon Isabelle
I Systemarchitektur
I Konservative Erweiterung
I Typdefinitionen
I Nützliche Typen
3 [19]
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
4 [19]
LCF-Architektur
I Problem:Korrektheitder Implementierung I Reduktiondes Problems:
I Korrektheit eineslogischen Kerns
I Rest durchTypisierung
I Abstrakter Datentypthm,Inferenz-RegelnalsOperationen 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
5 [19]
Konservative Erweiterung
I SignaturΣ =hT,Ωi
ITypdeklarationenT, OperationenΩ
IDefiniert dieSyntax: TermeTΣüberΣ I TheorieTh=hΣ,Axi
IAxiomeAx
ITheoreme:Thm(Th)def={t| Th`t}
I Erweiterung:Σ⊆Σ0,Th⊆ Th0
IKonservativ gdw.t∈Thm(Th0),t∈TΣdannt∈Thm(Th)
IKeineneuenTheoreme überalteSymbole
6 [19]
Konservative Erweiterung in Isabelle
I Isabelle: Konstruktion von Theorien durchkonservative Erweiterungen I Konstantendefinition (zur SignaturΣ):
c::σ c≡t
I c6∈Σ
I t∈TΣ(enthältnichtc)
I Typvariablen intauch inσ
I Lemma: KonstantendefinitionistkonservativeErweiterung I Weitere konservative Erweiterungen:
I Typdefinitionen,Datentypen.
7 [19]
Isabelle Theorien
I Strukturierung der Entwicklung inTheorien
ITheorien bildenDAG I Theorieelemente (Auszug):
IKonstantendeklaration:consts f :: T
IKonstantendefinitionendefinition f :: T where "f == E"
IEdarffnicht enthalten,FV(E)⊆FV(f),FVType(E)⊆FVType(f)
ITypdeklaration:typedecl t
ITypsynonym:types t = S
IBeweise:lemmaodertheorem
ISonstiges (Syntax erweiterbar)
8 [19]
Typdefinitionen in Isabelle
Definitioneines neuenTypen:
I Gegeben TypR, PrädikatS:R⇒Bool
I Neuer TypTmitabsT:R⇒T,repT:T⇒Rso dass
I SundTisomorph:∀t.absT(repTt) =t,∀r.S r−→repT(absTr) =r
I Tnicht leer:∃t.S t
R S
repT absT
T
I Lemma:Typdefinitionen sindkonservative Erweiterungen.
I In dieser Formseltendirekt benutzt.
9 [19]
Beispiel: Produkte
I AusgangstypRα,β≡α⇒β⇒Bool I Neuer TypTα,β≡α×β
IIdee: 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) =pmitp x y=true←→x=a∧y=b
I Abstraktionsfunktion:
abs×p=ιa b.p a b
I DamitEigenschaftenalsTheoremeherleitbar.
10 [19]
Nützliche Isabelle/HOL-Typen
I Vordefinierte Typen
I Algebraische Datentypen
I Benannte Produkte (labelled records)
11 [19]
Natürliche Zahlen und unendliche Datentypen
I Natürliche Zahlen: nichtkonservativ!
I ErfordertzusätzlichesAxiomUnendlichkeit.
I Neuer Typindmit KonstantenZ::ind,S:ind⇒indund inj S S x6=Z
I Damitnatdefinierbar.
I Warumind? Auch fürandereDatentypen
12 [19]
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 xoderNone
List ’a list Listen
Map ’a ~=> ’b partielleAbbildungen (’a => ’b option)
∗Typsynonym
http://isabelle.in.tum.de/dist/library/HOL/index.html
13 [19]
Algebraische Datentypen
I InIsabelle/HOLwie inHaskell
I Eigenschaften werden (hinter den Kulissen)bewiesen:
IInjektivitätder Konstruktoren
IDisjunktheitder Konstruktoren
IGeneriertheitdurch Konstrukturen
IAbgeleitete Schemen:
IInduktion
IFallunterscheidung
I Einschränkung: nurkovarianteRekursion
14 [19]
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"
15 [19]
Labelled Records
I InIsabelle/HOLähnlich wie inHaskell I Syntax:
record point2d = x :: int y :: int
IDefiniert:
IKonstrukturen(|x= 3, y= 4|)
ISelektorenx :: point2d => int
IUpdatep (|x := 3 |)
I Erweiterbar:
record point3d = point2d + z :: int
16 [19]
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
17 [19]
Rekursion
Primitiv:
funf :: τ where
equations
Allgemein:
functionf :: τ where
equations
bycompleteness-proof
termination bytermination-proof
18 [19]
Zusammenfassung
I Isabelle:LCF-Architekturmitlogischem 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:funundfunction
I Fast wie in Haskell, aber immertotal.
19 [19]