2 \markboth{Preface}{Preface}
4 This volume is a self-contained introduction to interactive proof
5 in higher-order logic (HOL), using the proof assistant Isabelle/HOL\@.
6 Compared with existing Isabelle documentation,
7 it provides a direct route into higher-order logic, which most people
8 prefer these days. It bypasses first-order logic and minimizes
9 discussion of meta-theory. It is written for potential users rather
10 than for our colleagues in the research world.
12 \index{Wenzel, Markus}%
13 Another departure from previous documentation is that we describe Markus
14 Wenzel's proof script notation instead of ML tactic scripts. The latter
15 make it easier to introduce new tactics on the fly, but hardly anybody
16 does that. Wenzel's dedicated syntax is elegant, replacing for example
17 eight simplification tactics with a single method, namely \isa{simp},
18 with associated options.
20 The book has three parts.
23 The first part, \textbf{Basic Techniques},
24 shows how to model functional programs in higher-order logic. Early
25 examples involve lists and the natural numbers. Most proofs
26 are two steps long, consisting of induction on a chosen variable
27 followed by the \isa{auto} tactic. But even this elementary part
28 covers such advanced topics as nested and mutual recursion.
30 The second part, \textbf{Logic and Sets}, presents a collection of
31 lower-level tactics that you can use to apply rules selectively. It
32 also describes Isabelle/HOL's treatment of sets, functions and
33 relations and explains how to define sets inductively. One of the
34 examples concerns the theory of model checking, and another is drawn
35 from a classic textbook on formal languages.
37 The third part, \textbf{Advanced Material}, describes a variety of
38 other topics. Among these are the real numbers, records and
39 overloading. Esoteric techniques are described involving induction and
40 recursion. A whole chapter is devoted to an extended example: the
41 verification of a security protocol.
44 The typesetting relies on Wenzel's theory presentation tools. An
45 annotated source file is run, typesetting the theory
46 % and any requested Isabelle responses
47 in the form of a \TeX\ source file. This book is
48 derived almost entirely from output generated in this way.
51 \href{http://isabelle.in.tum.de/}{web site}
52 contains links to the download area and to documentation and other
53 information. Most Isabelle sessions are now run from within David
54 Aspinall's wonderful user interface,
55 \href{http://www.proofgeneral.org/}{Proof General}. This book says
56 very little about Proof General, which has its own documentation. In
57 order to run Isabelle, you will need a Standard ML compiler. We
58 recommend \href{http://www.polyml.org/}{Poly/ML}, which is free and
59 gives the best performance. The other supported compiler is
60 \href{http://cm.bell-labs.com/cm/cs/what/smlnj/index.html}{Standard
63 This tutorial owes a lot to the constant discussions with and the valuable
64 feedback from the Isabelle group at Munich: Stefan Berghofer, Olaf
65 M{\"u}ller, Wolfgang Naraschewski, David von Oheimb, Leonor Prensa Nieto,
66 Cornelia Pusch, Norbert Schirmer, Martin Strecker and Markus Wenzel. Stephan
67 Merz was also kind enough to read and comment on a draft version. We
68 received comments from Stefano Bistarelli, Gergely Buday and Tanja
71 The research has been funded by many sources, including the {\sc dfg} grants
72 Ni~491/2, Ni~491/3, Ni~491/4 and the {\sc epsrc} grants GR\slash K57381,
73 GR\slash K77051, GR\slash M75440, GR\slash R01156\slash 01 and by the
74 \textsc{esprit} working groups 21900 and IST-1999-29001 (the \emph{Types}