| 11408 |      1 | \chapter*{Preface}
 | 
|  |      2 | \markboth{Preface}{Preface}
 | 
|  |      3 | 
 | 
| 12539 |      4 | This volume is a self-contained introduction to interactive proof
 | 
| 12813 |      5 | in higher-order logic (HOL), using the proof assistant Isabelle 2002. 
 | 
| 12539 |      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
 | 
| 11408 |      9 | discussion of meta-theory.  It is written for potential users rather
 | 
|  |     10 | than for our colleagues in the research world.
 | 
|  |     11 | 
 | 
| 11450 |     12 | Another departure from previous documentation is that we describe Markus
 | 
|  |     13 | Wenzel's proof script notation instead of ML tactic scripts.  The latter
 | 
| 11408 |     14 | make it easier to introduce new tactics on the fly, but hardly anybody
 | 
|  |     15 | does that.  Wenzel's dedicated syntax is elegant, replacing for example
 | 
|  |     16 | eight simplification tactics with a single method, namely \isa{simp},
 | 
|  |     17 | with associated options.
 | 
|  |     18 | 
 | 
| 12539 |     19 | The book has three parts.  
 | 
|  |     20 | \begin{itemize}
 | 
|  |     21 | \item 
 | 
| 12669 |     22 | The first part, \textbf{Elementary Techniques},
 | 
| 12539 |     23 | shows how to model functional programs in higher-order logic.  Early
 | 
|  |     24 | examples involve lists and the natural numbers.  Most proofs
 | 
|  |     25 | are two steps long, consisting of induction on a chosen variable
 | 
|  |     26 | followed by the \isa{auto} tactic.  But even this elementary part
 | 
|  |     27 | covers such advanced topics as nested and mutual recursion.
 | 
|  |     28 | \item 
 | 
|  |     29 | The second part, \textbf{Logic and Sets}, presents a collection of
 | 
|  |     30 | lower-level tactics that you can use to apply rules selectively.  It
 | 
|  |     31 | also describes Isabelle/HOL's treatment of sets, functions and
 | 
|  |     32 | relations and explains how to define sets inductively.  One of the
 | 
|  |     33 | examples concerns the theory of model checking, and another is drawn
 | 
|  |     34 | from a classic textbook on formal languages.
 | 
|  |     35 | \item 
 | 
|  |     36 | The third part, \textbf{Advanced Material}, describes a variety of
 | 
|  |     37 | other topics.  Among these are the real numbers, records and
 | 
|  |     38 | overloading.  Esoteric techniques are described involving induction and
 | 
|  |     39 | recursion.  A whole chapter is devoted to an extended example: the
 | 
|  |     40 | verification of a security protocol.
 | 
|  |     41 | \end{itemize}
 | 
|  |     42 | 
 | 
| 12327 |     43 | The typesetting relies on Wenzel's theory presentation tools.  An
 | 
|  |     44 | annotated source file is run, typesetting the theory
 | 
|  |     45 | % and any requested Isabelle responses
 | 
| 12646 |     46 | in the form of a \LaTeX\ source file.  This book is derived almost entirely
 | 
|  |     47 | from output generated in this way.  The final chapter of Part~I explains how
 | 
|  |     48 | users may produce their own formal documents in a similar fashion.
 | 
| 11408 |     49 | 
 | 
| 12641 |     50 | Isabelle's \hfootref{http://isabelle.in.tum.de/}{web site} contains links to
 | 
|  |     51 | the download area and to documentation and other information.  Most Isabelle
 | 
|  |     52 | sessions are now run from within David Aspinall's\index{Aspinall, David}
 | 
|  |     53 | wonderful user interface, \hfootref{http://www.proofgeneral.org/}{Proof
 | 
|  |     54 |   General}, even together with the
 | 
| 13141 |     55 | \hfootref{http://x-symbol.sourceforge.net}{X-Symbol} package for XEmacs.  This
 | 
|  |     56 | book says very little about Proof General, which has its own documentation.
 | 
|  |     57 | In order to run Isabelle, you will need a Standard ML compiler.  We recommend
 | 
|  |     58 | \hfootref{http://www.polyml.org/}{Poly/ML}, which is free and gives the best
 | 
|  |     59 | performance.  The other fully supported compiler is
 | 
| 12641 |     60 | \hfootref{http://cm.bell-labs.com/cm/cs/what/smlnj/index.html}{Standard ML of
 | 
|  |     61 |   New Jersey}.
 | 
| 12539 |     62 | 
 | 
| 11408 |     63 | This tutorial owes a lot to the constant discussions with and the valuable
 | 
| 11547 |     64 | feedback from the Isabelle group at Munich: Stefan Berghofer, Olaf
 | 
|  |     65 | M{\"u}ller, Wolfgang Naraschewski, David von Oheimb, Leonor Prensa Nieto,
 | 
| 12812 |     66 | Cornelia Pusch, Norbert Schirmer and Martin Strecker. Stephan
 | 
| 11547 |     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
 | 
| 12539 |     69 | Vos.
 | 
| 11408 |     70 | 
 | 
| 11547 |     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}
 | 
|  |     75 | project).
 |