equal
deleted
inserted
replaced
55 mirror :: "'a tree \<rightarrow> 'a tree" |
55 mirror :: "'a tree \<rightarrow> 'a tree" |
56 where |
56 where |
57 mirror_Leaf: "mirror\<cdot>(Leaf\<cdot>a) = Leaf\<cdot>a" |
57 mirror_Leaf: "mirror\<cdot>(Leaf\<cdot>a) = Leaf\<cdot>a" |
58 | mirror_Node: "mirror\<cdot>(Node\<cdot>l\<cdot>r) = Node\<cdot>(mirror\<cdot>r)\<cdot>(mirror\<cdot>l)" |
58 | mirror_Node: "mirror\<cdot>(Node\<cdot>l\<cdot>r) = Node\<cdot>(mirror\<cdot>r)\<cdot>(mirror\<cdot>l)" |
59 |
59 |
60 fixpat |
60 lemma mirror_strict [simp]: "mirror\<cdot>\<bottom> = \<bottom>" |
61 mirror_strict [simp]: "mirror\<cdot>\<bottom>" |
61 by fixrec_simp |
62 |
62 |
63 fixrec |
63 fixrec |
64 pick :: "'a tree \<rightarrow> 'a convex_pd" |
64 pick :: "'a tree \<rightarrow> 'a convex_pd" |
65 where |
65 where |
66 pick_Leaf: "pick\<cdot>(Leaf\<cdot>a) = {a}\<natural>" |
66 pick_Leaf: "pick\<cdot>(Leaf\<cdot>a) = {a}\<natural>" |
67 | pick_Node: "pick\<cdot>(Node\<cdot>l\<cdot>r) = pick\<cdot>l +\<natural> pick\<cdot>r" |
67 | pick_Node: "pick\<cdot>(Node\<cdot>l\<cdot>r) = pick\<cdot>l +\<natural> pick\<cdot>r" |
68 |
68 |
69 fixpat |
69 lemma pick_strict [simp]: "pick\<cdot>\<bottom> = \<bottom>" |
70 pick_strict [simp]: "pick\<cdot>\<bottom>" |
70 by fixrec_simp |
71 |
71 |
72 lemma pick_mirror: "pick\<cdot>(mirror\<cdot>t) = pick\<cdot>t" |
72 lemma pick_mirror: "pick\<cdot>(mirror\<cdot>t) = pick\<cdot>t" |
73 by (induct t) (simp_all add: convex_plus_ac) |
73 by (induct t) (simp_all add: convex_plus_ac) |
74 |
74 |
75 fixrec tree1 :: "int lift tree" |
75 fixrec tree1 :: "int lift tree" |