doc-src/TutorialI/Misc/document/Translations.tex
author paulson
Fri, 30 Mar 2001 12:31:10 +0200
changeset 11233 34c81a796ee3
parent 11211 febb93798bb8
child 11310 51e70b7bc315
permissions -rw-r--r--
the one-point rule for bounded quantifiers
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}.
11211
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    12
They resemble macros: upon parsing, the defined concept is immediately
11208
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}
11211
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    25
for uni-directional translations, which only affect
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    26
parsing or printing.  We do not want to cover the details of
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    27
translations at this point.  We haved mentioned the concept merely because it
11211
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    28
crops up occasionally: a number of HOL's built-in constructs are defined
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    29
via translations.  Translations are preferable to definitions when the new 
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    30
concept is a trivial variation on an existing one.  For example, we
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    31
don't need to derive new theorems about \isa{{\isasymnoteq}}, since existing theorems
febb93798bb8 translations: a tweak
paulson
parents: 11208
diff changeset
    32
about \isa{{\isacharequal}} still apply.%
11208
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    33
\end{isamarkuptext}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    34
\end{isabellebody}%
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    35
%%% Local Variables:
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    36
%%% mode: latex
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    37
%%% TeX-master: "root"
76bc8ea0c6f2 *** empty log message ***
nipkow
parents:
diff changeset
    38
%%% End: