doc-src/System/Thy/Presentation.thy
author wenzelm
Mon, 04 Jan 2010 11:55:23 +0100
changeset 34238 b28be884edda
parent 32088 2110fcd86efb
child 35587 f037aa6699c3
permissions -rw-r--r--
discontinued special HOL_USEDIR_OPTIONS;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
     1
theory Presentation
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
     2
imports Pure
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
     3
begin
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
     4
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
     5
chapter {* Presenting theories \label{ch:present} *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
     6
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
     7
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
     8
  Isabelle provides several ways to present the outcome of formal
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
     9
  developments, including WWW-based browsable libraries or actual
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    10
  printable documents.  Presentation is centered around the concept of
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    11
  \emph{logic sessions}.  The global session structure is that of a
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    12
  tree, with Isabelle Pure at its root, further object-logics derived
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    13
  (e.g.\ HOLCF from HOL, and HOL from Pure), and application sessions
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    14
  in leaf positions (usually without a separate image).
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    15
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    16
  The Isabelle tools @{tool_ref mkdir} and @{tool_ref make} provide
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    17
  the primary means for managing Isabelle sessions, including proper
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    18
  setup for presentation.  Here the @{tool_ref usedir} tool takes care
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    19
  to let @{executable_ref "isabelle-process"} process run any
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    20
  additional stages required for document preparation, notably the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    21
  tools @{tool_ref document} and @{tool_ref latex}.  The complete tool
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    22
  chain for managing batch-mode Isabelle sessions is illustrated in
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    23
  \figref{fig:session-tools}.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    24
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    25
  \begin{figure}[htbp]
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    26
  \begin{center}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    27
  \begin{tabular}{lp{0.6\textwidth}}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    28
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
    29
      @{verbatim isabelle} @{tool_ref mkdir} & invoked once by the user
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    30
      to create the initial source setup (common @{verbatim
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    31
      IsaMakefile} plus a single session directory); \\
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    32
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
    33
      @{verbatim isabelle} @{tool make} & invoked repeatedly by the
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    34
      user to keep session output up-to-date (HTML, documents etc.); \\
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    35
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
    36
      @{verbatim isabelle} @{tool usedir} & part of the standard
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    37
      @{verbatim IsaMakefile} entry of a session; \\
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    38
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    39
      @{executable "isabelle-process"} & run through @{verbatim
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
    40
      isabelle} @{tool_ref usedir}; \\
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    41
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
    42
      @{verbatim isabelle} @{tool_ref document} & run by the Isabelle
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    43
      process if document preparation is enabled; \\
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    44
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
    45
      @{verbatim isabelle} @{tool_ref latex} & universal {\LaTeX} tool
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
    46
      wrapper invoked multiple times by @{verbatim isabelle} @{tool_ref
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    47
      document}; also useful for manual experiments; \\
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    48
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    49
  \end{tabular}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    50
  \caption{The tool chain of Isabelle session presentation} \label{fig:session-tools}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    51
  \end{center}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    52
  \end{figure}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    53
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    54
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    55
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    56
section {* Generating theory browser information \label{sec:info} *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    57
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    58
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    59
  \index{theory browsing information|bold}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    60
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    61
  As a side-effect of running a logic sessions, Isabelle is able to
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    62
  generate theory browsing information, including HTML documents that
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    63
  show a theory's definition, the theorems proved in its ML file and
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    64
  the relationship with its ancestors and descendants.  Besides the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    65
  HTML file that is generated for every theory, Isabelle stores links
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    66
  to all theories in an index file. These indexes are linked with
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    67
  other indexes to represent the overall tree structure of logic
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    68
  sessions.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    69
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    70
  Isabelle also generates graph files that represent the theory
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    71
  hierarchy of a logic.  There is a graph browser Java applet embedded
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    72
  in the generated HTML pages, and also a stand-alone application that
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    73
  allows browsing theory graphs without having to start a WWW client
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    74
  first.  The latter version also includes features such as generating
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    75
  Postscript files, which are not available in the applet version.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    76
  See \secref{sec:browse} for further information.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    77
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    78
  \medskip
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    79
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    80
  The easiest way to let Isabelle generate theory browsing information
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    81
  for existing sessions is to append ``@{verbatim "-i true"}'' to the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    82
  @{setting_ref ISABELLE_USEDIR_OPTIONS} before invoking @{verbatim
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
    83
  isabelle} @{tool make} (or @{"file" "$ISABELLE_HOME/build"}).  For
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    84
  example, add something like this to your Isabelle settings file
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    85
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    86
\begin{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    87
ISABELLE_USEDIR_OPTIONS="-i true"
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    88
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    89
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    90
  and then change into the @{"file" "~~/src/FOL"} directory and run
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
    91
  @{verbatim isabelle} @{tool make}, or even @{verbatim isabelle} @{tool
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    92
  make}~@{verbatim all}.  The presentation output will appear in
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    93
  @{verbatim "ISABELLE_BROWSER_INFO/FOL"}, which usually refers to
28914
f993cbffc42a default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
wenzelm
parents: 28838
diff changeset
    94
  @{verbatim "~/.isabelle/browser_info/FOL"}.  Note that option
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    95
  @{verbatim "-v true"} will make the internal runs of @{tool usedir}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    96
  more explicit about such details.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
    97
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    98
  Many standard Isabelle sessions (such as @{"file" "~~/src/HOL/ex"})
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
    99
  also provide actual printable documents.  These are prepared
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   100
  automatically as well if enabled like this, using the @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   101
  "-d"} option
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   102
\begin{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   103
ISABELLE_USEDIR_OPTIONS="-i true -d dvi"
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   104
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   105
  Enabling options @{verbatim "-i"} and @{verbatim "-d"}
28225
wenzelm
parents: 28221
diff changeset
   106
  simultaneously as shown above causes an appropriate ``document''
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   107
  link to be included in the HTML index.  Documents (or raw document
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   108
  sources) may be generated independently of browser information as
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   109
  well, see \secref{sec:tool-document} for further details.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   110
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   111
  \bigskip The theory browsing information is stored in a
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   112
  sub-directory directory determined by the @{setting_ref
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   113
  ISABELLE_BROWSER_INFO} setting plus a prefix corresponding to the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   114
  session identifier (according to the tree structure of sub-sessions
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   115
  by default).  A complete WWW view of all standard object-logics and
28225
wenzelm
parents: 28221
diff changeset
   116
  examples of the Isabelle distribution is available at the usual
wenzelm
parents: 28221
diff changeset
   117
  Isabelle sites:
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   118
  \begin{center}\small
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   119
  \begin{tabular}{l}
28225
wenzelm
parents: 28221
diff changeset
   120
    \url{http://isabelle.in.tum.de/dist/library/} \\
wenzelm
parents: 28221
diff changeset
   121
    \url{http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/} \\
wenzelm
parents: 28221
diff changeset
   122
    \url{http://mirror.cse.unsw.edu.au/pub/isabelle/dist/library/} \\
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   123
  \end{tabular}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   124
  \end{center}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   125
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   126
  \medskip In order to present your own theories on the web, simply
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   127
  copy the corresponding subdirectory from @{setting
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   128
  ISABELLE_BROWSER_INFO} to your WWW server, having generated browser
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   129
  info like this:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   130
\begin{ttbox}
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   131
isabelle usedir -i true HOL Foo
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   132
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   133
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   134
  This assumes that directory @{verbatim Foo} contains some @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   135
  ROOT.ML} file to load all your theories, and HOL is your parent
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   136
  logic image (@{verbatim isabelle} @{tool_ref mkdir} assists in
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   137
  setting up Isabelle session directories.  Theory browser information
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   138
  for HOL should have been generated already beforehand.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   139
  Alternatively, one may specify an external link to an existing body
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   140
  of HTML data by giving @{tool usedir} a @{verbatim "-P"} option like
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   141
  this:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   142
\begin{ttbox}
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   143
isabelle usedir -i true -P http://isabelle.in.tum.de/library/ HOL Foo
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   144
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   145
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   146
  \medskip For production use, the @{tool usedir} tool is usually
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   147
  invoked in an appropriate @{verbatim IsaMakefile}, via the Isabelle
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   148
  @{tool make} tool.  There is a separate @{tool mkdir} tool to
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   149
  provide easy setup of all this, with only minimal manual editing
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   150
  required.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   151
\begin{ttbox}
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   152
isabelle mkdir HOL Foo && isabelle make
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   153
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   154
  See \secref{sec:tool-mkdir} for more information on preparing
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   155
  Isabelle session directories, including the setup for documents.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   156
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   157
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   158
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   159
section {* Browsing theory graphs \label{sec:browse} *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   160
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   161
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   162
  \index{theory graph browser|bold} 
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   163
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   164
  The Isabelle graph browser is a general tool for visualizing
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   165
  dependency graphs.  Certain nodes of the graph (i.e.~theories) can
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   166
  be grouped together in ``directories'', whose contents may be
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   167
  hidden, thus enabling the user to collapse irrelevant portions of
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   168
  information.  The browser is written in Java, it can be used both as
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   169
  a stand-alone application and as an applet.  Note that the option
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   170
  @{verbatim "-g"} of @{verbatim isabelle} @{tool_ref usedir} creates
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   171
  graph presentations in batch mode for inclusion in session
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   172
  documents.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   173
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   174
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   175
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   176
subsection {* Invoking the graph browser *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   177
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   178
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   179
  The stand-alone version of the graph browser is wrapped up as an
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   180
  Isabelle tool called @{tool_def browser}:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   181
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   182
\begin{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   183
Usage: browser [OPTIONS] [GRAPHFILE]
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   184
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   185
  Options are:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   186
    -c           cleanup -- remove GRAPHFILE after use
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   187
    -o FILE      output to FILE (ps, eps, pdf)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   188
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   189
  When no filename is specified, the browser automatically changes to
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   190
  the directory @{setting ISABELLE_BROWSER_INFO}.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   191
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   192
  \medskip The @{verbatim "-c"} option causes the input file to be
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   193
  removed after use.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   194
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   195
  The @{verbatim "-o"} option indicates batch-mode operation, with the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   196
  output written to the indicated file; note that @{verbatim pdf}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   197
  produces an @{verbatim eps} copy as well.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   198
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   199
  \medskip The applet version of the browser is part of the standard
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   200
  WWW theory presentation, see the link ``theory dependencies'' within
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   201
  each session index.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   202
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   203
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   204
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   205
subsection {* Using the graph browser *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   206
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   207
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   208
  The browser's main window, which is shown in
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   209
  \figref{fig:browserwindow}, consists of two sub-windows.  In the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   210
  left sub-window, the directory tree is displayed. The graph itself
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   211
  is displayed in the right sub-window.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   212
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   213
  \begin{figure}[ht]
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   214
  \includegraphics[width=\textwidth]{browser_screenshot}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   215
  \caption{\label{fig:browserwindow} Browser main window}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   216
  \end{figure}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   217
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   218
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   219
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   220
subsubsection {* The directory tree window *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   222
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   223
  We describe the usage of the directory browser and the meaning of
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   224
  the different items in the browser window.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   225
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   226
  \begin{itemize}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   227
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   228
  \item A red arrow before a directory name indicates that the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   229
  directory is currently ``folded'', i.e.~the nodes in this directory
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   230
  are collapsed to one single node. In the right sub-window, the names
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   231
  of nodes corresponding to folded directories are enclosed in square
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   232
  brackets and displayed in red color.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   233
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   234
  \item A green downward arrow before a directory name indicates that
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   235
  the directory is currently ``unfolded''. It can be folded by
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   236
  clicking on the directory name.  Clicking on the name for a second
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   237
  time unfolds the directory again.  Alternatively, a directory can
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   238
  also be unfolded by clicking on the corresponding node in the right
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   239
  sub-window.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   240
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   241
  \item Blue arrows stand before ordinary node names. When clicking on
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   242
  such a name (i.e.\ that of a theory), the graph display window
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   243
  focuses to the corresponding node. Double clicking invokes a text
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   244
  viewer window in which the contents of the theory file are
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   245
  displayed.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   246
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   247
  \end{itemize}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   248
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   249
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   250
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   251
subsubsection {* The graph display window *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   252
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   253
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   254
  When pointing on an ordinary node, an upward and a downward arrow is
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   255
  shown.  Initially, both of these arrows are green. Clicking on the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   256
  upward or downward arrow collapses all predecessor or successor
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   257
  nodes, respectively. The arrow's color then changes to red,
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   258
  indicating that the predecessor or successor nodes are currently
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   259
  collapsed. The node corresponding to the collapsed nodes has the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   260
  name ``@{verbatim "[....]"}''. To uncollapse the nodes again, simply
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   261
  click on the red arrow or on the node with the name ``@{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   262
  "[....]"}''. Similar to the directory browser, the contents of
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   263
  theory files can be displayed by double clicking on the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   264
  corresponding node.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   265
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   266
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   267
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   268
subsubsection {* The ``File'' menu *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   269
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   270
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   271
  Due to Java Applet security restrictions this menu is only available
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   272
  in the full application version. The meaning of the menu items is as
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   273
  follows:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   274
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   275
  \begin{description}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   276
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   277
  \item[Open \dots] Open a new graph file.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   278
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   279
  \item[Export to PostScript] Outputs the current graph in Postscript
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   280
  format, appropriately scaled to fit on one single sheet of A4 paper.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   281
  The resulting file can be printed directly.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   282
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   283
  \item[Export to EPS] Outputs the current graph in Encapsulated
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   284
  Postscript format. The resulting file can be included in other
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   285
  documents.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   286
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   287
  \item[Quit] Quit the graph browser.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   288
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   289
  \end{description}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   290
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   291
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   292
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   293
subsection {* Syntax of graph definition files *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   294
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   295
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   296
  A graph definition file has the following syntax:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   297
28225
wenzelm
parents: 28221
diff changeset
   298
  \begin{center}\small
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   299
  \begin{tabular}{rcl}
31688
f27cc190083b usedir: internal timing option;
wenzelm
parents: 31317
diff changeset
   300
    @{text graph} & @{text "="} & @{text "{ vertex"}~@{verbatim ";"}~@{text "}+"} \\
f27cc190083b usedir: internal timing option;
wenzelm
parents: 31317
diff changeset
   301
    @{text vertex} & @{text "="} & @{text "vertex_name vertex_ID dir_name ["}~@{verbatim "+"}~@{text "] path ["}~@{verbatim "<"}~@{text "|"}~@{verbatim ">"}~@{text "] { vertex_ID }*"}
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   302
  \end{tabular}
28225
wenzelm
parents: 28221
diff changeset
   303
  \end{center}
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   304
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   305
  The meaning of the items in a vertex description is as follows:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   306
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   307
  \begin{description}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   308
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   309
  \item[@{text vertex_name}] The name of the vertex.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   310
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   311
  \item[@{text vertex_ID}] The vertex identifier. Note that there may
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   312
  be several vertices with equal names, whereas identifiers must be
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   313
  unique.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   314
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   315
  \item[@{text dir_name}] The name of the ``directory'' the vertex
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   316
  should be placed in.  A ``@{verbatim "+"}'' sign after @{text
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   317
  dir_name} indicates that the nodes in the directory are initially
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   318
  visible. Directories are initially invisible by default.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   319
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   320
  \item[@{text path}] The path of the corresponding theory file. This
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   321
  is specified relatively to the path of the graph definition file.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   322
  
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   323
  \item[List of successor/predecessor nodes] A ``@{verbatim "<"}''
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   324
  sign before the list means that successor nodes are listed, a
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   325
  ``@{verbatim ">"}'' sign means that predecessor nodes are listed. If
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   326
  neither ``@{verbatim "<"}'' nor ``@{verbatim ">"}'' is found, the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   327
  browser assumes that successor nodes are listed.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   328
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   329
  \end{description}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   330
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   331
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   332
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   333
section {* Creating Isabelle session directories
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   334
  \label{sec:tool-mkdir} *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   335
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   336
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   337
  The @{tool_def mkdir} utility prepares Isabelle session source
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   338
  directories, including a sensible default setup of @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   339
  IsaMakefile}, @{verbatim ROOT.ML}, and a @{verbatim document}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   340
  directory with a minimal @{verbatim root.tex} that is sufficient to
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   341
  print all theories of the session (in the order of appearance); see
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   342
  \secref{sec:tool-document} for further information on Isabelle
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   343
  document preparation.  The usage of @{verbatim isabelle} @{tool
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   344
  mkdir} is:
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   345
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   346
\begin{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   347
Usage: mkdir [OPTIONS] [LOGIC] NAME
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   348
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   349
  Options are:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   350
    -I FILE      alternative IsaMakefile output
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   351
    -P           include parent logic target
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   352
    -b           setup build mode (session outputs heap image)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   353
    -q           quiet mode
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   354
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   355
  Prepare session directory, including IsaMakefile and document source,
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   356
  with parent LOGIC (default ISABELLE_LOGIC=\$ISABELLE_LOGIC)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   357
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   358
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   359
  The @{tool mkdir} tool is conservative in the sense that any
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   360
  existing @{verbatim IsaMakefile} etc.\ is left unchanged.  Thus it
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   361
  is safe to invoke it multiple times, although later runs may not
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   362
  have the desired effect.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   363
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   364
  Note that @{tool mkdir} is unable to change @{verbatim IsaMakefile}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   365
  incrementally --- manual changes are required for multiple
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   366
  sub-sessions.  On order to get an initial working session, the only
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   367
  editing needed is to add appropriate @{ML use_thy} calls to the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   368
  generated @{verbatim ROOT.ML} file.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   369
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   370
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   371
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   372
subsubsection {* Options *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   373
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   374
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   375
  The @{verbatim "-I"} option specifies an alternative to @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   376
  IsaMakefile} for dependencies.  Note that ``@{verbatim "-"}'' refers
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   377
  to \emph{stdout}, i.e.\ ``@{verbatim "-I-"}'' provides an easy way
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   378
  to peek at @{tool mkdir}'s idea of @{tool make} setup required for
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   379
  some particular of Isabelle session.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   380
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   381
  \medskip The @{verbatim "-P"} option includes a target for the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   382
  parent @{verbatim LOGIC} session in the generated @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   383
  IsaMakefile}.  The corresponding sources are assumed to be located
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   384
  within the Isabelle distribution.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   385
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   386
  \medskip The @{verbatim "-b"} option sets up the current directory
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   387
  as the base for a new session that provides an actual logic image,
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   388
  as opposed to one that only runs several theories based on an
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   389
  existing image.  Note that in the latter case, everything except
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   390
  @{verbatim IsaMakefile} would be placed into a separate directory
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   391
  @{verbatim NAME}, rather than the current one.  See
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   392
  \secref{sec:tool-usedir} for further information on \emph{build
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   393
  mode} vs.\ \emph{example mode} of the @{tool usedir} utility.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   394
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   395
  \medskip The @{verbatim "-q"} option enables quiet mode, suppressing
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   396
  further notes on how to proceed.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   397
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   398
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   399
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   400
subsubsection {* Examples *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   401
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   402
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   403
  The standard setup of a single ``example session'' based on the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   404
  default logic, with proper document generation is generated like
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   405
  this:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   406
\begin{ttbox}
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   407
isabelle mkdir Foo && isabelle make
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   408
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   409
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   410
  \noindent The theory sources should be put into the @{verbatim Foo}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   411
  directory, and its @{verbatim ROOT.ML} should be edited to load all
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   412
  required theories.  Invoking @{verbatim isabelle} @{tool make} again
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   413
  would run the whole session, generating browser information and the
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   414
  document automatically.  The @{verbatim IsaMakefile} is typically
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   415
  tuned manually later, e.g.\ adding source dependencies, or changing
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   416
  the options passed to @{tool usedir}.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   417
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   418
  \medskip Large projects may demand further sessions, potentially
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   419
  with separate logic images being created.  This usually requires
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   420
  manual editing of the generated @{verbatim IsaMakefile}, which is
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   421
  meant to cover all of the sub-session directories at the same time
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   422
  (this is the deeper reasong why @{verbatim IsaMakefile} is not made
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   423
  part of the initial session directory created by @{verbatim
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   424
  isabelle} @{tool mkdir}).  See @{"file" "~~/src/HOL/IsaMakefile"} for
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   425
  a full-blown example.
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   426
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   427
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   428
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   429
section {* Running Isabelle sessions \label{sec:tool-usedir} *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   430
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   431
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   432
  The @{tool_def usedir} utility builds object-logic images, or runs
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   433
  example sessions based on existing logics. Its usage is:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   434
\begin{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   435
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   436
Usage: usedir [OPTIONS] LOGIC NAME
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   437
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   438
  Options are:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   439
    -C BOOL      copy existing document directory to -D PATH (default true)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   440
    -D PATH      dump generated document sources into PATH
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   441
    -M MAX       multithreading: maximum number of worker threads (default 1)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   442
    -P PATH      set path for remote theory browsing information
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   443
    -T LEVEL     multithreading: trace level (default 0)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   444
    -V VERSION   declare alternative document VERSION
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   445
    -b           build mode (output heap image, using current dir)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   446
    -d FORMAT    build document as FORMAT (default false)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   447
    -f NAME      use ML file NAME (default ROOT.ML)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   448
    -g BOOL      generate session graph image for document (default false)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   449
    -i BOOL      generate theory browser information (default false)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   450
    -m MODE      add print mode for output
32061
11f8ee55662d parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
wenzelm
parents: 31688
diff changeset
   451
    -p LEVEL     set level of detail for proof objects (default 0)
11f8ee55662d parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
wenzelm
parents: 31688
diff changeset
   452
    -q LEVEL     set level of parallel proof checking (default 1)
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   453
    -r           reset session path
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   454
    -s NAME      override session NAME
31688
f27cc190083b usedir: internal timing option;
wenzelm
parents: 31317
diff changeset
   455
    -t BOOL      internal session timing (default false)
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   456
    -v BOOL      be verbose (default false)
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   457
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   458
  Build object-logic or run examples. Also creates browsing
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   459
  information (HTML etc.) according to settings.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   460
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   461
  ISABELLE_USEDIR_OPTIONS=
29435
a5f84ac14609 added parallel_proofs flag (default true, cf. usedir option -Q), which can be disabled in low-memory situations;
wenzelm
parents: 28914
diff changeset
   462
a5f84ac14609 added parallel_proofs flag (default true, cf. usedir option -Q), which can be disabled in low-memory situations;
wenzelm
parents: 28914
diff changeset
   463
  ML_PLATFORM=x86-linux
a5f84ac14609 added parallel_proofs flag (default true, cf. usedir option -Q), which can be disabled in low-memory situations;
wenzelm
parents: 28914
diff changeset
   464
  ML_HOME=/usr/local/polyml-5.2.1/x86-linux
a5f84ac14609 added parallel_proofs flag (default true, cf. usedir option -Q), which can be disabled in low-memory situations;
wenzelm
parents: 28914
diff changeset
   465
  ML_SYSTEM=polyml-5.2.1
a5f84ac14609 added parallel_proofs flag (default true, cf. usedir option -Q), which can be disabled in low-memory situations;
wenzelm
parents: 28914
diff changeset
   466
  ML_OPTIONS=-H 500
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   467
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   468
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   469
  Note that the value of the @{setting_ref ISABELLE_USEDIR_OPTIONS}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   470
  setting is implicitly prefixed to \emph{any} @{tool usedir}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   471
  call. Since the @{verbatim IsaMakefile}s of all object-logics
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   472
  distributed with Isabelle just invoke @{tool usedir} for the real
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   473
  work, one may control compilation options globally via above
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   474
  variable. In particular, generation of \rmindex{HTML} browsing
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   475
  information and document preparation is controlled here.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   476
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   477
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   478
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   479
subsubsection {* Options *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   480
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   481
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   482
  Basically, there are two different modes of operation: \emph{build
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   483
  mode} (enabled through the @{verbatim "-b"} option) and
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   484
  \emph{example mode} (default).
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   485
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   486
  Calling @{tool usedir} with @{verbatim "-b"} runs @{executable
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   487
  "isabelle-process"} with input image @{verbatim LOGIC} and output to
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   488
  @{verbatim NAME}, as provided on the command line. This will be a
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   489
  batch session, running @{verbatim ROOT.ML} from the current
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   490
  directory and then quitting.  It is assumed that @{verbatim ROOT.ML}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   491
  contains all ML commands required to build the logic.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   492
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   493
  In example mode, @{tool usedir} runs a read-only session of
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   494
  @{verbatim LOGIC} and automatically runs @{verbatim ROOT.ML} from
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   495
  within directory @{verbatim NAME}.  It assumes that this file
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   496
  contains appropriate ML commands to run the desired examples.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   497
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   498
  \medskip The @{verbatim "-i"} option controls theory browser data
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   499
  generation. It may be explicitly turned on or off --- as usual, the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   500
  last occurrence of @{verbatim "-i"} on the command line wins.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   501
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   502
  The @{verbatim "-P"} option specifies a path (or actual URL) to be
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   503
  prefixed to any \emph{non-local} reference of existing theories.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   504
  Thus user sessions may easily link to existing Isabelle libraries
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   505
  already present on the WWW.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   506
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   507
  The @{verbatim "-m"} options specifies additional print modes to be
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   508
  activated temporarily while the session is processed.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   509
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   510
  \medskip The @{verbatim "-d"} option controls document preparation.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   511
  Valid arguments are @{verbatim false} (do not prepare any document;
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   512
  this is default), or any of @{verbatim dvi}, @{verbatim dvi.gz},
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   513
  @{verbatim ps}, @{verbatim ps.gz}, @{verbatim pdf}.  The logic
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   514
  session has to provide a properly setup @{verbatim document}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   515
  directory.  See \secref{sec:tool-document} and
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   516
  \secref{sec:tool-latex} for more details.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   517
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   518
  \medskip The @{verbatim "-V"} option declares alternative document
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   519
  versions, consisting of name/tags pairs (cf.\ options @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   520
  "-n"} and @{verbatim "-t"} of the @{tool_ref document} tool).  The
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   521
  standard document is equivalent to ``@{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   522
  "document=theory,proof,ML"}'', which means that all theory begin/end
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   523
  commands, proof body texts, and ML code will be presented
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   524
  faithfully.  An alternative version ``@{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   525
  "outline=/proof/ML"}'' would fold proof and ML parts, replacing the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   526
  original text by a short place-holder.  The form ``@{text
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   527
  name}@{verbatim "=-"},'' means to remove document @{text name} from
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   528
  the list of versions to be processed.  Any number of @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   529
  "-V"} options may be given; later declarations have precedence over
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   530
  earlier ones.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   531
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   532
  \medskip The @{verbatim "-g"} option produces images of the theory
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   533
  dependency graph (cf.\ \secref{sec:browse}) for inclusion in the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   534
  generated document, both as @{verbatim session_graph.eps} and
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   535
  @{verbatim session_graph.pdf} at the same time.  To include this in
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   536
  the final {\LaTeX} document one could say @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   537
  "\\includegraphics{session_graph}"} in @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   538
  "document/root.tex"} (omitting the file-name extension enables
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   539
  {\LaTeX} to select to correct version, either for the DVI or PDF
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   540
  output path).
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   541
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   542
  \medskip The @{verbatim "-D"} option causes the generated document
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   543
  sources to be dumped at location @{verbatim PATH}; this path is
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   544
  relative to the session's main directory.  If the @{verbatim "-C"}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   545
  option is true, this will include a copy of an existing @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   546
  document} directory as provided by the user.  For example,
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   547
  @{verbatim isabelle} @{tool usedir}~@{verbatim "-D generated HOL
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   548
  Foo"} produces a complete set of document sources at @{verbatim
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   549
  "Foo/generated"}.  Subsequent invocation of @{verbatim
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   550
  isabelle} @{tool document}~@{verbatim "Foo/generated"} (see also
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   551
  \secref{sec:tool-document}) will process the final result
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   552
  independently of an Isabelle job.  This decoupled mode of operation
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   553
  facilitates debugging of serious {\LaTeX} errors, for example.
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   554
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   555
  \medskip The @{verbatim "-p"} option determines the level of detail
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   556
  for internal proof objects, see also the \emph{Isabelle Reference
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   557
  Manual}~\cite{isabelle-ref}.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   558
32061
11f8ee55662d parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
wenzelm
parents: 31688
diff changeset
   559
  \medskip The @{verbatim "-q"} option specifies the level of parallel
11f8ee55662d parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
wenzelm
parents: 31688
diff changeset
   560
  proof checking: @{verbatim 0} no proofs, @{verbatim 1} toplevel
11f8ee55662d parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
wenzelm
parents: 31688
diff changeset
   561
  proofs (default), @{verbatim 2} toplevel and nested Isar proofs.
11f8ee55662d parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
wenzelm
parents: 31688
diff changeset
   562
  The resulting speedup may vary, depending on the number of worker
11f8ee55662d parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
wenzelm
parents: 31688
diff changeset
   563
  threads, granularity of proofs, and whether proof terms are enabled.
11f8ee55662d parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
wenzelm
parents: 31688
diff changeset
   564
31688
f27cc190083b usedir: internal timing option;
wenzelm
parents: 31317
diff changeset
   565
  \medskip The @{verbatim "-t"} option produces a more detailed
f27cc190083b usedir: internal timing option;
wenzelm
parents: 31317
diff changeset
   566
  internal timing report of the session.
f27cc190083b usedir: internal timing option;
wenzelm
parents: 31317
diff changeset
   567
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   568
  \medskip The @{verbatim "-v"} option causes additional information
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   569
  to be printed while running the session, notably the location of
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   570
  prepared documents.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   571
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   572
  \medskip The @{verbatim "-M"} option specifies the maximum number of
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   573
  parallel threads used for processing independent tasks when checking
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   574
  theory sources (multithreading only works on suitable ML platforms).
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   575
  The special value of @{verbatim 0} or @{verbatim max} refers to the
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   576
  number of actual CPU cores of the underlying machine, which is a
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   577
  good starting point for optimal performance tuning.  The @{verbatim
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   578
  "-T"} option determines the level of detail in tracing output
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   579
  concerning the internal locking and scheduling in multithreaded
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   580
  operation.  This may be helpful in isolating performance
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   581
  bottle-necks, e.g.\ due to excessive wait states when locking
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   582
  critical code sections.
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   583
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   584
  \medskip Any @{tool usedir} session is named by some \emph{session
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   585
  identifier}. These accumulate, documenting the way sessions depend
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   586
  on others. For example, consider @{verbatim "Pure/FOL/ex"}, which
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   587
  refers to the examples of FOL, which in turn is built upon Pure.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   588
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   589
  The current session's identifier is by default just the base name of
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   590
  the @{verbatim LOGIC} argument (in build mode), or of the @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   591
  NAME} argument (in example mode). This may be overridden explicitly
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   592
  via the @{verbatim "-s"} option.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   593
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   594
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   595
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   596
subsubsection {* Examples *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   597
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   598
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   599
  Refer to the @{verbatim IsaMakefile}s of the Isabelle distribution's
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   600
  object-logics as a model for your own developments.  For example,
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   601
  see @{"file" "~~/src/FOL/IsaMakefile"}.  The Isabelle @{tool_ref
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   602
  mkdir} tool creates @{verbatim IsaMakefile}s with proper invocation
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   603
  of @{tool usedir} as well.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   604
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   605
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   606
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   607
section {* Preparing Isabelle session documents
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   608
  \label{sec:tool-document} *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   609
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   610
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   611
  The @{tool_def document} utility prepares logic session documents,
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   612
  processing the sources both as provided by the user and generated by
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   613
  Isabelle.  Its usage is:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   614
\begin{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   615
Usage: document [OPTIONS] [DIR]
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   616
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   617
  Options are:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   618
    -c           cleanup -- be aggressive in removing old stuff
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   619
    -n NAME      specify document name (default 'document')
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   620
    -o FORMAT    specify output format: dvi (default), dvi.gz, ps,
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   621
                 ps.gz, pdf
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   622
    -t TAGS      specify tagged region markup
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   623
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   624
  Prepare the theory session document in DIR (default 'document')
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   625
  producing the specified output format.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   626
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   627
  This tool is usually run automatically as part of the corresponding
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   628
  Isabelle batch process, provided document preparation has been
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   629
  enabled (cf.\ the @{verbatim "-d"} option of the @{tool_ref usedir}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   630
  tool).  It may be manually invoked on the generated browser
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   631
  information document output as well, e.g.\ in case of errors
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   632
  encountered in the batch run.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   633
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   634
  \medskip The @{verbatim "-c"} option tells the @{tool document} tool
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   635
  to dispose the document sources after successful operation.  This is
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   636
  the right thing to do for sources generated by an Isabelle process,
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   637
  but take care of your files in manual document preparation!
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   638
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   639
  \medskip The @{verbatim "-n"} and @{verbatim "-o"} option specify
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   640
  the final output file name and format, the default is ``@{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   641
  document.dvi}''.  Note that the result will appear in the parent of
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   642
  the target @{verbatim DIR}.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   643
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   644
  \medskip The @{verbatim "-t"} option tells {\LaTeX} how to interpret
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   645
  tagged Isabelle command regions.  Tags are specified as a comma
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   646
  separated list of modifier/name pairs: ``@{verbatim "+"}@{text
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   647
  foo}'' (or just ``@{text foo}'') means to keep, ``@{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   648
  "-"}@{text foo}'' to drop, and ``@{verbatim "/"}@{text foo}'' to
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   649
  fold text tagged as @{text foo}.  The builtin default is equivalent
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   650
  to the tag specification ``@{verbatim
30113
5ea17e90b08a isabelle document: adapted (postulated) defaults for tags to actual isabelle.sty;
wenzelm
parents: 29435
diff changeset
   651
  "+theory,+proof,+ML,+visible,-invisible"}''; see also the {\LaTeX}
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   652
  macros @{verbatim "\\isakeeptag"}, @{verbatim "\\isadroptag"}, and
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   653
  @{verbatim "\\isafoldtag"}, in @{"file"
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   654
  "~~/lib/texinputs/isabelle.sty"}.
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   655
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   656
  \medskip Document preparation requires a properly setup ``@{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   657
  document}'' directory within the logic session sources.  This
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   658
  directory is supposed to contain all the files needed to produce the
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   659
  final document --- apart from the actual theories which are
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   660
  generated by Isabelle.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   661
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   662
  \medskip For most practical purposes, the @{tool document} tool is
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   663
  smart enough to create any of the specified output formats, taking
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   664
  @{verbatim root.tex} supplied by the user as a starting point.  This
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   665
  even includes multiple runs of {\LaTeX} to accommodate references
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   666
  and bibliographies (the latter assumes @{verbatim root.bib} within
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   667
  the same directory).
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   668
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   669
  In more complex situations, a separate @{verbatim IsaMakefile} for
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   670
  the document sources may be given instead.  This should provide
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   671
  targets for any admissible document format; these have to produce
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   672
  corresponding output files named after @{verbatim root} as well,
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   673
  e.g.\ @{verbatim root.dvi} for target format @{verbatim dvi}.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   674
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   675
  \medskip When running the session, Isabelle copies the original
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   676
  @{verbatim document} directory into its proper place within
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   677
  @{setting ISABELLE_BROWSER_INFO} according to the session path.
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   678
  Then, for any processed theory @{text A} some {\LaTeX} source is
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   679
  generated and put there as @{text A}@{verbatim ".tex"}.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   680
  Furthermore, a list of all generated theory files is put into
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   681
  @{verbatim session.tex}.  Typically, the root {\LaTeX} file provided
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   682
  by the user would include @{verbatim session.tex} to get a document
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   683
  containing all the theories.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   684
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   685
  The {\LaTeX} versions of the theories require some macros defined in
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   686
  @{"file" "~~/lib/texinputs/isabelle.sty"}.  Doing @{verbatim
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   687
  "\\usepackage{isabelle}"} in @{verbatim root.tex} should be fine;
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   688
  the underlying Isabelle @{tool latex} tool already includes an
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   689
  appropriate path specification for {\TeX} inputs.
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   690
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   691
  If the text contains any references to Isabelle symbols (such as
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   692
  @{verbatim "\\"}@{verbatim "<forall>"}) then @{verbatim
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   693
  "isabellesym.sty"} should be included as well.  This package
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   694
  contains a standard set of {\LaTeX} macro definitions @{verbatim
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   695
  "\\isasym"}@{text foo} corresponding to @{verbatim "\\"}@{verbatim
28838
d5db6dfcb34a moved table of standard Isabelle symbols to isar-ref manual;
wenzelm
parents: 28504
diff changeset
   696
  "<"}@{text foo}@{verbatim ">"}, see \cite{isabelle-implementation} for a
d5db6dfcb34a moved table of standard Isabelle symbols to isar-ref manual;
wenzelm
parents: 28504
diff changeset
   697
  complete list of predefined Isabelle symbols.  Users may invent
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   698
  further symbols as well, just by providing {\LaTeX} macros in a
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   699
  similar fashion as in @{"file" "~~/lib/texinputs/isabellesym.sty"} of
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   700
  the distribution.
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   701
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   702
  For proper setup of DVI and PDF documents (with hyperlinks and
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   703
  bookmarks), we recommend to include @{"file"
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   704
  "~~/lib/texinputs/pdfsetup.sty"} as well.
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   705
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   706
  \medskip As a final step of document preparation within Isabelle,
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   707
  @{verbatim isabelle} @{tool document}~@{verbatim "-c"} is run on the
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   708
  resulting @{verbatim document} directory.  Thus the actual output
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   709
  document is built and installed in its proper place (as linked by
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   710
  the session's @{verbatim index.html} if option @{verbatim "-i"} of
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   711
  @{tool_ref usedir} has been enabled, cf.\ \secref{sec:info}).  The
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   712
  generated sources are deleted after successful run of {\LaTeX} and
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   713
  friends.  Note that a separate copy of the sources may be retained
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   714
  by passing an option @{verbatim "-D"} to the @{tool usedir} utility
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   715
  when running the session.
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   716
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   717
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   718
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   719
section {* Running {\LaTeX} within the Isabelle environment
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   720
  \label{sec:tool-latex} *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   721
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   722
text {*
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   723
  The @{tool_def latex} utility provides the basic interface for
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   724
  Isabelle document preparation.  Its usage is:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   725
\begin{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   726
Usage: latex [OPTIONS] [FILE]
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   727
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   728
  Options are:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   729
    -o FORMAT    specify output format: dvi (default), dvi.gz, ps,
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   730
                 ps.gz, pdf, bbl, idx, sty, syms
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   731
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   732
  Run LaTeX (and related tools) on FILE (default root.tex),
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   733
  producing the specified output format.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   734
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   735
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   736
  Appropriate {\LaTeX}-related programs are run on the input file,
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   737
  according to the given output format: @{executable latex},
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   738
  @{executable pdflatex}, @{executable dvips}, @{executable bibtex}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   739
  (for @{verbatim bbl}), and @{executable makeindex} (for @{verbatim
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   740
  idx}).  The actual commands are determined from the settings
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   741
  environment (@{setting ISABELLE_LATEX} etc.).
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   742
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   743
  The @{verbatim sty} output format causes the Isabelle style files to
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   744
  be updated from the distribution.  This is useful in special
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   745
  situations where the document sources are to be processed another
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   746
  time by separate tools (cf.\ option @{verbatim "-D"} of the @{tool
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   747
  usedir} utility).
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   748
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   749
  The @{verbatim syms} output is for internal use; it generates lists
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   750
  of symbols that are available without loading additional {\LaTeX}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   751
  packages.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   752
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   753
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   754
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   755
subsubsection {* Examples *}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   756
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   757
text {*
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   758
  Invoking @{verbatim isabelle} @{tool latex} by hand may be
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   759
  occasionally useful when debugging failed attempts of the automatic
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   760
  document preparation stage of batch-mode Isabelle.  The abortive
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28225
diff changeset
   761
  process leaves the sources at a certain place within @{setting
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   762
  ISABELLE_BROWSER_INFO}, see the runtime error message for details.
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   763
  This enables users to inspect {\LaTeX} runs in further detail, e.g.\
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   764
  like this:
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   765
\begin{ttbox}
28914
f993cbffc42a default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
wenzelm
parents: 28838
diff changeset
   766
  cd ~/.isabelle/browser_info/HOL/Test/document
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28238
diff changeset
   767
  isabelle latex -o pdf
28221
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   768
\end{ttbox}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   769
*}
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   770
ca9fdab0f971 converted present.tex;
wenzelm
parents:
diff changeset
   771
end