src/HOL/Orderings.thy
changeset 61630 608520e0e8e2
parent 61605 1bf7b186542e
child 61699 a81dc5c4d6a9
equal deleted inserted replaced
61629:90f54d9e63f2 61630:608520e0e8e2
   253     and "\<And>y. P y \<Longrightarrow> x \<le> y"
   253     and "\<And>y. P y \<Longrightarrow> x \<le> y"
   254     and "\<And>x. P x \<Longrightarrow> \<forall>y. P y \<longrightarrow> x \<le> y \<Longrightarrow> Q x"
   254     and "\<And>x. P x \<Longrightarrow> \<forall>y. P y \<longrightarrow> x \<le> y \<Longrightarrow> Q x"
   255   shows "Q (Least P)"
   255   shows "Q (Least P)"
   256 unfolding Least_def by (rule theI2)
   256 unfolding Least_def by (rule theI2)
   257   (blast intro: assms antisym)+
   257   (blast intro: assms antisym)+
   258 
       
   259 
   258 
   260 text \<open>Dual order\<close>
   259 text \<open>Dual order\<close>
   261 
   260 
   262 lemma dual_order:
   261 lemma dual_order:
   263   "class.order (op \<ge>) (op >)"
   262   "class.order (op \<ge>) (op >)"
  1169   by (simp add:min_def)
  1168   by (simp add:min_def)
  1170 
  1169 
  1171 lemma max_absorb1: "(y::'a::order) \<le> x \<Longrightarrow> max x y = x"
  1170 lemma max_absorb1: "(y::'a::order) \<le> x \<Longrightarrow> max x y = x"
  1172   by (simp add: max_def)
  1171   by (simp add: max_def)
  1173 
  1172 
       
  1173 lemma max_min_same [simp]:
       
  1174   fixes x y :: "'a :: linorder"
       
  1175   shows "max x (min x y) = x" "max (min x y) x = x" "max (min x y) y = y" "max y (min x y) = y"
       
  1176 by(auto simp add: max_def min_def)
  1174 
  1177 
  1175 subsection \<open>(Unique) top and bottom elements\<close>
  1178 subsection \<open>(Unique) top and bottom elements\<close>
  1176 
  1179 
  1177 class bot =
  1180 class bot =
  1178   fixes bot :: 'a ("\<bottom>")
  1181   fixes bot :: 'a ("\<bottom>")