removed lemmas that were only needed for old version of isin.
authornipkow
Tue, 17 Nov 2015 11:44:10 +0100
changeset 61692 cb595e12451d
parent 61691 91854ba66adb
child 61693 f6b9f528c89c
removed lemmas that were only needed for old version of isin.
src/HOL/Data_Structures/Isin2.thy
src/HOL/Data_Structures/List_Ins_Del.thy
--- a/src/HOL/Data_Structures/Isin2.thy	Mon Nov 16 19:08:38 2015 +0100
+++ b/src/HOL/Data_Structures/Isin2.thy	Tue Nov 17 11:44:10 2015 +0100
@@ -5,12 +5,17 @@
 theory Isin2
 imports
   Tree2
+  Cmp
   Set_by_Ordered
 begin
 
-fun isin :: "('a,'b) tree \<Rightarrow> ('a::order) \<Rightarrow> bool" where
+fun isin :: "('a::cmp,'b) tree \<Rightarrow> 'a \<Rightarrow> bool" where
 "isin Leaf x = False" |
-"isin (Node _ l a r) x = (x < a \<and> isin l x \<or> x=a \<or> isin r x)"
+"isin (Node _ l a r) x =
+  (case cmp x a of
+     LT \<Rightarrow> isin l x |
+     EQ \<Rightarrow> True |
+     GT \<Rightarrow> isin r x)"
 
 lemma "sorted(inorder t) \<Longrightarrow> isin t x = (x \<in> elems(inorder t))"
 by (induction t) (auto simp: elems_simps1)
--- a/src/HOL/Data_Structures/List_Ins_Del.thy	Mon Nov 16 19:08:38 2015 +0100
+++ b/src/HOL/Data_Structures/List_Ins_Del.thy	Tue Nov 17 11:44:10 2015 +0100
@@ -31,21 +31,15 @@
 the "isin" functions that implement @{const elems}. Nevertheless
 it is possible to avoid the quantifiers with the help of some rewrite rules: *}
 
-lemma sorted_ConsD: "sorted (y # xs) \<Longrightarrow> x \<in> elems xs \<Longrightarrow> y < x"
-by (simp add: sorted_Cons_iff)
-
-lemma sorted_snocD: "sorted (xs @ [y]) \<Longrightarrow> x \<in> elems xs \<Longrightarrow> x < y"
-by (simp add: sorted_snoc_iff)
+lemma sorted_ConsD: "sorted (y # xs) \<Longrightarrow> x \<le> y \<Longrightarrow> x \<notin> elems xs"
+by (auto simp: sorted_Cons_iff)
 
-lemma sorted_ConsD2: "sorted (y # xs) \<Longrightarrow> x \<le> y \<Longrightarrow> x \<notin> elems xs"
-using leD sorted_ConsD by blast
-
-lemma sorted_snocD2: "sorted (xs @ [y]) \<Longrightarrow> y \<le> x \<Longrightarrow> x \<notin> elems xs"
-using leD sorted_snocD by blast
+lemma sorted_snocD: "sorted (xs @ [y]) \<Longrightarrow> y \<le> x \<Longrightarrow> x \<notin> elems xs"
+by (auto simp: sorted_snoc_iff)
 
 lemmas elems_simps = sorted_lems elems_app
 lemmas elems_simps1 = elems_simps sorted_Cons_iff sorted_snoc_iff
-lemmas elems_simps2 = elems_simps sorted_ConsD sorted_snocD sorted_ConsD2 sorted_snocD2
+lemmas elems_simps2 = elems_simps sorted_ConsD sorted_snocD
 
 
 subsection \<open>Inserting into an ordered list without duplicates:\<close>