diff -r 415c38ef38c0 -r 6f2663df8374 src/HOL/Data_Structures/Tree_Set.thy --- a/src/HOL/Data_Structures/Tree_Set.thy Mon May 11 19:41:31 2020 +0200 +++ b/src/HOL/Data_Structures/Tree_Set.thy Tue May 12 10:24:53 2020 +0200 @@ -10,7 +10,7 @@ begin definition empty :: "'a tree" where -"empty == Leaf" +"empty = Leaf" fun isin :: "'a::linorder tree \ 'a \ bool" where "isin Leaf x = False" | @@ -44,13 +44,13 @@ GT \ Node l a (delete x r) | EQ \ if r = Leaf then l else let (a',r') = split_min r in Node l a' r')" -text \Deletion by appending:\ +text \Deletion by joining:\ -fun app :: "('a::linorder)tree \ 'a tree \ 'a tree" where -"app t Leaf = t" | -"app Leaf t = t" | -"app (Node t1 a t2) (Node t3 b t4) = - (case app t2 t3 of +fun join :: "('a::linorder)tree \ 'a tree \ 'a tree" where +"join t Leaf = t" | +"join Leaf t = t" | +"join (Node t1 a t2) (Node t3 b t4) = + (case join t2 t3 of Leaf \ Node t1 a (Node Leaf b t4) | Node u2 x u3 \ Node (Node t1 a u2) x (Node u3 b t4))" @@ -60,7 +60,7 @@ (case cmp x a of LT \ Node (delete2 x l) a r | GT \ Node l a (delete2 x r) | - EQ \ app l r)" + EQ \ join l r)" subsection "Functional Correctness Proofs" @@ -95,13 +95,13 @@ case 4 thus ?case by(simp add: inorder_delete) qed (rule TrueI)+ -lemma inorder_app: - "inorder(app l r) = inorder l @ inorder r" -by(induction l r rule: app.induct) (auto split: tree.split) +lemma inorder_join: + "inorder(join l r) = inorder l @ inorder r" +by(induction l r rule: join.induct) (auto split: tree.split) lemma inorder_delete2: "sorted(inorder t) \ inorder(delete2 x t) = del_list x (inorder t)" -by(induction t) (auto simp: inorder_app del_list_simps) +by(induction t) (auto simp: inorder_join del_list_simps) interpretation S2: Set_by_Ordered where empty = empty and isin = isin and insert = insert and delete = delete2