src/HOL/Hyperreal/HyperNat.thy
changeset 14420 4e72cd222e0b
parent 14415 60aa114e2dba
child 14468 6be497cacab5
equal deleted inserted replaced
14419:a98803496711 14420:4e72cd222e0b
   393     by (rule hypnat_add_left_mono)
   393     by (rule hypnat_add_left_mono)
   394   show "x < y ==> 0 < z ==> z * x < z * y"
   394   show "x < y ==> 0 < z ==> z * x < z * y"
   395     by (simp add: hypnat_mult_less_mono2)
   395     by (simp add: hypnat_mult_less_mono2)
   396 qed
   396 qed
   397 
   397 
       
   398 lemma hypnat_le_zero_cancel [iff]: "(n \<le> (0::hypnat)) = (n = 0)"
       
   399 apply (rule eq_Abs_hypnat [of n])
       
   400 apply (simp add: hypnat_zero_def hypnat_le)
       
   401 done
       
   402 
   398 lemma hypnat_mult_is_0 [simp]: "(m*n = (0::hypnat)) = (m=0 | n=0)"
   403 lemma hypnat_mult_is_0 [simp]: "(m*n = (0::hypnat)) = (m=0 | n=0)"
   399 apply (rule eq_Abs_hypnat [of m])
   404 apply (rule eq_Abs_hypnat [of m])
   400 apply (rule eq_Abs_hypnat [of n])
   405 apply (rule eq_Abs_hypnat [of n])
   401 apply (auto simp add: hypnat_zero_def hypnat_mult, ultra+)
   406 apply (auto simp add: hypnat_zero_def hypnat_mult, ultra+)
   402 done
   407 done
   805 apply (rule eq_Abs_hypnat [of n])
   810 apply (rule eq_Abs_hypnat [of n])
   806 apply (auto simp add: hypreal_of_hypnat hypreal_inverse 
   811 apply (auto simp add: hypreal_of_hypnat hypreal_inverse 
   807       HNatInfinite_FreeUltrafilterNat_iff Infinitesimal_FreeUltrafilterNat_iff2)
   812       HNatInfinite_FreeUltrafilterNat_iff Infinitesimal_FreeUltrafilterNat_iff2)
   808 apply (rule bexI, rule_tac [2] lemma_hyprel_refl, auto)
   813 apply (rule bexI, rule_tac [2] lemma_hyprel_refl, auto)
   809 apply (drule_tac x = "m + 1" in spec, ultra)
   814 apply (drule_tac x = "m + 1" in spec, ultra)
       
   815 done
       
   816 
       
   817 lemma HNatInfinite_hypreal_of_hypnat_gt_zero:
       
   818      "N \<in> HNatInfinite ==> 0 < hypreal_of_hypnat N"
       
   819 apply (rule ccontr)
       
   820 apply (simp add: hypreal_of_hypnat_zero [symmetric] linorder_not_less)
   810 done
   821 done
   811 
   822 
   812 
   823 
   813 ML
   824 ML
   814 {*
   825 {*