diff -r c9c6832f9b22 -r 94ac3895822f src/HOL/Hyperreal/NthRoot.thy --- a/src/HOL/Hyperreal/NthRoot.thy Tue Dec 23 17:41:52 2003 +0100 +++ b/src/HOL/Hyperreal/NthRoot.thy Tue Dec 23 18:24:16 2003 +0100 @@ -76,7 +76,7 @@ apply (auto elim: real_less_asym simp add: real_le_def) apply (simp add: real_le_def [symmetric]) apply (rule order_less_trans [of _ 0]) -apply (auto intro: real_inv_real_of_posnat_gt_zero lemma_nth_realpow_isLub_gt_zero) +apply (auto intro: lemma_nth_realpow_isLub_gt_zero) done text{*First result we want*} @@ -108,9 +108,21 @@ apply (auto simp add: real_le_def) done +lemma real_mult_less_self: "0 < r ==> r * (1 + -inverse(real (Suc n))) < r" +apply (simp (no_asm) add: real_add_mult_distrib2) +apply (rule_tac C = "-r" in real_less_add_left_cancel) +apply (auto intro: real_mult_order simp add: real_add_assoc [symmetric] real_minus_zero_less_iff2) +done + +lemma real_mult_add_one_minus_ge_zero: + "0 < r ==> 0 <= r*(1 + -inverse(real (Suc n)))" +apply (simp add: zero_le_mult_iff real_of_nat_inverse_le_iff) +apply (simp add: RealOrd.real_of_nat_Suc) +done + lemma lemma_nth_realpow_isLub_le: "[| isLub (UNIV::real set) {x. x ^ n <= a & (0::real) < x} u; - 0 < a; 0 < n |] ==> ALL k. (u*(1 + -inverse(real_of_posnat k))) ^ n <= a" + 0 < a; 0 < n |] ==> ALL k. (u*(1 + -inverse(real (Suc k)))) ^ n <= a" apply (safe) apply (frule less_isLub_not_isUb [THEN not_isUb_less_ex]) apply (rule_tac n = "k" in real_mult_less_self)