doc-src/TutorialI/Misc/document/Translations.tex
author nipkow
Thu, 15 Mar 2001 11:06:33 +0100
changeset 11208 76bc8ea0c6f2
child 11211 febb93798bb8
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     1
%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     2
\begin{isabellebody}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     3
\def\isabellecontext{Translations}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     4
%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     5
\isamarkupsubsection{Syntax Translations%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     6
}
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     7
%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     8
\begin{isamarkuptext}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     9
\label{sec:def-translations}
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    10
Isabelle offers an additional definition-like facility,
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    11
\textbf{syntax translations}\indexbold{syntax translation}.
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    12
They resemble makros: upon parsing, the defined concept is immediately
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    13
replaced by its definition, and this is reversed upon printing. For example,
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    14
the symbol \isa{{\isasymnoteq}} is defined via a syntax translation:%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    15
\end{isamarkuptext}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    16
\isacommand{translations}\ {\isachardoublequote}x\ {\isasymnoteq}\ y{\isachardoublequote}\ {\isasymrightleftharpoons}\ {\isachardoublequote}{\isasymnot}{\isacharparenleft}x\ {\isacharequal}\ y{\isacharparenright}{\isachardoublequote}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    17
\begin{isamarkuptext}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    18
\indexbold{*translations}\indexbold{$IsaEqTrans@\isasymrightleftharpoons}
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    19
\noindent
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    20
Internally, \isa{{\isasymnoteq}} never appears.
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    21
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    22
In addition to \isa{{\isasymrightleftharpoons}} there are
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    23
\isa{{\isasymrightharpoonup}}\indexbold{$IsaEqTrans1@\isasymrightharpoonup}
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    24
and \isa{{\isasymleftharpoondown}}\indexbold{$IsaEqTrans2@\isasymleftharpoondown}
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    25
for uni-directional translations (only upon
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    26
parsing respectively printing).  We do not want to cover the details of
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    27
translations at this point.  We haved mentioned the concept merely because it
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    28
crops up occasionally since a number of HOL's built-in constructs are defined
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    29
via translations.%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    30
\end{isamarkuptext}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    31
\end{isabellebody}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    32
%%% Local Variables:
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    33
%%% mode: latex
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    34
%%% TeX-master: "root"
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    35
%%% End: