Formale Methoden der Softwaretechnik 1 Vorlesung vom 30.11.09:
Isabelle/HOL
Christoph L¨uth, Lutz Schr¨oder Universit¨at Bremen Wintersemester 2009/10
1
Fahrplan
ITeil I: Grundlagen der Formalen Logik ITeil II: Arbeiten mit Isabelle
I Grundlagen von Isabelle
I Logik h¨oherer Ordnung in Isabelle
I Isabelle/HOL
I Beweise ¨uber funktionale Programme in Isabelle/HOL
I Beweisen mit Isabelle: Simplifikation, Taktiken
ITeil III: Modellierung imperative Programme
2
Heute
IVertrauensw¨urdigkeitvon Isabelle
ISystemarchitektur
IKonservative Erweiterung
ITypdefinitionen
IN¨utzliche Typen
3
Generizit¨ at
IIsabelleist einlogisches Rahmenwerk
IBeliebigeLogiken in Isabelle einbetten
IBsp:HOL,ZF,LK, Typentheorie . . .
IHier nurHOL
4
Vertrauensw¨ urdigkeit
IWann k¨onnen wir Isabelle-Beweisentrauen?
1.SinnvolleModellierung 2.Isabelle korrektimplementiert 3.Logikkonsistent
IProblem: ca. 150 Kloc SML Quellcode, ca. 310 Kloc Beweise IMaßnahmen:
1.Review
2.LCF-Systemarchitektur 3.Konservative Erweiterung
5
LCF-Architektur
IProblem:Korrektheitder Implementierung IReduktiondes Problems:
I Korrektheit eineslogischen Kerns
I Rest durchTypisierung
IAbstrakter Datentypthm,Inferenz-RegelnalsOperationen val assume: cterm -> thm
val implies_intr: cterm -> thm -> thm ILogischer Kern:
I Typcheck,Signaturen,Unifikation,Meta-Logik: ca. 5500 LOC
I HandhabbareGr¨oße
6
Konservative Erweiterung
ISignaturΣ =hT,Ωi
ITypdeklarationenT, Operationen Ω
IDefiniert dieSyntax: TermeTΣ¨uber Σ ITheorieTh=hΣ,Axi
IAxiomeAx
ITheoreme:Thm(Th)def={t| Th`t}
IErweiterung: Σ⊆Σ0,Th⊆ Th0
IKonservativ gdw.t∈Thm(Th0),t∈TΣdannt∈Thm(Th)
IKeineneuenTheoreme ¨uberalteSymbole
7
Konservative Erweiterung in Isabelle
IIsabelle: Konstruktion von Theorien durchkonservative Erweiterungen IKonstantendefinition (zur Signatur Σ):
c::σ c≡t
I c6∈Σ
I t∈TΣ(enth¨altnichtc)
I Typvariablen intauch inσ
ILemma: KonstantendefinitionistkonservativeErweiterung IWeitere konservative Erweiterungen:
I Typdefinitionen,Datentypen.
8
Isabelle Theorien
IStrukturierung der Entwicklung inTheorien IKopf:
theory N
imports T1 T2 ... Tn begin
ITheorien bildenDAG ITheorieelemente (Auszug):
ITypdeklaration:typedecl t
ITypsynonym:types t = S
IKonstantendeklaration:consts f :: T
IKonstantendefinitionendefinition f :: T "f == E"
IEdarffnicht enthalten,FV(E)⊆FV(f)
IBeweise:lemmaodertheorem
9
Typdefinitionen in Isabelle
Definitioneines neuenTypen:
IGegeben TypR, Pr¨adikatS:R⇒Bool
INeuer TypT mitabsT: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
ILemma:Typdefinitionen sindkonservative Erweiterungen.
IIn dieser Formseltendirekt benutzt.
10
Beispiel: Produkte
IAusgangstypRα,β≡α⇒β⇒Bool INeuer TypTα,β≡α×β
IIdee: Pr¨adikatp:α⇒β⇒Boolrepr¨asentiert (a,b) p(x,y) =true←→x=a∧y=b IS f =∃a b.(f =λx y.x=a∧y=b)
IAbstraktionsfunktion:
abs×p=ιa b.p a b
IRepr¨asentationsfunktion:
rep×(a,b) =pmitp(x,y) =true←→x=a∧y=b IDamitEigenschaftenalsTheoremeherleitbar.
11
N¨ utzliche Isabelle/HOL-Typen
IVordefinierte Typen
IAlgebraische Datentypen
IBenannte Produkte (labelled records)
12
Nat¨ urliche Zahlen und unendliche Datentypen
INat¨urliche Zahlen: nichtkonservativ!
IErfordertzus¨atzlichesAxiomUnendlichkeit.
INeuer TypindmitZ::ind,S:ind⇒Sund inj S S x6=Z
IDamitnatdefinierbar.
IWarumind? Auch f¨urandereDatentypen
13
N¨ utzliche vordefinierte Typen
Theorie Typ Bedeutung
Set ’a set getypteMengen(’a=> bool)
Sum ’a + ’b Summentyp
Product Type ’a * ’b Produktyp
Nat nat Nat¨urliche 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)
∗inComplex Main
http://isabelle.in.tum.de/dist/library/HOL/index.html
14
Algebraische Datentypen
IInIsabelle/HOLwie inHaskell
IEigenschaften werden (hinter den Kulissen)bewiesen:
IInjektivit¨atder Konstruktoren
IDisjunktheitder Konstruktoren
IGeneriertheitdurch Konstrukturen
IAbgeleitete Schemen:
IInduktion
IFallunterscheidung
IEinschr¨ankung: nurkovarianteRekursion
15
Algebraische Datentypen
IBeispiel:
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"
INichterlaubt:
datatype T = C "T=> bool"
16
Labelled Records
IInIsabelle/HOL¨ahnlich wie inHaskell ISyntax:
record point2d = x :: int y :: int
IDefiniert:
IKonstrukturen(|x= 3, y= 4|)
ISelektorenx :: point2d => int
IUpdatep (|x := 3 |)
IErweiterbar:
record point3d = point2d + z :: int
17
Zusammenfassung
IIsabelle:LCF-Architekturmitlogischem KernundMeta-Logik
IKonservative Erweiterung: erh¨altKonsistenz
ITypdefinitionen: Einschr¨ankung bestehender Typen
IDer Typind:Unendlichkeitsaxiom
IN¨utzliche Typen: vordefinierte, algebraische Datentypen, labelled records
18