equal
deleted
inserted
replaced
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 {* |