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