tuned;
authorwenzelm
Mon Oct 18 19:43:18 1999 +0200 (1999-10-18)
changeset 788252fb3667f7df
parent 7881 1b1db39a110b
child 7883 01e6e05d208b
tuned;
doc-src/System/basics.tex
doc-src/System/fonts.tex
doc-src/System/misc.tex
doc-src/System/present.tex
doc-src/System/system.tex
     1.1 --- a/doc-src/System/basics.tex	Mon Oct 18 18:38:21 1999 +0200
     1.2 +++ b/doc-src/System/basics.tex	Mon Oct 18 19:43:18 1999 +0200
     1.3 @@ -1,112 +1,105 @@
     1.4  
     1.5  % $Id$
     1.6  
     1.7 -\chapter{Basic concepts}
     1.8 +\chapter{The Isabelle system environment}
     1.9  
    1.10 -The \emph{Isabelle System Manual} describes Isabelle together with related
    1.11 -tools and user interfaces as seen from an outside, operating system oriented
    1.12 -view.  See the \emph{Isabelle Reference Manual}~\cite{isabelle-ref} and the
    1.13 -\emph{Isabelle Isar Reference Manual}~\cite{isabelle-isar-ref} for the
    1.14 -internal user commands, on the other hand.
    1.15 +This manual describes Isabelle together with related tools and user interfaces
    1.16 +as seen from an outside, system oriented view.  See also the \emph{Isabelle
    1.17 +  Reference Manual}~\cite{isabelle-ref} and the \emph{Isabelle Isar Reference
    1.18 +  Manual}~\cite{isabelle-isar-ref} for the actual Isabelle commands and
    1.19 +related functions.
    1.20  
    1.21  \medskip The Isabelle system environment is based on a few general elements:
    1.22  \begin{itemize}
    1.23 -\item The \emph{Isabelle settings mechanism}, which provides
    1.24 -  environment variables to all Isabelle programs (including tools and
    1.25 -  user interfaces).
    1.26 +\item The \emph{Isabelle settings mechanism}, which provides environment
    1.27 +  variables to all Isabelle programs (including tools and user interfaces).
    1.28  \item \emph{Isabelle proper} (\ttindex{isabelle}), which invokes logic
    1.29    sessions, both interactively or in batch mode. In particular,
    1.30    \texttt{isabelle} abstracts over the invocation of the actual {\ML} system
    1.31    to be used.
    1.32 -\item The \emph{Isabelle tools wrapper} (\ttindex{isatool}), which
    1.33 -  provides a generic startup platform for Isabelle related utilities.
    1.34 -  Thus tools automatically benefit from the settings mechanism.
    1.35 -  Furthermore, the shell's search path is kept clean from many small
    1.36 -  programs.
    1.37 -\item The \emph{Isabelle interface wrapper}
    1.38 -  (\ttindex{Isabelle}\footnote{Note the capital \texttt{I}!}), which
    1.39 -  provides some abstraction over the actual user interface to be used.
    1.40 +\item The \emph{Isabelle tools wrapper} (\ttindex{isatool}), which provides a
    1.41 +  generic startup platform for Isabelle related utilities.  Thus tools
    1.42 +  automatically benefit from the settings mechanism.
    1.43 +\item The \emph{Isabelle interface wrapper} (\ttindex{Isabelle}\footnote{Note
    1.44 +    the capital \texttt{I}!}), which provides some abstraction over the actual
    1.45 +  user interface to be used.
    1.46  \end{itemize}
    1.47  
    1.48 -\medskip The beginning user would probably just run one of the
    1.49 -interfaces (by invoking the capital \texttt{Isabelle}), and maybe some
    1.50 -basic tools like \texttt{doc} (see \S\ref{sec:tool-doc}).  This
    1.51 -assumes that the system has already been installed properly, of
    1.52 -course.\footnote{In case you have to do this yourself, see the
    1.53 -  \ttindex{INSTALL} file in the top-level directory of the
    1.54 -  distribution. The information provided there should be sufficient as
    1.55 -  a start.}
    1.56 +\medskip The beginning user would probably just run one of the interfaces (by
    1.57 +invoking the capital \texttt{Isabelle}), and maybe some basic tools like
    1.58 +\texttt{doc} (see \S\ref{sec:tool-doc}).  This assumes that the system has
    1.59 +already been installed, of course.\footnote{In case you have to do this
    1.60 +  yourself, see the \ttindex{INSTALL} file in the top-level directory of the
    1.61 +  distribution of how to proceed.  Some binary packages are available as
    1.62 +  well.}
    1.63  
    1.64  
    1.65  \section{Isabelle settings} \label{sec:settings}
    1.66  
    1.67  The Isabelle system heavily depends on the \emph{settings
    1.68 -  mechanism}\indexbold{settings}. Basically, this is just a collection
    1.69 -of environment variables, e.g.\ \texttt{ISABELLE_HOME},
    1.70 -\texttt{ML_SYSTEM}, \texttt{ML_HOME}.  These variables are \emph{not}
    1.71 -intended to be set directly from the shell!
    1.72 +  mechanism}\indexbold{settings}. Basically, this is a statically scoped
    1.73 +collection of environment variables, such as \texttt{ISABELLE_HOME},
    1.74 +\texttt{ML_SYSTEM}, \texttt{ML_HOME}.  These variables are \emph{not} intended
    1.75 +to be set directly from the shell, though.  Isabelle employs a somewhat more
    1.76 +sophisticated scheme of \emph{settings files} --- one for site-wide defaults,
    1.77 +another for additional user-specific modifications.  With all configuration
    1.78 +variables in at most two places, this scheme is more maintainable and
    1.79 +user-friendly than plain shell environment variables.
    1.80  
    1.81 -Isabelle employs a somewhat more sophisticated scheme of
    1.82 -\emph{settings files} --- one for site-wide defaults, another for
    1.83 -optional user-specific modifications.  With all configuration
    1.84 -variables in just a few places, this is much more maintainable and
    1.85 -user-friendly than ordinary shell environment variables.
    1.86 -
    1.87 -In particular, we avoid the typical situation where prospective users
    1.88 -of a software package are told to put this and that in their shell
    1.89 -startup scripts, before being able to actually run it. Isabelle
    1.90 -requires none such administrative chores of its end-users --- the
    1.91 -executables can be invoked straight away. Usually, users would just
    1.92 -want to put the Isabelle \texttt{bin} directory into their shell's
    1.93 -search path, of course.
    1.94 +In particular, we avoid the typical situation where prospective users of a
    1.95 +software package are told to put several things into their shell startup
    1.96 +scripts, before being able to actually run it. Isabelle requires none such
    1.97 +administrative chores of its end-users --- the executables can be invoked
    1.98 +straight away.  Occasionally, users would still want to put the Isabelle
    1.99 +\texttt{bin} directory into their shell's search path, but this is not
   1.100 +required.
   1.101  
   1.102  
   1.103 -\subsection{Building the environment}
   1.104 +\subsection{Creating the environment}
   1.105  
   1.106 -Whenever any of the Isabelle executables is run, their settings
   1.107 -environment is built as follows:
   1.108 +Whenever any of the Isabelle executables is run, their settings environment is
   1.109 +built as follows:
   1.110  
   1.111  \begin{enumerate}
   1.112 -\item The special variable \settdx{ISABELLE_HOME} is determined
   1.113 -  automatically from the location of the binary that has been run.
   1.114 -
   1.115 -  You should not try to set \texttt{ISABELLE_HOME} manually. Also note
   1.116 -  that the Isabelle executables have to be run from their original
   1.117 -  location in the distribution directory --- copying or linking them
   1.118 -  somewhere else just won't work!
   1.119 -
   1.120 -\item The file \texttt{\$ISABELLE_HOME/etc/settings} ist run as a
   1.121 -  shell script with the auto-export option for variables enabled.
   1.122 -
   1.123 +\item The special variable \settdx{ISABELLE_HOME} is determined automatically
   1.124 +  from the location of the binary that has been run.
   1.125 +  
   1.126 +  You should not try to set \texttt{ISABELLE_HOME} manually. Also note that
   1.127 +  the Isabelle executables either have to be run from their original location
   1.128 +  in the distribution directory, or via the executable objects created via the
   1.129 +  \texttt{install} utility (see \S\ref{sec:tool-install}).  Just doing a plain
   1.130 +  copy of the \texttt{bin} files will not work!
   1.131 +  
   1.132 +\item The file \texttt{\$ISABELLE_HOME/etc/settings} ist run as a shell script
   1.133 +  with the auto-export option for variables enabled.
   1.134 +  
   1.135    This file typically contains a rather long list of shell variable
   1.136 -  assigments, thus providing the site-wide default settings.  The
   1.137 -  Isabelle distribution already contains a global settings file with
   1.138 -  sensible defaults for most variables. When installing the system,
   1.139 -  only a few of these have to be adapted (most likely
   1.140 -  \texttt{ML_SYSTEM} etc.).
   1.141 +  assigments, thus providing the site-wide default settings.  The Isabelle
   1.142 +  distribution already contains a global settings file with sensible defaults
   1.143 +  for most variables. When installing the system, only a few of these have to
   1.144 +  be adapted (most likely \texttt{ML_SYSTEM} etc.).
   1.145    
   1.146  \item The file \texttt{\$ISABELLE_HOME_USER/etc/settings} (if it exists) is
   1.147 -  run the same way as the site default settings. Note that the variable
   1.148 +  run in the same way as the site default settings. Note that the variable
   1.149    \texttt{ISABELLE_HOME_USER} has already been set before --- usually to
   1.150    \texttt{\~\relax/isabelle}.
   1.151 -
   1.152 -  Thus individual users may override the site-wide defaults. See also
   1.153 -  file \texttt{etc/user-settings.sample} in the distribution.
   1.154 -  Typically, a user settings file would contain only a few lines, just
   1.155 -  the assigments that are really needed.  One should definitely
   1.156 -  \emph{not} start with a full copy the central
   1.157 -  \texttt{\$ISABELLE_HOME/etc/settings}. This could cause very
   1.158 -  annoying maintainance problems later, when the Isabelle installation
   1.159 -  is updated or changed otherwise.
   1.160 +  
   1.161 +  Thus individual users may override the site-wide defaults. See also file
   1.162 +  \texttt{etc/user-settings.sample} in the distribution.  Typically, a user
   1.163 +  settings file would contain only a few lines, just the assigments that are
   1.164 +  really changed.  One should definitely \emph{not} start with a full copy the
   1.165 +  basic \texttt{\$ISABELLE_HOME/etc/settings}. This could cause very annoying
   1.166 +  maintainance problems later, when the Isabelle installation is updated or
   1.167 +  changed otherwise.
   1.168  
   1.169  \end{enumerate}
   1.170  
   1.171 -Note that settings files are actually full GNU bash scripts. So one
   1.172 -may use complex shell commands, say \texttt{if} or \texttt{case}
   1.173 -statements to set variables depending on the system architecture or
   1.174 -other environment variables, for example. Such advanced features
   1.175 -should be added only with great care, though. In particular, external
   1.176 -environment references should be kept at a minimum.
   1.177 +Note that settings files are actually full GNU bash scripts. So one may use
   1.178 +complex shell commands, such as \texttt{if} or \texttt{case} statements, to
   1.179 +set variables depending on the system architecture or other environment
   1.180 +variables.  Such advanced features should be added only with great care,
   1.181 +though. In particular, external environment references should be kept at a
   1.182 +minimum.
   1.183  
   1.184  \medskip A few variables are somewhat special:
   1.185  \begin{itemize}
   1.186 @@ -119,111 +112,105 @@
   1.187    appended to their values.
   1.188  \end{itemize}
   1.189  
   1.190 -\medskip The Isabelle settings scheme is basically quite simple, but
   1.191 -non-trivial.  For debugging purposes, the resulting environment may be
   1.192 -inspected with the \texttt{getenv} utility, see
   1.193 -\S\ref{sec:tool-getenv}.
   1.194 +\medskip The Isabelle settings scheme is basically simple, but non-trivial.
   1.195 +For debugging purposes, the resulting environment may be inspected with the
   1.196 +\texttt{getenv} utility, see \S\ref{sec:tool-getenv}.
   1.197  
   1.198  
   1.199  \subsection{Common variables}
   1.200  
   1.201 -Below is a reference of common Isabelle settings variables. Note that
   1.202 -the list is somewhat open-ended. Third-party utilities or interfaces
   1.203 -may add their own selection. Variables that are special in some sense
   1.204 -are marked with *.
   1.205 +This is a reference of common Isabelle settings variables. Note that the list
   1.206 +is somewhat open-ended. Third-party utilities or interfaces may add their own
   1.207 +selection. Variables that are special in some sense are marked with *.
   1.208  
   1.209  \begin{description}
   1.210 -\item[\settdx{ISABELLE_HOME}*] is the location of the top-level
   1.211 -  Isabelle distribution directory. This is automatically determined
   1.212 -  from the Isabelle executable that has been invoked.  Do not try to
   1.213 -  set \texttt{ISABELLE_HOME} yourself from the shell.
   1.214 -
   1.215 +\item[\settdx{ISABELLE_HOME}*] is the location of the top-level Isabelle
   1.216 +  distribution directory. This is automatically determined from the Isabelle
   1.217 +  executable that has been invoked.  Do not try to set \texttt{ISABELLE_HOME}
   1.218 +  yourself from the shell.
   1.219 +  
   1.220  \item[\settdx{ISABELLE_HOME_USER}] is the user-specific counterpart of
   1.221 -  \texttt{ISABELLE_HOME}. The default value is
   1.222 -  \texttt{\~\relax/isabelle}, under rare circumstances this may be
   1.223 -  changed in the global setting file.  Typically, the
   1.224 -  \texttt{ISABELLE_HOME_USER} directory mimics \texttt{ISABELLE_HOME}
   1.225 -  to some extend. In particular, site-wide defaults may be overridden
   1.226 -  by a private \texttt{etc/settings}.
   1.227 -
   1.228 -\item[\settdx{ISABELLE}*, \settdx{ISATOOL}*] are automatically set to
   1.229 -  the full paths of the \texttt{isabelle} and \texttt{isatool}
   1.230 -  executables, respectively.  Thus other tools and scripts need not
   1.231 -  assume that the Isabelle \texttt{bin} directory is on the current
   1.232 -  search path of the shell.
   1.233 +  \texttt{ISABELLE_HOME}. The default value is \texttt{\~\relax/isabelle},
   1.234 +  under rare circumstances this may be changed in the global setting file.
   1.235 +  Typically, the \texttt{ISABELLE_HOME_USER} directory mimics
   1.236 +  \texttt{ISABELLE_HOME} to some extend. In particular, site-wide defaults may
   1.237 +  be overridden by a private \texttt{etc/settings}.
   1.238 +  
   1.239 +\item[\settdx{ISABELLE}*, \settdx{ISATOOL}*] are automatically set to the full
   1.240 +  path names of the \texttt{isabelle} and \texttt{isatool} executables,
   1.241 +  respectively.  Thus other tools and scripts need not assume that the
   1.242 +  Isabelle \texttt{bin} directory is on the current search path of the shell.
   1.243    
   1.244  \item[\settdx{ML_SYSTEM}, \settdx{ML_HOME}, \settdx{ML_OPTIONS},
   1.245    \settdx{ML_PLATFORM}, \settdx{ML_IDENTIFIER}*] specify the underlying {\ML}
   1.246 -  system to be used for Isabelle.  The choice of \texttt{ML_SYSTEM}
   1.247 -  identifiers is quite fixed, see the global \texttt{etc/settings} file for
   1.248 -  some examples. The actual compiler binary will be run from directory
   1.249 -  \texttt{ML_HOME}, with \texttt{ML_OPTIONS} as first arguments on the command
   1.250 -  line.  The optional \texttt{ML_PLATFORM} specifies the binary format of ML
   1.251 -  heap images, which is useful for cross-platform installations.  The value of
   1.252 -  \texttt{ML_IDENTIFIER} is (automatically) obtained by composing
   1.253 -  \texttt{ML_SYSTEM} and \texttt{ML_PLATFORM}.
   1.254 +  system to be used for Isabelle.  There is only a fixed set of admissable
   1.255 +  \texttt{ML_SYSTEM} names (see the \texttt{etc/settings} file of the
   1.256 +  distribution).
   1.257 +  
   1.258 +  The actual compiler binary will be run from the directory \texttt{ML_HOME},
   1.259 +  with \texttt{ML_OPTIONS} as first arguments on the command line.  The
   1.260 +  optional \texttt{ML_PLATFORM} may specify the binary format of ML heap
   1.261 +  images, which is useful for cross-platform installations.  The value of
   1.262 +  \texttt{ML_IDENTIFIER} is automatically obtained by composing the
   1.263 +  \texttt{ML_SYSTEM} and \texttt{ML_PLATFORM} values.
   1.264    
   1.265  \item[\settdx{ISABELLE_PATH}*] is a list of directories (separated by colons)
   1.266    where Isabelle logic images may reside. Note that the value of
   1.267    \texttt{ML_IDENTIFIER} is appended to each component automatically.
   1.268 -
   1.269 -\item[\settdx{ISABELLE_OUTPUT}*] is a directory where output heap
   1.270 -  files should be stored by default. The \texttt{ML_SYSTEM} identifier
   1.271 -  is appended here, too.
   1.272 -
   1.273 -\item[\settdx{ISABELLE_BROWSER_INFO}] is the directory where theory
   1.274 -  browser information (HTML and graph data) is stored (see also
   1.275 -  \S\ref{sec:info}).  The default value is
   1.276 +  
   1.277 +\item[\settdx{ISABELLE_OUTPUT}*] is a directory where output heap files should
   1.278 +  be stored by default. The \texttt{ML_SYSTEM} identifier is appended here,
   1.279 +  too.
   1.280 +  
   1.281 +\item[\settdx{ISABELLE_BROWSER_INFO}] is the directory where theory browser
   1.282 +  information (HTML text, graph data, and printable documents) is stored (see
   1.283 +  also \S\ref{sec:info}).  The default value is
   1.284    \texttt{\$ISABELLE_HOME_USER/browser_info}.
   1.285 -
   1.286 -\item[\settdx{ISABELLE_LOGIC}] specifies the default logic to load if
   1.287 -  none is given explicitely by the user --- e.g.\ when running
   1.288 -  \texttt{isabelle} directly, or some user interface.
   1.289 -
   1.290 -\item[\settdx{ISABELLE_USEDIR_OPTIONS}] is implicitly prefixed to the
   1.291 -  command line of any \texttt{isatool usedir} invocation (see also
   1.292 -  \S\ref{sec:tool-usedir}). This typically contains compilation
   1.293 -  options for object-logics --- \texttt{usedir} is the basic utility
   1.294 -  that builds them (cf.\ the \texttt{IsaMakefile}s in the
   1.295 -  distribution).
   1.296 +  
   1.297 +\item[\settdx{ISABELLE_LOGIC}] specifies the default logic to load if none is
   1.298 +  given explicitely by the user.  The default value is \texttt{HOL}.
   1.299 +  
   1.300 +\item[\settdx{ISABELLE_USEDIR_OPTIONS}] is implicitly prefixed to the command
   1.301 +  line of any \texttt{isatool usedir} invocation (see also
   1.302 +  \S\ref{sec:tool-usedir}). This typically contains compilation options for
   1.303 +  object-logics --- \texttt{usedir} is the basic utility for managing logic
   1.304 +  sessions (cf.\ the \texttt{IsaMakefile}s in the distribution).
   1.305    
   1.306  \item[\settdx{ISABELLE_LATEX}, \settdx{ISABELLE_PDFLATEX},
   1.307    \settdx{ISABELLE_BIBTEX}, \settdx{ISABELLE_DVIPS}] refer to {\LaTeX} related
   1.308    tools for Isabelle document preparation (see also \S\ref{sec:tool-latex}).
   1.309 -
   1.310 -\item[\settdx{ISABELLE_TOOLS}] is a colon separated list of
   1.311 -  directories that are scanned by \texttt{isatool} for utility
   1.312 -  programs (see also \S\ref{sec:isatool}).
   1.313 -
   1.314 -\item[\settdx{ISABELLE_DOCS}] is a colon separated list of directories
   1.315 -  with documentation files.
   1.316 -
   1.317 -\item[\settdx{DVI_VIEWER}] specifies the command to be used for
   1.318 -  displaying \texttt{dvi} files.
   1.319 -
   1.320 -\item[\settdx{ISABELLE_INSTALL_FONTS}] determines the way that the
   1.321 -  Isabelle symbol fonts are installed into your currently running X11
   1.322 -  display server. X11 fonts are a non-trivial issue, see
   1.323 -  \S\ref{sec:tool-installfonts} for more information.
   1.324 -
   1.325 -\item[\settdx{ISABELLE_TMP_PREFIX}] is the prefix from which any
   1.326 -  \texttt{isabelle} session derives an individual directory for
   1.327 -  temporary files.  The default is somewhere in \texttt{/tmp}.
   1.328 -
   1.329 -\item[\settdx{ISABELLE_INTERFACE}] is an identifier that specifies the
   1.330 -  actual user interface that the capital \texttt{Isabelle} should
   1.331 -  invoke.  Currently available are \texttt{none}, \texttt{xterm} and
   1.332 -  \texttt{emacs}. See \S\ref{sec:interface} for more details.
   1.333 +  
   1.334 +\item[\settdx{ISABELLE_TOOLS}] is a colon separated list of directories that
   1.335 +  are scanned by \texttt{isatool} for external utility programs (see also
   1.336 +  \S\ref{sec:isatool}).
   1.337 +  
   1.338 +\item[\settdx{ISABELLE_DOCS}] is a colon separated list of directories with
   1.339 +  documentation files.
   1.340 +  
   1.341 +\item[\settdx{DVI_VIEWER}] specifies the command to be used for displaying
   1.342 +  \texttt{dvi} files.
   1.343 +  
   1.344 +\item[\settdx{ISABELLE_INSTALL_FONTS}] determines the way that the Isabelle
   1.345 +  symbol fonts are installed into your currently running X11 display server.
   1.346 +  X11 fonts are a subtle issue, see \S\ref{sec:tool-installfonts} for more
   1.347 +  information.
   1.348 +  
   1.349 +\item[\settdx{ISABELLE_TMP_PREFIX}] is the prefix from which any running
   1.350 +  \texttt{isabelle} process derives an individual directory for temporary
   1.351 +  files.  The default is somewhere in \texttt{/tmp}.
   1.352 +  
   1.353 +\item[\settdx{ISABELLE_INTERFACE}] is an identifier that specifies the actual
   1.354 +  user interface that the capital \texttt{Isabelle} should invoke.  See
   1.355 +  \S\ref{sec:interface} for more details.
   1.356  
   1.357  \end{description}
   1.358  
   1.359  
   1.360  \section{Isabelle proper --- \texttt{isabelle}}
   1.361  
   1.362 -The \ttindex{isabelle} executable runs logic sessions --- either
   1.363 -interactively or in batch mode. It provides an abstraction over the
   1.364 -underlying {\ML} system, and over the actual heap file locations. Its
   1.365 -usage is:
   1.366 +The \ttindex{isabelle} executable runs logic sessions --- either interactively
   1.367 +or in batch mode. It provides an abstraction over the underlying {\ML} system,
   1.368 +and over the actual heap file locations. Its usage is:
   1.369  \begin{ttbox}
   1.370  Usage: isabelle [OPTIONS] [INPUT] [OUTPUT]
   1.371  
   1.372 @@ -243,52 +230,51 @@
   1.373  \end{ttbox}
   1.374  Input files without path specifications are looked up in the
   1.375  \texttt{ISABELLE_PATH} setting, which may consist of multiple components
   1.376 -separated by colons --- these are tried in order.  Likewise, base names are
   1.377 -relative to the directory specified by \texttt{ISABELLE_OUTPUT}.  In any case,
   1.378 -actual file locations may also be given by including at least one slash
   1.379 -(\texttt{/}) in the name (hint: use \texttt{./} to refer to the current
   1.380 +separated by colons --- these are tried in the given order.  Likewise, base
   1.381 +names are relative to the directory specified by \texttt{ISABELLE_OUTPUT}.  In
   1.382 +any case, actual file locations may also be given by including at least one
   1.383 +slash (\texttt{/}) in the name (hint: use \texttt{./} to refer to the current
   1.384  directory).
   1.385  
   1.386  
   1.387  \subsection*{Options}
   1.388  
   1.389  If the input heap file does not have write permission bits set, or the
   1.390 -\texttt{-r} option is given explicitely, then the session will be
   1.391 -read-only. That is, the {\ML} world cannot be committed back into the
   1.392 -logic image.  Otherwise, a writable session enables commits into
   1.393 -either the input file, or into an alternative output heap file (in
   1.394 -case this is given as the second argument on the command line).
   1.395 +\texttt{-r} option is given explicitely, then the session started will be
   1.396 +read-only.  That is, the {\ML} world cannot be committed back into the logic
   1.397 +image.  Otherwise, a writable session enables commits into either the input
   1.398 +file, or into an alternative output heap file (in case that is given as the
   1.399 +second argument on the command line).
   1.400  
   1.401 -The read-write state of sessions is determined at startup only, it
   1.402 -cannot be changed intermediately. Also note that heap images may
   1.403 -require considerable amounts of disk space. Users are responsible
   1.404 -themselves to dispose their heap files when they are no longer needed.
   1.405 +The read-write state of sessions is determined at startup only, it cannot be
   1.406 +changed intermediately. Also note that heap images may require considerable
   1.407 +amounts of disk space. Users are responsible themselves to dispose their heap
   1.408 +files when they are no longer needed.
   1.409  
   1.410 -\medskip The \texttt{-w} option makes the output heap file read-only
   1.411 -after terminating.  Thus subsequent invocations cause the logic image
   1.412 -to be read-only automatically.
   1.413 +\medskip The \texttt{-w} option makes the output heap file read-only after
   1.414 +terminating.  Thus subsequent invocations cause the logic image to be
   1.415 +read-only automatically.
   1.416  
   1.417 -\medskip Using the \texttt{-e} option, arbitrary {\ML} code may be
   1.418 -passed to the Isabelle session from the command line. Multiple
   1.419 -\texttt{-e}'s are evaluated in order. Strange things may happen when
   1.420 -errorneous {\ML} code is given. Also make sure that the {\ML} commands
   1.421 -are terminated properly by semicolon.
   1.422 +\medskip Using the \texttt{-e} option, arbitrary {\ML} code may be passed to
   1.423 +the Isabelle session from the command line. Multiple \texttt{-e}'s are
   1.424 +evaluated in the given order. Strange things may happen when errorneous {\ML}
   1.425 +code is provided. Also make sure that the {\ML} commands are terminated
   1.426 +properly by semicolon.
   1.427  
   1.428  \medskip The \texttt{-u} option is a shortcut for \texttt{-e}, passing
   1.429  ``\texttt{use"ROOT.ML";}'' to the {\ML} session.
   1.430  
   1.431 -\medskip The \texttt{-m} option adds identifiers of print modes to be
   1.432 -made active for this session. Typically, this is used by some user
   1.433 -interface, for example to enable output of mathematical symbols from a
   1.434 -special screen font.
   1.435 +\medskip The \texttt{-m} option adds identifiers of print modes to be made
   1.436 +active for this session. Typically, this is used by some user interface, e.g.\ 
   1.437 +to enable output of mathematical symbols from a special screen font.
   1.438  
   1.439 -\medskip Isabelle normally enters an interactice top-level loop (after
   1.440 -processing the \texttt{-e} texts). The \texttt{-q} option inhibits this, thus
   1.441 -providing a pure batch mode facility.
   1.442 +\medskip Isabelle normally enters an interactive top-level loop (after
   1.443 +processing the \texttt{-e} texts). The \texttt{-q} option inhibits
   1.444 +interaction, thus providing a pure batch mode facility.
   1.445  
   1.446  \medskip The \texttt{-I} option makes Isabelle enter Isar interaction mode on
   1.447 -startup, instead of the primitive {\ML} top-level.  Usually some user
   1.448 -interface (such Proof~General) takes care of this flag.
   1.449 +startup, instead of the primitive {\ML} top-level.  User interfaces (such
   1.450 +Proof~General) take care of this switch automatically.
   1.451  
   1.452  
   1.453  \subsection*{Examples}
   1.454 @@ -329,8 +315,8 @@
   1.455  \begin{ttbox}
   1.456  isabelle -e "prth allE;" -q -r FOL
   1.457  \end{ttbox}
   1.458 -The output text will be usually interspersed with additional junk messages by
   1.459 -the {\ML} runtime environment.
   1.460 +Note that the output text will be interspersed with additional junk messages
   1.461 +by the {\ML} runtime environment.
   1.462  
   1.463  
   1.464  \section{The Isabelle tools wrapper --- \texttt{isatool}} \label{sec:isatool}
   1.465 @@ -345,21 +331,16 @@
   1.466  
   1.467    Available tools are:
   1.468  
   1.469 -    browser - Isabelle theory graph browser
   1.470 +    browser - Isabelle graph browser
   1.471      doc - view Isabelle documentation
   1.472      \dots
   1.473  \end{ttbox}
   1.474 -Basically, Isabelle tools are ordinary executable scripts.  These are
   1.475 -run within the same settings environment as Isabelle proper, see
   1.476 -\S\ref{sec:settings}.  The set of available tools is collected by
   1.477 -isatool from the directories listed in the \texttt{ISABELLE_TOOLS}
   1.478 -setting.  Do not try to call the scripts directly. Neither should you
   1.479 -add the tool directories to your shell's search path.
   1.480 -
   1.481 -
   1.482 -\medskip See chapter~\ref{ch:tools} for descriptions of most utilities
   1.483 -that come with the Isabelle distributions. Third-parties may add their
   1.484 -own, of course.
   1.485 +Basically, Isabelle tools are ordinary executable scripts.  These are run
   1.486 +within the same Isabelle settings environment, see \S\ref{sec:settings}.  The
   1.487 +set of available tools is collected by \texttt{isatool} from the directories
   1.488 +listed in the \texttt{ISABELLE_TOOLS} setting.  Do not try to call the scripts
   1.489 +directly.  Neither should you add the tool directories to your shell's search
   1.490 +path.
   1.491  
   1.492  
   1.493  \section{The Isabelle interface wrapper --- \texttt{Isabelle}} \label{sec:interface}
   1.494 @@ -367,7 +348,9 @@
   1.495  Isabelle is a generic theorem prover, even w.r.t.\ its user interface.  The
   1.496  \ttindex{Isabelle} command (note the capital \texttt{I}) provides a uniform
   1.497  way for end-users to invoke a certain interface; which one to start actually
   1.498 -is determined by the \settdx{ISABELLE_INTERFACE} setting variable.
   1.499 +is determined by the \settdx{ISABELLE_INTERFACE} setting variable.  Also note
   1.500 +that the \texttt{install} utility provides some options to install desktop
   1.501 +environment icons as well (see \S\ref{sec:tool-install}).
   1.502  
   1.503  An interface may be specified either by giving an identifier that the Isabelle
   1.504  distribution knows about, or by specifying an actual path name (containing a
   1.505 @@ -375,7 +358,7 @@
   1.506  are available:
   1.507  
   1.508  \begin{itemize}
   1.509 -\item \texttt{none} is just a pass-through to \texttt{isabelle}. Thus
   1.510 +\item \texttt{none} is just a pass-through to plain \texttt{isabelle}. Thus
   1.511    \texttt{Isabelle} basically becomes an alias for \texttt{isabelle}.
   1.512    
   1.513  \item \texttt{xterm} refers to a simple xterm based interface which is part of
   1.514 @@ -392,8 +375,8 @@
   1.515  
   1.516  The factory default for \texttt{ISABELLE_INTERFACE} is \texttt{xterm}.  This
   1.517  interface runs \texttt{isabelle} within its own \textsl{xterm} window.
   1.518 -Usually, display of mathematical symbols from the Isabelle font is also
   1.519 -enabled (see \S\ref{sec:tool-installfonts} for font configuration issues).
   1.520 +Usually, display of mathematical symbols from the Isabelle font is enabled as
   1.521 +well (see \S\ref{sec:tool-installfonts} for X11 font configuration issues).
   1.522  Furthermore, different kinds of identifiers in logical terms are highlighted
   1.523  appropriately, e.g.\ free variables in bold and bound variables underlined.
   1.524  There are some more options available, just pass ``\texttt{-?}'' to get the
   1.525 @@ -402,21 +385,21 @@
   1.526  \medskip Proof~General\index{user interface!Proof General} is a much more
   1.527  advanced interface.  It supports both classic Isabelle (as
   1.528  \texttt{ProofGeneral/isa}) and Isabelle/Isar (as \texttt{ProofGeneral/isar}).
   1.529 -Note that the latter is slightly better supported, and more robust.
   1.530 +Note that the latter is inherently more robust.
   1.531  
   1.532 -Using the Isabelle interface wrapper scripts as provided by the Proof~General
   1.533 -distribution, a typical setup for Isabelle/Isar would be like this:
   1.534 +Using the Isabelle interface wrapper scripts as provided by Proof~General, a
   1.535 +typical setup for Isabelle/Isar would be like this:
   1.536  \begin{ttbox}
   1.537  ISABELLE_INTERFACE=\$ISABELLE_HOME/contrib/ProofGeneral/isar/interface
   1.538 -PROOFGENERAL_OPTIONS=""
   1.539 +PROOFGENERAL_OPTIONS="-u false"
   1.540  \end{ttbox}
   1.541  Thus \texttt{Isabelle} would automatically invoke Emacs with proper setup of
   1.542  the Proof~General Lisp packages.  There are some options available, such as
   1.543  \texttt{-l} for passing the logic image to be used.
   1.544  
   1.545  \medskip Note that the world may be also seen the other way round: Emacs may
   1.546 -be started first (with proper Proof~General mode setup), before running
   1.547 -\texttt{isabelle} from within.  This requires further Emacs Lisp
   1.548 +be started first (with proper setup of Proof~General mode), and
   1.549 +\texttt{isabelle} run from within.  This requires further Emacs Lisp
   1.550  configuration, see the Proof~General documentation \cite{proofgeneral} for
   1.551  more information.
   1.552  
     2.1 --- a/doc-src/System/fonts.tex	Mon Oct 18 18:38:21 1999 +0200
     2.2 +++ b/doc-src/System/fonts.tex	Mon Oct 18 19:43:18 1999 +0200
     2.3 @@ -3,74 +3,68 @@
     2.4  
     2.5  \chapter{Fonts and character encodings}
     2.6  
     2.7 -With the advent of print modes in Isabelle, variant forms of output
     2.8 -have become very easy. As the canonical application of this feature,
     2.9 -{\Pure} and major object-logics (\FOL, \ZF, \HOL, \HOLCF) support
    2.10 -optional input and output of nice mathematical symbols as built-in
    2.11 -option.
    2.12 +Using the print mode mechanism of Isabelle, variant forms of output become
    2.13 +very easy. As the canonical application of this feature, {\Pure} and major
    2.14 +object-logics (\FOL, \ZF, \HOL, \HOLCF) support optional input and output of
    2.15 +proper mathematical symbols as built-in option.
    2.16  
    2.17 -Symbolic output is enabled by activating the \ttindex{symbols} print
    2.18 -mode. User interfaces (e.g.\ \texttt{isa-xterm}, see
    2.19 -\S\ref{sec:interface}) usually do this already by default.
    2.20 +Symbolic output is enabled by activating the ``\ttindex{symbols}'' print mode.
    2.21 +User interfaces (e.g.\ \texttt{isa-xterm}, see \S\ref{sec:interface}) usually
    2.22 +do this already by default.
    2.23  
    2.24 -\medskip Displaying non-standard characters requires special screen
    2.25 -fonts, of course. The \texttt{installfonts} utility takes care of this
    2.26 -(see \S\ref{sec:tool-installfonts}). Furthermore, some {\ML} systems
    2.27 -disallow non-\textsc{ascii} characters in literal string constants.
    2.28 -This problem is avoided by appropriate input filtering (see
    2.29 -\S\ref{sec:tool-symbolinput}).
    2.30 +\medskip Displaying non-standard characters requires special screen fonts. The
    2.31 +\texttt{installfonts} utility takes care of this (see
    2.32 +\S\ref{sec:tool-installfonts}). Furthermore, some {\ML} systems disallow
    2.33 +non-\textsc{ascii} characters in literal string constants.  This problem is
    2.34 +avoided by appropriate input filtering (see \S\ref{sec:tool-symbolinput}).
    2.35  
    2.36 -These things usually happen behind the scenes.  Users normally do not
    2.37 -have to read the explanations below, unless something really fails to
    2.38 -work.
    2.39 +These things usually happen behind the scenes.  Users normally do not have to
    2.40 +read the explanations below, unless something really fails to work.
    2.41  
    2.42  
    2.43  \section{Telling X11 about the Isabelle fonts --- \texttt{isatool installfonts}}
    2.44  \label{sec:tool-installfonts}
    2.45  
    2.46 -The \tooldx{installfonts} utility ensures that your currently running
    2.47 -X11 display server (as determined by the \texttt{DISPLAY} environment
    2.48 -variable) knows about the Isabelle fonts. Its usage is:
    2.49 +The \tooldx{installfonts} utility ensures that your currently running X11
    2.50 +display server (as determined by the \texttt{DISPLAY} environment variable)
    2.51 +knows about the Isabelle fonts. Its usage is:
    2.52  \begin{ttbox}
    2.53  Usage: isatool installfonts
    2.54  
    2.55    Install the isabelle fonts into your X11 server.
    2.56    (May be safely called repeatedly.)
    2.57  \end{ttbox}
    2.58 -Note that this need not be called manually under normal circumstances
    2.59 ---- user interfaces depending on the Isabelle fonts usually invoke
    2.60 +Note that this need not be called manually under normal circumstances --- user
    2.61 +interfaces depending on the Isabelle fonts usually invoke
    2.62  \texttt{installfonts} automatically.
    2.63  
    2.64 -\medskip As simple as this might appear to be, it is not! X11 fonts
    2.65 -are a surprisingly complicated matter. Depending on your network
    2.66 -structure, fonts might have to be installed differently. This has to
    2.67 -be specified via the \settdx{ISABELLE_INSTALLFONTS} variable in your
    2.68 -local settings.
    2.69 +\medskip As simple as this might appear to be, it is not! X11 fonts are a
    2.70 +surprisingly complicated matter. Depending on your network structure, fonts
    2.71 +might have to be installed differently. This has to be specified via the
    2.72 +\settdx{ISABELLE_INSTALLFONTS} variable in your local settings.
    2.73  
    2.74 -\medskip In the simplest situation, X11 is used only locally, i.e.\ 
    2.75 -the client program (Isabelle) and the display server are run on the
    2.76 -same machine. In this case, most X11 display servers should be happy
    2.77 -by being told about the Isabelle fonts directory as follows:
    2.78 +\medskip In the simplest situation, X11 is used only locally, i.e.\ the client
    2.79 +program (Isabelle) and the display server are run on the same machine. In that
    2.80 +case, most X11 display servers should be happy by being told about the
    2.81 +Isabelle fonts directory as follows:
    2.82  \begin{ttbox}
    2.83  ISABELLE_INSTALLFONTS="xset fp+ $ISABELLE_HOME/lib/fonts; xset fp rehash"%$
    2.84  \end{ttbox}
    2.85 -The same also works for remote X11 sessions in a somewhat homogeneous
    2.86 -network, where any X11 display machine also mounts the Isabelle
    2.87 -distribution under the \emph{same} name as the client side.
    2.88 +The same also works for remote X11 sessions in a largely homogeneous network,
    2.89 +where any X11 display machine also mounts the Isabelle distribution under the
    2.90 +\emph{same} name as the client side.
    2.91  
    2.92 -\medskip Above method fails, though, if the display machine does have
    2.93 -the font files at the same location as the client. In case your server
    2.94 -is a full workstation with its own file system, you could in principle
    2.95 -just copy the fonts there and do an appropriate \texttt{xset~fp+}
    2.96 -manually before running the Isabelle interface. This is very awkward,
    2.97 -of course. It is even impossible for proper X11 terminals that do not
    2.98 -have their own file system.
    2.99 +\medskip Above method fails, though, if the display machine does have the font
   2.100 +files at the same location as the client. In case your server is a full
   2.101 +workstation with its own file system, you could in principle just copy the
   2.102 +fonts there and do an appropriate \texttt{xset~fp+} manually before running
   2.103 +the Isabelle interface. This is very awkward, of course. It is even impossible
   2.104 +for proper X11 terminals that do not have their own file system.
   2.105  
   2.106 -A much better solution is to have a \emph{font server} offer the
   2.107 -Isabelle fonts to any X11 display on the network.  There are already
   2.108 -suitable servers running at Munich and Cambridge. So in case you have
   2.109 -a sensible Internet connection to either site, you may just attach
   2.110 -yourself as follows:
   2.111 +A much better solution is to have a \emph{font server} offer the Isabelle
   2.112 +fonts to any X11 display on the network.  There are already suitable servers
   2.113 +running at Munich and Cambridge. So in case you have a permanent Internet
   2.114 +connection to either site, you may just attach yourself as follows:
   2.115  \begin{ttbox}
   2.116  ISABELLE_INSTALLFONTS="xset fp+ tcp/isafonts.informatik.tu-muenchen.de:7200"
   2.117  \end{ttbox}
   2.118 @@ -79,59 +73,55 @@
   2.119  ISABELLE_INSTALLFONTS="xset fp+ tcp/font-serv.cl.cam.ac.uk:7100"
   2.120  \end{ttbox}
   2.121  
   2.122 -\medskip In the unfortunate case that neither local fonts work, nor
   2.123 -accessing our world-wide font service is practical, it might be best
   2.124 -to start your own in-house font service. This is in principle easy to
   2.125 -setup. The program is called \texttt{xfs} (sometimes just
   2.126 -\texttt{fs)}, see the \texttt{man} pages of your system. There is an
   2.127 -example fontserver configuration available in the
   2.128 -\texttt{lib/fontserver} directory of the Isabelle distribution.
   2.129 +\medskip In the unfortunate case that neither local fonts work, nor accessing
   2.130 +our world-wide font service is practical, it might be best to start your own
   2.131 +in-house font service. This is in principle quite easy to setup. The program
   2.132 +is called \texttt{xfs} (sometimes just \texttt{fs)}, see the \texttt{man}
   2.133 +pages of your system. There is an example fontserver configuration available
   2.134 +in the \texttt{lib/fontserver} directory of the Isabelle distribution.
   2.135  
   2.136  
   2.137  \section{Check for non-ASCII characters --- \texttt{isatool nonascii}}
   2.138  \label{sec:tool-nonascii}
   2.139  
   2.140 -The \tooldx{nonascii} utility checks files for non-\textsc{ascii}
   2.141 -characters:
   2.142 +The \tooldx{nonascii} utility checks files for non-\textsc{ascii} characters:
   2.143  \begin{ttbox}
   2.144  Usage: nonascii [FILES|DIRS...]
   2.145  
   2.146  Recursively find .thy/.ML files and check for non-\textsc{ascii}
   2.147  characters.
   2.148  \end{ttbox}
   2.149 -Under normal circumstances, non-\textsc{ascii} characters do not
   2.150 -appear in theories and proof scripts.
   2.151 +Under normal circumstances, non-\textsc{ascii} characters do not appear in
   2.152 +theories and proof scripts.
   2.153  
   2.154  
   2.155  \section{Filtering non-ASCII characters --- \texttt{isatool symbolinput}}
   2.156  \label{sec:tool-symbolinput}
   2.157  
   2.158 -Processing non-\textsc{ascii} text is notoriously difficult.  In
   2.159 -particular, some {\ML} systems reject character codes outside the
   2.160 -range 32--127 as part of literal string constants. In order to
   2.161 -circumvent such restrictions, Isabelle employs a general notation
   2.162 -where glyphs are referred by some symbolic name instead of their
   2.163 -actual encoding: The general form is \verb|\<|$charname$\verb|>|.
   2.164 +Processing non-\textsc{ascii} text is notoriously difficult.  In particular,
   2.165 +some {\ML} systems reject character codes outside the range 32--127 as part of
   2.166 +literal string constants. In order to circumvent such restrictions, Isabelle
   2.167 +employs a general notation where glyphs are referred by some symbolic name
   2.168 +instead of their actual encoding: the general form is
   2.169 +\verb|\<|$charname$\verb|>|.
   2.170  
   2.171 -The \tooldx{symbolinput} utility converts a input stream encoded
   2.172 -according to the standard Isabelle font layout into pure
   2.173 -\textsc{ascii} text. There is no usage --- \texttt{symbolinput} just
   2.174 -works from standard input to standard output, without any options
   2.175 -available.
   2.176 +The \tooldx{symbolinput} utility converts an input stream encoded according to
   2.177 +the standard Isabelle font layout into pure \textsc{ascii} text. There is no
   2.178 +usage --- \texttt{symbolinput} just works from standard input to standard
   2.179 +output, without any options available.
   2.180  
   2.181 -\medskip For example, the non-\textsc{ascii} input string \texttt{"A
   2.182 -  $\land$ B $\lor$ C"} will be replaced by \verb|"A \\<and> B \\<or> C"|.
   2.183 -Note that the \verb|\| are escaped, accomodating concrete {\ML} string
   2.184 -syntax.
   2.185 +\medskip For example, the non-\textsc{ascii} input string \texttt{"A $\land$ B
   2.186 +  $\lor$ C"} will be replaced by \verb|"A \\<and> B \\<or> C"|.  Note that the
   2.187 +\verb|\| are escaped, accommodating concrete {\ML} string syntax.
   2.188  
   2.189 -\medskip In many cases, it might be wise not to rely on symbolic
   2.190 -characters and avoid non-\textsc{ascii} text in files altogether (see
   2.191 -also \S\ref{sec:tool-nonascii}). Then symbolic syntax would be really
   2.192 -optional, with always suitable \textsc{ascii} representations
   2.193 -available: In theory definitions, symbols appear only in mixfix
   2.194 -annotations --- using the \verb|\<|$charname$\verb|>| form, proof
   2.195 -scripts are just left in plain \textsc{ascii}.  Thus users with
   2.196 -\textsc{ascii}-only facilities will still be able to read your files.
   2.197 +\medskip In many cases, it might be wise not to rely on symbolic characters
   2.198 +and avoid non-\textsc{ascii} text in files altogether (see also
   2.199 +\S\ref{sec:tool-nonascii}). Then symbolic syntax would be really optional,
   2.200 +with always suitable \textsc{ascii} representations available.  In syntax
   2.201 +definitions, symbols appear only in mixfix annotations (using the
   2.202 +\verb|\<|$charname$\verb|>| form), while proof texts are left in plain
   2.203 +\textsc{ascii}.  Thus users with \textsc{ascii}-only facilities will still be
   2.204 +able to read your files.
   2.205  
   2.206  %%% Local Variables: 
   2.207  %%% mode: latex
     3.1 --- a/doc-src/System/misc.tex	Mon Oct 18 18:38:21 1999 +0200
     3.2 +++ b/doc-src/System/misc.tex	Mon Oct 18 19:43:18 1999 +0200
     3.3 @@ -15,15 +15,14 @@
     3.4  
     3.5    View Isabelle documentation DOC, or show list of available documents.
     3.6  \end{ttbox}
     3.7 -If called without arguments, it lists all available documents. Each
     3.8 -line starts with an identifier, followed by some comment. Any of these
     3.9 -identifiers may be specified as the first argument in order to have
    3.10 -the corresponding document displayed.
    3.11 +If called without arguments, it lists all available documents. Each line
    3.12 +starts with an identifier, followed by a short description. Any of these
    3.13 +identifiers may be specified as the first argument in order to have the
    3.14 +corresponding document displayed.
    3.15  
    3.16 -\medskip The \texttt{ISABELLE_DOCS} setting specifies the list of
    3.17 -directories (separated by colons) to be scanned for documentations.
    3.18 -The program for viewing \texttt{dvi} files is determined by the
    3.19 -\texttt{DVI_VIEWER} setting.
    3.20 +\medskip The \texttt{ISABELLE_DOCS} setting specifies the list of directories
    3.21 +(separated by colons) to be scanned for documentations.  The program for
    3.22 +viewing \texttt{dvi} files is determined by the \texttt{DVI_VIEWER} setting.
    3.23  
    3.24  
    3.25  \section{Tuning proof scripts --- \texttt{isatool expandshort}}
    3.26 @@ -40,17 +39,16 @@
    3.27  
    3.28    Renames old versions of files by appending "~~".
    3.29  \end{ttbox}
    3.30 -In the files or directories supplied as arguments, all occurrences of
    3.31 -the shorthand commands \texttt{br}, \texttt{be} etc.\ in proof scripts
    3.32 -are replaced with the corresponding full commands.  The old versions
    3.33 -of the files are renamed to have the suffix~\verb'~~'.
    3.34 +In the files or directories supplied as arguments, all occurrences of the
    3.35 +shorthand commands \texttt{br}, \texttt{be} etc.\ in proof scripts are
    3.36 +replaced with the corresponding full commands.  The old versions of the files
    3.37 +are renamed to have the suffix``~\verb'~~'''.
    3.38  
    3.39  
    3.40  \section{Getting logic images --- \texttt{isatool findlogics}}
    3.41  
    3.42  The \tooldx{findlogics} utility traverses all directories specified in
    3.43 -\texttt{ISABELLE_PATH}, looking for Isabelle logic images. Its usage
    3.44 -is:
    3.45 +\texttt{ISABELLE_PATH}, looking for Isabelle logic images. Its usage is:
    3.46  \begin{ttbox}
    3.47  Usage: isatool findlogics
    3.48  
    3.49 @@ -65,9 +63,9 @@
    3.50  \section{Inspecting the settings environment -- \texttt{isatool getenv}}
    3.51  \label{sec:tool-getenv}
    3.52  
    3.53 -The Isabelle settings environment --- as provided by the site-default
    3.54 -and user-specific settings files --- can be inspected with the
    3.55 -\tooldx{getenv} utility:
    3.56 +The Isabelle settings environment --- as provided by the site-default and
    3.57 +user-specific settings files --- can be inspected with the \tooldx{getenv}
    3.58 +utility:
    3.59  \begin{ttbox}
    3.60  Usage: isatool getenv [OPTIONS] [VARNAMES ...]
    3.61  
    3.62 @@ -78,26 +76,25 @@
    3.63    Get value of VARNAMES from the Isabelle settings.
    3.64  \end{ttbox}
    3.65  
    3.66 -With the \texttt{-a} option, one may inspect the full process
    3.67 -environment that Isabelle related programs are run in. This usually
    3.68 -contains much more variables than are actually Isabelle settings.
    3.69 -Normally, output is a list of lines of the form
    3.70 -\mbox{$name$\texttt{=}$value$}. The \texttt{-b} option causes only the
    3.71 -values to be printed.
    3.72 +With the \texttt{-a} option, one may inspect the full process environment that
    3.73 +Isabelle related programs are run in. This usually contains much more
    3.74 +variables than are actually Isabelle settings.  Normally, output is a list of
    3.75 +lines of the form \mbox{$name$\texttt{=}$value$}. The \texttt{-b} option
    3.76 +causes only the values to be printed.
    3.77  
    3.78  
    3.79  \subsection*{Examples}
    3.80  
    3.81 -Get the {\ML} system identifier and the location where the compiler
    3.82 -binaries are supposed to reside as follows:
    3.83 +Get the {\ML} system identifier and the location where the compiler binaries
    3.84 +are supposed to reside as follows:
    3.85  \begin{ttbox}
    3.86  isatool getenv ML_SYSTEM ML_HOME
    3.87  {\out ML_SYSTEM=smlnj-110}
    3.88  {\out ML_HOME=/usr/local/smlnj-110/bin}
    3.89  \end{ttbox}
    3.90  
    3.91 -The next one peeks at the search path that \texttt{isabelle} uses to
    3.92 -locate logic images:
    3.93 +The next one peeks at the search path that \texttt{isabelle} uses to locate
    3.94 +logic images:
    3.95  \begin{ttbox}
    3.96  isatool getenv -b ISABELLE_PATH
    3.97  {\out /home/me/isabelle/heaps/smlnj-110:/usr/local/isabelle/heaps/smlnj-110}
    3.98 @@ -108,15 +105,16 @@
    3.99  \begin{ttbox}
   3.100  ISABELLE_PATH=\$ISABELLE_HOME_USER/heaps:\$ISABELLE_HOME/heaps
   3.101  \end{ttbox}
   3.102 -Note how the \texttt{ML_SYSTEM} value got appended automatically to
   3.103 -each path component. This is a special feature of
   3.104 -\texttt{ISABELLE_PATH} (and also of \texttt{ISABELLE_OUTPUT}).
   3.105 +Note how the \texttt{ML_SYSTEM} value got appended automatically to each path
   3.106 +component. This is a special feature of \texttt{ISABELLE_PATH} (and also of
   3.107 +\texttt{ISABELLE_OUTPUT}).
   3.108  
   3.109  
   3.110  \section{Installing standalone Isabelle executables -- \texttt{isatool install}}
   3.111 +\label{sec:tool-install}
   3.112  
   3.113 -Usually, the Isabelle binaries (\texttt{isabelle}, \texttt{isatool} etc.) are
   3.114 -just run from their location within the distribution directory, probably
   3.115 +By default, the Isabelle binaries (\texttt{isabelle}, \texttt{isatool} etc.)
   3.116 +are just run from their location within the distribution directory, probably
   3.117  indirectly by the shell through its \texttt{PATH}.  Other schemes of
   3.118  installation are supported by the \tooldx{install} utility:
   3.119  \begin{ttbox}
   3.120 @@ -142,8 +140,9 @@
   3.121  note that a plain manual copy of the original Isabelle executables just would
   3.122  not work!
   3.123  
   3.124 -The \texttt{-k} option creates an Isabelle application object for the K
   3.125 -desktop environment.  The icon will appear directly on Desktop.
   3.126 +The \texttt{-k} option creates an Isabelle application object for the popular
   3.127 +\textsl{K~Desktop Environment} (KDE)\index{KDE}.  The icon will appear
   3.128 +directly on Desktop.
   3.129  
   3.130  
   3.131  \section{Creating instances of the Isabelle logo -- \texttt{isatool
     4.1 --- a/doc-src/System/present.tex	Mon Oct 18 18:38:21 1999 +0200
     4.2 +++ b/doc-src/System/present.tex	Mon Oct 18 19:43:18 1999 +0200
     4.3 @@ -6,10 +6,10 @@
     4.4  Isabelle provides several ways to present the outcome of formal developments,
     4.5  including WWW-based browsable libraries or actual printable documents.
     4.6  Presentation is centered around the concept of \emph{logic sessions}.  The
     4.7 -structure of sessions is that of a tree, with Isabelle \texttt{Pure} at its
     4.8 -root, further derived object-logics (e.g.\ \texttt{HOLCF} from \texttt{HOL},
     4.9 -and \texttt{HOL} from \texttt{Pure}), and application sessions at its leaves.
    4.10 -The latter usually do not have a separate {\ML} image.
    4.11 +global session structure is that of a tree, with Isabelle \texttt{Pure} at its
    4.12 +root, further object-logics derived (e.g.\ \texttt{HOLCF} from \texttt{HOL},
    4.13 +and \texttt{HOL} from \texttt{Pure}), and application sessions in leave
    4.14 +positions.  The latter usually do not have a separate {\ML} image.
    4.15  
    4.16  The \texttt{usedir} utility (see \S\ref{sec:tool-usedir}) provides the prime
    4.17  means for managing Isabelle sessions, including proper setup for presentation.
    4.18 @@ -23,8 +23,8 @@
    4.19  definition, the theorems proved in its ML file and the relationship with its
    4.20  ancestors and descendants.  Besides the HTML file that is generated for every
    4.21  theory, Isabelle stores links to all theories in an index file. These indexes
    4.22 -are linked with other indexes to represent the tree structure of Isabelle's
    4.23 -logics.
    4.24 +are linked with other indexes to represent the overall tree structure of logic
    4.25 +sessions.
    4.26  
    4.27  Isabelle also generates graph files that represent the theory hierarchy of a
    4.28  logic.  There is a graph browser Java applet embedded in the generated HTML
    4.29 @@ -35,10 +35,9 @@
    4.30  
    4.31  \medskip
    4.32  
    4.33 -In order to let Isabelle generate theory browsing information for logics that
    4.34 -are part of the Isabelle distribution, simply append ``\texttt{-i true}'' to
    4.35 -the \settdx{ISABELLE_USEDIR_OPTIONS} setting before making a logic.  For
    4.36 -example, in order to do this for {\FOL}, add something like this to your
    4.37 +In order to let Isabelle generate theory browsing information, simply append
    4.38 +``\texttt{-i true}'' to the \settdx{ISABELLE_USEDIR_OPTIONS} setting before
    4.39 +making a logic.  For example, in order to do this for {\FOL}, add this to your
    4.40  Isabelle settings file
    4.41  \begin{ttbox}
    4.42  ISABELLE_USEDIR_OPTIONS="-i true"
    4.43 @@ -47,8 +46,8 @@
    4.44  distribution and run \texttt{isatool make}, or even \texttt{isatool make all}.
    4.45  
    4.46  Some sessions (such as \texttt{HOL/Isar_examples}) even provide actual
    4.47 -printable documents.  These are prepared automatically as well if enabled by
    4.48 -giving an appropriate \texttt{-d} option, e.g.\
    4.49 +printable documents.  These are prepared automatically as well if enabled like
    4.50 +this, using the \texttt{-d} option
    4.51  \begin{ttbox}
    4.52  ISABELLE_USEDIR_OPTIONS="-i true -d dvi"
    4.53  \end{ttbox}
    4.54 @@ -72,8 +71,8 @@
    4.55  The generated HTML document of any theory includes all theorems proved in the
    4.56  corresponding {\ML} file, provided these have been stored properly via
    4.57  \ttindex{qed}, \ttindex{qed_goal}, \ttindex{qed_goalw}, \ttindex{bind_thm},
    4.58 -\ttindex{bind_thms} or \ttindex{store_thm}.  Section headings may be included
    4.59 -in the presentation via the {\ML} function
    4.60 +\ttindex{bind_thms} or \ttindex{store_thm} (see also \cite{isabelle-ref}).
    4.61 +Section headings may be included in the presentation via the {\ML} function
    4.62  \begin{ttbox}\index{*section}
    4.63  section: string -> unit
    4.64  \end{ttbox}
    4.65 @@ -101,12 +100,11 @@
    4.66  \section{Browsing theory graphs} \label{sec:browse}
    4.67  \index{theory graph browser|bold} 
    4.68  
    4.69 -The graph browser is a tool for visualizing dependency graphs of
    4.70 -Isabelle theories. Certain nodes of the graph (i.e.~theories) can be
    4.71 -grouped together in ``directories'', whose contents may be hidden,
    4.72 -thus enabling the user to filter out irrelevant information.  The
    4.73 -browser is written in Java, it can be used both as a stand-alone
    4.74 -application and as an applet.
    4.75 +The graph browser is a tool for visualizing dependency graphs. Certain nodes
    4.76 +of the graph (i.e.~theories) can be grouped together in ``directories'', whose
    4.77 +contents may be hidden, thus enabling the user to filter out irrelevant
    4.78 +information.  The browser is written in Java, it can be used both as a
    4.79 +stand-alone application and as an applet.
    4.80  
    4.81  
    4.82  \subsection{Invoking the graph browser}
    4.83 @@ -121,8 +119,8 @@
    4.84  
    4.85  \medskip The applet version of the browser can be invoked by opening the {\tt
    4.86    index.html} file in the directory \texttt{ISABELLE_BROWSER_INFO} from your
    4.87 -Web browser and selecting ``version for Java capable browsers''.  There is
    4.88 -also a link to the corresponding theory graph in every logic's {\tt
    4.89 +Web browser and selecting the version ``including theory graph browser''.
    4.90 +There is also a link to the corresponding theory graph in every logic's {\tt
    4.91    index.html} file.
    4.92  
    4.93  
    4.94 @@ -140,8 +138,8 @@
    4.95  
    4.96  \subsubsection*{The directory tree window}
    4.97  
    4.98 -This section describes the usage of the directory browser and the
    4.99 -meaning of the different items in the browser window.
   4.100 +We describe the usage of the directory browser and the meaning of the
   4.101 +different items in the browser window.
   4.102  \begin{itemize}
   4.103    
   4.104  \item A red arrow before a directory name indicates that the directory
   4.105 @@ -157,10 +155,10 @@
   4.106    also be unfolded by clicking on the corresponding node in the right
   4.107    sub-window.
   4.108    
   4.109 -\item Blue arrows stand before ordinary node (i.e.~theory) names. When
   4.110 -  clicking on such a name, the graph display window focuses to the
   4.111 -  corresponding node. Double clicking invokes a text viewer window in
   4.112 -  which the contents of the theory file are displayed.
   4.113 +\item Blue arrows stand before ordinary node names. When clicking on such a
   4.114 +  name (i.e.\ that of a theory), the graph display window focuses to the
   4.115 +  corresponding node. Double clicking invokes a text viewer window in which
   4.116 +  the contents of the theory file are displayed.
   4.117  
   4.118  \end{itemize}
   4.119  
   4.120 @@ -186,7 +184,7 @@
   4.121  follows:
   4.122  \begin{description}
   4.123    
   4.124 -\item[Open$\ldots$] Open a new graph file.
   4.125 +\item[Open \dots] Open a new graph file.
   4.126    
   4.127  \item[Export to PostScript] Outputs the current graph in {\sc
   4.128      PostScript} format, appropriately scaled to fit on one single
   4.129 @@ -239,7 +237,7 @@
   4.130  \label{sec:tool-document}
   4.131  
   4.132  The \tooldx{document} utility prepares logic session documents, processing the
   4.133 -sources both provided by the user and generated by Isabelle.  Its usage is:
   4.134 +sources both as provided by the user and generated by Isabelle.  Its usage is:
   4.135  \begin{ttbox}
   4.136  Usage: document [OPTIONS] [DIR]
   4.137  
   4.138 @@ -251,14 +249,14 @@
   4.139    producing the specified output format.
   4.140  \end{ttbox}
   4.141  This tool is usually run automatically as part of the corresponding session,
   4.142 -provided document preparation is enabled (cf.\ the \texttt{-d} option of the
   4.143 -\texttt{usedir} utility, \S\ref{sec:tool-usedir}).  It may be manually invoked
   4.144 -on the generated browser information document output as well.
   4.145 +provided document preparation has been enabled (cf.\ the \texttt{-d} option of
   4.146 +the \texttt{usedir} utility, \S\ref{sec:tool-usedir}).  It may be manually
   4.147 +invoked on the generated browser information document output as well.
   4.148  
   4.149  \medskip Document preparation requires a properly setup ``\texttt{document}''
   4.150  directory within the logic session sources.  This directory is supposed to
   4.151 -contain all the files needed to produce the actual document, apart from the
   4.152 -actual theories as generated by Isabelle.
   4.153 +contain all the files needed to produce the final document --- apart from the
   4.154 +actual theories which are generated by Isabelle.
   4.155  
   4.156  \medskip For simple documents, the \texttt{document} tool is smart enough to
   4.157  create any of the output formats, taking \texttt{root.tex} supplied by the
   4.158 @@ -284,9 +282,9 @@
   4.159  \texttt{isabelle.sty} as distributed with Isabelle.  Doing
   4.160  \verb,\usepackage{isabelle}, somewhere in \texttt{root.tex} should work fine;
   4.161  the underlying Isabelle \texttt{latex} utility already includes an appropriate
   4.162 -{\TeX} inputs path.  For proper setup of hyperlinks and bookmarks in PDF
   4.163 -documents we recommend to include \verb,pdfsetup.sty, as well.\footnote{It is
   4.164 -  safe to do so even without using PDF~\LaTeX.}
   4.165 +{\TeX} inputs path.  For proper setup of PDF documents (with hyperlinks,
   4.166 +bookmarks, and thumbnail images), we recommend to include \verb,pdfsetup.sty,
   4.167 +as well.\footnote{It is safe to do so even without using PDF~\LaTeX.}
   4.168  
   4.169  \medskip As a final step, \texttt{isatool document} is run on the resulting
   4.170  \texttt{document} directory.  Thus the actual output document is built and
   4.171 @@ -314,7 +312,7 @@
   4.172  the given output format: \texttt{latex}, \texttt{pdflatex}, \texttt{dvips},
   4.173  \texttt{bibtex} (for \texttt{bbl}), and \texttt{thumbpdf} (for \texttt{png}).
   4.174  The actual commands are determined from the settings environment
   4.175 -(\texttt{ISABELLE_LATEX} etc.).
   4.176 +(\texttt{ISABELLE_LATEX} etc., see \S\ref{sec:settings}).
   4.177  
   4.178  It is important to note that the {\LaTeX} inputs file space has to be properly
   4.179  setup to include the Isabelle styles.  Usually, this may be done by modifying
   4.180 @@ -354,14 +352,13 @@
   4.181  \ttindex{IsaMakefile}s of all object-logics distributed with Isabelle just
   4.182  invoke \texttt{usedir} for the real work, one may control compilation options
   4.183  globally via above variable. In particular, generation of \rmindex{HTML}
   4.184 -browsing information and document preparation is controlled this way.
   4.185 +browsing information and document preparation is controlled here.
   4.186  
   4.187  
   4.188  \subsection*{Options}
   4.189  
   4.190 -Basically, there are two different modes of operation: \emph{build
   4.191 -  mode} (enabled through the \texttt{-b} option) and \emph{example
   4.192 -  mode} (default).
   4.193 +Basically, there are two different modes of operation: \emph{build mode}
   4.194 +(enabled through the \texttt{-b} option) and \emph{example mode} (default).
   4.195  
   4.196  Calling \texttt{usedir} with \texttt{-b} runs \texttt{isabelle} with input
   4.197  image \texttt{LOGIC} and output to \texttt{NAME}, as provided on the command
   4.198 @@ -374,34 +371,32 @@
   4.199  Isabelle distribution directory, rather than the user's home directory.
   4.200  
   4.201  In example mode, \texttt{usedir} runs a read-only session of \texttt{LOGIC}
   4.202 -(typically just built before) and automatically runs \texttt{ROOT.ML} from
   4.203 -within directory \texttt{NAME}.  It assumes that file \texttt{ROOT.ML} in
   4.204 -directory \texttt{NAME} contains appropriate {\ML} commands to run the desired
   4.205 -examples.
   4.206 +and automatically runs \texttt{ROOT.ML} from within directory \texttt{NAME}.
   4.207 +It assumes that this file contains appropriate {\ML} commands to run the
   4.208 +desired examples.
   4.209  
   4.210 -\medskip The \texttt{-i} option controls theory browsing data generation. It
   4.211 -may be explicitly turned on or off --- the last occurrence of \texttt{-i} on
   4.212 -the command line wins.  The \texttt{-P} option specifies a path (or actual
   4.213 -URL) to be prefixed to any \emph{non-local} reference of existing theories.
   4.214 -Thus user sessions may easily link to existing Isabelle libraries already
   4.215 -present on the WWW.
   4.216 +\medskip The \texttt{-i} option controls theory browser data generation. It
   4.217 +may be explicitly turned on or off --- as usual, the last occurrence of
   4.218 +\texttt{-i} on the command line wins.  The \texttt{-P} option specifies a path
   4.219 +(or actual URL) to be prefixed to any \emph{non-local} reference of existing
   4.220 +theories.  Thus user sessions may easily link to existing Isabelle libraries
   4.221 +already present on the WWW.
   4.222  
   4.223  \medskip The \texttt{-d} option controls document preparation.  Valid
   4.224 -arguments are \texttt{false} (do not prepare document; this is default), or
   4.225 -any of \texttt{dvi}, \texttt{dvi.gz}, \texttt{ps}, \texttt{ps.gz},
   4.226 +arguments are \texttt{false} (do not prepare any document; this is default),
   4.227 +or any of \texttt{dvi}, \texttt{dvi.gz}, \texttt{ps}, \texttt{ps.gz},
   4.228  \texttt{pdf}.  The logic session has to provide a properly setup
   4.229  \texttt{document} directory.  See \S\ref{sec:tool-document} and
   4.230  \S\ref{sec:tool-latex} for more details.
   4.231  
   4.232  \medskip Any \texttt{usedir} session is named by some \emph{session
   4.233 -  identifier}. These accumulate, documenting the way sessions depend
   4.234 -on others. For example, consider \texttt{Pure/FOL/ex}, which refers to
   4.235 -the examples of {\FOL} which is built upon {\Pure}.
   4.236 +  identifier}. These accumulate, documenting the way sessions depend on
   4.237 +others. For example, consider \texttt{Pure/FOL/ex}, which refers to the
   4.238 +examples of {\FOL}, which in turn is built upon {\Pure}.
   4.239  
   4.240 -The current session's identifier is by default just the base name of
   4.241 -the \texttt{LOGIC} argument (in build mode), or of the \texttt{NAME}
   4.242 -argument (in example mode). This may be overridden explicitely via the
   4.243 -\texttt{-s} option.
   4.244 +The current session's identifier is by default just the base name of the
   4.245 +\texttt{LOGIC} argument (in build mode), or of the \texttt{NAME} argument (in
   4.246 +example mode). This may be overridden explicitly via the \texttt{-s} option.
   4.247  
   4.248  
   4.249  \subsection*{Examples}
     5.1 --- a/doc-src/System/system.tex	Mon Oct 18 18:38:21 1999 +0200
     5.2 +++ b/doc-src/System/system.tex	Mon Oct 18 19:43:18 1999 +0200
     5.3 @@ -27,8 +27,8 @@
     5.4  
     5.5  \include{basics}
     5.6  \include{present}
     5.7 +\include{misc}
     5.8  \include{fonts}
     5.9 -\include{misc}
    5.10  
    5.11  \begingroup
    5.12    \bibliographystyle{plain} \small\raggedright\frenchspacing