3188
|
1 |
|
|
2 |
% $Id$
|
|
3 |
|
|
4 |
\chapter{Miscellaneous tools}
|
|
5 |
|
3217
|
6 |
Subsequently we describe various Isabelle related utilities --- in
|
|
7 |
alphabetical order.
|
|
8 |
|
|
9 |
|
|
10 |
\section{Viewing documentation --- \texttt{isatool doc}} \label{sec:tool-doc}
|
|
11 |
|
|
12 |
The \tooldx{doc} utility displays online documentation:
|
|
13 |
\begin{ttbox}
|
|
14 |
Usage: isatool doc [DOC]
|
|
15 |
|
|
16 |
View Isabelle documentation DOC, or show list of available documents.
|
|
17 |
\end{ttbox}
|
|
18 |
If called without arguments, it lists all available documents. Each
|
|
19 |
line starts with an identifier, followed by some comment. Any of these
|
|
20 |
identifiers may be specified as the first argument in order to have
|
|
21 |
the corresponding document displayed.
|
|
22 |
|
|
23 |
\medskip The \texttt{ISABELLE_DOCS} setting specifies the list of
|
|
24 |
directories (separated by colons) to be scanned for documentations.
|
|
25 |
The program for viewing \texttt{dvi} files is set in
|
|
26 |
\texttt{DVI_VIEWER}.
|
|
27 |
|
|
28 |
|
|
29 |
\section{Tuning proof scripts --- \texttt{isatool expandshort}}
|
|
30 |
|
|
31 |
The \tooldx{expandshort} utility tunes {\ML} proof scripts to enhance
|
|
32 |
readability a bit:
|
|
33 |
\begin{ttbox}
|
3262
|
34 |
Usage: isatool expandshort [FILES ...]
|
3217
|
35 |
|
|
36 |
Expand shorthand goal commands in FILES. Also contracts uses of
|
|
37 |
resolve_tac, dresolve_tac, eresolve_tac, rewrite_goals_tac on
|
|
38 |
1-element lists; furthermore expands tabs, since they are now
|
|
39 |
forbidden in ML string constants.
|
|
40 |
|
|
41 |
Renames old versions of FILES by appending "~~".
|
|
42 |
\end{ttbox}
|
|
43 |
In the files supplied as arguments, all occurrences of the shorthand
|
|
44 |
commands \texttt{br}, \texttt{be} etc.\ are replaced with the
|
|
45 |
corresponding full commands. Shorthand commands should appear one per
|
|
46 |
line. The old versions of the files are renamed to have the
|
|
47 |
suffix~\verb'~~'.
|
|
48 |
|
|
49 |
\section{Get logic images --- \texttt{isatool findlogics}}
|
|
50 |
|
|
51 |
The \tooldx{findlogics} utility traverses all directories specified in
|
|
52 |
\texttt{ISABELLE_PATH}, looking for Isabelle logic images. Its usage
|
|
53 |
is:
|
|
54 |
\begin{ttbox}
|
|
55 |
Usage: isatool findlogics
|
|
56 |
|
|
57 |
Collect heap file names from ISABELLE_PATH.
|
|
58 |
\end{ttbox}
|
|
59 |
The base names of all files found on the path are printed --- sorted
|
|
60 |
and with duplicates removed. Also note that \texttt{ISABELLE_PATH}
|
3262
|
61 |
implicitly depends upon \texttt{ML_SYSTEM}. Thus switching to another
|
3217
|
62 |
{\ML} compiler may change the set of logic images available.
|
|
63 |
|
3188
|
64 |
|
|
65 |
\section{Inspecting the settings environment -- \texttt{isatool getenv}}
|
|
66 |
\label{sec:tool-getenv}
|
|
67 |
|
|
68 |
The Isabelle settings environment --- as provided by the site-default
|
|
69 |
and user-specific settings files --- can be inspected with the
|
|
70 |
\tooldx{getenv} utility:
|
|
71 |
\begin{ttbox}
|
|
72 |
Usage: isatool getenv [OPTIONS] [VARNAMES ...]
|
|
73 |
|
|
74 |
Options are:
|
|
75 |
-a display complete environment
|
|
76 |
-b print values only (doesn't work for -a)
|
|
77 |
|
|
78 |
Get value of VARNAMES from the Isabelle settings.
|
|
79 |
\end{ttbox}
|
|
80 |
|
|
81 |
With the \texttt{-a} option, one may inspect the full process
|
|
82 |
environment that Isabelle related programs are run in. This usually
|
|
83 |
contains much more variables than are actually Isabelle settings.
|
3217
|
84 |
Normally output is a list of lines of the form
|
|
85 |
\mbox{$varname$\texttt{=}$value$}. The \texttt{-b} option causes only
|
|
86 |
the values to be printed.
|
3188
|
87 |
|
|
88 |
|
|
89 |
\subsection*{Examples}
|
|
90 |
|
|
91 |
Get the {\ML} system identifier and the location where the compiler
|
3217
|
92 |
binaries are supposed to reside as follows:
|
3188
|
93 |
\begin{ttbox}
|
|
94 |
isatool getenv ML_SYSTEM ML_HOME
|
3217
|
95 |
{\out ML_SYSTEM=smlnj-1.09}
|
3188
|
96 |
{\out ML_HOME=/usr/local/sml109.27/bin}
|
|
97 |
\end{ttbox}
|
|
98 |
|
3217
|
99 |
The next one peeks at the search path that \texttt{isabelle} uses to
|
3188
|
100 |
locate logic images:
|
|
101 |
\begin{ttbox}
|
|
102 |
isatool getenv -b ISABELLE_PATH
|
3217
|
103 |
{\out /home/me/isabelle/heaps/smlnj-1.09:/proj/isabelle/heaps/smlnj-1.09}
|
3188
|
104 |
\end{ttbox}
|
|
105 |
We used the \texttt{-b} option to suppress the \texttt{ISABELLE_PATH=}
|
|
106 |
prefix. The value above is what became of the following assignment in
|
|
107 |
the default settings file:
|
|
108 |
\begin{ttbox}
|
|
109 |
ISABELLE_PATH=\$ISABELLE_HOME_USER/heaps:\$ISABELLE_HOME/heaps
|
|
110 |
\end{ttbox}
|
3217
|
111 |
Note how the \texttt{ML_SYSTEM} value got appended automatically to
|
|
112 |
each path component. This is a special feature of
|
|
113 |
\texttt{ISABELLE_PATH} (and also of \texttt{ISABELLE_OUTPUT}).
|
3188
|
114 |
|
|
115 |
|
|
116 |
\section{Isabelle's version of make --- \texttt{isatool make}}
|
|
117 |
|
3217
|
118 |
The Isabelle \tooldx{make} utility is a very simple wrapper for
|
|
119 |
ordinary Unix \texttt{make}:
|
3188
|
120 |
\begin{ttbox}
|
|
121 |
Usage: isatool make [ARGS ...]
|
|
122 |
|
|
123 |
Compiles logic in current directory using IsaMakefile.
|
|
124 |
ARGS are directly passed to the system make program.
|
|
125 |
\end{ttbox}
|
3217
|
126 |
Note that the Isabelle settings environment is also active. Thus one
|
3262
|
127 |
may refer to its values within the \ttindex{IsaMakefile}, e.g.\
|
3217
|
128 |
\texttt{\$(ISABELLE_OUTPUT)}. Furthermore, programs started from the
|
|
129 |
make file also inherit this environment.
|
|
130 |
|
3262
|
131 |
Typically, \texttt{IsaMakefile}s defer the real work to the
|
|
132 |
\texttt{usedir} utility, see \S\ref{sec:tool-usedir}.
|
|
133 |
|
3188
|
134 |
|
|
135 |
|
3217
|
136 |
\section{Running complete logics --- \texttt{isatool usedir}} \label{sec:tool-usedir}
|
3188
|
137 |
|
3262
|
138 |
The \tooldx{usedir} utility builds object-logic images, or runs
|
|
139 |
example sessions based on existing logics. Its usage is:
|
3217
|
140 |
%FIXME
|
|
141 |
% -g BOOL generate theory graph data (default false)
|
3188
|
142 |
\begin{ttbox}
|
|
143 |
Usage: isatool usedir LOGIC NAME
|
|
144 |
|
|
145 |
Options are:
|
|
146 |
-b build mode (output heap image, use dir ".")
|
|
147 |
-h BOOL generate theory HTML data (default false)
|
|
148 |
-s NAME override session NAME
|
|
149 |
|
|
150 |
Build object-logic or run examples. Also creates browsing
|
|
151 |
information (HTML etc.) according to settings.
|
|
152 |
\end{ttbox}
|
|
153 |
|
3262
|
154 |
The value of the \settdx{ISABELLE_USEDIR_OPTIONS} setting is
|
|
155 |
implicitely prefixed to \emph{any} \texttt{usedir} call. Since the
|
|
156 |
\ttindex{IsaMakefile}s of all object-logics distributed with Isabelle
|
|
157 |
just invoke \texttt{usedir} for the real work, one may control
|
|
158 |
compilation options globally via above variable. In particular,
|
|
159 |
generation of \rmindex{HTML} browsing information is enabled or
|
|
160 |
disabled this way.
|
|
161 |
|
|
162 |
|
|
163 |
\subsection*{Options}
|
|
164 |
|
|
165 |
There are two slightly different modes of operation: \emph{build} mode
|
|
166 |
(enabled through the \texttt{-b} option) and \emph{example} mode.
|
|
167 |
|
|
168 |
Calling \texttt{usedir} with \texttt{-b} runs \texttt{isabelle} with
|
|
169 |
input image \texttt{LOGIC} and output to \texttt{NAME}, as provided as
|
|
170 |
arguments. This will be a batch session, executing just
|
|
171 |
\texttt{use_dir".";}\index{*use_dir}, and then quitting. It is assumed
|
|
172 |
that there is a file \texttt{ROOT.ML} in the current directory
|
|
173 |
containing all {\ML} commands required to build the logic.
|
|
174 |
|
|
175 |
In example mode, on the other hand, \texttt{usedir} runs a read-only
|
|
176 |
session of \texttt{LOGIC} (typically just built before) and does an
|
|
177 |
automatic \texttt{use_dir"NAME";}. I.e.\ it assumes that some file
|
|
178 |
\texttt{ROOT.ML} in directory \texttt{NAME} contains appropriate {\ML}
|
|
179 |
commands to run the desired examples.
|
|
180 |
|
|
181 |
\medskip The \texttt{-h} option controls HTML browsing data
|
|
182 |
generation. It may be explicitely turned on or off --- the last
|
|
183 |
occurrence of some \texttt{-h} on the command line wins.
|
|
184 |
|
|
185 |
\medskip Any \texttt{usedir} session is named by some \emph{session
|
|
186 |
identifier}. These may accumulate, documenting the way sessions
|
|
187 |
depend on others. For example, consider \texttt{Pure/FOL/ZF/ex}, which
|
|
188 |
refers the examples of {\ZF} set theory, built upon {\FOL}, built upon
|
|
189 |
{\Pure}.
|
|
190 |
|
|
191 |
The current session's identifier is by default just the base name of
|
|
192 |
the \texttt{LOGIC} argument (in build mode), or the \texttt{NAME}
|
|
193 |
argument (in example mode). This may be overridden explicitely via the
|
|
194 |
\texttt{-s} option.
|
|
195 |
|
|
196 |
|
|
197 |
\subsection*{Examples}
|
|
198 |
|
|
199 |
Refer to the \texttt{IsaMakefile}s of the Isabelle distribution's
|
|
200 |
object-logics as a model for your own developements.
|