# HG changeset patch # User paulson # Date 1253882907 -3600 # Node ID 224ceb576bc3b1a3457a3eec6878c8658e58cdcd # Parent b68f3afdc1370e59519a19a1925d23f345d630d9# Parent 836ec9d0a0c8e38dc82fcca7a19f69782fbb7077 merged diff -r b68f3afdc137 -r 224ceb576bc3 src/HOL/RComplete.thy --- a/src/HOL/RComplete.thy Fri Sep 25 10:20:03 2009 +0200 +++ b/src/HOL/RComplete.thy Fri Sep 25 13:48:27 2009 +0100 @@ -14,6 +14,9 @@ lemma real_sum_of_halves: "x/2 + x/2 = (x::real)" by simp +lemma abs_diff_less_iff: + "(\x - a\ < (r::'a::ordered_idom)) = (a - r < x \ x < a + r)" + by auto subsection {* Completeness of Positive Reals *} @@ -301,6 +304,20 @@ qed qed +text{*A version of the same theorem without all those predicates!*} +lemma reals_complete2: + fixes S :: "(real set)" + assumes "\y. y\S" and "\(x::real). \y\S. y \ x" + shows "\x. (\y\S. y \ x) & + (\z. ((\y\S. y \ z) --> x \ z))" +proof - + have "\x. isLub UNIV S x" + by (rule reals_complete) + (auto simp add: isLub_def isUb_def leastP_def setle_def setge_def prems) + thus ?thesis + by (metis UNIV_I isLub_isUb isLub_le_isUb isUbD isUb_def setleI) +qed + subsection {* The Archimedean Property of the Reals *} diff -r b68f3afdc137 -r 224ceb576bc3 src/HOL/SEQ.thy --- a/src/HOL/SEQ.thy Fri Sep 25 10:20:03 2009 +0200 +++ b/src/HOL/SEQ.thy Fri Sep 25 13:48:27 2009 +0100 @@ -500,6 +500,28 @@ apply (drule LIMSEQ_minus, auto) done +lemma lim_le: + fixes x :: real + assumes f: "convergent f" and fn_le: "!!n. f n \ x" + shows "lim f \ x" +proof (rule classical) + assume "\ lim f \ x" + hence 0: "0 < lim f - x" by arith + have 1: "f----> lim f" + by (metis convergent_LIMSEQ_iff f) + thus ?thesis + proof (simp add: LIMSEQ_iff) + assume "\r>0. \no. \n\no. \f n - lim f\ < r" + hence "\no. \n\no. \f n - lim f\ < lim f - x" + by (metis 0) + from this obtain no where "\n\no. \f n - lim f\ < lim f - x" + by blast + thus "lim f \ x" + by (metis add_cancel_end add_minus_cancel diff_def linorder_linear + linorder_not_le minus_diff_eq abs_diff_less_iff fn_le) + qed +qed + text{* Given a binary function @{text "f:: nat \ 'a \ 'a"}, its values are uniquely determined by a function g *} lemma nat_function_unique: "EX! g. g 0 = e \ (\n. g (Suc n) = f n (g n))" @@ -1082,10 +1104,6 @@ lemma isUb_UNIV_I: "(\y. y \ S \ y \ u) \ isUb UNIV S u" by (simp add: isUbI setleI) -lemma real_abs_diff_less_iff: - "(\x - a\ < (r::real)) = (a - r < x \ x < a + r)" -by auto - locale real_Cauchy = fixes X :: "nat \ real" assumes X: "Cauchy X" @@ -1122,13 +1140,13 @@ show "\x. x \ S" proof from N have "\n\N. X N - 1 < X n" - by (simp add: real_abs_diff_less_iff) + by (simp add: abs_diff_less_iff) thus "X N - 1 \ S" by (rule mem_S) qed show "\u. isUb UNIV S u" proof from N have "\n\N. X n < X N + 1" - by (simp add: real_abs_diff_less_iff) + by (simp add: abs_diff_less_iff) thus "isUb UNIV S (X N + 1)" by (rule bound_isUb) qed @@ -1144,7 +1162,7 @@ using CauchyD [OF X r] by auto hence "\n\N. norm (X n - X N) < r/2" by simp hence N: "\n\N. X N - r/2 < X n \ X n < X N + r/2" - by (simp only: real_norm_def real_abs_diff_less_iff) + by (simp only: real_norm_def abs_diff_less_iff) from N have "\n\N. X N - r/2 < X n" by fast hence "X N - r/2 \ S" by (rule mem_S) @@ -1159,7 +1177,7 @@ fix n assume n: "N \ n" from N n have "X n < X N + r/2" and "X N - r/2 < X n" by simp+ thus "norm (X n - x) < r" using 1 2 - by (simp add: real_abs_diff_less_iff) + by (simp add: abs_diff_less_iff) qed qed diff -r b68f3afdc137 -r 224ceb576bc3 src/HOL/Series.thy --- a/src/HOL/Series.thy Fri Sep 25 10:20:03 2009 +0200 +++ b/src/HOL/Series.thy Fri Sep 25 13:48:27 2009 +0100 @@ -104,6 +104,9 @@ "summable f ==> (%n. setsum f {0.. (suminf f)" by (rule summable_sums [unfolded sums_def]) +lemma suminf_eq_lim: "suminf f = lim (%n. setsum f {0.. summable f \ (suminf f = x)" + by (metis summable_sums sums_summable sums_unique) + lemma sums_split_initial_segment: "f sums s ==> (%n. f(n + k)) sums (s - (SUM i = 0..< k. f i))" apply (unfold sums_def); @@ -368,6 +374,11 @@ apply (drule_tac x="n" in spec, simp) done +lemma suminf_le: + fixes x :: real + shows "summable f \ (!!n. setsum f {0.. x) \ suminf f \ x" + by (simp add: summable_convergent_sumr_iff suminf_eq_lim lim_le) + lemma summable_Cauchy: "summable (f::nat \ 'a::banach) = (\e > 0. \N. \m \ N. \n. norm (setsum f {m..