doc-src/TutorialI/Types/document/Overloading2.tex
author paulson
Fri, 03 Nov 2000 10:24:33 +0100
changeset 10370 99bd3e902979
parent 10328 bf33cbd76c05
child 10396 5ab08609e6c8
permissions -rw-r--r--
advanced induction examples
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{\isadigit{2}}}%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
     4
%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
     5
\begin{isamarkuptext}%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
     6
Of course this is not the only possible definition of the two relations.
10328
bf33cbd76c05 *** empty log message ***
nipkow
parents: 10305
diff changeset
     7
Componentwise comparison of lists of equal length also makes sense. This time
bf33cbd76c05 *** empty log message ***
nipkow
parents: 10305
diff changeset
     8
the elements of the list must also be of class \isa{ordrel} to permit their
bf33cbd76c05 *** empty log message ***
nipkow
parents: 10305
diff changeset
     9
comparison:%
10305
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    10
\end{isamarkuptext}%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    11
\isacommand{instance}\ list\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}ordrel{\isacharparenright}ordrel\isanewline
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    12
\isacommand{by}\ intro{\isacharunderscore}classes\isanewline
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    13
\isanewline
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    14
\isacommand{defs}\ {\isacharparenleft}\isakeyword{overloaded}{\isacharparenright}\isanewline
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    15
le{\isacharunderscore}list{\isacharunderscore}def{\isacharcolon}\ {\isachardoublequote}xs\ {\isacharless}{\isacharless}{\isacharequal}\ {\isacharparenleft}ys{\isacharcolon}{\isacharcolon}{\isacharprime}a{\isacharcolon}{\isacharcolon}ordrel\ list{\isacharparenright}\ {\isasymequiv}\isanewline
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    16
\ \ \ \ \ \ \ \ \ \ \ \ \ \ size\ xs\ {\isacharequal}\ size\ ys\ {\isasymand}\ {\isacharparenleft}{\isasymforall}i{\isacharless}size\ xs{\isachardot}\ xs{\isacharbang}i\ {\isacharless}{\isacharless}{\isacharequal}\ ys{\isacharbang}i{\isacharparenright}{\isachardoublequote}%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    17
\begin{isamarkuptext}%
10328
bf33cbd76c05 *** empty log message ***
nipkow
parents: 10305
diff changeset
    18
\noindent
bf33cbd76c05 *** empty log message ***
nipkow
parents: 10305
diff changeset
    19
The infix function \isa{{\isacharbang}} yields the nth element of a list.
10305
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    20
%However, we retract the componetwise comparison of lists and return
10328
bf33cbd76c05 *** empty log message ***
nipkow
parents: 10305
diff changeset
    21
%Note: only one definition because based on name.%
10305
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    22
\end{isamarkuptext}%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    23
\end{isabellebody}%
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    24
%%% Local Variables:
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    25
%%% mode: latex
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    26
%%% TeX-master: "root"
adff80268127 *** empty log message ***
nipkow
parents:
diff changeset
    27
%%% End: