doc-src/TutorialI/Misc/Tree.thy
author kleing
Wed, 12 Jul 2000 14:47:55 +0200
changeset 9287 c406d0af9368
parent 8745 13b32661dde4
child 9458 c613cd06d5cf
permissions -rw-r--r--
about.html -> logics.html
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8745
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
     1
(*<*)
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
     2
theory Tree = Main:
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
     3
(*>*)
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
     4
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
     5
text{*\noindent
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
     6
Define the datatype of binary trees
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
     7
*}
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
     8
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
     9
datatype 'a tree = Tip | Node "'a tree" 'a "'a tree";(*<*)
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    10
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    11
consts mirror :: "'a tree \\<Rightarrow> 'a tree";
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    12
primrec
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    13
"mirror Tip = Tip"
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    14
"mirror (Node l x r) = Node (mirror l) x (mirror r)";(*>*)
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    15
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    16
text{*\noindent
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    17
and a function \isa{mirror} that mirrors a binary tree
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    18
by swapping subtrees (recursively). Prove
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    19
*}
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    20
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    21
lemma mirror_mirror: "mirror(mirror t) = t";
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    22
(*<*)
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    23
apply(induct_tac t);
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    24
apply(auto).;
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    25
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    26
end
13b32661dde4 I wonder which files i forgot.
nipkow
parents:
diff changeset
    27
(*>*)