doc-src/System/Thy/Sessions.thy
author wenzelm
Wed, 08 Aug 2012 15:58:40 +0200
changeset 48737 f3bbb9ca57d6
parent 48693 ceeea46bdeba
child 48738 f8c1a5b9488f
permissions -rw-r--r--
added build option -D: include session directory and select its sessions;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
     1
theory Sessions
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
     2
imports Base
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
     3
begin
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
     4
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
     5
chapter {* Isabelle sessions and build management \label{ch:session} *}
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
     6
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
     7
text {* An Isabelle \emph{session} consists of a collection of related
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
     8
  theories that may be associated with formal documents (see also
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
     9
  \chref{ch:present}).  There is also a notion of \emph{persistent
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    10
  heap} image to capture the state of a session, similar to
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    11
  object-code in compiled programming languages.  Thus the concept of
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    12
  session resembles that of a ``project'' in common IDE environments,
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    13
  but the specific name emphasizes the connection to interactive
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    14
  theorem proving: the session wraps-up the results of
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    15
  user-interaction with the prover in a persistent form.
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
    16
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    17
  Application sessions are built on a given parent session, which may
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    18
  be built recursively on other parents.  Following this path in the
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    19
  hierarchy eventually leads to some major object-logic session like
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    20
  @{text "HOL"}, which itself is based on @{text "Pure"} as the common
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    21
  root of all sessions.
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
    22
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    23
  Processing sessions may take considerable time.  Isabelle build
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    24
  management helps to organize this efficiently.  This includes
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    25
  support for parallel build jobs, in addition to the multithreaded
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    26
  theory and proof checking that is already provided by the prover
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    27
  process itself.  *}
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    28
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
    29
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
    30
section {* Session ROOT specifications \label{sec:session-root} *}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
    31
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    32
text {* Session specifications reside in files called @{verbatim ROOT}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    33
  within certain directories, such as the home locations of registered
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    34
  Isabelle components or additional project directories given by the
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    35
  user.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    36
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    37
  The ROOT file format follows the lexical conventions of the
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    38
  \emph{outer syntax} of Isabelle/Isar, see also
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    39
  \cite{isabelle-isar-ref}.  This defines common forms like
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    40
  identifiers, names, quoted strings, verbatim text, nested comments
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    41
  etc.  The grammar for a single @{syntax session_entry} is given as
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    42
  syntax diagram below; each ROOT file may contain multiple session
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    43
  specifications like this.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    44
48582
wenzelm
parents: 48580
diff changeset
    45
  Isabelle/jEdit (\secref{sec:tool-jedit}) includes a simple editing
wenzelm
parents: 48580
diff changeset
    46
  mode @{verbatim "isabelle-root"} for session ROOT files.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    47
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    48
  @{rail "
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    49
    @{syntax_def session_entry}: @'session' spec '=' (@{syntax name} '+')? body
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    50
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    51
    body: description? options? ( theories * ) files?
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    52
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    53
    spec: @{syntax name} '!'? groups? dir?
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    54
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    55
    groups: '(' (@{syntax name} +) ')'
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    56
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    57
    dir: @'in' @{syntax name}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    58
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    59
    description: @'description' @{syntax text}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    60
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    61
    options: @'options' opts
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    62
    ;
48605
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
    63
    opts: '[' ( (@{syntax name} '=' value | @{syntax name}) + ',' ) ']'
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
    64
    ;
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
    65
    value: @{syntax name} | @{syntax real}
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    66
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    67
    theories: @'theories' opts? ( @{syntax name} + )
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    68
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    69
    files: @'files' ( @{syntax name} + )
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    70
    "}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    71
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    72
  \begin{description}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    73
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    74
  \item \isakeyword{session}~@{text "A = B + body"} defines a new
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    75
  session @{text "A"} based on parent session @{text "B"}, with its
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    76
  content given in @{text body} (theories and auxiliary source files).
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    77
  Note that a parent (like @{text "HOL"}) is mandatory in practical
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    78
  applications: only Isabelle/Pure can bootstrap itself from nothing.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    79
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    80
  All such session specifications together describe a hierarchy (tree)
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    81
  of sessions, with globally unique names.  By default, names are
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    82
  derived from parent ones by concatenation, i.e.\ @{text "B\<dash>A"}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    83
  above.  Cumulatively, this leads to session paths of the form @{text
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    84
  "X\<dash>Y\<dash>Z\<dash>W"}.  Note that in the specification,
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    85
  @{text B} is already such a fully-qualified name, while @{text "A"}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    86
  is the new base name.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    87
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    88
  \item \isakeyword{session}~@{text "A! = B"} indicates a fresh start
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    89
  in the naming scheme: the session is called just @{text "A"} instead
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    90
  of @{text "B\<dash>A"}.  Here the name @{text "A"} should be
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    91
  sufficiently long to stand on its own in a potentially large
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    92
  library.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    93
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    94
  \item \isakeyword{session}~@{text "A (groups)"} indicates a
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    95
  collection of groups where the new session is a member.  Group names
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    96
  are uninterpreted and merely follow certain conventions.  For
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    97
  example, the Isabelle distribution tags some important sessions by
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    98
  the group name called ``@{text "main"}''.  Other projects may invent
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    99
  their own conventions, but this requires some care to avoid clashes
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   100
  within this unchecked name space.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   101
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   102
  \item \isakeyword{session}~@{text "A"}~\isakeyword{in}~@{text "dir"}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   103
  specifies an explicit directory for this session.  By default,
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   104
  \isakeyword{session}~@{text "A"} abbreviates
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   105
  \isakeyword{session}~@{text "A"}~\isakeyword{in}~@{text "A"}.  This
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   106
  accommodates the common scheme where some base directory contains
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   107
  several sessions in sub-directories of corresponding names.  Another
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   108
  common scheme is \isakeyword{session}~@{text
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   109
  "A"}~\isakeyword{in}~@{verbatim "\".\""} to refer to the current
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   110
  directory of the ROOT file.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   111
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   112
  All theories and auxiliary source files are located relatively to
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   113
  the session directory.  The prover process is run within the same as
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   114
  its current working directory.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   115
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   116
  \item \isakeyword{description}~@{text "text"} is a free-form
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   117
  annotation for this session.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   118
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   119
  \item \isakeyword{options}~@{text "[x = a, y = b, z]"} defines
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   120
  separate options (\secref{sec:system-options}) that are used when
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   121
  processing this session, but \emph{without} propagation to child
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   122
  sessions.  Note that @{text "z"} abbreviates @{text "z = true"} for
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   123
  Boolean options.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   124
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   125
  \item \isakeyword{theories}~@{text "options names"} specifies a
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   126
  block of theories that are processed within an environment that is
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   127
  augmented by the given options, in addition to the global session
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   128
  options given before.  Any number of blocks of \isakeyword{theories}
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   129
  may be given.  Options are only active for each
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   130
  \isakeyword{theories} block separately.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   131
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   132
  \item \isakeyword{files}~@{text "files"} lists additional source
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   133
  files that are involved in the processing of this session.  This
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   134
  should cover anything outside the formal content of the theory
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   135
  sources, say some auxiliary {\TeX} files that are required for
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   136
  document processing.  In contrast, files that are specified in
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   137
  formal theory headers as @{keyword "uses"} need not be declared
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   138
  again.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   139
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   140
  \end{description}
48580
9df76dd45900 some description of main build options;
wenzelm
parents: 48579
diff changeset
   141
*}
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   142
48580
9df76dd45900 some description of main build options;
wenzelm
parents: 48579
diff changeset
   143
subsubsection {* Examples *}
9df76dd45900 some description of main build options;
wenzelm
parents: 48579
diff changeset
   144
9df76dd45900 some description of main build options;
wenzelm
parents: 48579
diff changeset
   145
text {* See @{file "~~/src/HOL/ROOT"} for a diversity of practically
9df76dd45900 some description of main build options;
wenzelm
parents: 48579
diff changeset
   146
  relevant situations. *}
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   147
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   148
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   149
section {* System build options \label{sec:system-options} *}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   150
48580
9df76dd45900 some description of main build options;
wenzelm
parents: 48579
diff changeset
   151
text {* See @{file "~~/etc/options"} for the main defaults provided by
48582
wenzelm
parents: 48580
diff changeset
   152
  the Isabelle distribution.  Isabelle/jEdit (\secref{sec:tool-jedit})
wenzelm
parents: 48580
diff changeset
   153
  includes a simple editing mode @{verbatim "isabelle-options"} for
wenzelm
parents: 48580
diff changeset
   154
  this file-format.
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   155
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   156
  The @{tool_def options} tool prints Isabelle system options.  Its
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   157
  command-line usage is:
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   158
\begin{ttbox}
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   159
Usage: isabelle options [OPTIONS] [MORE_OPTIONS ...]
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   160
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   161
  Options are:
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   162
    -b           include $ISABELLE_BUILD_OPTIONS
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   163
    -x FILE      export to FILE in YXML format
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   164
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   165
  Print Isabelle system options, augmented by MORE_OPTIONS given as
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   166
  arguments NAME=VAL or NAME.
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   167
\end{ttbox}
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   168
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   169
  The command line arguments provide additional system options of the
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   170
  form @{text "name"}@{verbatim "="}@{text "value"} or @{text name}
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   171
  for Boolean options.
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   172
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   173
  Option @{verbatim "-b"} augments the implicit environment of system
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   174
  options by the ones of @{setting ISABELLE_BUILD_OPTIONS}, cf.\
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   175
  \secref{sec:tool-build}.
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   176
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   177
  Option @{verbatim "-x"} specifies a file to export the result in
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   178
  YXML format, instead of printing it in human-readable form.
48580
9df76dd45900 some description of main build options;
wenzelm
parents: 48579
diff changeset
   179
*}
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   180
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   181
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   182
section {* Invoking the build process \label{sec:tool-build} *}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   183
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48595
diff changeset
   184
text {* The @{tool_def build} tool invokes the build process for
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   185
  Isabelle sessions.  It manages dependencies between sessions,
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   186
  related sources of theories and auxiliary files, and target heap
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   187
  images.  Accordingly, it runs instances of the prover process with
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   188
  optional document preparation.  Its command-line usage
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   189
  is:\footnote{Isabelle/Scala provides the same functionality via
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   190
  \texttt{isabelle.Build.build}.}
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48595
diff changeset
   191
\begin{ttbox}
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48595
diff changeset
   192
Usage: isabelle build [OPTIONS] [SESSIONS ...]
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   193
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   194
  Options are:
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   195
    -D DIR       include session directory and select its sessions
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   196
    -a           select all sessions
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   197
    -b           build heap images
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   198
    -c           clean build
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   199
    -d DIR       include session directory
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   200
    -g NAME      select session group NAME
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   201
    -j INT       maximum number of parallel jobs (default 1)
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   202
    -n           no build -- test dependencies only
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   203
    -o OPTION    override session configuration OPTION
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   204
                 (via NAME=VAL or NAME)
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   205
    -s           system build mode: produce output in ISABELLE_HOME
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   206
    -v           verbose
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   207
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   208
  Build and manage Isabelle sessions, depending on implicit
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   209
  ISABELLE_BUILD_OPTIONS="..."
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   210
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   211
  ML_PLATFORM="..."
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   212
  ML_HOME="..."
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   213
  ML_SYSTEM="..."
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   214
  ML_OPTIONS="..."
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   215
\end{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   216
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   217
  \medskip Isabelle sessions are defined via session ROOT files as
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   218
  described in (\secref{sec:session-root}).  The totality of sessions
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   219
  is determined by collecting such specifications from all Isabelle
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   220
  component directories (\secref{sec:components}), augmented by more
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   221
  directories given via options @{verbatim "-d"}~@{text "DIR"} on the
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   222
  command line.  Each such directory may contain a session
48650
47330b712f8f discontinued unused etc/sessions catalog;
wenzelm
parents: 48605
diff changeset
   223
  \texttt{ROOT} file with several session specifications.
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   224
48684
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   225
  Any session root directory may refer recursively to further
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   226
  directories of the same kind, by listing them in a catalog file
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   227
  @{verbatim "ROOTS"} line-by-line.  This helps to organize large
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   228
  collections of session specifications, or to make @{verbatim "-d"}
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   229
  command line options persistent (say within @{verbatim
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   230
  "$ISABELLE_HOME_USER/ROOTS"}).
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   231
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   232
  \medskip The subset of sessions to be managed is determined via
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   233
  individual @{text "SESSIONS"} given as command-line arguments, or
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   234
  session groups that are given via one or more options @{verbatim
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   235
  "-g"}~@{text "NAME"}.  Option @{verbatim "-a"} selects all sessions.
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   236
  The build tool takes session dependencies into account: the set of
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   237
  selected sessions is completed by including all ancestors.
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   238
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   239
  \medskip Option @{verbatim "-D"} is similar to @{verbatim "-d"}, but
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   240
  selects all sessions that are defined in the given directories.
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   241
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   242
  \medskip The build process depends on additional options
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   243
  (\secref{sec:system-options}) that are passed to the prover
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   244
  eventually.  The settings variable @{setting_ref
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   245
  ISABELLE_BUILD_OPTIONS} allows to provide additional defaults, e.g.\
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   246
  \texttt{ISABELLE_BUILD_OPTIONS="document=pdf threads=4"}. Moreover,
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   247
  the environment of system build options may be augmented on the
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   248
  command line via @{verbatim "-o"}~@{text "name"}@{verbatim
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   249
  "="}@{text "value"} or @{verbatim "-o"}~@{text "name"}, which
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   250
  abbreviates @{verbatim "-o"}~@{text "name"}@{verbatim"=true"} for
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   251
  Boolean options.  Multiple occurrences of @{verbatim "-o"} on the
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   252
  command-line are applied in the given order.
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   253
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   254
  \medskip Option @{verbatim "-b"} ensures that heap images are
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   255
  produced for all selected sessions.  By default, images are only
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   256
  saved for inner nodes of the hierarchy of sessions, as required for
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   257
  other sessions to continue later on.
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   258
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   259
  \medskip Option @{verbatim "-c"} cleans all descendants of the
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   260
  selected sessions before performing the specified build operation.
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   261
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   262
  \medskip Option @{verbatim "-n"} omits the actual build process
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   263
  after the preparatory stage (including optional cleanup).  Note that
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   264
  the return code always indicates the status of the set of selected
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   265
  sessions.
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   266
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   267
  \medskip Option @{verbatim "-j"} specifies the maximum number of
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   268
  parallel build jobs (prover processes).  Each prover process is
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   269
  subject to a separate limit of parallel worker threads, cf.\ system
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   270
  option @{system_option_ref threads}.
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   271
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   272
  \medskip Option @{verbatim "-s"} enables \emph{system mode}, which
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   273
  means that resulting heap images and log files are stored in
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   274
  @{verbatim "$ISABELLE_HOME/heaps"} instead of the default location
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   275
  @{setting ISABELLE_OUTPUT} (which is normally in @{setting
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   276
  ISABELLE_HOME_USER}, i.e.\ the user's home directory).
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   277
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   278
  \medskip Option @{verbatim "-v"} enables verbose mode.
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   279
*}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   280
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   281
subsubsection {* Examples *}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   282
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   283
text {*
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   284
  Build a specific logic image:
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   285
\begin{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   286
isabelle build -b HOLCF
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   287
\end{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   288
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   289
  \smallskip Build the main group of logic images:
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   290
\begin{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   291
isabelle build -b -g main
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   292
\end{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   293
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   294
  \smallskip Provide a general overview of the status of all Isabelle
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   295
  sessions, without building anything:
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   296
\begin{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   297
isabelle build -a -n -v
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   298
\end{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   299
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   300
  \smallskip Build all sessions with HTML browser info and PDF
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   301
  document preparation:
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   302
\begin{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   303
isabelle build -a -o browser_info -o document=pdf
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   304
\end{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   305
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   306
  \smallskip Build all sessions with a maximum of 8 parallel prover
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   307
  processes and 4 worker threads each (on a machine with many cores):
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   308
\begin{ttbox}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   309
isabelle build -a -j8 -o threads=4
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   310
\end{ttbox}
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   311
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   312
  \smallskip Build some session images with cleanup of their
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   313
  descendants, while retaining their ancestry:
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   314
\begin{ttbox}
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   315
isabelle build -b -c HOL-Boogie HOL-SPARK
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   316
\end{ttbox}
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   317
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   318
  \smallskip Clean all sessions without building anything:
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   319
\begin{ttbox}
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   320
isabelle build -a -n -c
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   321
\end{ttbox}
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   322
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   323
  \smallskip Build all sessions from some other directory hierarchy,
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   324
  according to the settings variable @{verbatim "AFP"} that happens to
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   325
  be defined inside the Isabelle environment:
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   326
\begin{ttbox}
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   327
isabelle build -D '$AFP'
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   328
\end{ttbox}
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   329
*}
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   330
48683
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   331
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   332
section {* Preparing session root directories \label{sec:tool-mkroot} *}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   333
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   334
text {* The @{tool_def mkroot} tool prepares Isabelle session source
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   335
  directories, including some @{verbatim ROOT} entry, an example
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   336
  theory file, and some initial configuration for document preparation
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   337
  (see also \chref{ch:present}).  The usage of @{tool mkroot} is:
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   338
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   339
\begin{ttbox}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   340
Usage: isabelle mkroot NAME
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   341
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   342
  Prepare session root directory, adding session NAME with
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   343
  built-in document preparation.
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   344
\end{ttbox}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   345
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   346
  All session-specific files are placed into a separate sub-directory
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   347
  given as @{verbatim NAME} above.  The @{verbatim ROOT} file is in
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   348
  the parent position relative to that --- it could refer to several
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   349
  such sessions.  The @{tool mkroot} tool is conservative in the sense
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   350
  that does not overwrite an existing session sub-directory; an
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   351
  already existing @{verbatim ROOT} file is extended.
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   352
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   353
  The implicit Isabelle settings variable @{setting ISABELLE_LOGIC}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   354
  specifies the parent session, and @{setting
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   355
  ISABELLE_DOCUMENT_FORMAT} the document format to be filled filled
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   356
  into the generated @{verbatim ROOT} file.  *}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   357
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   358
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   359
subsubsection {* Examples *}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   360
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   361
text {* The following produces an example session, relatively to the
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   362
  @{verbatim ROOT} in the current directory:
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   363
\begin{ttbox}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   364
isabelle mkroot Test && isabelle build -v -d. Test
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   365
\end{ttbox}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   366
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   367
  Option @{verbatim "-v"} is not required, but useful to reveal the
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   368
  the location of generated documents.  *}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   369
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   370
end