src/HOL/Library/Nat_Infinity.thy
changeset 35028 108662d50512
parent 32069 6d28bbd33e2c
child 37765 26bdfb7b680b
equal deleted inserted replaced
35027:ed7d12bcf8f8 35028:108662d50512
   232   by default (simp add: of_nat_eq_Fin)
   232   by default (simp add: of_nat_eq_Fin)
   233 
   233 
   234 
   234 
   235 subsection {* Ordering *}
   235 subsection {* Ordering *}
   236 
   236 
   237 instantiation inat :: ordered_ab_semigroup_add
   237 instantiation inat :: linordered_ab_semigroup_add
   238 begin
   238 begin
   239 
   239 
   240 definition
   240 definition
   241   [code del]: "m \<le> n = (case n of Fin n1 \<Rightarrow> (case m of Fin m1 \<Rightarrow> m1 \<le> n1 | \<infinity> \<Rightarrow> False)
   241   [code del]: "m \<le> n = (case n of Fin n1 \<Rightarrow> (case m of Fin m1 \<Rightarrow> m1 \<le> n1 | \<infinity> \<Rightarrow> False)
   242     | \<infinity> \<Rightarrow> True)"
   242     | \<infinity> \<Rightarrow> True)"
   266 instance by default
   266 instance by default
   267   (auto simp add: less_eq_inat_def less_inat_def plus_inat_def split: inat.splits)
   267   (auto simp add: less_eq_inat_def less_inat_def plus_inat_def split: inat.splits)
   268 
   268 
   269 end
   269 end
   270 
   270 
   271 instance inat :: pordered_comm_semiring
   271 instance inat :: ordered_comm_semiring
   272 proof
   272 proof
   273   fix a b c :: inat
   273   fix a b c :: inat
   274   assume "a \<le> b" and "0 \<le> c"
   274   assume "a \<le> b" and "0 \<le> c"
   275   thus "c * a \<le> c * b"
   275   thus "c * a \<le> c * b"
   276     unfolding times_inat_def less_eq_inat_def zero_inat_def
   276     unfolding times_inat_def less_eq_inat_def zero_inat_def