author | wenzelm |
Wed, 18 Oct 2000 23:29:13 +0200 | |
changeset 10250 | ca93fe25a84b |
parent 10108 | 72a719e997b9 |
child 10900 | 7268a5f425f8 |
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 |
|
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:
7883
diff
changeset
|
209 |
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
|
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:
7883
diff
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:
7883
diff
changeset
|
219 |
-c tell ML system to compress output image |
3188 | 220 |
-e MLTEXT pass MLTEXT to the ML session |
221 |
-m MODE add print mode for output |
|
222 |
-q non-interactive session |
|
223 |
-r open heap file read-only |
|
4540 | 224 |
-u pass 'use"ROOT.ML";' to the ML session |
225 |
-w reset write permissions on OUTPUT |
|
3188 | 226 |
|
227 |
INPUT (default "\$ISABELLE_LOGIC") and OUTPUT specify in/out heaps. |
|
7883 | 228 |
These are either names to be searched in the Isabelle path, or |
229 |
actual file names (containing at least one /). |
|
3188 | 230 |
If INPUT is "RAW_ML_SYSTEM", just start the bare bones ML system. |
231 |
\end{ttbox} |
|
232 |
Input files without path specifications are looked up in the |
|
7849 | 233 |
\texttt{ISABELLE_PATH} setting, which may consist of multiple components |
9790 | 234 |
separated by colons --- these are tried in the given order with the value of |
235 |
\texttt{ML_IDENTIFIER} appended internally. In a similar way, base names are |
|
236 |
relative to the directory specified by \texttt{ISABELLE_OUTPUT}. In any case, |
|
237 |
actual file locations may also be given by including at least one slash |
|
238 |
(\texttt{/}) in the name (hint: use \texttt{./} to refer to the current |
|
7849 | 239 |
directory). |
3188 | 240 |
|
241 |
||
242 |
\subsection*{Options} |
|
243 |
||
3217 | 244 |
If the input heap file does not have write permission bits set, or the |
7882 | 245 |
\texttt{-r} option is given explicitely, then the session started will be |
246 |
read-only. That is, the {\ML} world cannot be committed back into the logic |
|
247 |
image. Otherwise, a writable session enables commits into either the input |
|
248 |
file, or into an alternative output heap file (in case that is given as the |
|
249 |
second argument on the command line). |
|
3217 | 250 |
|
7882 | 251 |
The read-write state of sessions is determined at startup only, it cannot be |
252 |
changed intermediately. Also note that heap images may require considerable |
|
253 |
amounts of disk space. Users are responsible themselves to dispose their heap |
|
254 |
files when they are no longer needed. |
|
3188 | 255 |
|
7882 | 256 |
\medskip The \texttt{-w} option makes the output heap file read-only after |
257 |
terminating. Thus subsequent invocations cause the logic image to be |
|
258 |
read-only automatically. |
|
4540 | 259 |
|
8362
f1dd226f5956
isabelle -c: tell ML system to compress output image;
wenzelm
parents:
7883
diff
changeset
|
260 |
\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
|
261 |
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
|
262 |
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
|
263 |
less disk space consumption. |
f1dd226f5956
isabelle -c: tell ML system to compress output image;
wenzelm
parents:
7883
diff
changeset
|
264 |
|
10108 | 265 |
\medskip The \texttt{-C} option tells the ML system to produce a completely |
266 |
self-contained output image, probably including a copy of the ML runtime |
|
267 |
system itself. |
|
268 |
||
7882 | 269 |
\medskip Using the \texttt{-e} option, arbitrary {\ML} code may be passed to |
270 |
the Isabelle session from the command line. Multiple \texttt{-e}'s are |
|
271 |
evaluated in the given order. Strange things may happen when errorneous {\ML} |
|
272 |
code is provided. Also make sure that the {\ML} commands are terminated |
|
273 |
properly by semicolon. |
|
3188 | 274 |
|
4540 | 275 |
\medskip The \texttt{-u} option is a shortcut for \texttt{-e}, passing |
4555 | 276 |
``\texttt{use"ROOT.ML";}'' to the {\ML} session. |
4540 | 277 |
|
7882 | 278 |
\medskip The \texttt{-m} option adds identifiers of print modes to be made |
279 |
active for this session. Typically, this is used by some user interface, e.g.\ |
|
280 |
to enable output of mathematical symbols from a special screen font. |
|
3217 | 281 |
|
7882 | 282 |
\medskip Isabelle normally enters an interactive top-level loop (after |
283 |
processing the \texttt{-e} texts). The \texttt{-q} option inhibits |
|
284 |
interaction, thus providing a pure batch mode facility. |
|
5814 | 285 |
|
286 |
\medskip The \texttt{-I} option makes Isabelle enter Isar interaction mode on |
|
9983 | 287 |
startup, instead of the primitive {\ML} top-level. The \texttt{-P} option |
288 |
configures the top-level loop for interaction with the Proof~General user |
|
289 |
interface; do not enable this in ordinary sessions. |
|
3188 | 290 |
|
291 |
||
292 |
\subsection*{Examples} |
|
293 |
||
3217 | 294 |
Run an interactive session of the default object-logic (as specified |
295 |
by the \texttt{ISABELLE_LOGIC} setting) like this: |
|
3188 | 296 |
\begin{ttbox} |
297 |
isabelle |
|
298 |
\end{ttbox} |
|
3217 | 299 |
Usually \texttt{ISABELLE_LOGIC} refers to one of the standard logic |
300 |
images, which are read-only by default. A writable session --- based |
|
301 |
on \texttt{FOL}, but output to \texttt{Foo} (in the directory |
|
302 |
specified by the \texttt{ISABELLE_OUTPUT} setting) --- may be invoked |
|
303 |
as follows: |
|
3188 | 304 |
\begin{ttbox} |
305 |
isabelle FOL Foo |
|
306 |
\end{ttbox} |
|
3217 | 307 |
Ending this session normally (e.g.\ by typing control-D) dumps the |
3188 | 308 |
whole {\ML} system state into \texttt{Foo}. Be prepared for several |
309 |
megabytes! |
|
310 |
||
3217 | 311 |
The \texttt{Foo} session may be continued later (still in writable |
3262 | 312 |
state) by: |
3188 | 313 |
\begin{ttbox} |
314 |
isabelle Foo |
|
315 |
\end{ttbox} |
|
3217 | 316 |
A read-only \texttt{Foo} session may be started by: |
317 |
\begin{ttbox} |
|
318 |
isabelle -r Foo |
|
319 |
\end{ttbox} |
|
3188 | 320 |
|
7849 | 321 |
\medskip Note that manual session management like this does \emph{not} provide |
322 |
proper setup for theory presentation. This would require the \texttt{usedir} |
|
323 |
utility, see \S\ref{sec:tool-usedir}. |
|
324 |
||
325 |
\bigskip The next example demonstrates batch execution of Isabelle. We print a |
|
326 |
certain theorem of \texttt{FOL}: |
|
3188 | 327 |
\begin{ttbox} |
328 |
isabelle -e "prth allE;" -q -r FOL |
|
329 |
\end{ttbox} |
|
7882 | 330 |
Note that the output text will be interspersed with additional junk messages |
331 |
by the {\ML} runtime environment. |
|
3188 | 332 |
|
3217 | 333 |
|
334 |
\section{The Isabelle tools wrapper --- \texttt{isatool}} \label{sec:isatool} |
|
335 |
||
3278 | 336 |
All Isabelle related utilities are called via a common wrapper --- |
337 |
\ttindex{isatool}: |
|
338 |
\begin{ttbox} |
|
339 |
Usage: isatool TOOL [ARGS ...] |
|
340 |
||
341 |
Start Isabelle utility program TOOL with ARGS. Pass "-?" to TOOL |
|
342 |
for more specific help. |
|
343 |
||
344 |
Available tools are: |
|
345 |
||
7882 | 346 |
browser - Isabelle graph browser |
3278 | 347 |
doc - view Isabelle documentation |
4540 | 348 |
\dots |
3278 | 349 |
\end{ttbox} |
7882 | 350 |
Basically, Isabelle tools are ordinary executable scripts. These are run |
351 |
within the same Isabelle settings environment, see \S\ref{sec:settings}. The |
|
352 |
set of available tools is collected by \texttt{isatool} from the directories |
|
353 |
listed in the \texttt{ISABELLE_TOOLS} setting. Do not try to call the scripts |
|
354 |
directly. Neither should you add the tool directories to your shell's search |
|
355 |
path. |
|
3278 | 356 |
|
3217 | 357 |
|
358 |
\section{The Isabelle interface wrapper --- \texttt{Isabelle}} \label{sec:interface} |
|
359 |
||
7208 | 360 |
Isabelle is a generic theorem prover, even w.r.t.\ its user interface. The |
361 |
\ttindex{Isabelle} command (note the capital \texttt{I}) provides a uniform |
|
362 |
way for end-users to invoke a certain interface; which one to start actually |
|
7882 | 363 |
is determined by the \settdx{ISABELLE_INTERFACE} setting variable. Also note |
364 |
that the \texttt{install} utility provides some options to install desktop |
|
365 |
environment icons as well (see \S\ref{sec:tool-install}). |
|
7208 | 366 |
|
7849 | 367 |
An interface may be specified either by giving an identifier that the Isabelle |
368 |
distribution knows about, or by specifying an actual path name (containing a |
|
369 |
slash ``\texttt{/}'') of some executable. Currently, the following interfaces |
|
370 |
are available: |
|
371 |
||
372 |
\begin{itemize} |
|
7882 | 373 |
\item \texttt{none} is just a pass-through to plain \texttt{isabelle}. Thus |
3278 | 374 |
\texttt{Isabelle} basically becomes an alias for \texttt{isabelle}. |
7849 | 375 |
|
7883 | 376 |
\item \texttt{xterm} refers to a simple \textsl{xterm} based interface which |
377 |
is part of the Isabelle distribution. |
|
7208 | 378 |
|
7849 | 379 |
\item \texttt{emacs} refers to David Aspinall's \emph{Isamode}\index{user |
7208 | 380 |
interface!Isamode} for emacs. Isabelle just provides a wrapper for this, |
381 |
the actual Isamode distribution is available elsewhere \cite{isamode}. |
|
7849 | 382 |
|
9983 | 383 |
\item Proof~General~\cite{proofgeneral}\index{user interface!Proof General} is |
384 |
distributed with separate interface wrapper scripts for Isabelle. See below |
|
385 |
for more details. |
|
7849 | 386 |
\end{itemize} |
3278 | 387 |
|
7849 | 388 |
The factory default for \texttt{ISABELLE_INTERFACE} is \texttt{xterm}. This |
389 |
interface runs \texttt{isabelle} within its own \textsl{xterm} window. |
|
7882 | 390 |
Usually, display of mathematical symbols from the Isabelle font is enabled as |
391 |
well (see \S\ref{sec:tool-installfonts} for X11 font configuration issues). |
|
7849 | 392 |
Furthermore, different kinds of identifiers in logical terms are highlighted |
393 |
appropriately, e.g.\ free variables in bold and bound variables underlined. |
|
7861 | 394 |
There are some more options available, just pass ``\texttt{-?}'' to get the |
395 |
usage printed. |
|
5364 | 396 |
|
7849 | 397 |
\medskip Proof~General\index{user interface!Proof General} is a much more |
398 |
advanced interface. It supports both classic Isabelle (as |
|
7208 | 399 |
\texttt{ProofGeneral/isa}) and Isabelle/Isar (as \texttt{ProofGeneral/isar}). |
7882 | 400 |
Note that the latter is inherently more robust. |
7849 | 401 |
|
7882 | 402 |
Using the Isabelle interface wrapper scripts as provided by Proof~General, a |
403 |
typical setup for Isabelle/Isar would be like this: |
|
7208 | 404 |
\begin{ttbox} |
405 |
ISABELLE_INTERFACE=\$ISABELLE_HOME/contrib/ProofGeneral/isar/interface |
|
7882 | 406 |
PROOFGENERAL_OPTIONS="-u false" |
7208 | 407 |
\end{ttbox} |
7849 | 408 |
Thus \texttt{Isabelle} would automatically invoke Emacs with proper setup of |
409 |
the Proof~General Lisp packages. There are some options available, such as |
|
410 |
\texttt{-l} for passing the logic image to be used. |
|
7208 | 411 |
|
7849 | 412 |
\medskip Note that the world may be also seen the other way round: Emacs may |
7882 | 413 |
be started first (with proper setup of Proof~General mode), and |
414 |
\texttt{isabelle} run from within. This requires further Emacs Lisp |
|
7849 | 415 |
configuration, see the Proof~General documentation \cite{proofgeneral} for |
416 |
more information. |
|
5364 | 417 |
|
6412 | 418 |
%%% Local Variables: |
5364 | 419 |
%%% mode: latex |
420 |
%%% TeX-master: "system" |
|
6412 | 421 |
%%% End: |