src/Doc/System/Misc.thy
author wenzelm
Thu, 31 Dec 2015 19:53:19 +0100
changeset 62013 92a2372a226b
parent 61656 cfabbc083977
child 62451 040b94ffbdde
permissions -rw-r--r--
discontinued documentation of old browser; tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
61656
cfabbc083977 more uniform jEdit properties;
wenzelm
parents: 61575
diff changeset
     1
(*:maxLineLen=78:*)
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
     2
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     3
theory Misc
43564
9864182c6bad document antiquotations are managed as theory data, with proper name space and entity markup;
wenzelm
parents: 41512
diff changeset
     4
imports Base
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     5
begin
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     6
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
     7
chapter \<open>Miscellaneous tools \label{ch:tools}\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     8
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
     9
text \<open>
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    10
  Subsequently we describe various Isabelle related utilities, given in
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    11
  alphabetical order.
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
    12
\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
    13
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
    14
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
    15
section \<open>Resolving Isabelle components \label{sec:tool-components}\<close>
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    16
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
    17
text \<open>
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    18
  The @{tool_def components} tool resolves Isabelle components:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
    19
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
    20
\<open>Usage: isabelle components [OPTIONS] [COMPONENTS ...]
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    21
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    22
  Options are:
50653
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
    23
    -I           init user settings
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    24
    -R URL       component repository
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    25
                 (default $ISABELLE_COMPONENT_REPOSITORY)
53435
wenzelm
parents: 52550
diff changeset
    26
    -a           resolve all missing components
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    27
    -l           list status
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    28
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    29
  Resolve Isabelle components via download and installation.
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    30
  COMPONENTS are identified via base name.
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    31
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
    32
  ISABELLE_COMPONENT_REPOSITORY="http://isabelle.in.tum.de/components"\<close>}
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    33
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    34
  Components are initialized as described in \secref{sec:components} in a
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    35
  permissive manner, which can mark components as ``missing''. This state is
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    36
  amended by letting @{tool "components"} download and unpack components that
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    37
  are published on the default component repository @{url
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    38
  "http://isabelle.in.tum.de/components/"} in particular.
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    39
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    40
  Option \<^verbatim>\<open>-R\<close> specifies an alternative component repository. Note that
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    41
  \<^verbatim>\<open>file:///\<close> URLs can be used for local directories.
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    42
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    43
  Option \<^verbatim>\<open>-a\<close> selects all missing components to be resolved. Explicit
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    44
  components may be named as command line-arguments as well. Note that
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    45
  components are uniquely identified by their base name, while the
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    46
  installation takes place in the location that was specified in the attempt
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    47
  to initialize the component before.
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    48
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    49
  Option \<^verbatim>\<open>-l\<close> lists the current state of available and missing components
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    50
  with their location (full name) within the file-system.
50653
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
    51
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    52
  Option \<^verbatim>\<open>-I\<close> initializes the user settings file to subscribe to the standard
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    53
  components specified in the Isabelle repository clone --- this does not make
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    54
  any sense for regular Isabelle releases. If the file already exists, it
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    55
  needs to be edited manually according to the printed explanation.
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
    56
\<close>
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    57
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
    58
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
    59
section \<open>Raw ML console\<close>
57439
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    60
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
    61
text \<open>
57439
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    62
  The @{tool_def console} tool runs the Isabelle process with raw ML console:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
    63
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
    64
\<open>Usage: isabelle console [OPTIONS]
57439
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    65
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    66
  Options are:
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    67
    -d DIR       include session directory
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    68
    -l NAME      logic session name (default ISABELLE_LOGIC)
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    69
    -m MODE      add print mode for output
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    70
    -n           no build of session image on startup
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    71
    -o OPTION    override Isabelle system OPTION (via NAME=VAL or NAME)
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    72
    -s           system build mode for session image
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    73
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    74
  Run Isabelle process with raw ML console and line editor
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
    75
  (default ISABELLE_LINE_EDITOR).\<close>}
57439
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    76
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    77
  The \<^verbatim>\<open>-l\<close> option specifies the logic session name. By default, its heap
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    78
  image is checked and built on demand, but the option \<^verbatim>\<open>-n\<close> skips that.
57439
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    79
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    80
  Options \<^verbatim>\<open>-d\<close>, \<^verbatim>\<open>-o\<close>, \<^verbatim>\<open>-s\<close> are passed directly to @{tool build}
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    81
  (\secref{sec:tool-build}).
57439
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    82
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    83
  Options \<^verbatim>\<open>-m\<close>, \<^verbatim>\<open>-o\<close> are passed directly to the underlying Isabelle process
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
    84
  (\secref{sec:isabelle-process}).
57439
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    85
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    86
  The Isabelle process is run through the line editor that is specified via
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    87
  the settings variable @{setting ISABELLE_LINE_EDITOR} (e.g.\
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    88
  @{executable_def rlwrap} for GNU readline); the fall-back is to use plain
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    89
  standard input/output.
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    90
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    91
  Interaction works via the raw ML toplevel loop: this is neither
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    92
  Isabelle/Isar nor Isabelle/ML within the usual formal context. Some useful
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    93
  ML commands at this stage are @{ML cd}, @{ML pwd}, @{ML use}, @{ML use_thy},
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    94
  @{ML use_thys}.
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
    95
\<close>
57439
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    96
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 57414
diff changeset
    97
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
    98
section \<open>Displaying documents \label{sec:tool-display}\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
    99
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   100
text \<open>
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   101
  The @{tool_def display} tool displays documents in DVI or PDF format:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   102
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   103
\<open>Usage: isabelle display DOCUMENT
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   104
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   105
  Display DOCUMENT (in DVI or PDF format).\<close>}
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   106
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 58618
diff changeset
   107
  \<^medskip>
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   108
  The settings @{setting DVI_VIEWER} and @{setting PDF_VIEWER} determine the
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   109
  programs for viewing the corresponding file formats. Normally this opens the
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   110
  document via the desktop environment, potentially in an asynchronous manner
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   111
  with re-use of previews views.
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   112
\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   113
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   114
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   115
section \<open>Viewing documentation \label{sec:tool-doc}\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   116
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   117
text \<open>
52444
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   118
  The @{tool_def doc} tool displays Isabelle documentation:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   119
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   120
\<open>Usage: isabelle doc [DOC ...]
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   121
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   122
  View Isabelle documentation.\<close>}
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   123
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   124
  If called without arguments, it lists all available documents. Each line
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   125
  starts with an identifier, followed by a short description. Any of these
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   126
  identifiers may be specified as arguments, in order to display the
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   127
  corresponding document (see also \secref{sec:tool-display}).
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   128
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 58618
diff changeset
   129
  \<^medskip>
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   130
  The @{setting ISABELLE_DOCS} setting specifies the list of directories
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   131
  (separated by colons) to be scanned for documentations.
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   132
\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   133
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   134
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   135
section \<open>Shell commands within the settings environment \label{sec:tool-env}\<close>
47828
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   136
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   137
text \<open>
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   138
  The @{tool_def env} tool is a direct wrapper for the standard
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   139
  \<^verbatim>\<open>/usr/bin/env\<close> command on POSIX systems, running within the Isabelle
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   140
  settings environment (\secref{sec:settings}).
47828
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   141
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   142
  The command-line arguments are that of the underlying version of \<^verbatim>\<open>env\<close>. For
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   143
  example, the following invokes an instance of the GNU Bash shell within the
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   144
  Isabelle environment:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   145
  @{verbatim [display] \<open>isabelle env bash\<close>}
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   146
\<close>
47828
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   147
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   148
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   149
section \<open>Inspecting the settings environment \label{sec:tool-getenv}\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   150
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   151
text \<open>The Isabelle settings environment --- as provided by the
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   152
  site-default and user-specific settings files --- can be inspected
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   153
  with the @{tool_def getenv} tool:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   154
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   155
\<open>Usage: isabelle getenv [OPTIONS] [VARNAMES ...]
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   156
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   157
  Options are:
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   158
    -a           display complete environment
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   159
    -b           print values only (doesn't work for -a)
31497
5333aa739082 isabelle getenv: option -d;
wenzelm
parents: 28916
diff changeset
   160
    -d FILE      dump complete environment to FILE
5333aa739082 isabelle getenv: option -d;
wenzelm
parents: 28916
diff changeset
   161
                 (null terminated entries)
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   162
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   163
  Get value of VARNAMES from the Isabelle settings.\<close>}
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   164
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   165
  With the \<^verbatim>\<open>-a\<close> option, one may inspect the full process environment that
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   166
  Isabelle related programs are run in. This usually contains much more
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   167
  variables than are actually Isabelle settings. Normally, output is a list of
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   168
  lines of the form \<open>name\<close>\<^verbatim>\<open>=\<close>\<open>value\<close>. The \<^verbatim>\<open>-b\<close> option causes only the values
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   169
  to be printed.
31497
5333aa739082 isabelle getenv: option -d;
wenzelm
parents: 28916
diff changeset
   170
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   171
  Option \<^verbatim>\<open>-d\<close> produces a dump of the complete environment to the specified
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   172
  file. Entries are terminated by the ASCII null character, i.e.\ the C string
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   173
  terminator.
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   174
\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   175
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   176
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   177
subsubsection \<open>Examples\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   178
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   179
text \<open>
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   180
  Get the location of @{setting ISABELLE_HOME_USER} where user-specific
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   181
  information is stored:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   182
  @{verbatim [display] \<open>isabelle getenv ISABELLE_HOME_USER\<close>}
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   183
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 58618
diff changeset
   184
  \<^medskip>
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   185
  Get the value only of the same settings variable, which is particularly
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   186
  useful in shell scripts:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   187
  @{verbatim [display] \<open>isabelle getenv -b ISABELLE_OUTPUT\<close>}
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   188
\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   189
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   190
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   191
section \<open>Installing standalone Isabelle executables \label{sec:tool-install}\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   192
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   193
text \<open>
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   194
  By default, the main Isabelle binaries (@{executable "isabelle"} etc.) are
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   195
  just run from their location within the distribution directory, probably
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   196
  indirectly by the shell through its @{setting PATH}. Other schemes of
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   197
  installation are supported by the @{tool_def install} tool:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   198
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   199
\<open>Usage: isabelle install [OPTIONS] BINDIR
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   200
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   201
  Options are:
50132
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   202
    -d DISTDIR   refer to DISTDIR as Isabelle distribution
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   203
                 (default ISABELLE_HOME)
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   204
50132
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   205
  Install Isabelle executables with absolute references to the
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   206
  distribution directory.\<close>}
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   207
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   208
  The \<^verbatim>\<open>-d\<close> option overrides the current Isabelle distribution directory as
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   209
  determined by @{setting ISABELLE_HOME}.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   210
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   211
  The \<open>BINDIR\<close> argument tells where executable wrapper scripts for
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   212
  @{executable "isabelle_process"} and @{executable isabelle} should be
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   213
  placed, which is typically a directory in the shell's @{setting PATH}, such
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   214
  as \<^verbatim>\<open>$HOME/bin\<close>.
48815
wenzelm
parents: 48814
diff changeset
   215
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 58618
diff changeset
   216
  \<^medskip>
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   217
  It is also possible to make symbolic links of the main Isabelle executables
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   218
  manually, but making separate copies outside the Isabelle distribution
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   219
  directory will not work!
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   220
\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   221
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   222
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   223
section \<open>Creating instances of the Isabelle logo\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   224
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   225
text \<open>
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   226
  The @{tool_def logo} tool creates instances of the generic Isabelle logo as
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   227
  EPS and PDF, for inclusion in {\LaTeX} documents.
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   228
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   229
\<open>Usage: isabelle logo [OPTIONS] XYZ
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   230
49072
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   231
  Create instance XYZ of the Isabelle logo (as EPS and PDF).
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   232
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   233
  Options are:
49072
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   234
    -n NAME      alternative output base name (default "isabelle_xyx")
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   235
    -q           quiet mode\<close>}
48936
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   236
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   237
  Option \<^verbatim>\<open>-n\<close> specifies an alternative (base) name for the generated files.
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   238
  The default is \<^verbatim>\<open>isabelle_\<close>\<open>xyz\<close> in lower-case.
48936
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   239
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   240
  Option \<^verbatim>\<open>-q\<close> omits printing of the result file name.
48936
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   241
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 58618
diff changeset
   242
  \<^medskip>
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   243
  Implementors of Isabelle tools and applications are encouraged to make
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   244
  derived Isabelle logos for their own projects using this template.
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   245
\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   246
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   247
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   248
section \<open>Output the version identifier of the Isabelle distribution\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   249
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   250
text \<open>
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   251
  The @{tool_def version} tool displays Isabelle version information:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   252
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   253
\<open>Usage: isabelle version [OPTIONS]
41511
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   254
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   255
  Options are:
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   256
    -i           short identification (derived from Mercurial id)
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   257
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   258
  Display Isabelle version information.\<close>}
41511
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   259
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 58618
diff changeset
   260
  \<^medskip>
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   261
  The default is to output the full version string of the Isabelle
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   262
  distribution, e.g.\ ``\<^verbatim>\<open>Isabelle2012: May 2012\<close>.
41511
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   263
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   264
  The \<^verbatim>\<open>-i\<close> option produces a short identification derived from the Mercurial
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   265
  id of the @{setting ISABELLE_HOME} directory.
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   266
\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   267
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   268
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   269
section \<open>Convert XML to YXML\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   270
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   271
text \<open>
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   272
  The @{tool_def yxml} tool converts a standard XML document (stdin) to the
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   273
  much simpler and more efficient YXML format of Isabelle (stdout). The YXML
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   274
  format is defined as follows.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   275
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   276
    \<^enum> The encoding is always UTF-8.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   277
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   278
    \<^enum> Body text is represented verbatim (no escaping, no special treatment of
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   279
    white space, no named entities, no CDATA chunks, no comments).
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   280
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   281
    \<^enum> Markup elements are represented via ASCII control characters \<open>\<^bold>X = 5\<close>
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   282
    and \<open>\<^bold>Y = 6\<close> as follows:
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   283
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   284
    \begin{tabular}{ll}
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   285
      XML & YXML \\\hline
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   286
      \<^verbatim>\<open><\<close>\<open>name attribute\<close>\<^verbatim>\<open>=\<close>\<open>value \<dots>\<close>\<^verbatim>\<open>>\<close> &
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   287
      \<open>\<^bold>X\<^bold>Yname\<^bold>Yattribute\<close>\<^verbatim>\<open>=\<close>\<open>value\<dots>\<^bold>X\<close> \\
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   288
      \<^verbatim>\<open></\<close>\<open>name\<close>\<^verbatim>\<open>>\<close> & \<open>\<^bold>X\<^bold>Y\<^bold>X\<close> \\
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   289
    \end{tabular}
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   290
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   291
    There is no special case for empty body text, i.e.\ \<^verbatim>\<open><foo/>\<close> is treated
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   292
    like \<^verbatim>\<open><foo></foo>\<close>. Also note that \<open>\<^bold>X\<close> and \<open>\<^bold>Y\<close> may never occur in
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   293
    well-formed XML documents.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   294
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   295
  Parsing YXML is pretty straight-forward: split the text into chunks
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   296
  separated by \<open>\<^bold>X\<close>, then split each chunk into sub-chunks separated by \<open>\<^bold>Y\<close>.
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   297
  Markup chunks start with an empty sub-chunk, and a second empty sub-chunk
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   298
  indicates close of an element. Any other non-empty chunk consists of plain
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   299
  text. For example, see @{file "~~/src/Pure/PIDE/yxml.ML"} or @{file
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   300
  "~~/src/Pure/PIDE/yxml.scala"}.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   301
61575
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   302
  YXML documents may be detected quickly by checking that the first two
f18f6e51e901 tuned whitespace;
wenzelm
parents: 61503
diff changeset
   303
  characters are \<open>\<^bold>X\<^bold>Y\<close>.
58618
782f0b662cae more cartouches;
wenzelm
parents: 57443
diff changeset
   304
\<close>
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   305
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   306
end