doc-src/TutorialI/Recdef/document/Nested0.tex
author wenzelm
Sun, 28 Aug 2005 19:42:19 +0200
changeset 17175 1eced27ee0e1
parent 17056 05fc32a23b8b
child 17181 5f42dd5e6570
permissions -rw-r--r--
updated;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9722
a5f86aed785b *** empty log message ***
nipkow
parents: 9721
diff changeset
     1
%
a5f86aed785b *** empty log message ***
nipkow
parents: 9721
diff changeset
     2
\begin{isabellebody}%
10267
325ead6d9457 updated;
wenzelm
parents: 10186
diff changeset
     3
\def\isabellecontext{Nested{\isadigit{0}}}%
17056
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
     4
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
     5
\isadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
     6
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
     7
\endisadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
     8
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
     9
\isatagtheory
17175
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    10
\isamarkupfalse%
17056
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    11
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    12
\endisatagtheory
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    13
{\isafoldtheory}%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    14
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    15
\isadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    16
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    17
\endisadelimtheory
9698
f0740137a65d updated;
wenzelm
parents:
diff changeset
    18
%
f0740137a65d updated;
wenzelm
parents:
diff changeset
    19
\begin{isamarkuptext}%
11494
23a118849801 revisions and indexing
paulson
parents: 11196
diff changeset
    20
\index{datatypes!nested}%
9698
f0740137a65d updated;
wenzelm
parents:
diff changeset
    21
In \S\ref{sec:nested-datatype} we defined the datatype of terms%
f0740137a65d updated;
wenzelm
parents:
diff changeset
    22
\end{isamarkuptext}%
17175
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    23
\isamarkuptrue%
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    24
\isacommand{datatype}\isamarkupfalse%
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    25
\ {\isacharparenleft}{\isacharprime}a{\isacharcomma}{\isacharprime}b{\isacharparenright}{\isachardoublequoteopen}term{\isachardoublequoteclose}\ {\isacharequal}\ Var\ {\isacharprime}a\ {\isacharbar}\ App\ {\isacharprime}b\ {\isachardoublequoteopen}{\isacharparenleft}{\isacharprime}a{\isacharcomma}{\isacharprime}b{\isacharparenright}term\ list{\isachardoublequoteclose}%
9698
f0740137a65d updated;
wenzelm
parents:
diff changeset
    26
\begin{isamarkuptext}%
f0740137a65d updated;
wenzelm
parents:
diff changeset
    27
\noindent
f0740137a65d updated;
wenzelm
parents:
diff changeset
    28
and closed with the observation that the associated schema for the definition
f0740137a65d updated;
wenzelm
parents:
diff changeset
    29
of primitive recursive functions leads to overly verbose definitions. Moreover,
f0740137a65d updated;
wenzelm
parents:
diff changeset
    30
if you have worked exercise~\ref{ex:trev-trev} you will have noticed that
10878
b254d5ad6dd4 auto update
paulson
parents: 10267
diff changeset
    31
you needed to declare essentially the same function as \isa{rev}
11196
bb4ede27fcb7 *** empty log message ***
nipkow
parents: 10878
diff changeset
    32
and prove many standard properties of list reversal all over again. 
10878
b254d5ad6dd4 auto update
paulson
parents: 10267
diff changeset
    33
We will now show you how \isacommand{recdef} can simplify
9698
f0740137a65d updated;
wenzelm
parents:
diff changeset
    34
definitions and proofs about nested recursive datatypes. As an example we
9754
a123a64cadeb *** empty log message ***
nipkow
parents: 9722
diff changeset
    35
choose exercise~\ref{ex:trev-trev}:%
9698
f0740137a65d updated;
wenzelm
parents:
diff changeset
    36
\end{isamarkuptext}%
17175
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    37
\isamarkuptrue%
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    38
\isacommand{consts}\isamarkupfalse%
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    39
\ trev\ \ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}{\isacharprime}a{\isacharcomma}{\isacharprime}b{\isacharparenright}term\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}a{\isacharcomma}{\isacharprime}b{\isacharparenright}term{\isachardoublequoteclose}%
17056
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    40
\isadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    41
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    42
\endisadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    43
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    44
\isatagtheory
17175
1eced27ee0e1 updated;
wenzelm
parents: 17056
diff changeset
    45
\isamarkupfalse%
17056
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    46
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    47
\endisatagtheory
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    48
{\isafoldtheory}%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    49
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    50
\isadelimtheory
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    51
%
05fc32a23b8b updated;
wenzelm
parents: 13791
diff changeset
    52
\endisadelimtheory
11866
fbd097aec213 updated;
wenzelm
parents: 11494
diff changeset
    53
\end{isabellebody}%
9698
f0740137a65d updated;
wenzelm
parents:
diff changeset
    54
%%% Local Variables:
f0740137a65d updated;
wenzelm
parents:
diff changeset
    55
%%% mode: latex
f0740137a65d updated;
wenzelm
parents:
diff changeset
    56
%%% TeX-master: "root"
f0740137a65d updated;
wenzelm
parents:
diff changeset
    57
%%% End: