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