doc-src/TutorialI/Misc/document/Translations.tex
author wenzelm
Sun, 21 Oct 2001 19:49:29 +0200
changeset 11866 fbd097aec213
parent 11456 7eb63f63e6c6
permissions -rw-r--r--
updated;
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}%
11866
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
     4
\isamarkupfalse%
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     5
%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     6
\isamarkupsubsection{Syntax Translations%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     7
}
11866
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
     8
\isamarkuptrue%
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
     9
%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    10
\begin{isamarkuptext}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    11
\label{sec:def-translations}
11456
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    12
\index{syntax translations|(}%
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    13
\index{translations@\isacommand {translations} (command)|(}
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    14
Isabelle offers an additional definitional facility,
11428
332347b9b942 tidying the index
paulson
parents: 11310
diff changeset
    15
\textbf{syntax translations}.
11211
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    16
They resemble macros: upon parsing, the defined concept is immediately
11456
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    17
replaced by its definition.  This effect is reversed upon printing.  For example,
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    18
the symbol \isa{{\isasymnoteq}} is defined via a syntax translation:%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    19
\end{isamarkuptext}%
11866
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
    20
\isamarkuptrue%
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
    21
\isacommand{translations}\ {\isachardoublequote}x\ {\isasymnoteq}\ y{\isachardoublequote}\ {\isasymrightleftharpoons}\ {\isachardoublequote}{\isasymnot}{\isacharparenleft}x\ {\isacharequal}\ y{\isacharparenright}{\isachardoublequote}\isamarkupfalse%
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
    22
%
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    23
\begin{isamarkuptext}%
11456
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    24
\index{$IsaEqTrans@\isasymrightleftharpoons}
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    25
\noindent
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    26
Internally, \isa{{\isasymnoteq}} never appears.
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    27
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    28
In addition to \isa{{\isasymrightleftharpoons}} there are
11456
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    29
\isa{{\isasymrightharpoonup}}\index{$IsaEqTrans1@\isasymrightharpoonup}
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    30
and \isa{{\isasymleftharpoondown}}\index{$IsaEqTrans2@\isasymleftharpoondown}
11211
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    31
for uni-directional translations, which only affect
11456
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    32
parsing or printing.  This tutorial will not cover the details of
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    33
translations.  We have mentioned the concept merely because it
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    34
crops up occasionally; a number of HOL's built-in constructs are defined
11211
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    35
via translations.  Translations are preferable to definitions when the new 
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    36
concept is a trivial variation on an existing one.  For example, we
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    37
don't need to derive new theorems about \isa{{\isasymnoteq}}, since existing theorems
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    38
about \isa{{\isacharequal}} still apply.%
11456
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    39
\index{syntax translations|)}%
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    40
\index{translations@\isacommand {translations} (command)|)}%
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    41
\end{isamarkuptext}%
11866
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
    42
\isamarkuptrue%
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
    43
\isamarkupfalse%
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    44
\end{isabellebody}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    45
%%% Local Variables:
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    46
%%% mode: latex
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    47
%%% TeX-master: "root"
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    48
%%% End: