doc-src/TutorialI/Types/document/Overloading.tex
author wenzelm
Mon, 29 Aug 2005 16:25:24 +0200
changeset 17187 45bee2f6e61f
parent 17181 5f42dd5e6570
child 27169 89d5f117add3
permissions -rw-r--r--
updated;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10305
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
     1
%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
     2
\begin{isabellebody}%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
     3
\def\isabellecontext{Overloading}%
17056
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
     4
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
     5
\isadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
     6
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
     7
\endisadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
     8
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
     9
\isatagtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    10
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    11
\endisatagtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    12
{\isafoldtheory}%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    13
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    14
\isadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    15
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    16
\endisadelimtheory
17175
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    17
\isacommand{instance}\isamarkupfalse%
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    18
\ list\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}type{\isacharparenright}ordrel\isanewline
17056
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    19
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    20
\isadelimproof
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    21
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    22
\endisadelimproof
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    23
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    24
\isatagproof
17175
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    25
\isacommand{by}\isamarkupfalse%
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    26
\ intro{\isacharunderscore}classes%
17056
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    27
\endisatagproof
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    28
{\isafoldproof}%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    29
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    30
\isadelimproof
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    31
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    32
\endisadelimproof
11866
fbd097aec213 updated;
wenzelm
parents: 11494
diff changeset
    33
%
10305
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    34
\begin{isamarkuptext}%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    35
\noindent
10328
bf33cbd76c05 *** empty log message ***
nipkow
parents: 10305
diff changeset
    36
This \isacommand{instance} declaration can be read like the declaration of
12338
de0f4a63baa5 renamed class "term" to "type" (actually "HOL.type");
wenzelm
parents: 11866
diff changeset
    37
a function on types.  The constructor \isa{list} maps types of class \isa{type} (all HOL types), to types of class \isa{ordrel};
11494
23a118849801 revisions and indexing
paulson
parents: 11196
diff changeset
    38
in other words,
12338
de0f4a63baa5 renamed class "term" to "type" (actually "HOL.type");
wenzelm
parents: 11866
diff changeset
    39
if \isa{ty\ {\isacharcolon}{\isacharcolon}\ type} then \isa{ty\ list\ {\isacharcolon}{\isacharcolon}\ ordrel}.
10328
bf33cbd76c05 *** empty log message ***
nipkow
parents: 10305
diff changeset
    40
Of course we should also define the meaning of \isa{{\isacharless}{\isacharless}{\isacharequal}} and
bf33cbd76c05 *** empty log message ***
nipkow
parents: 10305
diff changeset
    41
\isa{{\isacharless}{\isacharless}} on lists:%
10305
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    42
\end{isamarkuptext}%
17175
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    43
\isamarkuptrue%
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    44
\isacommand{defs}\isamarkupfalse%
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    45
\ {\isacharparenleft}\isakeyword{overloaded}{\isacharparenright}\isanewline
10305
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    46
prefix{\isacharunderscore}def{\isacharcolon}\isanewline
17175
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    47
\ \ {\isachardoublequoteopen}xs\ {\isacharless}{\isacharless}{\isacharequal}\ {\isacharparenleft}ys{\isacharcolon}{\isacharcolon}{\isacharprime}a{\isacharcolon}{\isacharcolon}ordrel\ list{\isacharparenright}\ \ {\isasymequiv}\ \ {\isasymexists}zs{\isachardot}\ ys\ {\isacharequal}\ xs{\isacharat}zs{\isachardoublequoteclose}\isanewline
10305
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    48
strict{\isacharunderscore}prefix{\isacharunderscore}def{\isacharcolon}\isanewline
17175
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    49
\ \ {\isachardoublequoteopen}xs\ {\isacharless}{\isacharless}\ {\isacharparenleft}ys{\isacharcolon}{\isacharcolon}{\isacharprime}a{\isacharcolon}{\isacharcolon}ordrel\ list{\isacharparenright}\ \ \ {\isasymequiv}\ \ xs\ {\isacharless}{\isacharless}{\isacharequal}\ ys\ {\isasymand}\ xs\ {\isasymnoteq}\ ys{\isachardoublequoteclose}%
17056
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    50
\isadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    51
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    52
\endisadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    53
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    54
\isatagtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    55
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    56
\endisatagtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    57
{\isafoldtheory}%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    58
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    59
\isadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    60
%
05fc32a23b8b updated;
wenzelm
parents: 16353
diff changeset
    61
\endisadelimtheory
11866
fbd097aec213 updated;
wenzelm
parents: 11494
diff changeset
    62
\end{isabellebody}%
10305
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    63
%%% Local Variables:
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    64
%%% mode: latex
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    65
%%% TeX-master: "root"
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    66
%%% End: