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