doc-src/System/Thy/document/Sessions.tex
author wenzelm
Wed, 08 Aug 2012 17:49:56 +0200
changeset 48738 f8c1a5b9488f
parent 48737 f3bbb9ca57d6
child 48739 3a6c03b15916
permissions -rw-r--r--
simplified session specifications: names are taken verbatim and current directory is default;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
     1
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
     2
\begin{isabellebody}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
     3
\def\isabellecontext{Sessions}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
     4
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
     5
\isadelimtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
     6
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
     7
\endisadelimtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
     8
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
     9
\isatagtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    10
\isacommand{theory}\isamarkupfalse%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    11
\ Sessions\isanewline
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    12
\isakeyword{imports}\ Base\isanewline
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    13
\isakeyword{begin}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    14
\endisatagtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    15
{\isafoldtheory}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    16
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    17
\isadelimtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    18
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    19
\endisadelimtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    20
%
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
    21
\isamarkupchapter{Isabelle sessions and build management \label{ch:session}%
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    22
}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    23
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    24
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    25
\begin{isamarkuptext}%
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
    26
An Isabelle \emph{session} consists of a collection of related
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    27
  theories that may be associated with formal documents (see also
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    28
  \chref{ch:present}).  There is also a notion of \emph{persistent
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    29
  heap} image to capture the state of a session, similar to
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    30
  object-code in compiled programming languages.  Thus the concept of
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    31
  session resembles that of a ``project'' in common IDE environments,
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    32
  but the specific name emphasizes the connection to interactive
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    33
  theorem proving: the session wraps-up the results of
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    34
  user-interaction with the prover in a persistent form.
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
    35
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    36
  Application sessions are built on a given parent session, which may
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    37
  be built recursively on other parents.  Following this path in the
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    38
  hierarchy eventually leads to some major object-logic session like
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    39
  \isa{{\isaliteral{22}{\isachardoublequote}}HOL{\isaliteral{22}{\isachardoublequote}}}, which itself is based on \isa{{\isaliteral{22}{\isachardoublequote}}Pure{\isaliteral{22}{\isachardoublequote}}} as the common
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    40
  root of all sessions.
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
    41
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    42
  Processing sessions may take considerable time.  Isabelle build
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    43
  management helps to organize this efficiently.  This includes
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    44
  support for parallel build jobs, in addition to the multithreaded
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    45
  theory and proof checking that is already provided by the prover
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    46
  process itself.%
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    47
\end{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    48
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    49
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    50
\isamarkupsection{Session ROOT specifications \label{sec:session-root}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    51
}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    52
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    53
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    54
\begin{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    55
Session specifications reside in files called \verb|ROOT|
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    56
  within certain directories, such as the home locations of registered
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    57
  Isabelle components or additional project directories given by the
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    58
  user.
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    59
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    60
  The ROOT file format follows the lexical conventions of the
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    61
  \emph{outer syntax} of Isabelle/Isar, see also
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    62
  \cite{isabelle-isar-ref}.  This defines common forms like
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    63
  identifiers, names, quoted strings, verbatim text, nested comments
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    64
  etc.  The grammar for a single \hyperlink{syntax.session-entry}{\mbox{\isa{session{\isaliteral{5F}{\isacharunderscore}}entry}}} is given as
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    65
  syntax diagram below; each ROOT file may contain multiple session
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    66
  specifications like this.
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    67
48582
wenzelm
parents: 48581
diff changeset
    68
  Isabelle/jEdit (\secref{sec:tool-jedit}) includes a simple editing
wenzelm
parents: 48581
diff changeset
    69
  mode \verb|isabelle-root| for session ROOT files.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    70
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    71
  \begin{railoutput}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    72
\rail@begin{2}{\indexdef{}{syntax}{session\_entry}\hypertarget{syntax.session-entry}{\hyperlink{syntax.session-entry}{\mbox{\isa{session{\isaliteral{5F}{\isacharunderscore}}entry}}}}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    73
\rail@term{\isa{\isakeyword{session}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    74
\rail@nont{\isa{spec}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    75
\rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    76
\rail@bar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    77
\rail@nextbar{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    78
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    79
\rail@term{\isa{{\isaliteral{2B}{\isacharplus}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    80
\rail@endbar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    81
\rail@nont{\isa{body}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    82
\rail@end
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    83
\rail@begin{2}{\isa{body}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    84
\rail@bar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    85
\rail@nextbar{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    86
\rail@nont{\isa{description}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    87
\rail@endbar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    88
\rail@bar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    89
\rail@nextbar{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    90
\rail@nont{\isa{options}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    91
\rail@endbar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    92
\rail@plus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    93
\rail@nextplus{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    94
\rail@cnont{\isa{theories}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    95
\rail@endplus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    96
\rail@bar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    97
\rail@nextbar{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    98
\rail@nont{\isa{files}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
    99
\rail@endbar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   100
\rail@end
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   101
\rail@begin{2}{\isa{spec}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   102
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   103
\rail@bar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   104
\rail@nextbar{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   105
\rail@nont{\isa{groups}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   106
\rail@endbar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   107
\rail@bar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   108
\rail@nextbar{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   109
\rail@nont{\isa{dir}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   110
\rail@endbar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   111
\rail@end
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   112
\rail@begin{2}{\isa{groups}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   113
\rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   114
\rail@plus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   115
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   116
\rail@nextplus{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   117
\rail@endplus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   118
\rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   119
\rail@end
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   120
\rail@begin{1}{\isa{dir}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   121
\rail@term{\isa{\isakeyword{in}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   122
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   123
\rail@end
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   124
\rail@begin{1}{\isa{description}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   125
\rail@term{\isa{\isakeyword{description}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   126
\rail@nont{\hyperlink{syntax.text}{\mbox{\isa{text}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   127
\rail@end
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   128
\rail@begin{1}{\isa{options}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   129
\rail@term{\isa{\isakeyword{options}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   130
\rail@nont{\isa{opts}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   131
\rail@end
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   132
\rail@begin{3}{\isa{opts}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   133
\rail@term{\isa{{\isaliteral{5B}{\isacharbrackleft}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   134
\rail@plus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   135
\rail@bar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   136
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   137
\rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
48605
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
   138
\rail@nont{\isa{value}}[]
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   139
\rail@nextbar{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   140
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   141
\rail@endbar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   142
\rail@nextplus{2}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   143
\rail@cterm{\isa{{\isaliteral{2C}{\isacharcomma}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   144
\rail@endplus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   145
\rail@term{\isa{{\isaliteral{5D}{\isacharbrackright}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   146
\rail@end
48605
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
   147
\rail@begin{2}{\isa{value}}
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
   148
\rail@bar
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
   149
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
   150
\rail@nextbar{1}
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
   151
\rail@nont{\hyperlink{syntax.real}{\mbox{\isa{real}}}}[]
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
   152
\rail@endbar
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
   153
\rail@end
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   154
\rail@begin{2}{\isa{theories}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   155
\rail@term{\isa{\isakeyword{theories}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   156
\rail@bar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   157
\rail@nextbar{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   158
\rail@nont{\isa{opts}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   159
\rail@endbar
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   160
\rail@plus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   161
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   162
\rail@nextplus{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   163
\rail@endplus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   164
\rail@end
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   165
\rail@begin{2}{\isa{files}}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   166
\rail@term{\isa{\isakeyword{files}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   167
\rail@plus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   168
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   169
\rail@nextplus{1}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   170
\rail@endplus
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   171
\rail@end
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   172
\end{railoutput}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   173
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   174
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   175
  \begin{description}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   176
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   177
  \item \isakeyword{session}~\isa{{\isaliteral{22}{\isachardoublequote}}A\ {\isaliteral{3D}{\isacharequal}}\ B\ {\isaliteral{2B}{\isacharplus}}\ body{\isaliteral{22}{\isachardoublequote}}} defines a new
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   178
  session \isa{{\isaliteral{22}{\isachardoublequote}}A{\isaliteral{22}{\isachardoublequote}}} based on parent session \isa{{\isaliteral{22}{\isachardoublequote}}B{\isaliteral{22}{\isachardoublequote}}}, with its
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   179
  content given in \isa{body} (theories and auxiliary source files).
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   180
  Note that a parent (like \isa{{\isaliteral{22}{\isachardoublequote}}HOL{\isaliteral{22}{\isachardoublequote}}}) is mandatory in practical
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   181
  applications: only Isabelle/Pure can bootstrap itself from nothing.
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   182
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   183
  All such session specifications together describe a hierarchy (tree)
48738
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   184
  of sessions, with globally unique names.  The new session name
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   185
  \isa{{\isaliteral{22}{\isachardoublequote}}A{\isaliteral{22}{\isachardoublequote}}} should be sufficiently long to stand on its own in a
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   186
  potentially large library.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   187
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   188
  \item \isakeyword{session}~\isa{{\isaliteral{22}{\isachardoublequote}}A\ {\isaliteral{28}{\isacharparenleft}}groups{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} indicates a
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   189
  collection of groups where the new session is a member.  Group names
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   190
  are uninterpreted and merely follow certain conventions.  For
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   191
  example, the Isabelle distribution tags some important sessions by
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   192
  the group name called ``\isa{{\isaliteral{22}{\isachardoublequote}}main{\isaliteral{22}{\isachardoublequote}}}''.  Other projects may invent
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   193
  their own conventions, but this requires some care to avoid clashes
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   194
  within this unchecked name space.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   195
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   196
  \item \isakeyword{session}~\isa{{\isaliteral{22}{\isachardoublequote}}A{\isaliteral{22}{\isachardoublequote}}}~\isakeyword{in}~\isa{{\isaliteral{22}{\isachardoublequote}}dir{\isaliteral{22}{\isachardoublequote}}}
48738
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   197
  specifies an explicit directory for this session; by default this is
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   198
  the current directory of the \verb|ROOT| file.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   199
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   200
  All theories and auxiliary source files are located relatively to
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   201
  the session directory.  The prover process is run within the same as
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   202
  its current working directory.
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   203
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   204
  \item \isakeyword{description}~\isa{{\isaliteral{22}{\isachardoublequote}}text{\isaliteral{22}{\isachardoublequote}}} is a free-form
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   205
  annotation for this session.
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   206
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   207
  \item \isakeyword{options}~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5B}{\isacharbrackleft}}x\ {\isaliteral{3D}{\isacharequal}}\ a{\isaliteral{2C}{\isacharcomma}}\ y\ {\isaliteral{3D}{\isacharequal}}\ b{\isaliteral{2C}{\isacharcomma}}\ z{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{22}{\isachardoublequote}}} defines
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   208
  separate options (\secref{sec:system-options}) that are used when
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   209
  processing this session, but \emph{without} propagation to child
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   210
  sessions.  Note that \isa{{\isaliteral{22}{\isachardoublequote}}z{\isaliteral{22}{\isachardoublequote}}} abbreviates \isa{{\isaliteral{22}{\isachardoublequote}}z\ {\isaliteral{3D}{\isacharequal}}\ true{\isaliteral{22}{\isachardoublequote}}} for
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   211
  Boolean options.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   212
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   213
  \item \isakeyword{theories}~\isa{{\isaliteral{22}{\isachardoublequote}}options\ names{\isaliteral{22}{\isachardoublequote}}} specifies a
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   214
  block of theories that are processed within an environment that is
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   215
  augmented by the given options, in addition to the global session
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   216
  options given before.  Any number of blocks of \isakeyword{theories}
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   217
  may be given.  Options are only active for each
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   218
  \isakeyword{theories} block separately.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   219
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   220
  \item \isakeyword{files}~\isa{{\isaliteral{22}{\isachardoublequote}}files{\isaliteral{22}{\isachardoublequote}}} lists additional source
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   221
  files that are involved in the processing of this session.  This
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   222
  should cover anything outside the formal content of the theory
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   223
  sources, say some auxiliary {\TeX} files that are required for
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   224
  document processing.  In contrast, files that are specified in
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   225
  formal theory headers as \hyperlink{keyword.uses}{\mbox{\isa{\isakeyword{uses}}}} need not be declared
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   226
  again.
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   227
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   228
  \end{description}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   229
\end{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   230
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   231
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   232
\isamarkupsubsubsection{Examples%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   233
}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   234
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   235
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   236
\begin{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   237
See \verb|~~/src/HOL/ROOT| for a diversity of practically
48738
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   238
  relevant situations, but it uses relatively complex quasi-hierarchic
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   239
  naming conventions like \isa{{\isaliteral{22}{\isachardoublequote}}HOL{\isaliteral{5C3C646173683E}{\isasymdash}}SPARK{\isaliteral{22}{\isachardoublequote}}}, \isa{{\isaliteral{22}{\isachardoublequote}}HOL{\isaliteral{5C3C646173683E}{\isasymdash}}SPARK{\isaliteral{5C3C646173683E}{\isasymdash}}Examples{\isaliteral{22}{\isachardoublequote}}}.  An alternative is to use
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   240
  unqualified names that are relatively long and descriptive, as in
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   241
  the Archive of Formal Proofs (\url{http://afp.sf.net}), for
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   242
  example.%
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   243
\end{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   244
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   245
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   246
\isamarkupsection{System build options \label{sec:system-options}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   247
}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   248
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   249
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   250
\begin{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   251
See \verb|~~/etc/options| for the main defaults provided by
48582
wenzelm
parents: 48581
diff changeset
   252
  the Isabelle distribution.  Isabelle/jEdit (\secref{sec:tool-jedit})
wenzelm
parents: 48581
diff changeset
   253
  includes a simple editing mode \verb|isabelle-options| for
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   254
  this file-format.
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   255
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   256
  The \indexdef{}{tool}{options}\hypertarget{tool.options}{\hyperlink{tool.options}{\mbox{\isa{\isatool{options}}}}} tool prints Isabelle system options.  Its
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   257
  command-line usage is:
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   258
\begin{ttbox}
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   259
Usage: isabelle options [OPTIONS] [MORE_OPTIONS ...]
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   260
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   261
  Options are:
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   262
    -b           include $ISABELLE_BUILD_OPTIONS
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   263
    -x FILE      export to FILE in YXML format
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   264
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   265
  Print Isabelle system options, augmented by MORE_OPTIONS given as
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   266
  arguments NAME=VAL or NAME.
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   267
\end{ttbox}
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   268
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   269
  The command line arguments provide additional system options of the
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   270
  form \isa{{\isaliteral{22}{\isachardoublequote}}name{\isaliteral{22}{\isachardoublequote}}}\verb|=|\isa{{\isaliteral{22}{\isachardoublequote}}value{\isaliteral{22}{\isachardoublequote}}} or \isa{name}
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   271
  for Boolean options.
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   272
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   273
  Option \verb|-b| augments the implicit environment of system
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   274
  options by the ones of \hyperlink{setting.ISABELLE-BUILD-OPTIONS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BUILD{\isaliteral{5F}{\isacharunderscore}}OPTIONS}}}}, cf.\
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   275
  \secref{sec:tool-build}.
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   276
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   277
  Option \verb|-x| specifies a file to export the result in
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   278
  YXML format, instead of printing it in human-readable form.%
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   279
\end{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   280
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   281
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   282
\isamarkupsection{Invoking the build process \label{sec:tool-build}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   283
}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   284
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   285
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   286
\begin{isamarkuptext}%
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48595
diff changeset
   287
The \indexdef{}{tool}{build}\hypertarget{tool.build}{\hyperlink{tool.build}{\mbox{\isa{\isatool{build}}}}} tool invokes the build process for
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   288
  Isabelle sessions.  It manages dependencies between sessions,
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   289
  related sources of theories and auxiliary files, and target heap
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   290
  images.  Accordingly, it runs instances of the prover process with
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   291
  optional document preparation.  Its command-line usage
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   292
  is:\footnote{Isabelle/Scala provides the same functionality via
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   293
  \texttt{isabelle.Build.build}.}
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48595
diff changeset
   294
\begin{ttbox}
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48595
diff changeset
   295
Usage: isabelle build [OPTIONS] [SESSIONS ...]
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   296
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   297
  Options are:
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   298
    -D DIR       include session directory and select its sessions
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   299
    -a           select all sessions
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   300
    -b           build heap images
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   301
    -c           clean build
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   302
    -d DIR       include session directory
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   303
    -g NAME      select session group NAME
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   304
    -j INT       maximum number of parallel jobs (default 1)
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   305
    -n           no build -- test dependencies only
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   306
    -o OPTION    override session configuration OPTION
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   307
                 (via NAME=VAL or NAME)
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   308
    -s           system build mode: produce output in ISABELLE_HOME
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   309
    -v           verbose
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   310
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   311
  Build and manage Isabelle sessions, depending on implicit
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   312
  ISABELLE_BUILD_OPTIONS="..."
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   313
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   314
  ML_PLATFORM="..."
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   315
  ML_HOME="..."
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   316
  ML_SYSTEM="..."
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   317
  ML_OPTIONS="..."
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   318
\end{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   319
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   320
  \medskip Isabelle sessions are defined via session ROOT files as
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   321
  described in (\secref{sec:session-root}).  The totality of sessions
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   322
  is determined by collecting such specifications from all Isabelle
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   323
  component directories (\secref{sec:components}), augmented by more
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   324
  directories given via options \verb|-d|~\isa{{\isaliteral{22}{\isachardoublequote}}DIR{\isaliteral{22}{\isachardoublequote}}} on the
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   325
  command line.  Each such directory may contain a session
48650
47330b712f8f discontinued unused etc/sessions catalog;
wenzelm
parents: 48605
diff changeset
   326
  \texttt{ROOT} file with several session specifications.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   327
48684
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   328
  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
   329
  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
   330
  \verb|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
   331
  collections of session specifications, or to make \verb|-d|
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   332
  command line options persistent (say within \verb|$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
   333
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   334
  \medskip The subset of sessions to be managed is determined via
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   335
  individual \isa{{\isaliteral{22}{\isachardoublequote}}SESSIONS{\isaliteral{22}{\isachardoublequote}}} given as command-line arguments, or
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   336
  session groups that are given via one or more options \verb|-g|~\isa{{\isaliteral{22}{\isachardoublequote}}NAME{\isaliteral{22}{\isachardoublequote}}}.  Option \verb|-a| selects all sessions.
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   337
  The build tool takes session dependencies into account: the set of
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   338
  selected sessions is completed by including all ancestors.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   339
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   340
  \medskip Option \verb|-D| is similar to \verb|-d|, but
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   341
  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
   342
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   343
  \medskip The build process depends on additional options
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   344
  (\secref{sec:system-options}) that are passed to the prover
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   345
  eventually.  The settings variable \indexref{}{setting}{ISABELLE\_BUILD\_OPTIONS}\hyperlink{setting.ISABELLE-BUILD-OPTIONS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BUILD{\isaliteral{5F}{\isacharunderscore}}OPTIONS}}}} allows to provide additional defaults, e.g.\
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   346
  \texttt{ISABELLE_BUILD_OPTIONS="document=pdf threads=4"}. Moreover,
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   347
  the environment of system build options may be augmented on the
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   348
  command line via \verb|-o|~\isa{{\isaliteral{22}{\isachardoublequote}}name{\isaliteral{22}{\isachardoublequote}}}\verb|=|\isa{{\isaliteral{22}{\isachardoublequote}}value{\isaliteral{22}{\isachardoublequote}}} or \verb|-o|~\isa{{\isaliteral{22}{\isachardoublequote}}name{\isaliteral{22}{\isachardoublequote}}}, which
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   349
  abbreviates \verb|-o|~\isa{{\isaliteral{22}{\isachardoublequote}}name{\isaliteral{22}{\isachardoublequote}}}\verb|=true| for
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   350
  Boolean options.  Multiple occurrences of \verb|-o| on the
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   351
  command-line are applied in the given order.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   352
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   353
  \medskip Option \verb|-b| ensures that heap images are
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   354
  produced for all selected sessions.  By default, images are only
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   355
  saved for inner nodes of the hierarchy of sessions, as required for
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   356
  other sessions to continue later on.
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   357
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   358
  \medskip Option \verb|-c| cleans all descendants of the
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   359
  selected sessions before performing the specified build operation.
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   360
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   361
  \medskip Option \verb|-n| omits the actual build process
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   362
  after the preparatory stage (including optional cleanup).  Note that
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   363
  the return code always indicates the status of the set of selected
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   364
  sessions.
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   365
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   366
  \medskip Option \verb|-j| specifies the maximum number of
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   367
  parallel build jobs (prover processes).  Each prover process is
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   368
  subject to a separate limit of parallel worker threads, cf.\ system
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   369
  option \indexref{}{system option}{threads}\hyperlink{system option.threads}{\mbox{\isa{\isatt{threads}}}}.
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   370
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   371
  \medskip Option \verb|-s| enables \emph{system mode}, which
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   372
  means that resulting heap images and log files are stored in
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   373
  \verb|$ISABELLE_HOME/heaps| instead of the default location
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   374
  \hyperlink{setting.ISABELLE-OUTPUT}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}OUTPUT}}}} (which is normally in \hyperlink{setting.ISABELLE-HOME-USER}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME{\isaliteral{5F}{\isacharunderscore}}USER}}}}, i.e.\ the user's home directory).
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   375
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   376
  \medskip Option \verb|-v| enables verbose mode.%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   377
\end{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   378
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   379
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   380
\isamarkupsubsubsection{Examples%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   381
}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   382
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   383
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   384
\begin{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   385
Build a specific logic image:
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   386
\begin{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   387
isabelle build -b HOLCF
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   388
\end{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   389
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   390
  \smallskip Build the main group of logic images:
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   391
\begin{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   392
isabelle build -b -g main
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   393
\end{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   394
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   395
  \smallskip Provide a general overview of the status of all Isabelle
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   396
  sessions, without building anything:
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   397
\begin{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   398
isabelle build -a -n -v
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   399
\end{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   400
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   401
  \smallskip Build all sessions with HTML browser info and PDF
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   402
  document preparation:
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   403
\begin{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   404
isabelle build -a -o browser_info -o document=pdf
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   405
\end{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   406
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   407
  \smallskip Build all sessions with a maximum of 8 parallel prover
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   408
  processes and 4 worker threads each (on a machine with many cores):
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   409
\begin{ttbox}
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   410
isabelle build -a -j8 -o threads=4
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   411
\end{ttbox}
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   412
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   413
  \smallskip Build some session images with cleanup of their
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   414
  descendants, while retaining their ancestry:
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   415
\begin{ttbox}
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   416
isabelle build -b -c HOL-Boogie HOL-SPARK
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   417
\end{ttbox}
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   418
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   419
  \smallskip Clean all sessions without building anything:
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   420
\begin{ttbox}
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   421
isabelle build -a -n -c
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   422
\end{ttbox}
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   423
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   424
  \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
   425
  according to the settings variable \verb|AFP| that happens to
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   426
  be defined inside the Isabelle environment:
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   427
\begin{ttbox}
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   428
isabelle build -D '$AFP'
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   429
\end{ttbox}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   430
\end{isamarkuptext}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   431
\isamarkuptrue%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   432
%
48683
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   433
\isamarkupsection{Preparing session root directories \label{sec:tool-mkroot}%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   434
}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   435
\isamarkuptrue%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   436
%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   437
\begin{isamarkuptext}%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   438
The \indexdef{}{tool}{mkroot}\hypertarget{tool.mkroot}{\hyperlink{tool.mkroot}{\mbox{\isa{\isatool{mkroot}}}}} tool prepares Isabelle session source
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   439
  directories, including some \verb|ROOT| entry, an example
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   440
  theory file, and some initial configuration for document preparation
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   441
  (see also \chref{ch:present}).  The usage of \hyperlink{tool.mkroot}{\mbox{\isa{\isatool{mkroot}}}} is:
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   442
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   443
\begin{ttbox}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   444
Usage: isabelle mkroot NAME
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   445
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   446
  Prepare session root directory, adding session NAME with
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   447
  built-in document preparation.
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   448
\end{ttbox}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   449
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   450
  All session-specific files are placed into a separate sub-directory
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   451
  given as \verb|NAME| above.  The \verb|ROOT| file is in
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   452
  the parent position relative to that --- it could refer to several
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   453
  such sessions.  The \hyperlink{tool.mkroot}{\mbox{\isa{\isatool{mkroot}}}} tool is conservative in the sense
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   454
  that does not overwrite an existing session sub-directory; an
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   455
  already existing \verb|ROOT| file is extended.
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   456
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   457
  The implicit Isabelle settings variable \hyperlink{setting.ISABELLE-LOGIC}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}LOGIC}}}}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   458
  specifies the parent session, and \hyperlink{setting.ISABELLE-DOCUMENT-FORMAT}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}DOCUMENT{\isaliteral{5F}{\isacharunderscore}}FORMAT}}}} the document format to be filled filled
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   459
  into the generated \verb|ROOT| file.%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   460
\end{isamarkuptext}%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   461
\isamarkuptrue%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   462
%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   463
\isamarkupsubsubsection{Examples%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   464
}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   465
\isamarkuptrue%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   466
%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   467
\begin{isamarkuptext}%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   468
The following produces an example session, relatively to the
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   469
  \verb|ROOT| in the current directory:
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   470
\begin{ttbox}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   471
isabelle mkroot Test && isabelle build -v -d. Test
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   472
\end{ttbox}
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   473
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   474
  Option \verb|-v| is not required, but useful to reveal the
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   475
  the location of generated documents.%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   476
\end{isamarkuptext}%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   477
\isamarkuptrue%
eeb4480b5877 more on isabelle mkroot;
wenzelm
parents: 48650
diff changeset
   478
%
48581
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   479
\isadelimtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   480
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   481
\endisadelimtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   482
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   483
\isatagtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   484
\isacommand{end}\isamarkupfalse%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   485
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   486
\endisatagtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   487
{\isafoldtheory}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   488
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   489
\isadelimtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   490
%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   491
\endisadelimtheory
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   492
\isanewline
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   493
\end{isabellebody}%
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   494
%%% Local Variables:
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   495
%%% mode: latex
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   496
%%% TeX-master: "root"
240d6a677193 added generated file;
wenzelm
parents:
diff changeset
   497
%%% End: