doc-src/TutorialI/preface.tex
author chaieb
Wed, 19 May 2004 11:23:59 +0200
changeset 14758 af3b71a46a1c
parent 14296 bcba1d67f854
child 16306 8117e2037d3b
permissions -rw-r--r--
A new implementation for presburger arithmetic following the one suggested in technical report Chaieb Amine and Tobias Nipkow. It is generic an smaller. the tactic has also changed and allows the abstaction over fuction occurences whose type is nat or int.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11408
582433f7f618 new preface
paulson
parents:
diff changeset
     1
\chapter*{Preface}
582433f7f618 new preface
paulson
parents:
diff changeset
     2
\markboth{Preface}{Preface}
582433f7f618 new preface
paulson
parents:
diff changeset
     3
12539
368414099877 additional material
paulson
parents: 12489
diff changeset
     4
This volume is a self-contained introduction to interactive proof
12813
paulson
parents: 12812
diff changeset
     5
in higher-order logic (HOL), using the proof assistant Isabelle 2002. 
12539
368414099877 additional material
paulson
parents: 12489
diff changeset
     6
Compared with existing Isabelle documentation,
368414099877 additional material
paulson
parents: 12489
diff changeset
     7
it provides a direct route into higher-order logic, which most people
368414099877 additional material
paulson
parents: 12489
diff changeset
     8
prefer these days. It bypasses first-order logic and minimizes
11408
582433f7f618 new preface
paulson
parents:
diff changeset
     9
discussion of meta-theory.  It is written for potential users rather
582433f7f618 new preface
paulson
parents:
diff changeset
    10
than for our colleagues in the research world.
582433f7f618 new preface
paulson
parents:
diff changeset
    11
11450
1b02a6c4032f tweaks and indexing
paulson
parents: 11408
diff changeset
    12
Another departure from previous documentation is that we describe Markus
1b02a6c4032f tweaks and indexing
paulson
parents: 11408
diff changeset
    13
Wenzel's proof script notation instead of ML tactic scripts.  The latter
11408
582433f7f618 new preface
paulson
parents:
diff changeset
    14
make it easier to introduce new tactics on the fly, but hardly anybody
582433f7f618 new preface
paulson
parents:
diff changeset
    15
does that.  Wenzel's dedicated syntax is elegant, replacing for example
582433f7f618 new preface
paulson
parents:
diff changeset
    16
eight simplification tactics with a single method, namely \isa{simp},
582433f7f618 new preface
paulson
parents:
diff changeset
    17
with associated options.
582433f7f618 new preface
paulson
parents:
diff changeset
    18
12539
368414099877 additional material
paulson
parents: 12489
diff changeset
    19
The book has three parts.  
368414099877 additional material
paulson
parents: 12489
diff changeset
    20
\begin{itemize}
368414099877 additional material
paulson
parents: 12489
diff changeset
    21
\item 
12669
c1436070c21e \part{Elementary Techniques};
wenzelm
parents: 12646
diff changeset
    22
The first part, \textbf{Elementary Techniques},
12539
368414099877 additional material
paulson
parents: 12489
diff changeset
    23
shows how to model functional programs in higher-order logic.  Early
368414099877 additional material
paulson
parents: 12489
diff changeset
    24
examples involve lists and the natural numbers.  Most proofs
368414099877 additional material
paulson
parents: 12489
diff changeset
    25
are two steps long, consisting of induction on a chosen variable
368414099877 additional material
paulson
parents: 12489
diff changeset
    26
followed by the \isa{auto} tactic.  But even this elementary part
368414099877 additional material
paulson
parents: 12489
diff changeset
    27
covers such advanced topics as nested and mutual recursion.
368414099877 additional material
paulson
parents: 12489
diff changeset
    28
\item 
368414099877 additional material
paulson
parents: 12489
diff changeset
    29
The second part, \textbf{Logic and Sets}, presents a collection of
368414099877 additional material
paulson
parents: 12489
diff changeset
    30
lower-level tactics that you can use to apply rules selectively.  It
368414099877 additional material
paulson
parents: 12489
diff changeset
    31
also describes Isabelle/HOL's treatment of sets, functions and
368414099877 additional material
paulson
parents: 12489
diff changeset
    32
relations and explains how to define sets inductively.  One of the
368414099877 additional material
paulson
parents: 12489
diff changeset
    33
examples concerns the theory of model checking, and another is drawn
368414099877 additional material
paulson
parents: 12489
diff changeset
    34
from a classic textbook on formal languages.
368414099877 additional material
paulson
parents: 12489
diff changeset
    35
\item 
368414099877 additional material
paulson
parents: 12489
diff changeset
    36
The third part, \textbf{Advanced Material}, describes a variety of
368414099877 additional material
paulson
parents: 12489
diff changeset
    37
other topics.  Among these are the real numbers, records and
368414099877 additional material
paulson
parents: 12489
diff changeset
    38
overloading.  Esoteric techniques are described involving induction and
368414099877 additional material
paulson
parents: 12489
diff changeset
    39
recursion.  A whole chapter is devoted to an extended example: the
368414099877 additional material
paulson
parents: 12489
diff changeset
    40
verification of a security protocol.
368414099877 additional material
paulson
parents: 12489
diff changeset
    41
\end{itemize}
368414099877 additional material
paulson
parents: 12489
diff changeset
    42
12327
5a4d78204492 *** empty log message ***
nipkow
parents: 11547
diff changeset
    43
The typesetting relies on Wenzel's theory presentation tools.  An
5a4d78204492 *** empty log message ***
nipkow
parents: 11547
diff changeset
    44
annotated source file is run, typesetting the theory
5a4d78204492 *** empty log message ***
nipkow
parents: 11547
diff changeset
    45
% and any requested Isabelle responses
12646
wenzelm
parents: 12641
diff changeset
    46
in the form of a \LaTeX\ source file.  This book is derived almost entirely
wenzelm
parents: 12641
diff changeset
    47
from output generated in this way.  The final chapter of Part~I explains how
wenzelm
parents: 12641
diff changeset
    48
users may produce their own formal documents in a similar fashion.
11408
582433f7f618 new preface
paulson
parents:
diff changeset
    49
12641
140241dc55e6 mention X-Symbol;
wenzelm
parents: 12630
diff changeset
    50
Isabelle's \hfootref{http://isabelle.in.tum.de/}{web site} contains links to
140241dc55e6 mention X-Symbol;
wenzelm
parents: 12630
diff changeset
    51
the download area and to documentation and other information.  Most Isabelle
140241dc55e6 mention X-Symbol;
wenzelm
parents: 12630
diff changeset
    52
sessions are now run from within David Aspinall's\index{Aspinall, David}
14296
bcba1d67f854 updated references to the now-pornographic proofgeneral.org
paulson
parents: 14179
diff changeset
    53
wonderful user interface, \hfootref{http://proofgeneral.inf.ed.ac.uk/}{Proof
12641
140241dc55e6 mention X-Symbol;
wenzelm
parents: 12630
diff changeset
    54
  General}, even together with the
13141
f4ed10eaaff8 updated X-Symbol URL;
wenzelm
parents: 12821
diff changeset
    55
\hfootref{http://x-symbol.sourceforge.net}{X-Symbol} package for XEmacs.  This
f4ed10eaaff8 updated X-Symbol URL;
wenzelm
parents: 12821
diff changeset
    56
book says very little about Proof General, which has its own documentation.
f4ed10eaaff8 updated X-Symbol URL;
wenzelm
parents: 12821
diff changeset
    57
In order to run Isabelle, you will need a Standard ML compiler.  We recommend
f4ed10eaaff8 updated X-Symbol URL;
wenzelm
parents: 12821
diff changeset
    58
\hfootref{http://www.polyml.org/}{Poly/ML}, which is free and gives the best
f4ed10eaaff8 updated X-Symbol URL;
wenzelm
parents: 12821
diff changeset
    59
performance.  The other fully supported compiler is
12641
140241dc55e6 mention X-Symbol;
wenzelm
parents: 12630
diff changeset
    60
\hfootref{http://cm.bell-labs.com/cm/cs/what/smlnj/index.html}{Standard ML of
140241dc55e6 mention X-Symbol;
wenzelm
parents: 12630
diff changeset
    61
  New Jersey}.
12539
368414099877 additional material
paulson
parents: 12489
diff changeset
    62
11408
582433f7f618 new preface
paulson
parents:
diff changeset
    63
This tutorial owes a lot to the constant discussions with and the valuable
11547
bdac4a14b350 *** empty log message ***
nipkow
parents: 11450
diff changeset
    64
feedback from the Isabelle group at Munich: Stefan Berghofer, Olaf
bdac4a14b350 *** empty log message ***
nipkow
parents: 11450
diff changeset
    65
M{\"u}ller, Wolfgang Naraschewski, David von Oheimb, Leonor Prensa Nieto,
12812
paulson
parents: 12669
diff changeset
    66
Cornelia Pusch, Norbert Schirmer and Martin Strecker. Stephan
11547
bdac4a14b350 *** empty log message ***
nipkow
parents: 11450
diff changeset
    67
Merz was also kind enough to read and comment on a draft version.  We
14179
04f905c13502 Corrections due to John Matthews
paulson
parents: 13141
diff changeset
    68
received comments from Stefano Bistarelli, Gergely Buday, John Matthews
04f905c13502 Corrections due to John Matthews
paulson
parents: 13141
diff changeset
    69
and Tanja Vos.
11408
582433f7f618 new preface
paulson
parents:
diff changeset
    70
11547
bdac4a14b350 *** empty log message ***
nipkow
parents: 11450
diff changeset
    71
The research has been funded by many sources, including the {\sc dfg} grants
bdac4a14b350 *** empty log message ***
nipkow
parents: 11450
diff changeset
    72
Ni~491/2, Ni~491/3, Ni~491/4 and the {\sc epsrc} grants GR\slash K57381,
bdac4a14b350 *** empty log message ***
nipkow
parents: 11450
diff changeset
    73
GR\slash K77051, GR\slash M75440, GR\slash R01156\slash 01 and by the
bdac4a14b350 *** empty log message ***
nipkow
parents: 11450
diff changeset
    74
\textsc{esprit} working groups 21900 and IST-1999-29001 (the \emph{Types}
bdac4a14b350 *** empty log message ***
nipkow
parents: 11450
diff changeset
    75
project).