src/Doc/System/Misc.thy
author wenzelm
Wed, 18 Jun 2014 21:47:30 +0200
changeset 57339 3bb94256e0ed
parent 57330 d8a64a4cbfca
child 57413 c14af83bd8db
permissions -rw-r--r--
added screenshot;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     1
theory Misc
43564
9864182c6bad document antiquotations are managed as theory data, with proper name space and entity markup;
wenzelm
parents: 41512
diff changeset
     2
imports Base
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     3
begin
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     4
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     5
chapter {* Miscellaneous tools \label{ch:tools} *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     6
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     7
text {*
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     8
  Subsequently we describe various Isabelle related utilities, given
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
     9
  in alphabetical order.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
    10
*}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
    11
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
    12
57330
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    13
section {* Theory graph browser \label{sec:browse} *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    14
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    15
text {* The Isabelle graph browser is a general tool for visualizing
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    16
  dependency graphs.  Certain nodes of the graph (i.e.\ theories) can
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    17
  be grouped together in ``directories'', whose contents may be
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    18
  hidden, thus enabling the user to collapse irrelevant portions of
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    19
  information.  The browser is written in Java, it can be used both as
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    20
  a stand-alone application and as an applet.  *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    21
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    22
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    23
subsection {* Invoking the graph browser *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    24
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    25
text {* The stand-alone version of the graph browser is wrapped up as
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    26
  @{tool_def browser}:
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    27
\begin{ttbox}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    28
Usage: isabelle browser [OPTIONS] [GRAPHFILE]
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    29
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    30
  Options are:
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    31
    -b           Admin/build only
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    32
    -c           cleanup -- remove GRAPHFILE after use
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    33
    -o FILE      output to FILE (ps, eps, pdf)
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    34
\end{ttbox}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    35
  When no file name is specified, the browser automatically changes to
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    36
  the directory @{setting ISABELLE_BROWSER_INFO}.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    37
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    38
  \medskip The @{verbatim "-b"} option indicates that this is for
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    39
  administrative build only, i.e.\ no browser popup if no files are
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    40
  given.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    41
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    42
  The @{verbatim "-c"} option causes the input file to be removed
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    43
  after use.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    44
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    45
  The @{verbatim "-o"} option indicates batch-mode operation, with the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    46
  output written to the indicated file; note that @{verbatim pdf}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    47
  produces an @{verbatim eps} copy as well.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    48
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    49
  \medskip The applet version of the browser is part of the standard
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    50
  WWW theory presentation, see the link ``theory dependencies'' within
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    51
  each session index.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    52
*}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    53
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    54
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    55
subsection {* Using the graph browser *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    56
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    57
text {*
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    58
  The browser's main window, which is shown in
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    59
  \figref{fig:browserwindow}, consists of two sub-windows.  In the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    60
  left sub-window, the directory tree is displayed. The graph itself
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    61
  is displayed in the right sub-window.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    62
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    63
  \begin{figure}[ht]
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    64
  \includegraphics[width=\textwidth]{browser_screenshot}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    65
  \caption{\label{fig:browserwindow} Browser main window}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    66
  \end{figure}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    67
*}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    68
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    69
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    70
subsubsection {* The directory tree window *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    71
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    72
text {*
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    73
  We describe the usage of the directory browser and the meaning of
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    74
  the different items in the browser window.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    75
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    76
  \begin{itemize}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    77
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    78
  \item A red arrow before a directory name indicates that the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    79
  directory is currently ``folded'', i.e.~the nodes in this directory
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    80
  are collapsed to one single node. In the right sub-window, the names
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    81
  of nodes corresponding to folded directories are enclosed in square
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    82
  brackets and displayed in red color.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    83
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    84
  \item A green downward arrow before a directory name indicates that
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    85
  the directory is currently ``unfolded''. It can be folded by
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    86
  clicking on the directory name.  Clicking on the name for a second
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    87
  time unfolds the directory again.  Alternatively, a directory can
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    88
  also be unfolded by clicking on the corresponding node in the right
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    89
  sub-window.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    90
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    91
  \item Blue arrows stand before ordinary node names. When clicking on
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    92
  such a name (i.e.\ that of a theory), the graph display window
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    93
  focuses to the corresponding node. Double clicking invokes a text
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    94
  viewer window in which the contents of the theory file are
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    95
  displayed.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    96
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    97
  \end{itemize}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    98
*}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
    99
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   100
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   101
subsubsection {* The graph display window *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   102
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   103
text {*
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   104
  When pointing on an ordinary node, an upward and a downward arrow is
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   105
  shown.  Initially, both of these arrows are green. Clicking on the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   106
  upward or downward arrow collapses all predecessor or successor
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   107
  nodes, respectively. The arrow's color then changes to red,
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   108
  indicating that the predecessor or successor nodes are currently
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   109
  collapsed. The node corresponding to the collapsed nodes has the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   110
  name ``@{verbatim "[....]"}''. To uncollapse the nodes again, simply
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   111
  click on the red arrow or on the node with the name ``@{verbatim
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   112
  "[....]"}''. Similar to the directory browser, the contents of
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   113
  theory files can be displayed by double clicking on the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   114
  corresponding node.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   115
*}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   116
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   117
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   118
subsubsection {* The ``File'' menu *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   119
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   120
text {*
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   121
  Due to Java Applet security restrictions this menu is only available
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   122
  in the full application version. The meaning of the menu items is as
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   123
  follows:
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   124
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   125
  \begin{description}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   126
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   127
  \item[Open \dots] Open a new graph file.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   128
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   129
  \item[Export to PostScript] Outputs the current graph in Postscript
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   130
  format, appropriately scaled to fit on one single sheet of A4 paper.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   131
  The resulting file can be printed directly.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   132
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   133
  \item[Export to EPS] Outputs the current graph in Encapsulated
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   134
  Postscript format. The resulting file can be included in other
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   135
  documents.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   136
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   137
  \item[Quit] Quit the graph browser.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   138
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   139
  \end{description}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   140
*}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   141
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   142
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   143
subsection {* Syntax of graph definition files *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   144
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   145
text {*
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   146
  A graph definition file has the following syntax:
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   147
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   148
  \begin{center}\small
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   149
  \begin{tabular}{rcl}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   150
    @{text graph} & @{text "="} & @{text "{ vertex"}~@{verbatim ";"}~@{text "}+"} \\
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   151
    @{text vertex} & @{text "="} & @{text "vertex_name vertex_ID dir_name ["}~@{verbatim "+"}~@{text "] path ["}~@{verbatim "<"}~@{text "|"}~@{verbatim ">"}~@{text "] { vertex_ID }*"}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   152
  \end{tabular}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   153
  \end{center}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   154
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   155
  The meaning of the items in a vertex description is as follows:
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   156
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   157
  \begin{description}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   158
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   159
  \item[@{text vertex_name}] The name of the vertex.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   160
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   161
  \item[@{text vertex_ID}] The vertex identifier. Note that there may
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   162
  be several vertices with equal names, whereas identifiers must be
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   163
  unique.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   164
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   165
  \item[@{text dir_name}] The name of the ``directory'' the vertex
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   166
  should be placed in.  A ``@{verbatim "+"}'' sign after @{text
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   167
  dir_name} indicates that the nodes in the directory are initially
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   168
  visible. Directories are initially invisible by default.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   169
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   170
  \item[@{text path}] The path of the corresponding theory file. This
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   171
  is specified relatively to the path of the graph definition file.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   172
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   173
  \item[List of successor/predecessor nodes] A ``@{verbatim "<"}''
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   174
  sign before the list means that successor nodes are listed, a
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   175
  ``@{verbatim ">"}'' sign means that predecessor nodes are listed. If
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   176
  neither ``@{verbatim "<"}'' nor ``@{verbatim ">"}'' is found, the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   177
  browser assumes that successor nodes are listed.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   178
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   179
  \end{description}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   180
*}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   181
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   182
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   183
section {* Resolving Isabelle components \label{sec:tool-components} *}
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   184
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   185
text {*
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   186
  The @{tool_def components} tool resolves Isabelle components:
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   187
\begin{ttbox}
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   188
Usage: isabelle components [OPTIONS] [COMPONENTS ...]
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   189
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   190
  Options are:
50653
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
   191
    -I           init user settings
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   192
    -R URL       component repository
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   193
                 (default $ISABELLE_COMPONENT_REPOSITORY)
53435
wenzelm
parents: 52550
diff changeset
   194
    -a           resolve all missing components
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   195
    -l           list status
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   196
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   197
  Resolve Isabelle components via download and installation.
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   198
  COMPONENTS are identified via base name.
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   199
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   200
  ISABELLE_COMPONENT_REPOSITORY="http://isabelle.in.tum.de/components"
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   201
\end{ttbox}
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   202
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   203
  Components are initialized as described in \secref{sec:components}
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   204
  in a permissive manner, which can mark components as ``missing''.
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   205
  This state is amended by letting @{tool "components"} download and
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   206
  unpack components that are published on the default component
54703
499f92dc6e45 more antiquotations;
wenzelm
parents: 54683
diff changeset
   207
  repository @{url "http://isabelle.in.tum.de/components/"} in
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   208
  particular.
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   209
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   210
  Option @{verbatim "-R"} specifies an alternative component
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   211
  repository.  Note that @{verbatim "file:///"} URLs can be used for
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   212
  local directories.
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   213
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   214
  Option @{verbatim "-a"} selects all missing components to be
53435
wenzelm
parents: 52550
diff changeset
   215
  resolved.  Explicit components may be named as command
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   216
  line-arguments as well.  Note that components are uniquely
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   217
  identified by their base name, while the installation takes place in
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   218
  the location that was specified in the attempt to initialize the
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   219
  component before.
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   220
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   221
  Option @{verbatim "-l"} lists the current state of available and
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   222
  missing components with their location (full name) within the
50653
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
   223
  file-system.
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
   224
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
   225
  Option @{verbatim "-I"} initializes the user settings file to
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
   226
  subscribe to the standard components specified in the Isabelle
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
   227
  repository clone --- this does not make any sense for regular
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
   228
  Isabelle releases.  If the file already exists, it needs to be
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
   229
  edited manually according to the printed explanation.
5c85f8b80b95 simplified quick start via "isabelle components -I";
wenzelm
parents: 50132
diff changeset
   230
*}
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   231
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48815
diff changeset
   232
52444
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   233
section {* Displaying documents \label{sec:tool-display} *}
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   234
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   235
text {* The @{tool_def display} tool displays documents in DVI or PDF
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   236
  format:
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   237
\begin{ttbox}
54683
cf48ddc266e5 clarified "isabelle display" and 'display_drafts': re-use file and program instance, open asynchronously via desktop environment;
wenzelm
parents: 53435
diff changeset
   238
Usage: isabelle display DOCUMENT
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   239
54683
cf48ddc266e5 clarified "isabelle display" and 'display_drafts': re-use file and program instance, open asynchronously via desktop environment;
wenzelm
parents: 53435
diff changeset
   240
  Display DOCUMENT (in DVI or PDF format).
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   241
\end{ttbox}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   242
52444
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   243
  \medskip The settings @{setting DVI_VIEWER} and @{setting
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   244
  PDF_VIEWER} determine the programs for viewing the corresponding
54683
cf48ddc266e5 clarified "isabelle display" and 'display_drafts': re-use file and program instance, open asynchronously via desktop environment;
wenzelm
parents: 53435
diff changeset
   245
  file formats.  Normally this opens the document via the desktop
cf48ddc266e5 clarified "isabelle display" and 'display_drafts': re-use file and program instance, open asynchronously via desktop environment;
wenzelm
parents: 53435
diff changeset
   246
  environment, potentially in an asynchronous manner with re-use of
cf48ddc266e5 clarified "isabelle display" and 'display_drafts': re-use file and program instance, open asynchronously via desktop environment;
wenzelm
parents: 53435
diff changeset
   247
  previews views.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   248
*}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   249
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   250
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   251
section {* Viewing documentation \label{sec:tool-doc} *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   252
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   253
text {*
52444
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   254
  The @{tool_def doc} tool displays Isabelle documentation:
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   255
\begin{ttbox}
52444
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   256
Usage: isabelle doc [DOC ...]
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   257
52444
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   258
  View Isabelle documentation.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   259
\end{ttbox}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   260
  If called without arguments, it lists all available documents. Each
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   261
  line starts with an identifier, followed by a short description. Any
52444
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   262
  of these identifiers may be specified as arguments, in order to
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   263
  display the corresponding document (see also
2cfe6656d6d6 slightly improved "isabelle doc" based on Isabelle/Scala;
wenzelm
parents: 52052
diff changeset
   264
  \secref{sec:tool-display}).
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   265
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   266
  \medskip The @{setting ISABELLE_DOCS} setting specifies the list of
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   267
  directories (separated by colons) to be scanned for documentations.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   268
*}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   269
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   270
57330
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   271
section {* Proof General / Emacs *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   272
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   273
text {* The @{tool_def emacs} tool invokes a version of Emacs and
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   274
  Proof General\footnote{@{url "http://proofgeneral.inf.ed.ac.uk/"}} within the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   275
  regular Isabelle settings environment (\secref{sec:settings}).  This
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   276
  is more convenient than starting Emacs separately, loading the Proof
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   277
  General LISP files, and then attempting to start Isabelle with
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   278
  dynamic @{setting PATH} lookup etc., although it might fail if a
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   279
  different version of Proof General is already part of the Emacs
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   280
  installation of the operating system.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   281
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   282
  The actual interface script is part of the Proof General
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   283
  distribution; its usage depends on the particular version.  There
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   284
  are some options available, such as @{verbatim "-l"} for passing the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   285
  logic image to be used by default, or @{verbatim "-m"} to tune the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   286
  standard print mode of the prover process.  The following Isabelle
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   287
  settings are particularly important for Proof General:
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   288
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   289
  \begin{description}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   290
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   291
  \item[@{setting_def PROOFGENERAL_HOME}] points to the main
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   292
  installation directory of the Proof General distribution.  This is
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   293
  implicitly provided for versions of Proof General that are
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   294
  distributed as Isabelle component, see also \secref{sec:components};
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   295
  otherwise it needs to be configured manually.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   296
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   297
  \item[@{setting_def PROOFGENERAL_OPTIONS}] is implicitly prefixed to
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   298
  the command line of any invocation of the Proof General @{verbatim
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   299
  interface} script.  This allows to provide persistent default
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   300
  options for the invocation of \texttt{isabelle emacs}.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   301
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   302
  \end{description}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   303
*}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   304
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   305
47828
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   306
section {* Shell commands within the settings environment \label{sec:tool-env} *}
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   307
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   308
text {* The @{tool_def env} tool is a direct wrapper for the standard
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   309
  @{verbatim "/usr/bin/env"} command on POSIX systems, running within
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   310
  the Isabelle settings environment (\secref{sec:settings}).
47828
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   311
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   312
  The command-line arguments are that of the underlying version of
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   313
  @{verbatim env}.  For example, the following invokes an instance of
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   314
  the GNU Bash shell within the Isabelle environment:
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   315
\begin{alltt}
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   316
  isabelle env bash
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   317
\end{alltt}
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   318
*}
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   319
e6e1b670520b some coverage of isabelle env;
wenzelm
parents: 47827
diff changeset
   320
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   321
section {* Getting logic images *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   322
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   323
text {* The @{tool_def findlogics} tool traverses all directories
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   324
  specified in @{setting ISABELLE_PATH}, looking for Isabelle logic
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   325
  images. Its usage is:
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   326
\begin{ttbox}
48577
wenzelm
parents: 47828
diff changeset
   327
Usage: isabelle findlogics
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   328
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   329
  Collect heap file names from ISABELLE_PATH.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   330
\end{ttbox}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   331
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   332
  The base names of all files found on the path are printed --- sorted
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   333
  and with duplicates removed. Also note that lookup in @{setting
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   334
  ISABELLE_PATH} includes the current values of @{setting ML_SYSTEM}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   335
  and @{setting ML_PLATFORM}. Thus switching to another ML compiler
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   336
  may change the set of logic images available.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   337
*}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   338
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   339
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   340
section {* Inspecting the settings environment \label{sec:tool-getenv} *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   341
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   342
text {* The Isabelle settings environment --- as provided by the
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   343
  site-default and user-specific settings files --- can be inspected
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   344
  with the @{tool_def getenv} tool:
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   345
\begin{ttbox}
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   346
Usage: isabelle getenv [OPTIONS] [VARNAMES ...]
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   347
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   348
  Options are:
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   349
    -a           display complete environment
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   350
    -b           print values only (doesn't work for -a)
31497
5333aa739082 isabelle getenv: option -d;
wenzelm
parents: 28916
diff changeset
   351
    -d FILE      dump complete environment to FILE
5333aa739082 isabelle getenv: option -d;
wenzelm
parents: 28916
diff changeset
   352
                 (null terminated entries)
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   353
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   354
  Get value of VARNAMES from the Isabelle settings.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   355
\end{ttbox}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   356
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   357
  With the @{verbatim "-a"} option, one may inspect the full process
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   358
  environment that Isabelle related programs are run in. This usually
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   359
  contains much more variables than are actually Isabelle settings.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   360
  Normally, output is a list of lines of the form @{text
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   361
  name}@{verbatim "="}@{text value}. The @{verbatim "-b"} option
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   362
  causes only the values to be printed.
31497
5333aa739082 isabelle getenv: option -d;
wenzelm
parents: 28916
diff changeset
   363
5333aa739082 isabelle getenv: option -d;
wenzelm
parents: 28916
diff changeset
   364
  Option @{verbatim "-d"} produces a dump of the complete environment
5333aa739082 isabelle getenv: option -d;
wenzelm
parents: 28916
diff changeset
   365
  to the specified file.  Entries are terminated by the ASCII null
5333aa739082 isabelle getenv: option -d;
wenzelm
parents: 28916
diff changeset
   366
  character, i.e.\ the C string terminator.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   367
*}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   368
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   369
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   370
subsubsection {* Examples *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   371
48815
wenzelm
parents: 48814
diff changeset
   372
text {* Get the location of @{setting ISABELLE_HOME_USER} where
wenzelm
parents: 48814
diff changeset
   373
  user-specific information is stored:
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   374
\begin{ttbox}
48815
wenzelm
parents: 48814
diff changeset
   375
isabelle getenv ISABELLE_HOME_USER
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   376
\end{ttbox}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   377
48815
wenzelm
parents: 48814
diff changeset
   378
  \medskip Get the value only of the same settings variable, which is
wenzelm
parents: 48814
diff changeset
   379
particularly useful in shell scripts:
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   380
\begin{ttbox}
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28253
diff changeset
   381
isabelle getenv -b ISABELLE_OUTPUT
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   382
\end{ttbox}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   383
*}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   384
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   385
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   386
section {* Installing standalone Isabelle executables \label{sec:tool-install} *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   387
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   388
text {* By default, the main Isabelle binaries (@{executable
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   389
  "isabelle"} etc.)  are just run from their location within the
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   390
  distribution directory, probably indirectly by the shell through its
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   391
  @{setting PATH}.  Other schemes of installation are supported by the
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   392
  @{tool_def install} tool:
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   393
\begin{ttbox}
50132
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   394
Usage: isabelle install [OPTIONS] BINDIR
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   395
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   396
  Options are:
50132
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   397
    -d DISTDIR   refer to DISTDIR as Isabelle distribution
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   398
                 (default ISABELLE_HOME)
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   399
50132
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   400
  Install Isabelle executables with absolute references to the
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   401
  distribution directory.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   402
\end{ttbox}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   403
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   404
  The @{verbatim "-d"} option overrides the current Isabelle
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   405
  distribution directory as determined by @{setting ISABELLE_HOME}.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   406
50132
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   407
  The @{text BINDIR} argument tells where executable wrapper scripts
56439
95e2656b3b23 renamed "isabelle-process" to "isabelle_process", with shell function to avoid dynamic path lookups;
wenzelm
parents: 54703
diff changeset
   408
  for @{executable "isabelle_process"} and @{executable isabelle}
50132
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   409
  should be placed, which is typically a directory in the shell's
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   410
  @{setting PATH}, such as @{verbatim "$HOME/bin"}.
48815
wenzelm
parents: 48814
diff changeset
   411
50132
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   412
  \medskip It is also possible to make symbolic links of the main
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   413
  Isabelle executables manually, but making separate copies outside
180d086c30dd simplified command line of "isabelle install";
wenzelm
parents: 49072
diff changeset
   414
  the Isabelle distribution directory will not work!  *}
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   415
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   416
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   417
section {* Creating instances of the Isabelle logo *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   418
49072
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   419
text {* The @{tool_def logo} tool creates instances of the generic
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   420
  Isabelle logo as EPS and PDF, for inclusion in {\LaTeX} documents.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   421
\begin{ttbox}
49072
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   422
Usage: isabelle logo [OPTIONS] XYZ
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   423
49072
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   424
  Create instance XYZ of the Isabelle logo (as EPS and PDF).
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   425
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   426
  Options are:
49072
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   427
    -n NAME      alternative output base name (default "isabelle_xyx")
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   428
    -q           quiet mode
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   429
\end{ttbox}
48936
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   430
49072
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   431
  Option @{verbatim "-n"} specifies an altenative (base) name for the
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   432
  generated files.  The default is @{verbatim "isabelle_"}@{text xyz}
747835eb2782 "isabelle logo" produces EPS and PDF format simultaneously;
wenzelm
parents: 48985
diff changeset
   433
  in lower-case.
48936
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   434
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   435
  Option @{verbatim "-q"} omits printing of the result file name.
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   436
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   437
  \medskip Implementors of Isabelle tools and applications are
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   438
  encouraged to make derived Isabelle logos for their own projects
e6d9e46ff7bc clarified "isabelle logo";
wenzelm
parents: 48844
diff changeset
   439
  using this template.  *}
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   440
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   441
57330
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   442
section {* Plain TTY interaction \label{sec:tool-tty} *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   443
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   444
text {*
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   445
  The @{tool_def tty} tool runs the Isabelle process interactively
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   446
  within a plain terminal session:
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   447
\begin{ttbox}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   448
Usage: isabelle tty [OPTIONS]
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   449
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   450
  Options are:
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   451
    -l NAME      logic image name (default ISABELLE_LOGIC)
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   452
    -m MODE      add print mode for output
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   453
    -o OPTION    override Isabelle system OPTION (via NAME=VAL or NAME)
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   454
    -p NAME      line editor program name (default ISABELLE_LINE_EDITOR)
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   455
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   456
  Run Isabelle process with plain tty interaction and line editor.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   457
\end{ttbox}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   458
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   459
  The @{verbatim "-l"} option specifies the logic image.  The
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   460
  @{verbatim "-m"} option specifies additional print modes.  The
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   461
  @{verbatim "-p"} option specifies an alternative line editor (such
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   462
  as the @{executable_def rlwrap} wrapper for GNU readline); the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   463
  fall-back is to use raw standard input.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   464
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   465
  \medskip Option @{verbatim "-o"} allows to override Isabelle system
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   466
  options for this process, see also \secref{sec:system-options}.
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   467
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   468
  Regular interaction works via the standard Isabelle/Isar toplevel
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   469
  loop.  The Isar command @{command exit} drops out into the
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   470
  bare-bones ML system, which is occasionally useful for debugging of
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   471
  the Isar infrastructure itself.  Invoking @{ML Isar.loop}~@{verbatim
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   472
  "();"} in ML will return to the Isar toplevel.  *}
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   473
d8a64a4cbfca clarified role of old user interfaces as misc tools;
wenzelm
parents: 56439
diff changeset
   474
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   475
section {* Remove awkward symbol names from theory sources *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   476
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   477
text {*
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   478
  The @{tool_def unsymbolize} tool tunes Isabelle theory sources to
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   479
  improve readability for plain ASCII output (e.g.\ in email
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   480
  communication).  Most notably, @{tool unsymbolize} replaces awkward
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   481
  arrow symbols such as @{verbatim "\\"}@{verbatim "<Longrightarrow>"}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   482
  by @{verbatim "==>"}.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   483
\begin{ttbox}
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   484
Usage: isabelle unsymbolize [FILES|DIRS...]
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   485
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   486
  Recursively find .thy/.ML files, removing unreadable symbol names.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   487
  Note: this is an ad-hoc script; there is no systematic way to replace
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   488
  symbols independently of the inner syntax of a theory!
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   489
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   490
  Renames old versions of FILES by appending "~~".
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   491
\end{ttbox}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   492
*}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   493
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   494
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   495
section {* Output the version identifier of the Isabelle distribution *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   496
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   497
text {*
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 48577
diff changeset
   498
  The @{tool_def version} tool displays Isabelle version information:
41511
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   499
\begin{ttbox}
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   500
Usage: isabelle version [OPTIONS]
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   501
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   502
  Options are:
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   503
    -i           short identification (derived from Mercurial id)
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   504
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   505
  Display Isabelle version information.
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   506
\end{ttbox}
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   507
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   508
  \medskip The default is to output the full version string of the
47827
13530d774a21 updated system manual for release;
wenzelm
parents: 44799
diff changeset
   509
  Isabelle distribution, e.g.\ ``@{verbatim "Isabelle2012: May 2012"}.
41511
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   510
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   511
  The @{verbatim "-i"} option produces a short identification derived
2fe62d602681 isabelle version -i;
wenzelm
parents: 40800
diff changeset
   512
  from the Mercurial id of the @{setting ISABELLE_HOME} directory.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   513
*}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   514
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   515
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   516
section {* Convert XML to YXML *}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   517
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   518
text {*
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   519
  The @{tool_def yxml} tool converts a standard XML document (stdin)
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   520
  to the much simpler and more efficient YXML format of Isabelle
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   521
  (stdout).  The YXML format is defined as follows.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   522
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   523
  \begin{enumerate}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   524
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   525
  \item The encoding is always UTF-8.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   526
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   527
  \item Body text is represented verbatim (no escaping, no special
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   528
  treatment of white space, no named entities, no CDATA chunks, no
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   529
  comments).
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   530
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   531
  \item Markup elements are represented via ASCII control characters
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   532
  @{text "\<^bold>X = 5"} and @{text "\<^bold>Y = 6"} as follows:
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   533
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   534
  \begin{tabular}{ll}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   535
    XML & YXML \\\hline
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   536
    @{verbatim "<"}@{text "name attribute"}@{verbatim "="}@{text "value \<dots>"}@{verbatim ">"} &
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   537
    @{text "\<^bold>X\<^bold>Yname\<^bold>Yattribute"}@{verbatim "="}@{text "value\<dots>\<^bold>X"} \\
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   538
    @{verbatim "</"}@{text name}@{verbatim ">"} & @{text "\<^bold>X\<^bold>Y\<^bold>X"} \\
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   539
  \end{tabular}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   540
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   541
  There is no special case for empty body text, i.e.\ @{verbatim
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   542
  "<foo/>"} is treated like @{verbatim "<foo></foo>"}.  Also note that
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   543
  @{text "\<^bold>X"} and @{text "\<^bold>Y"} may never occur in
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   544
  well-formed XML documents.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   545
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   546
  \end{enumerate}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   547
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   548
  Parsing YXML is pretty straight-forward: split the text into chunks
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   549
  separated by @{text "\<^bold>X"}, then split each chunk into
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   550
  sub-chunks separated by @{text "\<^bold>Y"}.  Markup chunks start
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   551
  with an empty sub-chunk, and a second empty sub-chunk indicates
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   552
  close of an element.  Any other non-empty chunk consists of plain
44799
1fd0a1276a09 updated file locations;
wenzelm
parents: 43564
diff changeset
   553
  text.  For example, see @{file "~~/src/Pure/PIDE/yxml.ML"} or
1fd0a1276a09 updated file locations;
wenzelm
parents: 43564
diff changeset
   554
  @{file "~~/src/Pure/PIDE/yxml.scala"}.
28224
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   555
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   556
  YXML documents may be detected quickly by checking that the first
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   557
  two characters are @{text "\<^bold>X\<^bold>Y"}.
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   558
*}
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   559
10487d954a8f converted misc.tex;
wenzelm
parents:
diff changeset
   560
end