| author | wenzelm | 
| Fri, 04 Aug 2000 22:58:53 +0200 | |
| changeset 9534 | 0d14a9e7930c | 
| parent 8362 | f1dd226f5956 | 
| child 9790 | 978c635c77f6 | 
| permissions | -rw-r--r-- | 
| 3188 | 1  | 
|
2  | 
% $Id$  | 
|
3  | 
||
| 7882 | 4  | 
\chapter{The Isabelle system environment}
 | 
| 3188 | 5  | 
|
| 7882 | 6  | 
This manual describes Isabelle together with related tools and user interfaces  | 
| 7883 | 7  | 
as seen from an outside (system oriented) view.  See also the \emph{Isabelle
 | 
| 7882 | 8  | 
  Reference Manual}~\cite{isabelle-ref} and the \emph{Isabelle Isar Reference
 | 
9  | 
  Manual}~\cite{isabelle-isar-ref} for the actual Isabelle commands and
 | 
|
10  | 
related functions.  | 
|
| 3188 | 11  | 
|
| 7849 | 12  | 
\medskip The Isabelle system environment is based on a few general elements:  | 
| 3188 | 13  | 
\begin{itemize}
 | 
| 7882 | 14  | 
\item The \emph{Isabelle settings mechanism}, which provides environment
 | 
15  | 
variables to all Isabelle programs (including tools and user interfaces).  | 
|
| 7849 | 16  | 
\item \emph{Isabelle proper} (\ttindex{isabelle}), which invokes logic
 | 
| 3188 | 17  | 
sessions, both interactively or in batch mode. In particular,  | 
| 7849 | 18  | 
  \texttt{isabelle} abstracts over the invocation of the actual {\ML} system
 | 
19  | 
to be used.  | 
|
| 7882 | 20  | 
\item The \emph{Isabelle tools wrapper} (\ttindex{isatool}), which provides a
 | 
21  | 
generic startup platform for Isabelle related utilities. Thus tools  | 
|
22  | 
automatically benefit from the settings mechanism.  | 
|
23  | 
\item The \emph{Isabelle interface wrapper} (\ttindex{Isabelle}\footnote{Note
 | 
|
24  | 
    the capital \texttt{I}!}), which provides some abstraction over the actual
 | 
|
25  | 
user interface to be used.  | 
|
| 3188 | 26  | 
\end{itemize}
 | 
27  | 
||
| 7882 | 28  | 
\medskip The beginning user would probably just run one of the interfaces (by  | 
29  | 
invoking the capital \texttt{Isabelle}), and maybe some basic tools like
 | 
|
30  | 
\texttt{doc} (see \S\ref{sec:tool-doc}).  This assumes that the system has
 | 
|
31  | 
already been installed, of course.\footnote{In case you have to do this
 | 
|
32  | 
  yourself, see the \ttindex{INSTALL} file in the top-level directory of the
 | 
|
33  | 
distribution of how to proceed. Some binary packages are available as  | 
|
34  | 
well.}  | 
|
| 3188 | 35  | 
|
36  | 
||
37  | 
\section{Isabelle settings} \label{sec:settings}
 | 
|
38  | 
||
39  | 
The Isabelle system heavily depends on the \emph{settings
 | 
|
| 7882 | 40  | 
  mechanism}\indexbold{settings}. Basically, this is a statically scoped
 | 
41  | 
collection of environment variables, such as \texttt{ISABELLE_HOME},
 | 
|
42  | 
\texttt{ML_SYSTEM}, \texttt{ML_HOME}.  These variables are \emph{not} intended
 | 
|
43  | 
to be set directly from the shell, though. Isabelle employs a somewhat more  | 
|
44  | 
sophisticated scheme of \emph{settings files} --- one for site-wide defaults,
 | 
|
45  | 
another for additional user-specific modifications. With all configuration  | 
|
46  | 
variables in at most two places, this scheme is more maintainable and  | 
|
47  | 
user-friendly than plain shell environment variables.  | 
|
| 3188 | 48  | 
|
| 7882 | 49  | 
In particular, we avoid the typical situation where prospective users of a  | 
50  | 
software package are told to put several things into their shell startup  | 
|
| 7883 | 51  | 
scripts, before being able to actually run the program. Isabelle requires none  | 
52  | 
such administrative chores of its end-users --- the executables can be invoked  | 
|
53  | 
straight away.\footnote{Occasionally, users would still want to put the
 | 
|
54  | 
  Isabelle \texttt{bin} directory into their shell's search path, but this is
 | 
|
55  | 
not required.}  | 
|
| 3188 | 56  | 
|
57  | 
||
| 
8362
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
58  | 
\subsection{Building the environment}
 | 
| 3188 | 59  | 
|
| 7882 | 60  | 
Whenever any of the Isabelle executables is run, their settings environment is  | 
| 7883 | 61  | 
built as follows.  | 
| 3188 | 62  | 
|
63  | 
\begin{enumerate}
 | 
|
| 7882 | 64  | 
\item The special variable \settdx{ISABELLE_HOME} is determined automatically
 | 
65  | 
from the location of the binary that has been run.  | 
|
66  | 
||
67  | 
  You should not try to set \texttt{ISABELLE_HOME} manually. Also note that
 | 
|
68  | 
the Isabelle executables either have to be run from their original location  | 
|
| 7883 | 69  | 
in the distribution directory, or via the executable objects created by the  | 
| 7882 | 70  | 
  \texttt{install} utility (see \S\ref{sec:tool-install}).  Just doing a plain
 | 
71  | 
  copy of the \texttt{bin} files will not work!
 | 
|
72  | 
||
73  | 
\item The file \texttt{\$ISABELLE_HOME/etc/settings} ist run as a shell script
 | 
|
74  | 
with the auto-export option for variables enabled.  | 
|
75  | 
||
| 3278 | 76  | 
This file typically contains a rather long list of shell variable  | 
| 7882 | 77  | 
assigments, thus providing the site-wide default settings. The Isabelle  | 
78  | 
distribution already contains a global settings file with sensible defaults  | 
|
79  | 
for most variables. When installing the system, only a few of these have to  | 
|
80  | 
  be adapted (most likely \texttt{ML_SYSTEM} etc.).
 | 
|
| 7849 | 81  | 
|
82  | 
\item The file \texttt{\$ISABELLE_HOME_USER/etc/settings} (if it exists) is
 | 
|
| 7882 | 83  | 
run in the same way as the site default settings. Note that the variable  | 
| 7849 | 84  | 
  \texttt{ISABELLE_HOME_USER} has already been set before --- usually to
 | 
85  | 
  \texttt{\~\relax/isabelle}.
 | 
|
| 7882 | 86  | 
|
87  | 
Thus individual users may override the site-wide defaults. See also file  | 
|
88  | 
  \texttt{etc/user-settings.sample} in the distribution.  Typically, a user
 | 
|
89  | 
settings file would contain only a few lines, just the assigments that are  | 
|
90  | 
  really changed.  One should definitely \emph{not} start with a full copy the
 | 
|
91  | 
  basic \texttt{\$ISABELLE_HOME/etc/settings}. This could cause very annoying
 | 
|
92  | 
maintainance problems later, when the Isabelle installation is updated or  | 
|
93  | 
changed otherwise.  | 
|
| 3188 | 94  | 
|
95  | 
\end{enumerate}
 | 
|
96  | 
||
| 7882 | 97  | 
Note that settings files are actually full GNU bash scripts. So one may use  | 
| 7883 | 98  | 
complex shell commands, such as \texttt{if} or \texttt{case} statements to set
 | 
99  | 
variables depending on the system architecture or other environment variables.  | 
|
100  | 
Such advanced features should be added only with great care, though. In  | 
|
101  | 
particular, external environment references should be kept at a minimum.  | 
|
| 3188 | 102  | 
|
| 3217 | 103  | 
\medskip A few variables are somewhat special:  | 
| 3188 | 104  | 
\begin{itemize}
 | 
| 3217 | 105  | 
\item \settdx{ISABELLE} and \settdx{ISATOOL} are set automatically to
 | 
106  | 
  the absolute path names of the \texttt{isabelle} and
 | 
|
| 3188 | 107  | 
  \texttt{isatool} executables, respectively.
 | 
| 6414 | 108  | 
|
109  | 
\item \settdx{ISABELLE_PATH} and \settdx{ISABELLE_OUTPUT} will have the {\ML}
 | 
|
| 7883 | 110  | 
  system identifier (according to \texttt{ML_IDENTIFIER}) automatically
 | 
| 6414 | 111  | 
appended to their values.  | 
| 3188 | 112  | 
\end{itemize}
 | 
113  | 
||
| 7882 | 114  | 
\medskip The Isabelle settings scheme is basically simple, but non-trivial.  | 
115  | 
For debugging purposes, the resulting environment may be inspected with the  | 
|
116  | 
\texttt{getenv} utility, see \S\ref{sec:tool-getenv}.
 | 
|
| 3188 | 117  | 
|
118  | 
||
119  | 
\subsection{Common variables}
 | 
|
120  | 
||
| 7882 | 121  | 
This is a reference of common Isabelle settings variables. Note that the list  | 
122  | 
is somewhat open-ended. Third-party utilities or interfaces may add their own  | 
|
123  | 
selection. Variables that are special in some sense are marked with *.  | 
|
| 3217 | 124  | 
|
125  | 
\begin{description}
 | 
|
| 7882 | 126  | 
\item[\settdx{ISABELLE_HOME}*] is the location of the top-level Isabelle
 | 
127  | 
distribution directory. This is automatically determined from the Isabelle  | 
|
128  | 
  executable that has been invoked.  Do not try to set \texttt{ISABELLE_HOME}
 | 
|
129  | 
yourself from the shell.  | 
|
130  | 
||
| 3217 | 131  | 
\item[\settdx{ISABELLE_HOME_USER}] is the user-specific counterpart of
 | 
| 7882 | 132  | 
  \texttt{ISABELLE_HOME}. The default value is \texttt{\~\relax/isabelle},
 | 
133  | 
under rare circumstances this may be changed in the global setting file.  | 
|
134  | 
  Typically, the \texttt{ISABELLE_HOME_USER} directory mimics
 | 
|
135  | 
  \texttt{ISABELLE_HOME} to some extend. In particular, site-wide defaults may
 | 
|
136  | 
  be overridden by a private \texttt{etc/settings}.
 | 
|
137  | 
||
138  | 
\item[\settdx{ISABELLE}*, \settdx{ISATOOL}*] are automatically set to the full
 | 
|
139  | 
  path names of the \texttt{isabelle} and \texttt{isatool} executables,
 | 
|
140  | 
respectively. Thus other tools and scripts need not assume that the  | 
|
141  | 
  Isabelle \texttt{bin} directory is on the current search path of the shell.
 | 
|
| 6412 | 142  | 
|
143  | 
\item[\settdx{ML_SYSTEM}, \settdx{ML_HOME}, \settdx{ML_OPTIONS},
 | 
|
| 6414 | 144  | 
  \settdx{ML_PLATFORM}, \settdx{ML_IDENTIFIER}*] specify the underlying {\ML}
 | 
| 7882 | 145  | 
system to be used for Isabelle. There is only a fixed set of admissable  | 
146  | 
  \texttt{ML_SYSTEM} names (see the \texttt{etc/settings} file of the
 | 
|
147  | 
distribution).  | 
|
148  | 
||
149  | 
  The actual compiler binary will be run from the directory \texttt{ML_HOME},
 | 
|
150  | 
  with \texttt{ML_OPTIONS} as first arguments on the command line.  The
 | 
|
151  | 
  optional \texttt{ML_PLATFORM} may specify the binary format of ML heap
 | 
|
152  | 
images, which is useful for cross-platform installations. The value of  | 
|
153  | 
  \texttt{ML_IDENTIFIER} is automatically obtained by composing the
 | 
|
154  | 
  \texttt{ML_SYSTEM} and \texttt{ML_PLATFORM} values.
 | 
|
| 6414 | 155  | 
|
156  | 
\item[\settdx{ISABELLE_PATH}*] is a list of directories (separated by colons)
 | 
|
157  | 
where Isabelle logic images may reside. Note that the value of  | 
|
158  | 
  \texttt{ML_IDENTIFIER} is appended to each component automatically.
 | 
|
| 7882 | 159  | 
|
160  | 
\item[\settdx{ISABELLE_OUTPUT}*] is a directory where output heap files should
 | 
|
161  | 
  be stored by default. The \texttt{ML_SYSTEM} identifier is appended here,
 | 
|
162  | 
too.  | 
|
163  | 
||
164  | 
\item[\settdx{ISABELLE_BROWSER_INFO}] is the directory where theory browser
 | 
|
165  | 
information (HTML text, graph data, and printable documents) is stored (see  | 
|
166  | 
  also \S\ref{sec:info}).  The default value is
 | 
|
| 4555 | 167  | 
  \texttt{\$ISABELLE_HOME_USER/browser_info}.
 | 
| 7882 | 168  | 
|
169  | 
\item[\settdx{ISABELLE_LOGIC}] specifies the default logic to load if none is
 | 
|
170  | 
  given explicitely by the user.  The default value is \texttt{HOL}.
 | 
|
171  | 
||
172  | 
\item[\settdx{ISABELLE_USEDIR_OPTIONS}] is implicitly prefixed to the command
 | 
|
173  | 
  line of any \texttt{isatool usedir} invocation (see also
 | 
|
174  | 
  \S\ref{sec:tool-usedir}). This typically contains compilation options for
 | 
|
175  | 
  object-logics --- \texttt{usedir} is the basic utility for managing logic
 | 
|
176  | 
  sessions (cf.\ the \texttt{IsaMakefile}s in the distribution).
 | 
|
| 7849 | 177  | 
|
178  | 
\item[\settdx{ISABELLE_LATEX}, \settdx{ISABELLE_PDFLATEX},
 | 
|
179  | 
  \settdx{ISABELLE_BIBTEX}, \settdx{ISABELLE_DVIPS}] refer to {\LaTeX} related
 | 
|
180  | 
  tools for Isabelle document preparation (see also \S\ref{sec:tool-latex}).
 | 
|
| 7882 | 181  | 
|
182  | 
\item[\settdx{ISABELLE_TOOLS}] is a colon separated list of directories that
 | 
|
183  | 
  are scanned by \texttt{isatool} for external utility programs (see also
 | 
|
184  | 
  \S\ref{sec:isatool}).
 | 
|
185  | 
||
186  | 
\item[\settdx{ISABELLE_DOCS}] is a colon separated list of directories with
 | 
|
187  | 
documentation files.  | 
|
188  | 
||
189  | 
\item[\settdx{DVI_VIEWER}] specifies the command to be used for displaying
 | 
|
190  | 
  \texttt{dvi} files.
 | 
|
191  | 
||
192  | 
\item[\settdx{ISABELLE_INSTALL_FONTS}] determines the way that the Isabelle
 | 
|
193  | 
symbol fonts are installed into your currently running X11 display server.  | 
|
194  | 
  X11 fonts are a subtle issue, see \S\ref{sec:tool-installfonts} for more
 | 
|
195  | 
information.  | 
|
196  | 
||
197  | 
\item[\settdx{ISABELLE_TMP_PREFIX}] is the prefix from which any running
 | 
|
198  | 
  \texttt{isabelle} process derives an individual directory for temporary
 | 
|
199  | 
  files.  The default is somewhere in \texttt{/tmp}.
 | 
|
200  | 
||
201  | 
\item[\settdx{ISABELLE_INTERFACE}] is an identifier that specifies the actual
 | 
|
202  | 
  user interface that the capital \texttt{Isabelle} should invoke.  See
 | 
|
203  | 
  \S\ref{sec:interface} for more details.
 | 
|
| 3217 | 204  | 
|
205  | 
\end{description}
 | 
|
| 3188 | 206  | 
|
207  | 
||
208  | 
\section{Isabelle proper --- \texttt{isabelle}}
 | 
|
209  | 
||
| 
8362
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
210  | 
The \ttindex{isabelle} executable runs bare-bones logic sessions --- either
 | 
| 
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
211  | 
interactively or in batch mode. It provides an abstraction over the underlying  | 
| 
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
212  | 
{\ML} system, and over the actual heap file locations. Its usage is:
 | 
| 3188 | 213  | 
\begin{ttbox}
 | 
214  | 
Usage: isabelle [OPTIONS] [INPUT] [OUTPUT]  | 
|
215  | 
||
216  | 
Options are:  | 
|
| 5814 | 217  | 
-I startup Isar interaction mode  | 
| 
8362
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
218  | 
-c tell ML system to compress output image  | 
| 3188 | 219  | 
-e MLTEXT pass MLTEXT to the ML session  | 
220  | 
-m MODE add print mode for output  | 
|
221  | 
-q non-interactive session  | 
|
222  | 
-r open heap file read-only  | 
|
| 4540 | 223  | 
-u pass 'use"ROOT.ML";' to the ML session  | 
224  | 
-w reset write permissions on OUTPUT  | 
|
| 3188 | 225  | 
|
226  | 
INPUT (default "\$ISABELLE_LOGIC") and OUTPUT specify in/out heaps.  | 
|
| 7883 | 227  | 
These are either names to be searched in the Isabelle path, or  | 
228  | 
actual file names (containing at least one /).  | 
|
| 3188 | 229  | 
If INPUT is "RAW_ML_SYSTEM", just start the bare bones ML system.  | 
230  | 
\end{ttbox}
 | 
|
231  | 
Input files without path specifications are looked up in the  | 
|
| 7849 | 232  | 
\texttt{ISABELLE_PATH} setting, which may consist of multiple components
 | 
| 7882 | 233  | 
separated by colons --- these are tried in the given order. Likewise, base  | 
234  | 
names are relative to the directory specified by \texttt{ISABELLE_OUTPUT}.  In
 | 
|
235  | 
any case, actual file locations may also be given by including at least one  | 
|
236  | 
slash (\texttt{/}) in the name (hint: use \texttt{./} to refer to the current
 | 
|
| 7849 | 237  | 
directory).  | 
| 3188 | 238  | 
|
239  | 
||
240  | 
\subsection*{Options}
 | 
|
241  | 
||
| 3217 | 242  | 
If the input heap file does not have write permission bits set, or the  | 
| 7882 | 243  | 
\texttt{-r} option is given explicitely, then the session started will be
 | 
244  | 
read-only.  That is, the {\ML} world cannot be committed back into the logic
 | 
|
245  | 
image. Otherwise, a writable session enables commits into either the input  | 
|
246  | 
file, or into an alternative output heap file (in case that is given as the  | 
|
247  | 
second argument on the command line).  | 
|
| 3217 | 248  | 
|
| 7882 | 249  | 
The read-write state of sessions is determined at startup only, it cannot be  | 
250  | 
changed intermediately. Also note that heap images may require considerable  | 
|
251  | 
amounts of disk space. Users are responsible themselves to dispose their heap  | 
|
252  | 
files when they are no longer needed.  | 
|
| 3188 | 253  | 
|
| 7882 | 254  | 
\medskip The \texttt{-w} option makes the output heap file read-only after
 | 
255  | 
terminating. Thus subsequent invocations cause the logic image to be  | 
|
256  | 
read-only automatically.  | 
|
| 4540 | 257  | 
|
| 
8362
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
258  | 
\medskip The \texttt{-c} option tells the underlying ML system to compress the
 | 
| 
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
259  | 
output heap (fully transparently). On Poly/ML for example, the image is  | 
| 
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
260  | 
garbage collected and all values maximally shared, resulting in up to 50\%  | 
| 
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
261  | 
less disk space consumption.  | 
| 
 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 
wenzelm 
parents: 
7883 
diff
changeset
 | 
262  | 
|
| 7882 | 263  | 
\medskip Using the \texttt{-e} option, arbitrary {\ML} code may be passed to
 | 
264  | 
the Isabelle session from the command line. Multiple \texttt{-e}'s are
 | 
|
265  | 
evaluated in the given order. Strange things may happen when errorneous {\ML}
 | 
|
266  | 
code is provided. Also make sure that the {\ML} commands are terminated
 | 
|
267  | 
properly by semicolon.  | 
|
| 3188 | 268  | 
|
| 4540 | 269  | 
\medskip The \texttt{-u} option is a shortcut for \texttt{-e}, passing
 | 
| 4555 | 270  | 
``\texttt{use"ROOT.ML";}'' to the {\ML} session.
 | 
| 4540 | 271  | 
|
| 7882 | 272  | 
\medskip The \texttt{-m} option adds identifiers of print modes to be made
 | 
273  | 
active for this session. Typically, this is used by some user interface, e.g.\  | 
|
274  | 
to enable output of mathematical symbols from a special screen font.  | 
|
| 3217 | 275  | 
|
| 7882 | 276  | 
\medskip Isabelle normally enters an interactive top-level loop (after  | 
277  | 
processing the \texttt{-e} texts). The \texttt{-q} option inhibits
 | 
|
278  | 
interaction, thus providing a pure batch mode facility.  | 
|
| 5814 | 279  | 
|
280  | 
\medskip The \texttt{-I} option makes Isabelle enter Isar interaction mode on
 | 
|
| 7882 | 281  | 
startup, instead of the primitive {\ML} top-level.  User interfaces (such
 | 
282  | 
Proof~General) take care of this switch automatically.  | 
|
| 3188 | 283  | 
|
284  | 
||
285  | 
\subsection*{Examples}
 | 
|
286  | 
||
| 3217 | 287  | 
Run an interactive session of the default object-logic (as specified  | 
288  | 
by the \texttt{ISABELLE_LOGIC} setting) like this:
 | 
|
| 3188 | 289  | 
\begin{ttbox}
 | 
290  | 
isabelle  | 
|
291  | 
\end{ttbox}
 | 
|
| 3217 | 292  | 
Usually \texttt{ISABELLE_LOGIC} refers to one of the standard logic
 | 
293  | 
images, which are read-only by default. A writable session --- based  | 
|
294  | 
on \texttt{FOL}, but output to \texttt{Foo} (in the directory
 | 
|
295  | 
specified by the \texttt{ISABELLE_OUTPUT} setting) --- may be invoked
 | 
|
296  | 
as follows:  | 
|
| 3188 | 297  | 
\begin{ttbox}
 | 
298  | 
isabelle FOL Foo  | 
|
299  | 
\end{ttbox}
 | 
|
| 3217 | 300  | 
Ending this session normally (e.g.\ by typing control-D) dumps the  | 
| 3188 | 301  | 
whole {\ML} system state into \texttt{Foo}. Be prepared for several
 | 
302  | 
megabytes!  | 
|
303  | 
||
| 3217 | 304  | 
The \texttt{Foo} session may be continued later (still in writable
 | 
| 3262 | 305  | 
state) by:  | 
| 3188 | 306  | 
\begin{ttbox}
 | 
307  | 
isabelle Foo  | 
|
308  | 
\end{ttbox}
 | 
|
| 3217 | 309  | 
A read-only \texttt{Foo} session may be started by:
 | 
310  | 
\begin{ttbox}
 | 
|
311  | 
isabelle -r Foo  | 
|
312  | 
\end{ttbox}
 | 
|
| 3188 | 313  | 
|
| 7849 | 314  | 
\medskip Note that manual session management like this does \emph{not} provide
 | 
315  | 
proper setup for theory presentation.  This would require the \texttt{usedir}
 | 
|
316  | 
utility, see \S\ref{sec:tool-usedir}.
 | 
|
317  | 
||
318  | 
\bigskip The next example demonstrates batch execution of Isabelle. We print a  | 
|
319  | 
certain theorem of \texttt{FOL}:
 | 
|
| 3188 | 320  | 
\begin{ttbox}
 | 
321  | 
isabelle -e "prth allE;" -q -r FOL  | 
|
322  | 
\end{ttbox}
 | 
|
| 7882 | 323  | 
Note that the output text will be interspersed with additional junk messages  | 
324  | 
by the {\ML} runtime environment.
 | 
|
| 3188 | 325  | 
|
| 3217 | 326  | 
|
327  | 
\section{The Isabelle tools wrapper --- \texttt{isatool}} \label{sec:isatool}
 | 
|
328  | 
||
| 3278 | 329  | 
All Isabelle related utilities are called via a common wrapper ---  | 
330  | 
\ttindex{isatool}:
 | 
|
331  | 
\begin{ttbox}
 | 
|
332  | 
Usage: isatool TOOL [ARGS ...]  | 
|
333  | 
||
334  | 
Start Isabelle utility program TOOL with ARGS. Pass "-?" to TOOL  | 
|
335  | 
for more specific help.  | 
|
336  | 
||
337  | 
Available tools are:  | 
|
338  | 
||
| 7882 | 339  | 
browser - Isabelle graph browser  | 
| 3278 | 340  | 
doc - view Isabelle documentation  | 
| 4540 | 341  | 
\dots  | 
| 3278 | 342  | 
\end{ttbox}
 | 
| 7882 | 343  | 
Basically, Isabelle tools are ordinary executable scripts. These are run  | 
344  | 
within the same Isabelle settings environment, see \S\ref{sec:settings}.  The
 | 
|
345  | 
set of available tools is collected by \texttt{isatool} from the directories
 | 
|
346  | 
listed in the \texttt{ISABELLE_TOOLS} setting.  Do not try to call the scripts
 | 
|
347  | 
directly. Neither should you add the tool directories to your shell's search  | 
|
348  | 
path.  | 
|
| 3278 | 349  | 
|
| 3217 | 350  | 
|
351  | 
\section{The Isabelle interface wrapper --- \texttt{Isabelle}} \label{sec:interface}
 | 
|
352  | 
||
| 7208 | 353  | 
Isabelle is a generic theorem prover, even w.r.t.\ its user interface. The  | 
354  | 
\ttindex{Isabelle} command (note the capital \texttt{I}) provides a uniform
 | 
|
355  | 
way for end-users to invoke a certain interface; which one to start actually  | 
|
| 7882 | 356  | 
is determined by the \settdx{ISABELLE_INTERFACE} setting variable.  Also note
 | 
357  | 
that the \texttt{install} utility provides some options to install desktop
 | 
|
358  | 
environment icons as well (see \S\ref{sec:tool-install}).
 | 
|
| 7208 | 359  | 
|
| 7849 | 360  | 
An interface may be specified either by giving an identifier that the Isabelle  | 
361  | 
distribution knows about, or by specifying an actual path name (containing a  | 
|
362  | 
slash ``\texttt{/}'') of some executable.  Currently, the following interfaces
 | 
|
363  | 
are available:  | 
|
364  | 
||
365  | 
\begin{itemize}
 | 
|
| 7882 | 366  | 
\item \texttt{none} is just a pass-through to plain \texttt{isabelle}. Thus
 | 
| 3278 | 367  | 
  \texttt{Isabelle} basically becomes an alias for \texttt{isabelle}.
 | 
| 7849 | 368  | 
|
| 7883 | 369  | 
\item \texttt{xterm} refers to a simple \textsl{xterm} based interface which
 | 
370  | 
is part of the Isabelle distribution.  | 
|
| 7208 | 371  | 
|
| 7849 | 372  | 
\item \texttt{emacs} refers to David Aspinall's \emph{Isamode}\index{user
 | 
| 7208 | 373  | 
interface!Isamode} for emacs. Isabelle just provides a wrapper for this,  | 
374  | 
  the actual Isamode distribution is available elsewhere \cite{isamode}.
 | 
|
| 7849 | 375  | 
|
376  | 
\item Proof~General~\cite{proofgeneral}\index{user interface!Proof General} of
 | 
|
377  | 
LFCS Edinburgh is distributed with separate interface wrapper scripts for  | 
|
378  | 
Isabelle. See below for more details.  | 
|
379  | 
\end{itemize}
 | 
|
| 3278 | 380  | 
|
| 7849 | 381  | 
The factory default for \texttt{ISABELLE_INTERFACE} is \texttt{xterm}.  This
 | 
382  | 
interface runs \texttt{isabelle} within its own \textsl{xterm} window.
 | 
|
| 7882 | 383  | 
Usually, display of mathematical symbols from the Isabelle font is enabled as  | 
384  | 
well (see \S\ref{sec:tool-installfonts} for X11 font configuration issues).
 | 
|
| 7849 | 385  | 
Furthermore, different kinds of identifiers in logical terms are highlighted  | 
386  | 
appropriately, e.g.\ free variables in bold and bound variables underlined.  | 
|
| 7861 | 387  | 
There are some more options available, just pass ``\texttt{-?}'' to get the
 | 
388  | 
usage printed.  | 
|
| 5364 | 389  | 
|
| 7849 | 390  | 
\medskip Proof~General\index{user interface!Proof General} is a much more
 | 
391  | 
advanced interface. It supports both classic Isabelle (as  | 
|
| 7208 | 392  | 
\texttt{ProofGeneral/isa}) and Isabelle/Isar (as \texttt{ProofGeneral/isar}).
 | 
| 7882 | 393  | 
Note that the latter is inherently more robust.  | 
| 7849 | 394  | 
|
| 7882 | 395  | 
Using the Isabelle interface wrapper scripts as provided by Proof~General, a  | 
396  | 
typical setup for Isabelle/Isar would be like this:  | 
|
| 7208 | 397  | 
\begin{ttbox}
 | 
398  | 
ISABELLE_INTERFACE=\$ISABELLE_HOME/contrib/ProofGeneral/isar/interface  | 
|
| 7882 | 399  | 
PROOFGENERAL_OPTIONS="-u false"  | 
| 7208 | 400  | 
\end{ttbox}
 | 
| 7849 | 401  | 
Thus \texttt{Isabelle} would automatically invoke Emacs with proper setup of
 | 
402  | 
the Proof~General Lisp packages. There are some options available, such as  | 
|
403  | 
\texttt{-l} for passing the logic image to be used.
 | 
|
| 7208 | 404  | 
|
| 7849 | 405  | 
\medskip Note that the world may be also seen the other way round: Emacs may  | 
| 7882 | 406  | 
be started first (with proper setup of Proof~General mode), and  | 
407  | 
\texttt{isabelle} run from within.  This requires further Emacs Lisp
 | 
|
| 7849 | 408  | 
configuration, see the Proof~General documentation \cite{proofgeneral} for
 | 
409  | 
more information.  | 
|
| 5364 | 410  | 
|
| 6412 | 411  | 
%%% Local Variables:  | 
| 5364 | 412  | 
%%% mode: latex  | 
413  | 
%%% TeX-master: "system"  | 
|
| 6412 | 414  | 
%%% End:  |