doc-src/TutorialI/Types/document/Overloading.tex
author nipkow
Wed, 29 Jan 2003 16:29:38 +0100
changeset 13791 3b6ff7ceaf27
parent 13778 61272514e3b5
child 15481 fc075ae929e4
permissions -rw-r--r--
*** empty log message ***
     1 %
     2 \begin{isabellebody}%
     3 \def\isabellecontext{Overloading}%
     4 \isamarkupfalse%
     5 \isacommand{instance}\ list\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}type{\isacharparenright}ordrel\isanewline
     6 \isamarkupfalse%
     7 \isacommand{by}\ intro{\isacharunderscore}classes\isamarkupfalse%
     8 %
     9 \begin{isamarkuptext}%
    10 \noindent
    11 This \isacommand{instance} declaration can be read like the declaration of
    12 a function on types.  The constructor \isa{list} maps types of class \isa{type} (all HOL types), to types of class \isa{ordrel};
    13 in other words,
    14 if \isa{ty\ {\isacharcolon}{\isacharcolon}\ type} then \isa{ty\ list\ {\isacharcolon}{\isacharcolon}\ ordrel}.
    15 Of course we should also define the meaning of \isa{{\isacharless}{\isacharless}{\isacharequal}} and
    16 \isa{{\isacharless}{\isacharless}} on lists:%
    17 \end{isamarkuptext}%
    18 \isamarkuptrue%
    19 \isacommand{defs}\ {\isacharparenleft}\isakeyword{overloaded}{\isacharparenright}\isanewline
    20 prefix{\isacharunderscore}def{\isacharcolon}\isanewline
    21 \ \ {\isachardoublequote}xs\ {\isacharless}{\isacharless}{\isacharequal}\ {\isacharparenleft}ys{\isacharcolon}{\isacharcolon}{\isacharprime}a{\isacharcolon}{\isacharcolon}ordrel\ list{\isacharparenright}\ \ {\isasymequiv}\ \ {\isasymexists}zs{\isachardot}\ ys\ {\isacharequal}\ xs{\isacharat}zs{\isachardoublequote}\isanewline
    22 strict{\isacharunderscore}prefix{\isacharunderscore}def{\isacharcolon}\isanewline
    23 \ \ {\isachardoublequote}xs\ {\isacharless}{\isacharless}\ {\isacharparenleft}ys{\isacharcolon}{\isacharcolon}{\isacharprime}a{\isacharcolon}{\isacharcolon}ordrel\ list{\isacharparenright}\ \ \ {\isasymequiv}\ \ xs\ {\isacharless}{\isacharless}{\isacharequal}\ ys\ {\isasymand}\ xs\ {\isasymnoteq}\ ys{\isachardoublequote}\isamarkupfalse%
    24 \isamarkupfalse%
    25 \end{isabellebody}%
    26 %%% Local Variables:
    27 %%% mode: latex
    28 %%% TeX-master: "root"
    29 %%% End: