doc-src/IsarRef/intro.tex
author wenzelm
Wed, 18 Aug 1999 20:42:09 +0200
changeset 7267 96f71fb54efb
parent 7175 8263d0b50e12
child 7297 c1eeeadbe80a
permissions -rw-r--r--
deps: include 'really' flag;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
     1
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
     2
\chapter{Introduction}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
     3
7167
wenzelm
parents: 7046
diff changeset
     4
\section{Quick start}
wenzelm
parents: 7046
diff changeset
     5
7175
wenzelm
parents: 7167
diff changeset
     6
Isar is already part of Isabelle (as of version Isabelle99, or later).  The
wenzelm
parents: 7167
diff changeset
     7
\texttt{isabelle} binary provides option \texttt{-I} to run the Isar
wenzelm
parents: 7167
diff changeset
     8
interaction loop at startup, rather than the plain ML top-level.  Thus the
wenzelm
parents: 7167
diff changeset
     9
quickest way to do anything with Isabelle/Isar is as follows:
wenzelm
parents: 7167
diff changeset
    10
\begin{ttbox}
wenzelm
parents: 7167
diff changeset
    11
isabelle -I HOL\medskip
wenzelm
parents: 7167
diff changeset
    12
\out{> Welcome to Isabelle/HOL (Isabelle99)}\medskip
wenzelm
parents: 7167
diff changeset
    13
theory Foo = Main:
wenzelm
parents: 7167
diff changeset
    14
constdefs foo :: nat  "foo == 1"
wenzelm
parents: 7167
diff changeset
    15
lemma "0 < foo" by (simp add: foo_def)
wenzelm
parents: 7167
diff changeset
    16
end
wenzelm
parents: 7167
diff changeset
    17
\end{ttbox}
wenzelm
parents: 7167
diff changeset
    18
wenzelm
parents: 7167
diff changeset
    19
Plain TTY-based interaction like this used to be quite feasible with
wenzelm
parents: 7167
diff changeset
    20
traditional tactic based theorem proving, but developing Isar documents
wenzelm
parents: 7167
diff changeset
    21
demands some better user-interface support.
wenzelm
parents: 7167
diff changeset
    22
\emph{ProofGeneral}\index{ProofGeneral} of LFCS Edinburgh \cite{proofgeneral}
wenzelm
parents: 7167
diff changeset
    23
offers a generic Emacs-based environment for interactive theorem provers that
wenzelm
parents: 7167
diff changeset
    24
does all the cut-and-paste and forward-backward walk through the document in a
wenzelm
parents: 7167
diff changeset
    25
very neat way.  Note that in Isabelle/Isar, the current position within a
wenzelm
parents: 7167
diff changeset
    26
partial proof document is more informative than the actual proof state.  Thus
wenzelm
parents: 7167
diff changeset
    27
the ProofGeneral/isar interface provides the canonical working environment for
wenzelm
parents: 7167
diff changeset
    28
Isabelle/Isar, both for getting acquainted (e.g.\ by replaying existing Isar
wenzelm
parents: 7167
diff changeset
    29
documents) and serious production work.
wenzelm
parents: 7167
diff changeset
    30
wenzelm
parents: 7167
diff changeset
    31
\medskip
7167
wenzelm
parents: 7046
diff changeset
    32
7175
wenzelm
parents: 7167
diff changeset
    33
The easiest way to use ProofGeneral/isar is to make it the default Isabelle
wenzelm
parents: 7167
diff changeset
    34
user interface.  Just say something like this in your Isabelle settings file
wenzelm
parents: 7167
diff changeset
    35
(cf.\ \cite{isabelle-sys}):
wenzelm
parents: 7167
diff changeset
    36
\begin{ttbox}
wenzelm
parents: 7167
diff changeset
    37
ISABELLE_INTERFACE=\$ISABELLE_HOME/contrib/ProofGeneral/isar/interface
wenzelm
parents: 7167
diff changeset
    38
PROOFGENERAL_OPTIONS=""
wenzelm
parents: 7167
diff changeset
    39
\end{ttbox}
wenzelm
parents: 7167
diff changeset
    40
You may have to change \texttt{\$ISABELLE_HOME/contrib/ProofGeneral} to the
wenzelm
parents: 7167
diff changeset
    41
actual installation directory of ProofGeneral.  Now the capital
wenzelm
parents: 7167
diff changeset
    42
\texttt{Isabelle} binary refers to the ProofGeneral/isar interface.  It's
wenzelm
parents: 7167
diff changeset
    43
usage is as follows:
wenzelm
parents: 7167
diff changeset
    44
\begin{ttbox}
wenzelm
parents: 7167
diff changeset
    45
Usage: interface [OPTIONS] [FILES ...]
wenzelm
parents: 7167
diff changeset
    46
wenzelm
parents: 7167
diff changeset
    47
Options are:
wenzelm
parents: 7167
diff changeset
    48
  -l NAME      logic image name (default $ISABELLE_LOGIC=HOL)
wenzelm
parents: 7167
diff changeset
    49
  -p NAME      Emacs program name (default xemacs)
wenzelm
parents: 7167
diff changeset
    50
  -u BOOL      use .emacs file (default false)
wenzelm
parents: 7167
diff changeset
    51
  -w BOOL      use window system (default true)
wenzelm
parents: 7167
diff changeset
    52
wenzelm
parents: 7167
diff changeset
    53
Starts ProofGeneral for Isabelle/Isar with proof documents FILES
wenzelm
parents: 7167
diff changeset
    54
(default Scratch.thy).
wenzelm
parents: 7167
diff changeset
    55
\end{ttbox}
wenzelm
parents: 7167
diff changeset
    56
The defaults for these options may be changed via the
wenzelm
parents: 7167
diff changeset
    57
\texttt{PROOFGENERAL_OPTIONS} setting.  For example, GNU Emacs with loading of
wenzelm
parents: 7167
diff changeset
    58
the startup file enabled may be configured as follows:\footnote{The interface
wenzelm
parents: 7167
diff changeset
    59
  disables \texttt{.emacs} by default to ensure successful startup despite any
wenzelm
parents: 7167
diff changeset
    60
  strange commands that tend to occur there.}
wenzelm
parents: 7167
diff changeset
    61
\begin{ttbox}
wenzelm
parents: 7167
diff changeset
    62
PROOFGENERAL_OPTIONS="-p emacs -u true"
wenzelm
parents: 7167
diff changeset
    63
\end{ttbox}
wenzelm
parents: 7167
diff changeset
    64
wenzelm
parents: 7167
diff changeset
    65
With the proper Isabelle interface setup, Isar documents may now be edited by
wenzelm
parents: 7167
diff changeset
    66
visiting appropriate theory files, e.g.\ 
wenzelm
parents: 7167
diff changeset
    67
\begin{ttbox}
wenzelm
parents: 7167
diff changeset
    68
Isabelle \({\langle}isabellehome{\rangle}\)/src/HOL/Isar_examples/BasicLogic.thy
wenzelm
parents: 7167
diff changeset
    69
\end{ttbox}
wenzelm
parents: 7167
diff changeset
    70
Users of XEmacs may note the toolbar for navigating forward and backward
wenzelm
parents: 7167
diff changeset
    71
through the text.  Consult the ProofGeneral documentation for further basic
wenzelm
parents: 7167
diff changeset
    72
commands, such as \texttt{c-c return} or \texttt{c-c u}.
wenzelm
parents: 7167
diff changeset
    73
7167
wenzelm
parents: 7046
diff changeset
    74
wenzelm
parents: 7046
diff changeset
    75
\section{How to write Isar proofs anyway?}
wenzelm
parents: 7046
diff changeset
    76
7175
wenzelm
parents: 7167
diff changeset
    77
FIXME
wenzelm
parents: 7167
diff changeset
    78
7167
wenzelm
parents: 7046
diff changeset
    79
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    80
%%% Local Variables: 
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    81
%%% mode: latex
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    82
%%% TeX-master: "isar-ref"
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    83
%%% End: