doc-src/System/basics.tex
author wenzelm
Wed, 14 May 1997 19:27:21 +0200
changeset 3188 445555a7b714
child 3217 d30d62128fe5
permissions -rw-r--r--
preliminary!
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3188
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
     1
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
     2
% $Id$
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
     3
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
     4
\chapter{Basic concepts}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
     5
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
     6
The \emph{Isabelle System Manual} describes Isabelle together with its
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
     7
related tools and user interfaces --- as seen from an outside
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
     8
(operating system oriented) view.  On the other hand, see
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
     9
\emph{Isabelle Reference} for all internal {\ML} level user commands.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    10
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    11
\medskip The Isabelle system level environment is based on a few
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    12
generic concepts that are simple, but non-trivial:
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    13
\begin{itemize}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    14
\item The \emph{Isabelle settings mechanism}, which provides
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    15
  environment values to all Isabelle programs (including tools and
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    16
  user interfaces).
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    17
\item \emph{Isabelle proper} (\ttindex{isabelle}), which runs logic
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    18
  sessions, both interactively or in batch mode. In particular,
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    19
  \texttt{isabelle} abstracts over the invocation of the actual {\ML}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    20
  system to be used.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    21
\item The \emph{Isabelle tools wrapper} (\ttindex{isatool}), which
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    22
  provides a generic startup platform for miscellaneous utilities.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    23
  Thus tools automatically benefit from the settings mechanism.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    24
  Furthermore, the shell's search path is kept clean from many small
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    25
  programs.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    26
\item The \emph{Isabelle interface wrapper}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    27
  (\ttindex{Isabelle}\footnote{Note the capital \texttt{I}!}), which
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    28
  provides some abstraction over the actual user interface to be used
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    29
  (this may include third-party ones).
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    30
\end{itemize}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    31
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    32
\medskip The beginning user would probably just run one of the
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    33
interfaces (by invoking the capital \texttt{Isabelle}), and maybe some
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    34
basic other tools like \texttt{doc} (see \S\ref{sec:tool-doc}).  This
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    35
assumes that the system has already been installed properly, of
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    36
course.\footnote{In case you have to do this yourself from scratch,
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    37
  see the \ttindex{INSTALL} file in the top-level directory of the
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    38
  distribution. The information provided there should be sufficient as
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    39
  a start.}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    40
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    41
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    42
\section{Isabelle settings} \label{sec:settings}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    43
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    44
The Isabelle system heavily depends on the \emph{settings
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    45
  mechanism}\indexbold{settings}. Basically, this is just a collection
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    46
of environment variables, e.g.\ \texttt{ISABELLE_HOME},
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    47
\texttt{ML_SYSTEM}, \texttt{ML_HOME}.  These variables are \emph{not}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    48
intended to be set directly from the shell!
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    49
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    50
Isabelle employs a somewhat more sophisticated scheme of
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    51
\emph{settings files} --- one for site-wide defaults, another for
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    52
optional user-specific modifications.  With all configuration
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    53
variables in only one or two places, this is considered much more
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    54
maintainable and user-friendly than ordinary shell environment
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    55
variables.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    56
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    57
In particular, we avoid the typical situation where prospective users
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    58
of a software package are told to put this and that in their shell
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    59
startup scripts. Isabelle requires none such administrative chores of
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    60
its end-users --- the executables can be run straight away. Usually,
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    61
users would want to put the Isabelle \texttt{bin} directory into their
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    62
shell's search path, of course.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    63
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    64
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    65
\subsection{Building the environment}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    66
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    67
The environment that all Isabelle programs are run in is built as
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    68
follows:
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    69
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    70
\begin{enumerate}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    71
\item The special variable \ttindex{ISABELLE_HOME} is determined
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    72
  automatically from the location of the binary that has been run
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    73
  (e.g.\ \texttt{isabelle}).
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    74
  
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    75
  You should not try to set \texttt{ISABELLE_HOME} manually. Also note
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    76
  that the Isabelle executables have to be run from their original
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    77
  location in the distribution directory --- copying or linking them
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    78
  somewhere else just won't work!
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    79
  
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    80
\item The file \texttt{\$ISABELLE_HOME/etc/settings} ist run as a GNU
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    81
  bash script with the variable auto-export option enabled.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    82
  
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    83
  The file typically contains a rather long list of assigments
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    84
  \texttt{FOO="bar"}, thus providing the site default settings. The
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    85
  Isabelle distribution already contains a global settings file with
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    86
  sensible defaults. When installing the system, only a few of these
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    87
  have to be adapted (most likely \texttt{ML_SYSTEM} and friends).
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    88
  
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    89
\item The file \texttt{\$ISABELLE_HOME_USER/etc/settings} (if it
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    90
  exists) is run the same way as the site default settings. The
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    91
  variable \texttt{ISABELLE_HOME_USER} has already been set before ---
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    92
  usually to \texttt{\~\relax/isabelle}.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    93
  
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    94
  Thus individual users may override the site-wide defaults. See also
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    95
  file \texttt{etc/user-settings.sample} in the distribution.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    96
  Typically, user settings are a few lines only, just containing the
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    97
  assigments that are really required.  One should definitely
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    98
  \emph{not} start with a full copy the central
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
    99
  \texttt{\$ISABELLE_HOME/etc/settings}. This may cause severe
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   100
  maintainance problems later, when the Isabelle installation is
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   101
  updated or changed otherwise.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   102
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   103
\end{enumerate}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   104
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   105
Note that settings files are actually bash scripts. So one may use
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   106
complex shell commands, e.g.\ \texttt{if} or \texttt{case} statements
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   107
to set variables depending on the system architecture or other
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   108
environment variables. Such advanced features should be added only
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   109
with great care, though. In particular, external environment
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   110
references should be kept at a minimum.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   111
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   112
\medskip A few variables are somewhat:
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   113
\begin{itemize}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   114
\item \ttindex{ISABELLE} and \ttindex{ISATOOL} are set automatically
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   115
  to the absolute path names of the \texttt{isabelle} and
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   116
  \texttt{isatool} executables, respectively.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   117
  
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   118
\item \ttindex{ISABELLE_PATH} and \ttindex{ISABELLE_OUTPUT} will have
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   119
  the {\ML} system identifier (as specified by \texttt{ML_SYSTEM})
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   120
  automatically appended to their values.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   121
\end{itemize}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   122
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   123
\medskip The Isabelle settings scheme is basically quite simple, but
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   124
non-trivial.  For debugging purposes, the generated environment may be
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   125
inspected with the \texttt{getenv} Isabelle tool, see
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   126
\S\ref{sec:tool-getenv}.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   127
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   128
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   129
\subsection{Common variables}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   130
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   131
Below is a reference of common Isabelle settings variables. The list
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   132
is somewhat open-ended, in particular, third-party utilities or
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   133
interfaces may add their own selection.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   134
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   135
\begin{ttdescription}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   136
\item[FIXME] FIXME
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   137
\end{ttdescription}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   138
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   139
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   140
\section{Isabelle proper --- \texttt{isabelle}}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   141
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   142
The \ttindex{isabelle} executable runs logic sessions --- either
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   143
interactively or in batch mode. It provides an abstraction over the
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   144
underlying {\ML} system, and over the actual heap file locations. The usage is:
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   145
\begin{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   146
Usage: isabelle [OPTIONS] [INPUT] [OUTPUT]
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   147
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   148
  Options are:
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   149
    -e MLTEXT    pass MLTEXT to the ML session
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   150
    -m MODE      add print mode for output
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   151
    -q           non-interactive session
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   152
    -r           open heap file read-only
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   153
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   154
  INPUT (default "\$ISABELLE_LOGIC") and OUTPUT specify in/out heaps.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   155
  These are either names to be searched in the Isabelle path, or actual
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   156
  file names (then containing at least one /).
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   157
  If INPUT is "RAW_ML_SYSTEM", just start the bare bones ML system.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   158
\end{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   159
Input files without path specifications are looked up in the
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   160
\texttt{ISABELLE_PATH} setting, which may consist of multiple
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   161
components separated by colons --- these are tried in the given order.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   162
Short output names are relative to the directory specified by
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   163
\texttt{ISABELLE_OUTPUT} setting.  In any case, actual file locations
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   164
can be given by including at least one \texttt{/} (use \texttt{./} to
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   165
refer to the current directory).
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   166
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   167
If the input heap file is not writable, or the \texttt{-r} option is
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   168
given explicitely, the session will be read-only. That is, the {\ML}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   169
world cannot be committed back into the logic image.  A writable
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   170
session enables commits into either the input file, or into an
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   171
alternative output heap file which may be given as the second
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   172
argument.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   173
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   174
The read-write state of sessions is determined at startup only, it
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   175
cannot be changed intermediately. Also note that heap images may
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   176
require considerable amounts of disk space. Users are responsible
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   177
themselves to dispose no longer needed heap files.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   178
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   179
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   180
\subsection*{Options}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   181
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   182
Using \texttt{-e} one may pass {\ML} code to the Isabelle session from
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   183
the command line. Multiple \texttt{-e}'s are evaluated in the given
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   184
order.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   185
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   186
The \texttt{-m} option addes print mode identifiers to be made active
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   187
for this session. Typically this is used by some user interface to
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   188
enable output of mathematical symbols from a special screen font, for
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   189
example (see also \S\ref{sec:fonts} about fonts and the \emph{Isabelle
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   190
  Reference Manual} about print modes in general).
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   191
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   192
Isabelle normally enters an interactice {\ML} top-level loop (after
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   193
processing the \texttt{-e} texts). The \texttt{-q} option inhibits
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   194
this, providing a pure batch mode facility.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   195
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   196
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   197
\subsection*{Examples}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   198
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   199
Run an interactive session of the default object-logic:
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   200
\begin{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   201
isabelle
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   202
\end{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   203
Usually, this refers to one of the standard logic images, which are
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   204
read-only by default.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   205
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   206
Run a writable session, based on \texttt{FOL}, but output to
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   207
\texttt{Foo} (in the directory specified by the
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   208
\texttt{ISABELLE_OUTPUT} setting):
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   209
\begin{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   210
isabelle FOL Foo
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   211
\end{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   212
Ending this session normally (e.g.\ by typing control-D), dumps the
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   213
whole {\ML} system state into \texttt{Foo}. Be prepared for several
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   214
megabytes!
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   215
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   216
The \texttt{Foo} session may be continued (writably!) at exactly the
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   217
same point as follows:
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   218
\begin{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   219
isabelle Foo
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   220
\end{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   221
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   222
\medskip This is a simple batch mode example, printing a certain
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   223
theorem of \texttt{FOL}:
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   224
\begin{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   225
isabelle -e "prth allE;" -q -r FOL
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   226
\end{ttbox}
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   227
Note that the output text will be usually interspered with some
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   228
garbage produced by the {\ML} compiler.
445555a7b714 preliminary!
wenzelm
parents:
diff changeset
   229