src/HOL/Library/Extended_Nat.thy
changeset 52729 412c9e0381a1
parent 51717 9e7d1c139569
child 54415 eaf25431d4c4
equal deleted inserted replaced
52728:470b579f35d2 52729:412c9e0381a1
   450 apply (rule eSuc_enat [THEN subst])
   450 apply (rule eSuc_enat [THEN subst])
   451 apply (rule exI)
   451 apply (rule exI)
   452 apply (erule (1) le_less_trans)
   452 apply (erule (1) le_less_trans)
   453 done
   453 done
   454 
   454 
   455 instantiation enat :: "{bot, top}"
   455 instantiation enat :: "{order_bot, order_top}"
   456 begin
   456 begin
   457 
   457 
   458 definition bot_enat :: enat where
   458 definition bot_enat :: enat where
   459   "bot_enat = 0"
   459   "bot_enat = 0"
   460 
   460 
   621       by (cases "A = {}") (auto intro: LeastI2_ex) }
   621       by (cases "A = {}") (auto intro: LeastI2_ex) }
   622   { assume "x \<in> A" then show "x \<le> Sup A"
   622   { assume "x \<in> A" then show "x \<le> Sup A"
   623       unfolding Sup_enat_def by (cases "finite A") auto }
   623       unfolding Sup_enat_def by (cases "finite A") auto }
   624   { assume "\<And>y. y \<in> A \<Longrightarrow> y \<le> x" then show "Sup A \<le> x"
   624   { assume "\<And>y. y \<in> A \<Longrightarrow> y \<le> x" then show "Sup A \<le> x"
   625       unfolding Sup_enat_def using finite_enat_bounded by auto }
   625       unfolding Sup_enat_def using finite_enat_bounded by auto }
   626 qed (simp_all add: inf_enat_def sup_enat_def)
   626 qed (simp_all add:
       
   627  inf_enat_def sup_enat_def bot_enat_def top_enat_def Inf_enat_def Sup_enat_def)
   627 end
   628 end
   628 
   629 
   629 instance enat :: complete_linorder ..
   630 instance enat :: complete_linorder ..
   630 
   631 
   631 subsection {* Traditional theorem names *}
   632 subsection {* Traditional theorem names *}