doc-src/preface.tex
author lcp
Thu, 24 Mar 1994 18:14:45 +0100
changeset 304 5edc4f5e5ebd
parent 285 fd4a6585e5bf
child 329 92586a978648
permissions -rw-r--r--
revisions to first Springer draft
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     1
\chapter*{Preface}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     2
\markboth{Preface}{Preface}   %or Preface ?
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     3
\addcontentsline{toc}{chapter}{Preface} 
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     4
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     5
\index{Isabelle!object-logics supported}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     6
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     7
Most theorem provers support a fixed logic, such as first-order or
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     8
equational logic.  They bring sophisticated proof procedures to bear upon
304
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
     9
the conjectured formula.  The resolution prover Otter~\cite{wos-bledsoe} is
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    10
an impressive example.  ALF~\cite{alf}, Coq~\cite{coq} and
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    11
Nuprl~\cite{constable86} each support a fixed logic too, but one far
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    12
removed from first-order logic.  They are explicitly concerned with
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    13
computation.  A diverse collection of logics --- type theories, process
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    14
calculi, $\lambda$-calculi --- may be found in the Computer Science
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    15
literature.  Such logics require proof support.  Few proof procedures are
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    16
known for them, but the theorem prover can at least automate routine steps.
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    17
304
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    18
A {\bf generic} theorem prover is one that can support a variety of logics.
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    19
Some generic provers are noteworthy for their user interfaces
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    20
\cite{dawson90,mural,sawamura92}.  Most of them work by implementing a
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    21
syntactic framework that can express typical inference rules.  Isabelle's
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    22
distinctive feature is its representation of logics within a fragment of
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    23
higher-order logic, called the meta-logic.  The proof theory of
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    24
higher-order logic may be used to demonstrate that the representation is
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    25
correct~\cite{paulson89}.  The approach has much in common with the
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    26
Edinburgh Logical Framework~\cite{harper-jacm} and with
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    27
Felty's~\cite{felty93} use of $\lambda$Prolog to implement logics.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    28
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    29
An inference rule in Isabelle is a generalized Horn clause.  Rules are
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    30
joined to make proofs by resolving such clauses.  Logical variables in
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    31
goals can be instantiated incrementally.  But Isabelle is not a resolution
304
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    32
theorem prover like Otter.  Isabelle's clauses are drawn from a richer
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    33
language and a fully automatic search would be impractical.  Isabelle does
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    34
not resolve clauses automatically, but under user direction.  You can
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    35
conduct single-step proofs, use Isabelle's built-in proof procedures, or
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    36
develop new proof procedures using tactics and tacticals.
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    37
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    38
Isabelle's meta-logic is higher-order, based on the typed
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    39
$\lambda$-calculus.  So resolution cannot use ordinary unification, but
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    40
higher-order unification~\cite{huet75}.  This complicated procedure gives
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    41
Isabelle strong support for many logical formalisms involving variable
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    42
binding.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    43
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    44
The diagram below illustrates some of the logics distributed with Isabelle.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    45
These include first-order logic (intuitionistic and classical), the sequent
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    46
calculus, higher-order logic, Zermelo-Fraenkel set theory~\cite{suppes72},
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    47
a version of Constructive Type Theory~\cite{nordstrom90}, several modal
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    48
logics, and a Logic for Computable Functions.  Several experimental
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    49
logics are also available, such a term assignment calculus for linear
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    50
logic.  
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    51
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    52
\centerline{\epsfbox{Isa-logics.eps}}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    53
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    54
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    55
\section*{How to read this book}
304
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    56
Isabelle is a complex system, but beginners can get by with a few commands
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    57
and a basic knowledge of how Isabelle works.  Some knowledge of
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    58
Standard~\ML{} is essential because \ML{} is Isabelle's user interface.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    59
Advanced Isabelle theorem proving can involve writing \ML{} code, possibly
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    60
with Isabelle's sources at hand.  My book on~\ML{}~\cite{paulson91} covers
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    61
much material connected with Isabelle, including a simple theorem prover.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    62
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    63
The Isabelle documentation is divided into three parts, which serve
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    64
distinct purposes:
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    65
\begin{itemize}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    66
\item {\em Introduction to Isabelle\/} describes the basic features of
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    67
  Isabelle.  This part is intended to be read through.  If you are
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    68
  impatient to get started, you might skip the first chapter, which
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    69
  describes Isabelle's meta-logic in some detail.  The other chapters
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    70
  present on-line sessions of increasing difficulty.  It also explains how
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    71
  to derive rules define theories, and concludes with an extended example:
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    72
  a Prolog interpreter.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    73
304
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    74
\item {\em The Isabelle Reference Manual\/} provides detailed information
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    75
  about Isabelle's facilities, excluding the object-logics.  This part
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    76
  would make boring reading, though browsing might be useful.  Mostly you
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
    77
  should use it to locate facts quickly.
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    78
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    79
\item {\em Isabelle's Object-Logics\/} describes the various logics
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    80
  distributed with Isabelle.  Its final chapter explains how to define new
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    81
  logics.  The other chapters are intended for reference only.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    82
\end{itemize}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    83
This book should not be read from start to finish.  Instead you might read
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    84
a couple of chapters from {\em Introduction to Isabelle}, then try some
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    85
examples referring to the other parts, return to the {\em Introduction},
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    86
and so forth.  Starred sections discuss obscure matters and may be skipped
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    87
on a first reading.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    88
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    89
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    90
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    91
\section*{Releases of Isabelle}\index{Isabelle!release history}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    92
Isabelle was first distributed in 1986.  The 1987 version introduced a
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    93
higher-order meta-logic with an improved treatment of quantifiers.  The
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    94
1988 version added limited polymorphism and support for natural deduction.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    95
The 1989 version included a parser and pretty printer generator.  The 1992
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    96
version introduced type classes, to support many-sorted and higher-order
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    97
logics.  The 1993 version provides greater support for theories and is
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    98
much faster.  
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    99
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   100
Isabelle is still under development.  Projects under consideration include
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   101
better support for inductive definitions, some means of recording proofs, a
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   102
graphical user interface, and developments in the standard object-logics.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   103
I hope but cannot promise to maintain upwards compatibility.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   104
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   105
Isabelle is available by anonymous ftp:
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   106
\begin{itemize}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   107
\item University of Cambridge\\
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   108
        host {\tt ftp.cl.cam.ac.uk}\\
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   109
        directory {\tt ml}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   110
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   111
\item Technical University of Munich\\
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   112
        host {\tt ftp.informatik.tu-muenchen.de}\\
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   113
        directory {\tt local/lehrstuhl/nipkow}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   114
\end{itemize}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   115
My electronic mail address is {\tt lcp\at cl.cam.ac.uk}.  Please report any
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   116
errors you find in this book and your problems or successes with Isabelle.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   117
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   118
304
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
   119
\section*{Acknowledgements} 
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   120
Tobias Nipkow has made immense contributions to Isabelle, including the
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   121
parser generator, type classes, the simplifier, and several object-logics.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   122
He also arranged for several of his students to help.  Carsten Clasohm
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   123
implemented the theory database; Markus Wenzel implemented macros; Sonia
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   124
Mahjoub and Karin Nimmermann also contributed.  
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   125
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   126
Nipkow and his students wrote much of the documentation underlying this
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   127
book.  Nipkow wrote the first versions of \S\ref{sec:defining-theories},
304
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
   128
\S\ref{sec:ref-defining-theories}, Chap.\ts\ref{simp-chap},
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
   129
Chap.\ts\ref{Defining-Logics} and App.\ts\ref{app:TheorySyntax}\@.  Carsten
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
   130
Clasohm contributed to Chap.\ts\ref{theories}.  Markus Wenzel contributed
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
   131
to Chap.\ts\ref{Defining-Logics}.
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   132
304
5edc4f5e5ebd revisions to first Springer draft
lcp
parents: 285
diff changeset
   133
David Aspinall, Sara Kalvala, Ina Kraan, Zhenyu Qian, Norbert V{\"o}lker and
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   134
Markus Wenzel suggested changes and corrections to the documentation.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   135
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   136
Martin Coen, Rajeev Gor\'e, Philippe de Groote and Philippe No\"el helped
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   137
to develop Isabelle's standard object-logics.  David Aspinall performed
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   138
some useful research into theories and implemented an Isabelle Emacs mode.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   139
Isabelle was developed using Dave Matthews's Standard~{\sc ml} compiler,
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   140
Poly/{\sc ml}.  
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   141
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   142
The research has been funded by numerous SERC grants dating from the Alvey
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   143
programme (grants GR/E0355.7, GR/G53279, GR/H40570) and by ESPRIT (projects
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   144
3245: Logical Frameworks and 6453: Types).
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   145
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   146
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
   147
\index{ML}