src/Tools/8bit/doc/manual.itex
author oheimb
Tue, 25 Jun 1996 17:44:43 +0200
changeset 1826 2a2c0dbeb4ac
child 1858 513316fd1087
permissions -rw-r--r--
Initial revision
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     1
\documentclass[]{article}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     2
\usepackage{latexsym,amssymb,isa2latex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     3
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     4
\newcommand{\bt}[1]{{\tt #1}}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     5
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     6
\title{The Isabelle 8bit Package}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     7
\author{
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     8
David von Oheimb and Franz Regensburger\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     9
Technical University of Munich, Germany\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    10
E-mail: \bt{\{oheimb|regensbu\}@informatik.tu-muenchen.de}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    11
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    12
\date{\today}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    13
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    14
\begin{document}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    15
\maketitle
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    16
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    17
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    18
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    19
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    20
\section{Introduction}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    21
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    22
The 8bit package enables you to view, edit and print Isabelle files and perform
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    23
proofs in a quite pleasant form. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    24
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    25
Instead of representing logical operators with ASCII character sequences, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    26
a special graphical character font, resp. a \LaTeX{} 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    27
command format, is provided. There are editors and a terminal
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    28
capable of inputting and displaying the graphical characters, and converters
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    29
between the different representations. The graphical font extends the normal
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    30
ASCII 7bit character coding with (non-standard) character codes having the
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    31
8th bit set. All this is described in section \ref{graph} of this manual.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    32
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    33
Even without employing the 8bit font, the \LaTeX{} output for 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    34
Isabelle files can be used for manuals, papers etc. This is the focus of
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    35
section \ref{latex}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    36
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    37
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    38
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    39
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    40
\section{Graphical Isabelle}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    41
\label{graph}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    42
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    43
This section describes the main purpose of the 8bit package, which is to provide
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    44
an extension to the ASCII character set that allows to formulate and display 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    45
many logical operators as graphical symbols. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    46
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    47
\subsection{Usage}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    48
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    49
To employ the graphical font within Isabelle, just (re-)formulate the 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    50
logical operators of your Isabelle theory (and proof) files using this font. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    51
A graphical terminal and suitable editors are described in subsection 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    52
\ref{commands}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    53
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    54
As a typical example, consider the following fragment of an Isabelle theory, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    55
an alternative formulation of the bounded universal quantifier within the 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    56
set theory of \bt{HOL}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    57
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    58
\label{ex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    59
Without graphical characters, the operator is defined as follows.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    60
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    61
consts	
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    62
    	Ball	:: "'a set => ('a => bool) => bool"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    63
syntax
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    64
	"@Ball"	:: "pttrn => 'a set => bool => bool"	("(3!_:_./ _)" 10)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    65
translations
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    66
		"!x:A. P" == "Ball A (%x. P)"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    67
defs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    68
     Ball_def	"Ball A P == ! x. x:A --> P x"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    69
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    70
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    71
Using the graphical font (and assuming a corresponding re-formulation of 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    72
\bt{HOL} operators), the definition of the operator can be improved to the following.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    73
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    74
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    75
consts
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    76
	Ball	:: "'a set ë ('a ë bool) ë bool"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    77
syntax
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    78
	"GBall"	:: "pttrn ë 'a set ë bool ë bool"	("(3Â_Î_./ _)" 10)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    79
translations
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    80
		"ÂxÎA. P" == "Ball A (³x. P)"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    81
defs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    82
     Ball_def	"Ball A P Ú Âx. xÎA çè P x"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    83
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    84
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    85
Note the appearance of the graphical characters, which makes the code much more
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    86
legible.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    87
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    88
\label{compat}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    89
It is also possible to retain pure ASCII versions of the logical operators while
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    90
offering the possibility of graphical input and output.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    91
This may be necessary for compatibility reasons or for providing
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    92
graphical versions of the meta logic \I@Pure\I@ or object logics already
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    93
defined. In these cases, the graphical syntax can be supplied additionally with 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    94
appropriate \I@types\I@, \I@syntax\I@, and \I@translations\I@ sections, as done
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    95
for example in the Isabelle distribution of \bt{HOL}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    96
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    97
In the example given above, the ASCII formulation of the quantifier can be
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    98
augmented with a graphical version by the following definition.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    99
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   100
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   101
syntax
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   102
	"GBall"	:: "pttrn => 'a set => bool => bool"	("(3Â_Î_./ _)" 10)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   103
translations
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   104
		"ÂxÎA. P" == "!x:A. P"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   105
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   106
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   107
With this approach, the operators can still be entered in ASCII form, which is
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   108
important for the usability of old (pure ASCII) Isabelle files, while they are
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   109
displayed in the new graphical form. The additional level of syntax 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   110
translations introduced in this way may interfere with other translation rules
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   111
and should therefore be designed carefully.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   112
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   113
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   114
\subsection{User commands}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   115
\label{commands}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   116
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   117
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   118
A number of commands for manipulating files with graphical characters are 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   119
available, as described in this subsection.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   120
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   121
\subsubsection{Editors}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   122
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   123
The first group of commands includes versions of the most common editors that 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   124
can handle the graphical font for both keyboard input and display input. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   125
See the files \bt{doc/\{fontindex|keyindex|fkmatrix\}.dvi} for the keystrokes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   126
defined for inputting the special characters. The editors are
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   127
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   128
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   129
\item \bt{isa\_xemacs}		replaces \bt{xemacs}. You may provide a 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   130
				specific init file called 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   131
				\bt{.emacs\_isa\_xemacs} (in your home directory)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   132
				that is executed after the \bt{.emacs} file.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   133
\item \bt{isa\_gnu\_emacs}	replaces \bt{emacs}. You may provide a 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   134
				specific init file called 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   135
				\bt{.emacs\_isa\_gnu\_emacs} (in your home 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   136
				directory) that is executed after the 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   137
				\bt{.emacs} file.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   138
\item \bt{isaaxe}		replaces \bt{axe}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   139
\item \bt{isavim}		replaces \bt{vim}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   140
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   141
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   142
For example, as \bt{emacs} user you may type
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   143
\bt{isa\_xemacs doc/Set2g.thy \&} to view and edit
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   144
the above sample theory fragment.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   145
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   146
\subsubsection{Display commands}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   147
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   148
The next group of commands is used to display files using the graphical font.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   149
With the terminal, of course also input is possible, using the same keystrokes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   150
as with the editors.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   151
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   152
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   153
\item \bt{isaterm} 		replaces \bt{xterm}. This is used as terminal
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   154
				for your ML interpreter running Isabelle with
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   155
				theories and proofs containing graphical 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   156
				characters. This terminal is also useful if
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   157
				you want to \bt{cat} or \bt{grep} the Isabelle
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   158
				files within your shell, and as
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   159
				environment for commands like \bt{isapal}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   160
\item \bt{isapal}		shows the palette of available graphical 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   161
				characters. A man page is available.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   162
\item \bt{codetable}		prints all 8bit characters with their codes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   163
\item \bt{isa\_xmosaic}	replaces \bt{xmosaic}. This is useful for
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   164
				browsing the index files of Isabelle theories
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   165
				(with graphical operators) that are generated
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   166
				if \I@make_html\I@ is set to \I@true\I@.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   167
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   168
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   169
\subsubsection{Converters}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   170
\label{conv}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   171
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   172
The last group of commands is built to enable conversion between ASCII, 8bit 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   173
font and
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   174
\LaTeX\ representations of the graphical characters within papers, manuals, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   175
and Isabelle theory and proof files. For the options of the converters, see 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   176
the corresponding man pages.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   177
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   178
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   179
\item \bt{isa2latex}	converts a file with 8bit characters to a LaTeX
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   180
			source. Pure ASCII input and conversion of 8bit 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   181
			characters to their ASCII representations is also 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   182
			possible.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   183
\item \bt{a2isa}	converts Isabelle files, from ASCII to 8bit characters.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   184
			It is used mainly to convert old files.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   185
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   186
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   187
In order to output the first theory fragment (formulated without the 8bit
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   188
font) in subsection \ref{ex} as LaTeX\ source using suitable graphical 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   189
characters, type\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   190
\bt{isa2latex -s -A -o Set2.tex doc/Set2\_a.thy}.\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   191
(It was necessary to insert some blank characters in the file \bt{Set2\_a.thy} 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   192
that enable \bt{isa2latex} to recognize all the operators intended to be 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   193
printed with graphical characters, as discussed in subsection \ref{ambig}.)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   194
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   195
For conversion of \bt{Set2.thy} to 8bit characters, type\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   196
\bt{a2isa -o Set2\_g.thy doc/Set2.thy}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   197
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   198
Further explanations of the use of the converter \bt{isa2latex} are given
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   199
in section \ref{latex}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   200
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   201
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   202
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   203
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   204
\section{\LaTeX\ output}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   205
\label{latex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   206
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   207
Independently of whether Isabelle files are formulated with the graphical font
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   208
or not, they can be converted to \LaTeX\ source using \bt{isa2latex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   209
and in this way (pretty-)printed with the familiar symbols for quantification, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   210
intersection, etc. The tool \bt{isa2latex} can also convert \LaTeX\ source
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   211
files containing Isabelle source to pure \LaTeX\ 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   212
files, by converting the special character sequences of the Isabelle parts to
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   213
appropriate \LaTeX\ commands, and handing through the rest (almost) verbatim.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   214
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   215
For example, this manual itself is converted to a \bt{.tex} file by \\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   216
\bt{isa2latex -x -e -o manual.tex doc/manual.itex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   217
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   218
\subsection{Conversion modes}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   219
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   220
To handle the different parts of an input file, \bt{isa2latex} has several 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   221
conversion modes, namely
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   222
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   223
\item \bt{LATEX}: The input is is literally copied to the output,
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   224
without conversion of any characters. This mode is used for the \LaTeX\ parts
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   225
 of the input document.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   226
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   227
\item \bt{INLINE}: The conversion of characters and scanning for 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   228
multi character sequences is active, while newline and tab characters are 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   229
treated as single blank character.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   230
Use this mode for inserting small parts of Isabelle source within 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   231
a line of text.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   232
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   233
\item \bt{ISA}: The conversion of characters and scanning for 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   234
multi character sequences is active, while newline and tab characters are 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   235
treated according to an open tabbing environment. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   236
This mode is used for displaying multiple lines of Isabelle source.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   237
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   238
\item \bt{ESC}: In this mode the input is literally copied to the output.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   239
This mode is intended as an escape mode from the \bt{INLINE} and \bt{ESC} modes.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   240
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   241
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   242
Upon entrance of the conversion modes, \bt{isa2latex} generates the \LaTeX\ 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   243
commands \bt{\mbox{$\backslash$}isamode} for \bt{ISA}, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   244
\bt{\mbox{$\backslash$}isainline} for \bt{INLINE}, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   245
and \bt{\mbox{$\backslash$}isaescape} for the \bt{ESC} mode. These act as
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   246
environment delimiters and may also set the appropriate fonts, styles etc. The 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   247
commands 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   248
are defined in the file \bt{latex/isa2latex.sty} and may be adapted as desired.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   249
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   250
\subsection{Conversion mode switching}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   251
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   252
The initial conversion mode of \bt{isa2latex} and the set of available modes 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   253
depend on the options given on the command line. Switching of the modes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   254
relies on special toggles (like \I@\I\E@\E@@isa\I@, within the input
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   255
file) that indicate the beginning and end of the different parts of the input.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   256
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   257
The following diagrams show the initial mode (enclosed in sqare brackets), 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   258
the available mode switches (in the arrow symbols)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   259
and the modes reachable with them.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   260
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   261
If the \bt{-x} option is not given:
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   262
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   263
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   264
[ISA]  <-- \E\E@\E@@ -->  ESC
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   265
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   266
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   267
If the \bt{-x} option is given:
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   268
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   269
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   270
[LATEX]  <-- \I\E@\E@@ -->  INLINE  <-- \E\E@\E@@ -->  ESC
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   271
   ^
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   272
   |------ \I\E@\E@@isa -->  ISA  <-- \E\E@\E@@ -->  ESC
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   273
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   274
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   275
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   276
\subsection{Ambiguity problems}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   277
\label{ambig}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   278
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   279
As \bt{isa2latex} converts its input files on a lexical level, it has limited
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   280
capability of dealing with ambiguities that are caused by using the same 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   281
characters for different operators. A typical examle
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   282
is the `\I@|\I@' character, which is used within the object logic \bt{HOL} both
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   283
as disjunction operator and as separator within \I@case\I@ expressions. In the
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   284
former case, it should be converted to `\I@Á\I@', and in the latter case 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   285
retained as `\I@|\I@'. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   286
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   287
As a workaround, in the current version of \bt{isa2latex},
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   288
such ``dangerous'' characters are converted only if followed by a blank 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   289
character. Thus to enforce a conversion, append a blank character behind it, and
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   290
to prohibit it even if a blank character follows, you may insert a double 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   291
\I@\E\E@\E@@\I@, i.e. the string becomes `\I@|\E\E@\E@@\E\E@\E@@ \I@'. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   292
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   293
You may also redefine the critical entries of the conversion tables in the file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   294
\bt{config/conv-tables.inp}. The entry for the `\I@|\I@' character
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   295
looks like
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   296
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   297
>  "\|\ "		"|"		"\mbox{$\vee$}" 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   298
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   299
The first string, which (as described by the verbose comments in that file)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   300
is the lex expression for the ASCII input, could be adapted to require an 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   301
additional blank character before the `\I@|\I@', for example.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   302
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   303
Most of these amibiguity problems can be avoided if you decide to employ the
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   304
graphical font for your Isabelle source files. In this case, we recommend 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   305
using this font as early as possible, in order to avoid later conversions.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   306
For the conversion of old files, the tool \bt{a2isa} is provided. It
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   307
normally requires no changes of the original files and only minor corrections
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   308
of the files it produces. Thus the preferred way is to apply \bt{a2isa} once and
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   309
for all on the source files, correct all conversion mistakes, and then use the 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   310
new files with the graphical font. With these files, the ambiguity problems 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   311
should have gone.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   312
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   313
As the converter \bt{a2isa} is a bit smarter than \bt{isa2latex} in converting
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   314
ASCII input, it is also useful if you do not employ the 8bit font directly. To
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   315
convert a problematic ASCII file containing Isabelle source, first apply
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   316
\bt{a2isa} and then \bt{isa2latex} without option \bt{-A}. For example, type\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   317
\bt{a2isa Set2.thy | isa2latex -s -o doc/Set2a.tex}\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   318
to generate a better output than in the example conversion given in subsection
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   319
\ref{conv}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   320
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   321
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   322
\section{Technical issues}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   323
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   324
\subsection{Preparations}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   325
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   326
To use the 8bit package, you have to set resp. extend the content of the 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   327
following environment variables:
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   328
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   329
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   330
\item \bt{ISABELLE8BIT}: set the directory of the Isabelle 8bit package,\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   331
	e.g.  \bt{/usr/proj/isabelle/src/Tools/8bit}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   332
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   333
\item \bt{PATH}: add the absolute path of the executables,\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   334
	e.g.  \bt{\$ISABELLE8BIT/bin}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   335
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   336
\item \bt{MANPATH}: add the absolute path of the manual pages,\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   337
	e.g.  \bt{\$ISABELLE8BIT/man}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   338
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   339
\item \bt{TEXINPUTS}: add the absolute path of special LaTeX style files
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   340
			used by the 8bit package (if necessary),
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   341
	e.g. \bt{\$ISABELLE8BIT/latex:}\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   342
                the trailing `\bt{:}' makes latex search subdirectories!\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   343
	The 8bit package uses
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   344
	\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   345
	\item the AMSFONT package
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   346
        \item the supertab style (clarkson)	
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   347
        \item the special style \bt{isa2latex.sty}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   348
	\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   349
	Some of them are contained in that directory.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   350
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   351
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   352
Before the first use of any executable of subdirectory {\tt bin}, call
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   353
the scripts \bt{fonts/install} and \bt{keyboard/install}. This is done best
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   354
in your \bt{.login} file.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   355
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   356
\subsection{Installation and Configuration}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   357
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   358
To install the 8bit package, change directory to \bt{\$ISABELLE8BIT} and 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   359
run \bt{gmake} (the gnu version of \bt{make}) on the \bt{Makefile} there.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   360
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   361
If you want to adapt the configuration of the font (keyboard bindings or
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   362
conversion tables used by \bt{isa2latex}), change directory to\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   363
\bt{\$ISABELLE8BIT/config} ,
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   364
edit the files \bt{key-table.inp} resp. \bt{conv-tables.inp},
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   365
and run \bt{gmake} in this directory to generate new versions of 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   366
\bt{isa2latex}, editor support, and documentation.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   367
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   368
For adapting the conversion table of \bt{a2isa}, change directory to \\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   369
\bt{\$ISABELLE8BIT/c-sources/a2isa}, edit the file \bt{lex.x}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   370
accordingly, and run \bt{gmake} there.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   371
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   372
\subsection{Management of alternative sources}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   373
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   374
If you retain ASCII versions of logical operators for compatibility reasons,
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   375
as described in subsection \ref{compat}, you may want to export versions of your
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   376
Isabelle theories that contain no 8bit characters. To support this, a patching
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   377
mechanism is provided as follows. Encapsulate each section of your files dealing
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   378
solely with the 8bit font with suitable begin and end pragmas (some pair of 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   379
unique comment lines) and configure three configuration files analogously to\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   380
\bt{\$ISABELLE8BIT/isa-patches/HOL/\{extract|clean|add\}-HOL.cfg}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   381
Then you can call the \bt{patcher} with the first file to extract and store to
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   382
a file, the second to remove, and the third to re-add the 8bit section of the
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   383
Isabelle files. See also the man page of \bt{patcher}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   384
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   385
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   386
\end{document}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   387
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   388