consolidated bot and top classes, tuned notation
authorhaftmann
Sat, 16 Jul 2011 22:04:02 +0200
changeset 44724020ddc6a9508
parent 44723 7411fbf0a325
child 44725 f1d23df1adde
consolidated bot and top classes, tuned notation
src/HOL/Complete_Lattice.thy
src/HOL/Orderings.thy
     1.1 --- a/src/HOL/Complete_Lattice.thy	Sat Jul 16 21:53:50 2011 +0200
     1.2 +++ b/src/HOL/Complete_Lattice.thy	Sat Jul 16 22:04:02 2011 +0200
     1.3 @@ -108,20 +108,6 @@
     1.4    with `a \<sqsubseteq> b` show "a \<sqsubseteq> \<Squnion>B" by auto
     1.5  qed
     1.6  
     1.7 -lemma top_le:
     1.8 -  "\<top> \<sqsubseteq> x \<Longrightarrow> x = \<top>"
     1.9 -  by (rule antisym) auto
    1.10 -
    1.11 -lemma le_bot:
    1.12 -  "x \<sqsubseteq> \<bottom> \<Longrightarrow> x = \<bottom>"
    1.13 -  by (rule antisym) auto
    1.14 -
    1.15 -lemma not_less_bot [simp]: "\<not> (x \<sqsubset> \<bottom>)"
    1.16 -  using bot_least [of x] by (auto simp: le_less)
    1.17 -
    1.18 -lemma not_top_less [simp]: "\<not> (\<top> \<sqsubset> x)"
    1.19 -  using top_greatest [of x] by (auto simp: le_less)
    1.20 -
    1.21  lemma Sup_upper2: "u \<in> A \<Longrightarrow> v \<sqsubseteq> u \<Longrightarrow> v \<sqsubseteq> \<Squnion>A"
    1.22    using Sup_upper[of u A] by auto
    1.23  
     2.1 --- a/src/HOL/Orderings.thy	Sat Jul 16 21:53:50 2011 +0200
     2.2 +++ b/src/HOL/Orderings.thy	Sat Jul 16 22:04:02 2011 +0200
     2.3 @@ -1084,35 +1084,54 @@
     2.4  subsection {* (Unique) top and bottom elements *}
     2.5  
     2.6  class bot = order +
     2.7 -  fixes bot :: 'a
     2.8 -  assumes bot_least [simp]: "bot \<le> x"
     2.9 +  fixes bot :: 'a ("\<bottom>")
    2.10 +  assumes bot_least [simp]: "\<bottom> \<le> a"
    2.11  begin
    2.12  
    2.13 +lemma le_bot:
    2.14 +  "a \<le> \<bottom> \<Longrightarrow> a = \<bottom>"
    2.15 +  by (auto intro: antisym)
    2.16 +
    2.17  lemma bot_unique:
    2.18 -  "a \<le> bot \<longleftrightarrow> a = bot"
    2.19 -  by (auto simp add: intro: antisym)
    2.20 +  "a \<le> \<bottom> \<longleftrightarrow> a = \<bottom>"
    2.21 +  by (auto intro: antisym)
    2.22 +
    2.23 +lemma not_less_bot [simp]:
    2.24 +  "\<not> (a < \<bottom>)"
    2.25 +  using bot_least [of a] by (auto simp: le_less)
    2.26  
    2.27  lemma bot_less:
    2.28 -  "a \<noteq> bot \<longleftrightarrow> bot < a"
    2.29 +  "a \<noteq> \<bottom> \<longleftrightarrow> \<bottom> < a"
    2.30    by (auto simp add: less_le_not_le intro!: antisym)
    2.31  
    2.32  end
    2.33  
    2.34  class top = order +
    2.35 -  fixes top :: 'a
    2.36 -  assumes top_greatest [simp]: "x \<le> top"
    2.37 +  fixes top :: 'a ("\<top>")
    2.38 +  assumes top_greatest [simp]: "a \<le> \<top>"
    2.39  begin
    2.40  
    2.41 +lemma top_le:
    2.42 +  "\<top> \<le> a \<Longrightarrow> a = \<top>"
    2.43 +  by (rule antisym) auto
    2.44 +
    2.45  lemma top_unique:
    2.46 -  "top \<le> a \<longleftrightarrow> a = top"
    2.47 -  by (auto simp add: intro: antisym)
    2.48 +  "\<top> \<le> a \<longleftrightarrow> a = \<top>"
    2.49 +  by (auto intro: antisym)
    2.50 +
    2.51 +lemma not_top_less [simp]: "\<not> (\<top> < a)"
    2.52 +  using top_greatest [of a] by (auto simp: le_less)
    2.53  
    2.54  lemma less_top:
    2.55 -  "a \<noteq> top \<longleftrightarrow> a < top"
    2.56 +  "a \<noteq> \<top> \<longleftrightarrow> a < \<top>"
    2.57    by (auto simp add: less_le_not_le intro!: antisym)
    2.58  
    2.59  end
    2.60  
    2.61 +no_notation
    2.62 +  bot ("\<bottom>") and
    2.63 +  top ("\<top>")
    2.64 +
    2.65  
    2.66  subsection {* Dense orders *}
    2.67