src/HOL/Lattices.thy
changeset 28685 275122631271
parent 28562 4e74209f113e
child 28692 a2bc5ce0c9fc
--- a/src/HOL/Lattices.thy	Fri Oct 24 17:48:36 2008 +0200
+++ b/src/HOL/Lattices.thy	Fri Oct 24 17:48:37 2008 +0200
@@ -332,7 +332,7 @@
 
 subsection {* Complete lattices *}
 
-class complete_lattice = lattice +
+class complete_lattice = lattice + top + bot +
   fixes Inf :: "'a set \<Rightarrow> 'a" ("\<Sqinter>_" [900] 900)
     and Sup :: "'a set \<Rightarrow> 'a" ("\<Squnion>_" [900] 900)
   assumes Inf_lower: "x \<in> A \<Longrightarrow> \<Sqinter>A \<sqsubseteq> x"
@@ -383,19 +383,13 @@
   "\<Squnion>{a, b} = a \<squnion> b"
   by (simp add: Sup_insert_simp)
 
-definition
-  top :: 'a where
+lemma top_def:
   "top = \<Sqinter>{}"
+  by (auto intro: antisym Inf_greatest)
 
-definition
-  bot :: 'a where
+lemma bot_def:
   "bot = \<Squnion>{}"
-
-lemma top_greatest [simp]: "x \<le> top"
-  by (unfold top_def, rule Inf_greatest, simp)
-
-lemma bot_least [simp]: "bot \<le> x"
-  by (unfold bot_def, rule Sup_least, simp)
+  by (auto intro: antisym Sup_least)
 
 definition
   SUPR :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a"
@@ -499,12 +493,6 @@
   "\<not> Sup {}"
   unfolding Sup_bool_def by auto
 
-lemma top_bool_eq: "top = True"
-  by (iprover intro!: order_antisym le_boolI top_greatest)
-
-lemma bot_bool_eq: "bot = False"
-  by (iprover intro!: order_antisym le_boolI bot_least)
-
 
 subsection {* Fun as lattice *}
 
@@ -556,12 +544,6 @@
   "\<Squnion>{} = (\<lambda>_. \<Squnion>{})"
   by rule (auto simp add: Sup_fun_def)
 
-lemma top_fun_eq: "top = (\<lambda>x. top)"
-  by (iprover intro!: order_antisym le_funI top_greatest)
-
-lemma bot_fun_eq: "bot = (\<lambda>x. bot)"
-  by (iprover intro!: order_antisym le_funI bot_least)
-
 
 subsection {* Set as lattice *}