src/HOL/Orderings.thy
changeset 57447 87429bdecad5
parent 56545 8f1e7596deb7
child 58826 2ed2eaabe3df
equal deleted inserted replaced
57446:06e195515deb 57447:87429bdecad5
   317 
   317 
   318 lemma linorder_cases [case_names less equal greater]:
   318 lemma linorder_cases [case_names less equal greater]:
   319   "(x < y \<Longrightarrow> P) \<Longrightarrow> (x = y \<Longrightarrow> P) \<Longrightarrow> (y < x \<Longrightarrow> P) \<Longrightarrow> P"
   319   "(x < y \<Longrightarrow> P) \<Longrightarrow> (x = y \<Longrightarrow> P) \<Longrightarrow> (y < x \<Longrightarrow> P) \<Longrightarrow> P"
   320 using less_linear by blast
   320 using less_linear by blast
   321 
   321 
       
   322 lemma linorder_wlog[case_names le sym]:
       
   323   "(\<And>a b. a \<le> b \<Longrightarrow> P a b) \<Longrightarrow> (\<And>a b. P b a \<Longrightarrow> P a b) \<Longrightarrow> P a b"
       
   324   by (cases rule: le_cases[of a b]) blast+
       
   325 
   322 lemma not_less: "\<not> x < y \<longleftrightarrow> y \<le> x"
   326 lemma not_less: "\<not> x < y \<longleftrightarrow> y \<le> x"
   323 apply (simp add: less_le)
   327 apply (simp add: less_le)
   324 using linear apply (blast intro: antisym)
   328 using linear apply (blast intro: antisym)
   325 done
   329 done
   326 
   330 
   357 unfolding not_less .
   361 unfolding not_less .
   358 
   362 
   359 (*FIXME inappropriate name (or delete altogether)*)
   363 (*FIXME inappropriate name (or delete altogether)*)
   360 lemma not_leE: "\<not> y \<le> x \<Longrightarrow> x < y"
   364 lemma not_leE: "\<not> y \<le> x \<Longrightarrow> x < y"
   361 unfolding not_le .
   365 unfolding not_le .
   362 
       
   363 
   366 
   364 text {* Dual order *}
   367 text {* Dual order *}
   365 
   368 
   366 lemma dual_linorder:
   369 lemma dual_linorder:
   367   "class.linorder (op \<ge>) (op >)"
   370   "class.linorder (op \<ge>) (op >)"