| author | paulson | 
| Tue, 03 Jul 2001 15:29:29 +0200 | |
| changeset 11396 | 48fc0db9b896 | 
| parent 10900 | 7268a5f425f8 | 
| child 11582 | f666c1e4133d | 
| 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: 
7883diff
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 | |
| 9790 | 109 | \item \settdx{ISABELLE_OUTPUT} will has the {\ML} system identifier (according
 | 
| 110 |   to \texttt{ML_IDENTIFIER}) automatically appended to its value.
 | |
| 3188 | 111 | \end{itemize}
 | 
| 112 | ||
| 7882 | 113 | \medskip The Isabelle settings scheme is basically simple, but non-trivial. | 
| 114 | For debugging purposes, the resulting environment may be inspected with the | |
| 115 | \texttt{getenv} utility, see \S\ref{sec:tool-getenv}.
 | |
| 3188 | 116 | |
| 117 | ||
| 118 | \subsection{Common variables}
 | |
| 119 | ||
| 7882 | 120 | This is a reference of common Isabelle settings variables. Note that the list | 
| 121 | is somewhat open-ended. Third-party utilities or interfaces may add their own | |
| 122 | selection. Variables that are special in some sense are marked with *. | |
| 3217 | 123 | |
| 124 | \begin{description}
 | |
| 7882 | 125 | \item[\settdx{ISABELLE_HOME}*] is the location of the top-level Isabelle
 | 
| 126 | distribution directory. This is automatically determined from the Isabelle | |
| 127 |   executable that has been invoked.  Do not try to set \texttt{ISABELLE_HOME}
 | |
| 128 | yourself from the shell. | |
| 129 | ||
| 3217 | 130 | \item[\settdx{ISABELLE_HOME_USER}] is the user-specific counterpart of
 | 
| 7882 | 131 |   \texttt{ISABELLE_HOME}. The default value is \texttt{\~\relax/isabelle},
 | 
| 132 | under rare circumstances this may be changed in the global setting file. | |
| 133 |   Typically, the \texttt{ISABELLE_HOME_USER} directory mimics
 | |
| 134 |   \texttt{ISABELLE_HOME} to some extend. In particular, site-wide defaults may
 | |
| 135 |   be overridden by a private \texttt{etc/settings}.
 | |
| 136 | ||
| 137 | \item[\settdx{ISABELLE}*, \settdx{ISATOOL}*] are automatically set to the full
 | |
| 138 |   path names of the \texttt{isabelle} and \texttt{isatool} executables,
 | |
| 139 | respectively. Thus other tools and scripts need not assume that the | |
| 140 |   Isabelle \texttt{bin} directory is on the current search path of the shell.
 | |
| 6412 | 141 | |
| 142 | \item[\settdx{ML_SYSTEM}, \settdx{ML_HOME}, \settdx{ML_OPTIONS},
 | |
| 6414 | 143 |   \settdx{ML_PLATFORM}, \settdx{ML_IDENTIFIER}*] specify the underlying {\ML}
 | 
| 7882 | 144 | system to be used for Isabelle. There is only a fixed set of admissable | 
| 145 |   \texttt{ML_SYSTEM} names (see the \texttt{etc/settings} file of the
 | |
| 146 | distribution). | |
| 147 | ||
| 148 |   The actual compiler binary will be run from the directory \texttt{ML_HOME},
 | |
| 149 |   with \texttt{ML_OPTIONS} as first arguments on the command line.  The
 | |
| 150 |   optional \texttt{ML_PLATFORM} may specify the binary format of ML heap
 | |
| 151 | images, which is useful for cross-platform installations. The value of | |
| 152 |   \texttt{ML_IDENTIFIER} is automatically obtained by composing the
 | |
| 153 |   \texttt{ML_SYSTEM} and \texttt{ML_PLATFORM} values.
 | |
| 6414 | 154 | |
| 9790 | 155 | \item[\settdx{ISABELLE_PATH}] is a list of directories (separated by colons)
 | 
| 156 | where Isabelle logic images may reside. When looking up heaps files, the | |
| 157 |   value of \texttt{ML_IDENTIFIER} is appended to each component internally.
 | |
| 7882 | 158 | |
| 159 | \item[\settdx{ISABELLE_OUTPUT}*] is a directory where output heap files should
 | |
| 160 |   be stored by default. The \texttt{ML_SYSTEM} identifier is appended here,
 | |
| 161 | too. | |
| 162 | ||
| 163 | \item[\settdx{ISABELLE_BROWSER_INFO}] is the directory where theory browser
 | |
| 164 | information (HTML text, graph data, and printable documents) is stored (see | |
| 165 |   also \S\ref{sec:info}).  The default value is
 | |
| 4555 | 166 |   \texttt{\$ISABELLE_HOME_USER/browser_info}.
 | 
| 7882 | 167 | |
| 168 | \item[\settdx{ISABELLE_LOGIC}] specifies the default logic to load if none is
 | |
| 169 |   given explicitely by the user.  The default value is \texttt{HOL}.
 | |
| 170 | ||
| 171 | \item[\settdx{ISABELLE_USEDIR_OPTIONS}] is implicitly prefixed to the command
 | |
| 172 |   line of any \texttt{isatool usedir} invocation (see also
 | |
| 173 |   \S\ref{sec:tool-usedir}). This typically contains compilation options for
 | |
| 174 |   object-logics --- \texttt{usedir} is the basic utility for managing logic
 | |
| 175 |   sessions (cf.\ the \texttt{IsaMakefile}s in the distribution).
 | |
| 7849 | 176 | |
| 177 | \item[\settdx{ISABELLE_LATEX}, \settdx{ISABELLE_PDFLATEX},
 | |
| 178 |   \settdx{ISABELLE_BIBTEX}, \settdx{ISABELLE_DVIPS}] refer to {\LaTeX} related
 | |
| 179 |   tools for Isabelle document preparation (see also \S\ref{sec:tool-latex}).
 | |
| 7882 | 180 | |
| 181 | \item[\settdx{ISABELLE_TOOLS}] is a colon separated list of directories that
 | |
| 182 |   are scanned by \texttt{isatool} for external utility programs (see also
 | |
| 183 |   \S\ref{sec:isatool}).
 | |
| 184 | ||
| 185 | \item[\settdx{ISABELLE_DOCS}] is a colon separated list of directories with
 | |
| 186 | documentation files. | |
| 187 | ||
| 188 | \item[\settdx{DVI_VIEWER}] specifies the command to be used for displaying
 | |
| 189 |   \texttt{dvi} files.
 | |
| 190 | ||
| 191 | \item[\settdx{ISABELLE_INSTALL_FONTS}] determines the way that the Isabelle
 | |
| 192 | symbol fonts are installed into your currently running X11 display server. | |
| 193 |   X11 fonts are a subtle issue, see \S\ref{sec:tool-installfonts} for more
 | |
| 194 | information. | |
| 195 | ||
| 196 | \item[\settdx{ISABELLE_TMP_PREFIX}] is the prefix from which any running
 | |
| 197 |   \texttt{isabelle} process derives an individual directory for temporary
 | |
| 198 |   files.  The default is somewhere in \texttt{/tmp}.
 | |
| 199 | ||
| 200 | \item[\settdx{ISABELLE_INTERFACE}] is an identifier that specifies the actual
 | |
| 201 |   user interface that the capital \texttt{Isabelle} should invoke.  See
 | |
| 202 |   \S\ref{sec:interface} for more details.
 | |
| 3217 | 203 | |
| 204 | \end{description}
 | |
| 3188 | 205 | |
| 206 | ||
| 207 | \section{Isabelle proper --- \texttt{isabelle}}
 | |
| 208 | ||
| 8362 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 wenzelm parents: 
7883diff
changeset | 209 | The \ttindex{isabelle} executable runs bare-bones logic sessions --- either
 | 
| 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 wenzelm parents: 
7883diff
changeset | 210 | interactively or in batch mode. It provides an abstraction over the underlying | 
| 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 wenzelm parents: 
7883diff
changeset | 211 | {\ML} system, and over the actual heap file locations. Its usage is:
 | 
| 3188 | 212 | \begin{ttbox}
 | 
| 213 | Usage: isabelle [OPTIONS] [INPUT] [OUTPUT] | |
| 214 | ||
| 215 | Options are: | |
| 10108 | 216 | -C tell ML system to copy output image | 
| 5814 | 217 | -I startup Isar interaction mode | 
| 9983 | 218 | -P startup Proof General interaction mode | 
| 8362 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 wenzelm parents: 
7883diff
changeset | 219 | -c tell ML system to compress output image | 
| 3188 | 220 | -e MLTEXT pass MLTEXT to the ML session | 
| 10900 | 221 | -f pass 'Session.finish();' to the ML session | 
| 3188 | 222 | -m MODE add print mode for output | 
| 223 | -q non-interactive session | |
| 224 | -r open heap file read-only | |
| 4540 | 225 | -u pass 'use"ROOT.ML";' to the ML session | 
| 226 | -w reset write permissions on OUTPUT | |
| 3188 | 227 | |
| 228 | INPUT (default "\$ISABELLE_LOGIC") and OUTPUT specify in/out heaps. | |
| 7883 | 229 | These are either names to be searched in the Isabelle path, or | 
| 230 | actual file names (containing at least one /). | |
| 3188 | 231 | If INPUT is "RAW_ML_SYSTEM", just start the bare bones ML system. | 
| 232 | \end{ttbox}
 | |
| 233 | Input files without path specifications are looked up in the | |
| 7849 | 234 | \texttt{ISABELLE_PATH} setting, which may consist of multiple components
 | 
| 9790 | 235 | separated by colons --- these are tried in the given order with the value of | 
| 236 | \texttt{ML_IDENTIFIER} appended internally.  In a similar way, base names are
 | |
| 237 | relative to the directory specified by \texttt{ISABELLE_OUTPUT}.  In any case,
 | |
| 238 | actual file locations may also be given by including at least one slash | |
| 239 | (\texttt{/}) in the name (hint: use \texttt{./} to refer to the current
 | |
| 7849 | 240 | directory). | 
| 3188 | 241 | |
| 242 | ||
| 243 | \subsection*{Options}
 | |
| 244 | ||
| 3217 | 245 | If the input heap file does not have write permission bits set, or the | 
| 7882 | 246 | \texttt{-r} option is given explicitely, then the session started will be
 | 
| 247 | read-only.  That is, the {\ML} world cannot be committed back into the logic
 | |
| 248 | image. Otherwise, a writable session enables commits into either the input | |
| 249 | file, or into an alternative output heap file (in case that is given as the | |
| 250 | second argument on the command line). | |
| 3217 | 251 | |
| 7882 | 252 | The read-write state of sessions is determined at startup only, it cannot be | 
| 253 | changed intermediately. Also note that heap images may require considerable | |
| 254 | amounts of disk space. Users are responsible themselves to dispose their heap | |
| 255 | files when they are no longer needed. | |
| 3188 | 256 | |
| 7882 | 257 | \medskip The \texttt{-w} option makes the output heap file read-only after
 | 
| 258 | terminating. Thus subsequent invocations cause the logic image to be | |
| 259 | read-only automatically. | |
| 4540 | 260 | |
| 8362 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 wenzelm parents: 
7883diff
changeset | 261 | \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: 
7883diff
changeset | 262 | output heap (fully transparently). On Poly/ML for example, the image is | 
| 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 wenzelm parents: 
7883diff
changeset | 263 | garbage collected and all values maximally shared, resulting in up to 50\% | 
| 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 wenzelm parents: 
7883diff
changeset | 264 | less disk space consumption. | 
| 
f1dd226f5956
isabelle -c: tell ML system to compress output image;
 wenzelm parents: 
7883diff
changeset | 265 | |
| 10108 | 266 | \medskip The \texttt{-C} option tells the ML system to produce a completely
 | 
| 267 | self-contained output image, probably including a copy of the ML runtime | |
| 268 | system itself. | |
| 269 | ||
| 7882 | 270 | \medskip Using the \texttt{-e} option, arbitrary {\ML} code may be passed to
 | 
| 271 | the Isabelle session from the command line. Multiple \texttt{-e}'s are
 | |
| 272 | evaluated in the given order. Strange things may happen when errorneous {\ML}
 | |
| 273 | code is provided. Also make sure that the {\ML} commands are terminated
 | |
| 274 | properly by semicolon. | |
| 3188 | 275 | |
| 10900 | 276 | \medskip The \texttt{-u} option is a shortcut for \texttt{-e} passing
 | 
| 277 | ``\texttt{use"ROOT.ML";}'' to the {\ML} session.  The \texttt{-f} option
 | |
| 278 | passes ``\texttt{Session.finish();}'', which is intended mainly for
 | |
| 279 | administrative purposes. | |
| 4540 | 280 | |
| 7882 | 281 | \medskip The \texttt{-m} option adds identifiers of print modes to be made
 | 
| 282 | active for this session. Typically, this is used by some user interface, e.g.\ | |
| 283 | to enable output of mathematical symbols from a special screen font. | |
| 3217 | 284 | |
| 7882 | 285 | \medskip Isabelle normally enters an interactive top-level loop (after | 
| 286 | processing the \texttt{-e} texts). The \texttt{-q} option inhibits
 | |
| 287 | interaction, thus providing a pure batch mode facility. | |
| 5814 | 288 | |
| 289 | \medskip The \texttt{-I} option makes Isabelle enter Isar interaction mode on
 | |
| 9983 | 290 | startup, instead of the primitive {\ML} top-level.  The \texttt{-P} option
 | 
| 291 | configures the top-level loop for interaction with the Proof~General user | |
| 292 | interface; do not enable this in ordinary sessions. | |
| 3188 | 293 | |
| 294 | ||
| 295 | \subsection*{Examples}
 | |
| 296 | ||
| 3217 | 297 | Run an interactive session of the default object-logic (as specified | 
| 298 | by the \texttt{ISABELLE_LOGIC} setting) like this:
 | |
| 3188 | 299 | \begin{ttbox}
 | 
| 300 | isabelle | |
| 301 | \end{ttbox}
 | |
| 3217 | 302 | Usually \texttt{ISABELLE_LOGIC} refers to one of the standard logic
 | 
| 303 | images, which are read-only by default. A writable session --- based | |
| 304 | on \texttt{FOL}, but output to \texttt{Foo} (in the directory
 | |
| 305 | specified by the \texttt{ISABELLE_OUTPUT} setting) --- may be invoked
 | |
| 306 | as follows: | |
| 3188 | 307 | \begin{ttbox}
 | 
| 308 | isabelle FOL Foo | |
| 309 | \end{ttbox}
 | |
| 3217 | 310 | Ending this session normally (e.g.\ by typing control-D) dumps the | 
| 3188 | 311 | whole {\ML} system state into \texttt{Foo}. Be prepared for several
 | 
| 312 | megabytes! | |
| 313 | ||
| 3217 | 314 | The \texttt{Foo} session may be continued later (still in writable
 | 
| 3262 | 315 | state) by: | 
| 3188 | 316 | \begin{ttbox}
 | 
| 317 | isabelle Foo | |
| 318 | \end{ttbox}
 | |
| 3217 | 319 | A read-only \texttt{Foo} session may be started by:
 | 
| 320 | \begin{ttbox}
 | |
| 321 | isabelle -r Foo | |
| 322 | \end{ttbox}
 | |
| 3188 | 323 | |
| 7849 | 324 | \medskip Note that manual session management like this does \emph{not} provide
 | 
| 325 | proper setup for theory presentation.  This would require the \texttt{usedir}
 | |
| 326 | utility, see \S\ref{sec:tool-usedir}.
 | |
| 327 | ||
| 328 | \bigskip The next example demonstrates batch execution of Isabelle. We print a | |
| 329 | certain theorem of \texttt{FOL}:
 | |
| 3188 | 330 | \begin{ttbox}
 | 
| 331 | isabelle -e "prth allE;" -q -r FOL | |
| 332 | \end{ttbox}
 | |
| 7882 | 333 | Note that the output text will be interspersed with additional junk messages | 
| 334 | by the {\ML} runtime environment.
 | |
| 3188 | 335 | |
| 3217 | 336 | |
| 337 | \section{The Isabelle tools wrapper --- \texttt{isatool}} \label{sec:isatool}
 | |
| 338 | ||
| 3278 | 339 | All Isabelle related utilities are called via a common wrapper --- | 
| 340 | \ttindex{isatool}:
 | |
| 341 | \begin{ttbox}
 | |
| 342 | Usage: isatool TOOL [ARGS ...] | |
| 343 | ||
| 344 | Start Isabelle utility program TOOL with ARGS. Pass "-?" to TOOL | |
| 345 | for more specific help. | |
| 346 | ||
| 347 | Available tools are: | |
| 348 | ||
| 7882 | 349 | browser - Isabelle graph browser | 
| 3278 | 350 | doc - view Isabelle documentation | 
| 4540 | 351 | \dots | 
| 3278 | 352 | \end{ttbox}
 | 
| 7882 | 353 | Basically, Isabelle tools are ordinary executable scripts. These are run | 
| 354 | within the same Isabelle settings environment, see \S\ref{sec:settings}.  The
 | |
| 355 | set of available tools is collected by \texttt{isatool} from the directories
 | |
| 356 | listed in the \texttt{ISABELLE_TOOLS} setting.  Do not try to call the scripts
 | |
| 357 | directly. Neither should you add the tool directories to your shell's search | |
| 358 | path. | |
| 3278 | 359 | |
| 3217 | 360 | |
| 361 | \section{The Isabelle interface wrapper --- \texttt{Isabelle}} \label{sec:interface}
 | |
| 362 | ||
| 7208 | 363 | Isabelle is a generic theorem prover, even w.r.t.\ its user interface. The | 
| 364 | \ttindex{Isabelle} command (note the capital \texttt{I}) provides a uniform
 | |
| 365 | way for end-users to invoke a certain interface; which one to start actually | |
| 7882 | 366 | is determined by the \settdx{ISABELLE_INTERFACE} setting variable.  Also note
 | 
| 367 | that the \texttt{install} utility provides some options to install desktop
 | |
| 368 | environment icons as well (see \S\ref{sec:tool-install}).
 | |
| 7208 | 369 | |
| 7849 | 370 | An interface may be specified either by giving an identifier that the Isabelle | 
| 371 | distribution knows about, or by specifying an actual path name (containing a | |
| 372 | slash ``\texttt{/}'') of some executable.  Currently, the following interfaces
 | |
| 373 | are available: | |
| 374 | ||
| 375 | \begin{itemize}
 | |
| 7882 | 376 | \item \texttt{none} is just a pass-through to plain \texttt{isabelle}. Thus
 | 
| 3278 | 377 |   \texttt{Isabelle} basically becomes an alias for \texttt{isabelle}.
 | 
| 7849 | 378 | |
| 7883 | 379 | \item \texttt{xterm} refers to a simple \textsl{xterm} based interface which
 | 
| 380 | is part of the Isabelle distribution. | |
| 7208 | 381 | |
| 7849 | 382 | \item \texttt{emacs} refers to David Aspinall's \emph{Isamode}\index{user
 | 
| 7208 | 383 | interface!Isamode} for emacs. Isabelle just provides a wrapper for this, | 
| 384 |   the actual Isamode distribution is available elsewhere \cite{isamode}.
 | |
| 7849 | 385 | |
| 9983 | 386 | \item Proof~General~\cite{proofgeneral}\index{user interface!Proof General} is
 | 
| 387 | distributed with separate interface wrapper scripts for Isabelle. See below | |
| 388 | for more details. | |
| 7849 | 389 | \end{itemize}
 | 
| 3278 | 390 | |
| 7849 | 391 | The factory default for \texttt{ISABELLE_INTERFACE} is \texttt{xterm}.  This
 | 
| 392 | interface runs \texttt{isabelle} within its own \textsl{xterm} window.
 | |
| 7882 | 393 | Usually, display of mathematical symbols from the Isabelle font is enabled as | 
| 394 | well (see \S\ref{sec:tool-installfonts} for X11 font configuration issues).
 | |
| 7849 | 395 | Furthermore, different kinds of identifiers in logical terms are highlighted | 
| 396 | appropriately, e.g.\ free variables in bold and bound variables underlined. | |
| 7861 | 397 | There are some more options available, just pass ``\texttt{-?}'' to get the
 | 
| 398 | usage printed. | |
| 5364 | 399 | |
| 7849 | 400 | \medskip Proof~General\index{user interface!Proof General} is a much more
 | 
| 401 | advanced interface. It supports both classic Isabelle (as | |
| 7208 | 402 | \texttt{ProofGeneral/isa}) and Isabelle/Isar (as \texttt{ProofGeneral/isar}).
 | 
| 7882 | 403 | Note that the latter is inherently more robust. | 
| 7849 | 404 | |
| 7882 | 405 | Using the Isabelle interface wrapper scripts as provided by Proof~General, a | 
| 406 | typical setup for Isabelle/Isar would be like this: | |
| 7208 | 407 | \begin{ttbox}
 | 
| 408 | ISABELLE_INTERFACE=\$ISABELLE_HOME/contrib/ProofGeneral/isar/interface | |
| 7882 | 409 | PROOFGENERAL_OPTIONS="-u false" | 
| 7208 | 410 | \end{ttbox}
 | 
| 7849 | 411 | Thus \texttt{Isabelle} would automatically invoke Emacs with proper setup of
 | 
| 412 | the Proof~General Lisp packages. There are some options available, such as | |
| 413 | \texttt{-l} for passing the logic image to be used.
 | |
| 7208 | 414 | |
| 7849 | 415 | \medskip Note that the world may be also seen the other way round: Emacs may | 
| 7882 | 416 | be started first (with proper setup of Proof~General mode), and | 
| 417 | \texttt{isabelle} run from within.  This requires further Emacs Lisp
 | |
| 7849 | 418 | configuration, see the Proof~General documentation \cite{proofgeneral} for
 | 
| 419 | more information. | |
| 5364 | 420 | |
| 6412 | 421 | %%% Local Variables: | 
| 5364 | 422 | %%% mode: latex | 
| 423 | %%% TeX-master: "system" | |
| 6412 | 424 | %%% End: |