doc-src/Exercises/2003/a2/generated/a2.tex
author wenzelm
Sat, 29 May 2004 15:05:25 +0200
changeset 14830 faa4865ba1ce
parent 14526 51dc6c7b1fd7
permissions -rw-r--r--
removed norm_typ; improved output; refer to Pretty.pp;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14526
mehta
parents:
diff changeset
     1
%
mehta
parents:
diff changeset
     2
\begin{isabellebody}%
mehta
parents:
diff changeset
     3
\def\isabellecontext{a{\isadigit{2}}}%
mehta
parents:
diff changeset
     4
\isamarkupfalse%
mehta
parents:
diff changeset
     5
%
mehta
parents:
diff changeset
     6
\isamarkupsubsection{Trees%
mehta
parents:
diff changeset
     7
}
mehta
parents:
diff changeset
     8
\isamarkuptrue%
mehta
parents:
diff changeset
     9
%
mehta
parents:
diff changeset
    10
\begin{isamarkuptext}%
mehta
parents:
diff changeset
    11
Define a datatype \isa{{\isacharprime}a\ tree} for binary trees. Both leaf
mehta
parents:
diff changeset
    12
and internal nodes store information.%
mehta
parents:
diff changeset
    13
\end{isamarkuptext}%
mehta
parents:
diff changeset
    14
\isamarkuptrue%
mehta
parents:
diff changeset
    15
\isacommand{datatype}\ {\isacharprime}a\ tree\isamarkupfalse%
mehta
parents:
diff changeset
    16
%
mehta
parents:
diff changeset
    17
\begin{isamarkuptext}%
mehta
parents:
diff changeset
    18
Define the functions \isa{preOrder}, \isa{postOrder}, and \isa{inOrder} that traverse an \isa{{\isacharprime}a\ tree} in the respective order.%
mehta
parents:
diff changeset
    19
\end{isamarkuptext}%
mehta
parents:
diff changeset
    20
\isamarkuptrue%
mehta
parents:
diff changeset
    21
\ \ preOrder\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequote}{\isacharprime}a\ tree\ {\isasymRightarrow}\ {\isacharprime}a\ list{\isachardoublequote}\isanewline
mehta
parents:
diff changeset
    22
\ \ postOrder\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequote}{\isacharprime}a\ tree\ {\isasymRightarrow}\ {\isacharprime}a\ list{\isachardoublequote}\isanewline
mehta
parents:
diff changeset
    23
\ \ inOrder\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequote}{\isacharprime}a\ tree\ {\isasymRightarrow}\ {\isacharprime}a\ list{\isachardoublequote}\isamarkupfalse%
mehta
parents:
diff changeset
    24
%
mehta
parents:
diff changeset
    25
\begin{isamarkuptext}%
mehta
parents:
diff changeset
    26
Define a function \isa{mirror} that returns the mirror image of an \isa{{\isacharprime}a\ tree}.%
mehta
parents:
diff changeset
    27
\end{isamarkuptext}%
mehta
parents:
diff changeset
    28
\isamarkuptrue%
mehta
parents:
diff changeset
    29
\ \ mirror\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequote}{\isacharprime}a\ tree\ {\isasymRightarrow}\ {\isacharprime}a\ tree{\isachardoublequote}\isamarkupfalse%
mehta
parents:
diff changeset
    30
%
mehta
parents:
diff changeset
    31
\begin{isamarkuptext}%
mehta
parents:
diff changeset
    32
Suppose that \isa{xOrder} and \isa{yOrder} are tree traversal
mehta
parents:
diff changeset
    33
functions chosen from \isa{preOrder}, \isa{postOrder}, and \isa{inOrder}. Formulate and prove all valid properties of the form
mehta
parents:
diff changeset
    34
\mbox{\isa{xOrder\ {\isacharparenleft}mirror\ xt{\isacharparenright}\ {\isacharequal}\ rev\ {\isacharparenleft}yOrder\ xt{\isacharparenright}}}.%
mehta
parents:
diff changeset
    35
\end{isamarkuptext}%
mehta
parents:
diff changeset
    36
\isamarkuptrue%
mehta
parents:
diff changeset
    37
%
mehta
parents:
diff changeset
    38
\begin{isamarkuptext}%
mehta
parents:
diff changeset
    39
Define the functions \isa{root}, \isa{leftmost} and \isa{rightmost}, that return the root, leftmost, and rightmost element
mehta
parents:
diff changeset
    40
respectively.%
mehta
parents:
diff changeset
    41
\end{isamarkuptext}%
mehta
parents:
diff changeset
    42
\isamarkuptrue%
mehta
parents:
diff changeset
    43
\ \ root\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequote}{\isacharprime}a\ tree\ {\isasymRightarrow}\ {\isacharprime}a{\isachardoublequote}\isanewline
mehta
parents:
diff changeset
    44
\ \ leftmost\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequote}{\isacharprime}a\ tree\ {\isasymRightarrow}\ {\isacharprime}a{\isachardoublequote}\isanewline
mehta
parents:
diff changeset
    45
\ \ rightmost\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequote}{\isacharprime}a\ tree\ {\isasymRightarrow}\ {\isacharprime}a{\isachardoublequote}\isamarkupfalse%
mehta
parents:
diff changeset
    46
%
mehta
parents:
diff changeset
    47
\begin{isamarkuptext}%
mehta
parents:
diff changeset
    48
Prove or disprove (by counter example) the theorems that follow. You may have to prove some lemmas first.%
mehta
parents:
diff changeset
    49
\end{isamarkuptext}%
mehta
parents:
diff changeset
    50
\isamarkuptrue%
mehta
parents:
diff changeset
    51
\isacommand{theorem}\ {\isachardoublequote}last{\isacharparenleft}inOrder\ xt{\isacharparenright}\ {\isacharequal}\ rightmost\ xt{\isachardoublequote}\isamarkupfalse%
mehta
parents:
diff changeset
    52
\ \isanewline
mehta
parents:
diff changeset
    53
\isamarkupfalse%
mehta
parents:
diff changeset
    54
\isacommand{theorem}\ {\isachardoublequote}hd\ {\isacharparenleft}inOrder\ xt{\isacharparenright}\ {\isacharequal}\ leftmost\ xt\ {\isachardoublequote}\isamarkupfalse%
mehta
parents:
diff changeset
    55
\ \isanewline
mehta
parents:
diff changeset
    56
\isamarkupfalse%
mehta
parents:
diff changeset
    57
\isacommand{theorem}\ {\isachardoublequote}hd{\isacharparenleft}preOrder\ xt{\isacharparenright}\ {\isacharequal}\ last{\isacharparenleft}postOrder\ xt{\isacharparenright}{\isachardoublequote}\isamarkupfalse%
mehta
parents:
diff changeset
    58
\ \isanewline
mehta
parents:
diff changeset
    59
\isamarkupfalse%
mehta
parents:
diff changeset
    60
\isacommand{theorem}\ {\isachardoublequote}hd{\isacharparenleft}preOrder\ xt{\isacharparenright}\ {\isacharequal}\ root\ xt{\isachardoublequote}\isamarkupfalse%
mehta
parents:
diff changeset
    61
\ \isanewline
mehta
parents:
diff changeset
    62
\isamarkupfalse%
mehta
parents:
diff changeset
    63
\isacommand{theorem}\ {\isachardoublequote}hd{\isacharparenleft}inOrder\ xt{\isacharparenright}\ {\isacharequal}\ root\ xt\ {\isachardoublequote}\isamarkupfalse%
mehta
parents:
diff changeset
    64
\ \isanewline
mehta
parents:
diff changeset
    65
\isamarkupfalse%
mehta
parents:
diff changeset
    66
\isacommand{theorem}\ {\isachardoublequote}last{\isacharparenleft}postOrder\ xt{\isacharparenright}\ {\isacharequal}\ root\ xt{\isachardoublequote}\isamarkupfalse%
mehta
parents:
diff changeset
    67
\ \isanewline
mehta
parents:
diff changeset
    68
\isanewline
mehta
parents:
diff changeset
    69
\isamarkupfalse%
mehta
parents:
diff changeset
    70
\isamarkupfalse%
mehta
parents:
diff changeset
    71
\end{isabellebody}%
mehta
parents:
diff changeset
    72
%%% Local Variables:
mehta
parents:
diff changeset
    73
%%% mode: latex
mehta
parents:
diff changeset
    74
%%% TeX-master: "root"
mehta
parents:
diff changeset
    75
%%% End: