doc-src/TutorialI/preface.tex
author wenzelm
Mon, 13 May 2002 10:40:59 +0200
changeset 13141 f4ed10eaaff8
parent 12821 ed702a3af45c
child 14179 04f905c13502
permissions -rw-r--r--
updated X-Symbol URL;
     1 \chapter*{Preface}
     2 \markboth{Preface}{Preface}
     3 
     4 This volume is a self-contained introduction to interactive proof
     5 in higher-order logic (HOL), using the proof assistant Isabelle 2002. 
     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.
    11 
    12 Another departure from previous documentation is that we describe Markus
    13 Wenzel's proof script notation instead of ML tactic scripts.  The latter
    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 
    19 The book has three parts.  
    20 \begin{itemize}
    21 \item 
    22 The first part, \textbf{Elementary Techniques},
    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 
    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
    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.
    49 
    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
    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
    60 \hfootref{http://cm.bell-labs.com/cm/cs/what/smlnj/index.html}{Standard ML of
    61   New Jersey}.
    62 
    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 and Martin Strecker. 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
    69 Vos.
    70 
    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).