| author | wenzelm | 
| Tue, 25 Mar 2025 23:05:15 +0100 | |
| changeset 82407 | fcc0f74ac086 | 
| parent 81467 | 3fab5b28027d | 
| child 82541 | 5160b68e78a9 | 
| permissions | -rw-r--r-- | 
| 63992 | 1  | 
(* Title: HOL/Analysis/Summation_Tests.thy  | 
| 
62055
 
755fda743c49
Multivariate-Analysis: fixed headers and a LaTex error (c.f. Isabelle b0f941e207cf)
 
hoelzl 
parents: 
62049 
diff
changeset
 | 
2  | 
Author: Manuel Eberl, TU München  | 
| 
 
755fda743c49
Multivariate-Analysis: fixed headers and a LaTex error (c.f. Isabelle b0f941e207cf)
 
hoelzl 
parents: 
62049 
diff
changeset
 | 
3  | 
*)  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
4  | 
|
| 
62085
 
5b7758af429e
Tuned approximations in Multivariate_Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
62072 
diff
changeset
 | 
5  | 
section \<open>Radius of Convergence and Summation Tests\<close>  | 
| 
62055
 
755fda743c49
Multivariate-Analysis: fixed headers and a LaTex error (c.f. Isabelle b0f941e207cf)
 
hoelzl 
parents: 
62049 
diff
changeset
 | 
6  | 
|
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
7  | 
theory Summation_Tests  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
8  | 
imports  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
9  | 
Complex_Main  | 
| 
81467
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
10  | 
"HOL-Library.Discrete_Functions"  | 
| 
66453
 
cc19f7ca2ed6
session-qualified theory imports: isabelle imports -U -i -d '~~/src/Benchmarks' -a;
 
wenzelm 
parents: 
66447 
diff
changeset
 | 
11  | 
"HOL-Library.Extended_Real"  | 
| 
 
cc19f7ca2ed6
session-qualified theory imports: isabelle imports -U -i -d '~~/src/Benchmarks' -a;
 
wenzelm 
parents: 
66447 
diff
changeset
 | 
12  | 
"HOL-Library.Liminf_Limsup"  | 
| 66672 | 13  | 
Extended_Real_Limits  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
14  | 
begin  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
15  | 
|
| 
62055
 
755fda743c49
Multivariate-Analysis: fixed headers and a LaTex error (c.f. Isabelle b0f941e207cf)
 
hoelzl 
parents: 
62049 
diff
changeset
 | 
16  | 
text \<open>  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
17  | 
The definition of the radius of convergence of a power series,  | 
| 
62055
 
755fda743c49
Multivariate-Analysis: fixed headers and a LaTex error (c.f. Isabelle b0f941e207cf)
 
hoelzl 
parents: 
62049 
diff
changeset
 | 
18  | 
various summability tests, lemmas to compute the radius of convergence etc.  | 
| 
 
755fda743c49
Multivariate-Analysis: fixed headers and a LaTex error (c.f. Isabelle b0f941e207cf)
 
hoelzl 
parents: 
62049 
diff
changeset
 | 
19  | 
\<close>  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
20  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
21  | 
subsection \<open>Convergence tests for infinite sums\<close>  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
22  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
23  | 
subsubsection \<open>Root test\<close>  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
24  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
25  | 
lemma limsup_root_powser:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
26  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
27  | 
shows "limsup (\<lambda>n. ereal (root n (norm (f n * z ^ n)))) =  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
28  | 
limsup (\<lambda>n. ereal (root n (norm (f n)))) * ereal (norm z)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
29  | 
proof -  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
30  | 
have A: "(\<lambda>n. ereal (root n (norm (f n * z ^ n)))) =  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
31  | 
(\<lambda>n. ereal (root n (norm (f n))) * ereal (norm z))" (is "?g = ?h")  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
32  | 
proof  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
33  | 
fix n show "?g n = ?h n"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
34  | 
by (cases "n = 0") (simp_all add: norm_mult real_root_mult real_root_pos2 norm_power)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
35  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
36  | 
show ?thesis by (subst A, subst limsup_ereal_mult_right) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
37  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
38  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
39  | 
lemma limsup_root_limit:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
40  | 
assumes "(\<lambda>n. ereal (root n (norm (f n)))) \<longlonglongrightarrow> l" (is "?g \<longlonglongrightarrow> _")  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
41  | 
shows "limsup (\<lambda>n. ereal (root n (norm (f n)))) = l"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
42  | 
proof -  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
43  | 
from assms have "convergent ?g" "lim ?g = l"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
44  | 
unfolding convergent_def by (blast intro: limI)+  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
45  | 
with convergent_limsup_cl show ?thesis by force  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
46  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
47  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
48  | 
lemma limsup_root_limit':  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
49  | 
assumes "(\<lambda>n. root n (norm (f n))) \<longlonglongrightarrow> l"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
50  | 
shows "limsup (\<lambda>n. ereal (root n (norm (f n)))) = ereal l"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
51  | 
by (intro limsup_root_limit tendsto_ereal assms)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
52  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
53  | 
theorem root_test_convergence':  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
54  | 
fixes f :: "nat \<Rightarrow> 'a :: banach"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
55  | 
defines "l \<equiv> limsup (\<lambda>n. ereal (root n (norm (f n))))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
56  | 
assumes l: "l < 1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
57  | 
shows "summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
58  | 
proof -  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
59  | 
have "0 = limsup (\<lambda>n. 0)" by (simp add: Limsup_const)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
60  | 
also have "... \<le> l" unfolding l_def by (intro Limsup_mono) (simp_all add: real_root_ge_zero)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
61  | 
finally have "l \<ge> 0" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
62  | 
with l obtain l' where l': "l = ereal l'" by (cases l) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
63  | 
|
| 63040 | 64  | 
define c where "c = (1 - l') / 2"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
65  | 
from l and \<open>l \<ge> 0\<close> have c: "l + c > l" "l' + c \<ge> 0" "l' + c < 1" unfolding c_def  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
66  | 
by (simp_all add: field_simps l')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
67  | 
have "\<forall>C>l. eventually (\<lambda>n. ereal (root n (norm (f n))) < C) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
68  | 
by (subst Limsup_le_iff[symmetric]) (simp add: l_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
69  | 
with c have "eventually (\<lambda>n. ereal (root n (norm (f n))) < l + ereal c) sequentially" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
70  | 
with eventually_gt_at_top[of "0::nat"]  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
71  | 
have "eventually (\<lambda>n. norm (f n) \<le> (l' + c) ^ n) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
72  | 
proof eventually_elim  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
73  | 
fix n :: nat assume n: "n > 0"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
74  | 
assume "ereal (root n (norm (f n))) < l + ereal c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
75  | 
hence "root n (norm (f n)) \<le> l' + c" by (simp add: l')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
76  | 
with c n have "root n (norm (f n)) ^ n \<le> (l' + c) ^ n"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
77  | 
by (intro power_mono) (simp_all add: real_root_ge_zero)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
78  | 
also from n have "root n (norm (f n)) ^ n = norm (f n)" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
79  | 
finally show "norm (f n) \<le> (l' + c) ^ n" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
80  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
81  | 
thus ?thesis  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
82  | 
by (rule summable_comparison_test_ev[OF _ summable_geometric]) (simp add: c)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
83  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
84  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
85  | 
theorem root_test_divergence:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
86  | 
fixes f :: "nat \<Rightarrow> 'a :: banach"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
87  | 
defines "l \<equiv> limsup (\<lambda>n. ereal (root n (norm (f n))))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
88  | 
assumes l: "l > 1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
89  | 
shows "\<not>summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
90  | 
proof  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
91  | 
assume "summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
92  | 
hence bounded: "Bseq f" by (simp add: summable_imp_Bseq)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
93  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
94  | 
have "0 = limsup (\<lambda>n. 0)" by (simp add: Limsup_const)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
95  | 
also have "... \<le> l" unfolding l_def by (intro Limsup_mono) (simp_all add: real_root_ge_zero)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
96  | 
finally have l_nonneg: "l \<ge> 0" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
97  | 
|
| 63040 | 98  | 
define c where "c = (if l = \<infinity> then 2 else 1 + (real_of_ereal l - 1) / 2)"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
99  | 
from l l_nonneg consider "l = \<infinity>" | "\<exists>l'. l = ereal l'" by (cases l) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
100  | 
hence c: "c > 1 \<and> ereal c < l" by cases (insert l, auto simp: c_def field_simps)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
101  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
102  | 
  have unbounded: "\<not>bdd_above {n. root n (norm (f n)) > c}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
103  | 
proof  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
104  | 
    assume "bdd_above {n. root n (norm (f n)) > c}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
105  | 
then obtain N where "\<forall>n. root n (norm (f n)) > c \<longrightarrow> n \<le> N" unfolding bdd_above_def by blast  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
106  | 
hence "\<exists>N. \<forall>n\<ge>N. root n (norm (f n)) \<le> c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
107  | 
by (intro exI[of _ "N + 1"]) (force simp: not_less_eq_eq[symmetric])  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
108  | 
hence "eventually (\<lambda>n. root n (norm (f n)) \<le> c) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
109  | 
by (auto simp: eventually_at_top_linorder)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
110  | 
hence "l \<le> c" unfolding l_def by (intro Limsup_bounded) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
111  | 
with c show False by auto  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
112  | 
qed  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
113  | 
|
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
114  | 
from bounded obtain K where K: "K > 0" "\<And>n. norm (f n) \<le> K" using BseqE by blast  | 
| 63040 | 115  | 
define n where "n = nat \<lceil>log c K\<rceil>"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
116  | 
from unbounded have "\<exists>m>n. c < root m (norm (f m))" unfolding bdd_above_def  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
117  | 
by (auto simp: not_le)  | 
| 74362 | 118  | 
then obtain m where m: "n < m" "c < root m (norm (f m))" by auto  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
119  | 
from c K have "K = c powr log c K" by (simp add: powr_def log_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
120  | 
also from c have "c powr log c K \<le> c powr real n" unfolding n_def  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
121  | 
by (intro powr_mono, linarith, simp)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
122  | 
finally have "K \<le> c ^ n" using c by (simp add: powr_realpow)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
123  | 
also from c m have "c ^ n < c ^ m" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
124  | 
also from c m have "c ^ m < root m (norm (f m)) ^ m" by (intro power_strict_mono) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
125  | 
also from m have "... = norm (f m)" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
126  | 
finally show False using K(2)[of m] by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
127  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
128  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
129  | 
|
| 
62085
 
5b7758af429e
Tuned approximations in Multivariate_Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
62072 
diff
changeset
 | 
130  | 
subsubsection \<open>Cauchy's condensation test\<close>  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
131  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
132  | 
context  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
133  | 
fixes f :: "nat \<Rightarrow> real"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
134  | 
begin  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
135  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
136  | 
private lemma condensation_inequality:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
137  | 
assumes mono: "\<And>m n. 0 < m \<Longrightarrow> m \<le> n \<Longrightarrow> f n \<le> f m"  | 
| 
81467
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
138  | 
shows "(\<Sum>k=1..<n. f k) \<ge> (\<Sum>k=1..<n. f (2 * 2 ^ floor_log k))" (is "?thesis1")  | 
| 
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
139  | 
"(\<Sum>k=1..<n. f k) \<le> (\<Sum>k=1..<n. f (2 ^ floor_log k))" (is "?thesis2")  | 
| 
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
140  | 
by (intro sum_mono mono floor_log_exp2_ge floor_log_exp2_le, simp, simp)+  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
141  | 
|
| 
81467
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
142  | 
private lemma condensation_condense1: "(\<Sum>k=1..<2^n. f (2 ^ floor_log k)) = (\<Sum>k<n. 2^k * f (2 ^ k))"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
143  | 
proof (induction n)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
144  | 
case (Suc n)  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
145  | 
  have "{1..<2^Suc n} = {1..<2^n} \<union> {2^n..<(2^Suc n :: nat)}" by auto
 | 
| 
81467
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
146  | 
also have "(\<Sum>k\<in>\<dots>. f (2 ^ floor_log k)) =  | 
| 
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
147  | 
(\<Sum>k<n. 2^k * f (2^k)) + (\<Sum>k = 2^n..<2^Suc n. f (2^floor_log k))"  | 
| 64267 | 148  | 
by (subst sum.union_disjoint) (insert Suc, auto)  | 
| 
81467
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
149  | 
  also have "floor_log k = n" if "k \<in> {2^n..<2^Suc n}" for k using that by (intro floor_log_eqI) simp_all
 | 
| 
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
150  | 
hence "(\<Sum>k = 2^n..<2^Suc n. f (2^floor_log k)) = (\<Sum>(_::nat) = 2^n..<2^Suc n. f (2^n))"  | 
| 64267 | 151  | 
by (intro sum.cong) simp_all  | 
| 71633 | 152  | 
also have "\<dots> = 2^n * f (2^n)" by (simp)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
153  | 
finally show ?case by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
154  | 
qed simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
155  | 
|
| 
81467
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
156  | 
private lemma condensation_condense2: "(\<Sum>k=1..<2^n. f (2 * 2 ^ floor_log k)) = (\<Sum>k<n. 2^k * f (2 ^ Suc k))"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
157  | 
proof (induction n)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
158  | 
case (Suc n)  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
159  | 
  have "{1..<2^Suc n} = {1..<2^n} \<union> {2^n..<(2^Suc n :: nat)}" by auto
 | 
| 
81467
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
160  | 
also have "(\<Sum>k\<in>\<dots>. f (2 * 2 ^ floor_log k)) =  | 
| 
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
161  | 
(\<Sum>k<n. 2^k * f (2^Suc k)) + (\<Sum>k = 2^n..<2^Suc n. f (2 * 2^floor_log k))"  | 
| 64267 | 162  | 
by (subst sum.union_disjoint) (insert Suc, auto)  | 
| 
81467
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
163  | 
  also have "floor_log k = n" if "k \<in> {2^n..<2^Suc n}" for k using that by (intro floor_log_eqI) simp_all
 | 
| 
 
3fab5b28027d
renamed Discrete -> Discrete_Functions to avoid name clashes;
 
nipkow 
parents: 
74362 
diff
changeset
 | 
164  | 
hence "(\<Sum>k = 2^n..<2^Suc n. f (2*2^floor_log k)) = (\<Sum>(_::nat) = 2^n..<2^Suc n. f (2^Suc n))"  | 
| 64267 | 165  | 
by (intro sum.cong) simp_all  | 
| 71633 | 166  | 
also have "\<dots> = 2^n * f (2^Suc n)" by (simp)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
167  | 
finally show ?case by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
168  | 
qed simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
169  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
170  | 
theorem condensation_test:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
171  | 
assumes mono: "\<And>m. 0 < m \<Longrightarrow> f (Suc m) \<le> f m"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
172  | 
assumes nonneg: "\<And>n. f n \<ge> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
173  | 
shows "summable f \<longleftrightarrow> summable (\<lambda>n. 2^n * f (2^n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
174  | 
proof -  | 
| 63040 | 175  | 
define f' where "f' n = (if n = 0 then 0 else f n)" for n  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
176  | 
from mono have mono': "decseq (\<lambda>n. f (Suc n))" by (intro decseq_SucI) simp  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
177  | 
hence mono': "f n \<le> f m" if "m \<le> n" "m > 0" for m n  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
178  | 
using that decseqD[OF mono', of "m - 1" "n - 1"] by simp  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
179  | 
|
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
180  | 
have "(\<lambda>n. f (Suc n)) = (\<lambda>n. f' (Suc n))" by (intro ext) (simp add: f'_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
181  | 
hence "summable f \<longleftrightarrow> summable f'"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
182  | 
by (subst (1 2) summable_Suc_iff [symmetric]) (simp only:)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
183  | 
also have "\<dots> \<longleftrightarrow> convergent (\<lambda>n. \<Sum>k<n. f' k)" unfolding summable_iff_convergent ..  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
184  | 
also have "monoseq (\<lambda>n. \<Sum>k<n. f' k)" unfolding f'_def  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
185  | 
by (intro mono_SucI1) (auto intro!: mult_nonneg_nonneg nonneg)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
186  | 
hence "convergent (\<lambda>n. \<Sum>k<n. f' k) \<longleftrightarrow> Bseq (\<lambda>n. \<Sum>k<n. f' k)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
187  | 
by (rule monoseq_imp_convergent_iff_Bseq)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
188  | 
also have "\<dots> \<longleftrightarrow> Bseq (\<lambda>n. \<Sum>k=1..<n. f' k)" unfolding One_nat_def  | 
| 64267 | 189  | 
by (subst sum_shift_lb_Suc0_0_upt) (simp_all add: f'_def atLeast0LessThan)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
190  | 
also have "\<dots> \<longleftrightarrow> Bseq (\<lambda>n. \<Sum>k=1..<n. f k)" unfolding f'_def by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
191  | 
also have "\<dots> \<longleftrightarrow> Bseq (\<lambda>n. \<Sum>k=1..<2^n. f k)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
192  | 
by (rule nonneg_incseq_Bseq_subseq_iff[symmetric])  | 
| 
66447
 
a1f5c5c26fa6
Replaced subseq with strict_mono
 
eberlm <eberlm@in.tum.de> 
parents: 
65578 
diff
changeset
 | 
193  | 
(auto intro!: sum_nonneg incseq_SucI nonneg simp: strict_mono_def)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
194  | 
also have "\<dots> \<longleftrightarrow> Bseq (\<lambda>n. \<Sum>k<n. 2^k * f (2^k))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
195  | 
proof (intro iffI)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
196  | 
assume A: "Bseq (\<lambda>n. \<Sum>k=1..<2^n. f k)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
197  | 
have "eventually (\<lambda>n. norm (\<Sum>k<n. 2^k * f (2^Suc k)) \<le> norm (\<Sum>k=1..<2^n. f k)) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
198  | 
proof (intro always_eventually allI)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
199  | 
fix n :: nat  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
200  | 
have "norm (\<Sum>k<n. 2^k * f (2^Suc k)) = (\<Sum>k<n. 2^k * f (2^Suc k))" unfolding real_norm_def  | 
| 64267 | 201  | 
by (intro abs_of_nonneg sum_nonneg ballI mult_nonneg_nonneg nonneg) simp_all  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
202  | 
also have "\<dots> \<le> (\<Sum>k=1..<2^n. f k)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
203  | 
by (subst condensation_condense2 [symmetric]) (intro condensation_inequality mono')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
204  | 
also have "\<dots> = norm \<dots>" unfolding real_norm_def  | 
| 64267 | 205  | 
by (intro abs_of_nonneg[symmetric] sum_nonneg ballI mult_nonneg_nonneg nonneg)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
206  | 
finally show "norm (\<Sum>k<n. 2 ^ k * f (2 ^ Suc k)) \<le> norm (\<Sum>k=1..<2^n. f k)" .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
207  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
208  | 
from this and A have "Bseq (\<lambda>n. \<Sum>k<n. 2^k * f (2^Suc k))" by (rule Bseq_eventually_mono)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
209  | 
from Bseq_mult[OF Bfun_const[of 2] this] have "Bseq (\<lambda>n. \<Sum>k<n. 2^Suc k * f (2^Suc k))"  | 
| 64267 | 210  | 
by (simp add: sum_distrib_left sum_distrib_right mult_ac)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
211  | 
hence "Bseq (\<lambda>n. (\<Sum>k=Suc 0..<Suc n. 2^k * f (2^k)) + f 1)"  | 
| 
70113
 
c8deb8ba6d05
Fixing the main Homology theory; also moving a lot of sum/prod lemmas into their generic context
 
paulson <lp15@cam.ac.uk> 
parents: 
70097 
diff
changeset
 | 
212  | 
by (intro Bseq_add, subst sum.shift_bounds_Suc_ivl) (simp add: atLeast0LessThan)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
213  | 
hence "Bseq (\<lambda>n. (\<Sum>k=0..<Suc n. 2^k * f (2^k)))"  | 
| 
70097
 
4005298550a6
The last big tranche of Homology material: invariance of domain; renamings to use generic sum/prod lemmas from their locale
 
paulson <lp15@cam.ac.uk> 
parents: 
69597 
diff
changeset
 | 
214  | 
by (subst sum.atLeast_Suc_lessThan) (simp_all add: add_ac)  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
215  | 
thus "Bseq (\<lambda>n. (\<Sum>k<n. 2^k * f (2^k)))"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
216  | 
by (subst (asm) Bseq_Suc_iff) (simp add: atLeast0LessThan)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
217  | 
next  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
218  | 
assume A: "Bseq (\<lambda>n. (\<Sum>k<n. 2^k * f (2^k)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
219  | 
have "eventually (\<lambda>n. norm (\<Sum>k=1..<2^n. f k) \<le> norm (\<Sum>k<n. 2^k * f (2^k))) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
220  | 
proof (intro always_eventually allI)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
221  | 
fix n :: nat  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
222  | 
have "norm (\<Sum>k=1..<2^n. f k) = (\<Sum>k=1..<2^n. f k)" unfolding real_norm_def  | 
| 64267 | 223  | 
by (intro abs_of_nonneg sum_nonneg ballI mult_nonneg_nonneg nonneg)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
224  | 
also have "\<dots> \<le> (\<Sum>k<n. 2^k * f (2^k))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
225  | 
by (subst condensation_condense1 [symmetric]) (intro condensation_inequality mono')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
226  | 
also have "\<dots> = norm \<dots>" unfolding real_norm_def  | 
| 64267 | 227  | 
by (intro abs_of_nonneg [symmetric] sum_nonneg ballI mult_nonneg_nonneg nonneg) simp_all  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
228  | 
finally show "norm (\<Sum>k=1..<2^n. f k) \<le> norm (\<Sum>k<n. 2^k * f (2^k))" .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
229  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
230  | 
from this and A show "Bseq (\<lambda>n. \<Sum>k=1..<2^n. f k)" by (rule Bseq_eventually_mono)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
231  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
232  | 
also have "monoseq (\<lambda>n. (\<Sum>k<n. 2^k * f (2^k)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
233  | 
by (intro mono_SucI1) (auto intro!: mult_nonneg_nonneg nonneg)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
234  | 
hence "Bseq (\<lambda>n. (\<Sum>k<n. 2^k * f (2^k))) \<longleftrightarrow> convergent (\<lambda>n. (\<Sum>k<n. 2^k * f (2^k)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
235  | 
by (rule monoseq_imp_convergent_iff_Bseq [symmetric])  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
236  | 
also have "\<dots> \<longleftrightarrow> summable (\<lambda>k. 2^k * f (2^k))" by (simp only: summable_iff_convergent)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
237  | 
finally show ?thesis .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
238  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
239  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
240  | 
end  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
241  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
242  | 
|
| 
62085
 
5b7758af429e
Tuned approximations in Multivariate_Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
62072 
diff
changeset
 | 
243  | 
subsubsection \<open>Summability of powers\<close>  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
244  | 
|
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
245  | 
lemma abs_summable_complex_powr_iff:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
246  | 
"summable (\<lambda>n. norm (exp (of_real (ln (of_nat n)) * s))) \<longleftrightarrow> Re s < -1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
247  | 
proof (cases "Re s \<le> 0")  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
248  | 
let ?l = "\<lambda>n. complex_of_real (ln (of_nat n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
249  | 
case False  | 
| 
65578
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
250  | 
have "eventually (\<lambda>n. norm (1 :: real) \<le> norm (exp (?l n * s))) sequentially"  | 
| 
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
251  | 
apply (rule eventually_mono [OF eventually_gt_at_top[of "0::nat"]])  | 
| 
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
252  | 
using False ge_one_powr_ge_zero by auto  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
253  | 
from summable_comparison_test_ev[OF this] False show ?thesis by (auto simp: summable_const_iff)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
254  | 
next  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
255  | 
let ?l = "\<lambda>n. complex_of_real (ln (of_nat n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
256  | 
case True  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
257  | 
hence "summable (\<lambda>n. norm (exp (?l n * s))) \<longleftrightarrow> summable (\<lambda>n. 2^n * norm (exp (?l (2^n) * s)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
258  | 
by (intro condensation_test) (auto intro!: mult_right_mono_neg)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
259  | 
also have "(\<lambda>n. 2^n * norm (exp (?l (2^n) * s))) = (\<lambda>n. (2 powr (Re s + 1)) ^ n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
260  | 
proof  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
261  | 
fix n :: nat  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
262  | 
have "2^n * norm (exp (?l (2^n) * s)) = exp (real n * ln 2) * exp (real n * ln 2 * Re s)"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
263  | 
using True by (subst exp_of_nat_mult) (simp add: ln_realpow algebra_simps)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
264  | 
also have "\<dots> = exp (real n * (ln 2 * (Re s + 1)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
265  | 
by (simp add: algebra_simps exp_add)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
266  | 
also have "\<dots> = exp (ln 2 * (Re s + 1)) ^ n" by (subst exp_of_nat_mult) simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
267  | 
also have "exp (ln 2 * (Re s + 1)) = 2 powr (Re s + 1)" by (simp add: powr_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
268  | 
finally show "2^n * norm (exp (?l (2^n) * s)) = (2 powr (Re s + 1)) ^ n" .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
269  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
270  | 
also have "summable \<dots> \<longleftrightarrow> 2 powr (Re s + 1) < 2 powr 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
271  | 
by (subst summable_geometric_iff) simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
272  | 
also have "\<dots> \<longleftrightarrow> Re s < -1" by (subst powr_less_cancel_iff) (simp, linarith)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
273  | 
finally show ?thesis .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
274  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
275  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
276  | 
theorem summable_complex_powr_iff:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
277  | 
assumes "Re s < -1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
278  | 
shows "summable (\<lambda>n. exp (of_real (ln (of_nat n)) * s))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
279  | 
by (rule summable_norm_cancel, subst abs_summable_complex_powr_iff) fact  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
280  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
281  | 
lemma summable_real_powr_iff: "summable (\<lambda>n. of_nat n powr s :: real) \<longleftrightarrow> s < -1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
282  | 
proof -  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
283  | 
from eventually_gt_at_top[of "0::nat"]  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
284  | 
have "summable (\<lambda>n. of_nat n powr s) \<longleftrightarrow> summable (\<lambda>n. exp (ln (of_nat n) * s))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
285  | 
by (intro summable_cong) (auto elim!: eventually_mono simp: powr_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
286  | 
also have "\<dots> \<longleftrightarrow> s < -1" using abs_summable_complex_powr_iff[of "of_real s"] by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
287  | 
finally show ?thesis .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
288  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
289  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
290  | 
lemma inverse_power_summable:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
291  | 
assumes s: "s \<ge> 2"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
292  | 
  shows "summable (\<lambda>n. inverse (of_nat n ^ s :: 'a :: {real_normed_div_algebra,banach}))"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
293  | 
proof (rule summable_norm_cancel, subst summable_cong)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
294  | 
from eventually_gt_at_top[of "0::nat"]  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
295  | 
show "eventually (\<lambda>n. norm (inverse (of_nat n ^ s:: 'a)) = real_of_nat n powr (-real s)) at_top"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
296  | 
by eventually_elim (simp add: norm_inverse norm_power powr_minus powr_realpow)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
297  | 
qed (insert s summable_real_powr_iff[of "-s"], simp_all)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
298  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
299  | 
lemma not_summable_harmonic: "\<not>summable (\<lambda>n. inverse (of_nat n) :: 'a :: real_normed_field)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
300  | 
proof  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
301  | 
assume "summable (\<lambda>n. inverse (of_nat n) :: 'a)"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
302  | 
hence "convergent (\<lambda>n. norm (of_real (\<Sum>k<n. inverse (of_nat k)) :: 'a))"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
303  | 
by (simp add: summable_iff_convergent convergent_norm)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
304  | 
hence "convergent (\<lambda>n. abs (\<Sum>k<n. inverse (of_nat k)) :: real)" by (simp only: norm_of_real)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
305  | 
also have "(\<lambda>n. abs (\<Sum>k<n. inverse (of_nat k)) :: real) = (\<lambda>n. \<Sum>k<n. inverse (of_nat k))"  | 
| 64267 | 306  | 
by (intro ext abs_of_nonneg sum_nonneg) auto  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
307  | 
also have "convergent \<dots> \<longleftrightarrow> summable (\<lambda>k. inverse (of_nat k) :: real)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
308  | 
by (simp add: summable_iff_convergent)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
309  | 
finally show False using summable_real_powr_iff[of "-1"] by (simp add: powr_minus)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
310  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
311  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
312  | 
|
| 
62085
 
5b7758af429e
Tuned approximations in Multivariate_Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
62072 
diff
changeset
 | 
313  | 
subsubsection \<open>Kummer's test\<close>  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
314  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
315  | 
theorem kummers_test_convergence:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
316  | 
fixes f p :: "nat \<Rightarrow> real"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
317  | 
assumes pos_f: "eventually (\<lambda>n. f n > 0) sequentially"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
318  | 
assumes nonneg_p: "eventually (\<lambda>n. p n \<ge> 0) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
319  | 
defines "l \<equiv> liminf (\<lambda>n. ereal (p n * f n / f (Suc n) - p (Suc n)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
320  | 
assumes l: "l > 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
321  | 
shows "summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
322  | 
unfolding summable_iff_convergent'  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
323  | 
proof -  | 
| 63040 | 324  | 
define r where "r = (if l = \<infinity> then 1 else real_of_ereal l / 2)"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
325  | 
from l have "r > 0 \<and> of_real r < l" by (cases l) (simp_all add: r_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
326  | 
hence r: "r > 0" "of_real r < l" by simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
327  | 
hence "eventually (\<lambda>n. p n * f n / f (Suc n) - p (Suc n) > r) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
328  | 
unfolding l_def by (force dest: less_LiminfD)  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
329  | 
moreover from pos_f have "eventually (\<lambda>n. f (Suc n) > 0) sequentially"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
330  | 
by (subst eventually_sequentially_Suc)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
331  | 
ultimately have "eventually (\<lambda>n. p n * f n - p (Suc n) * f (Suc n) > r * f (Suc n)) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
332  | 
by eventually_elim (simp add: field_simps)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
333  | 
from eventually_conj[OF pos_f eventually_conj[OF nonneg_p this]]  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
334  | 
obtain m where m: "\<And>n. n \<ge> m \<Longrightarrow> f n > 0" "\<And>n. n \<ge> m \<Longrightarrow> p n \<ge> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
335  | 
"\<And>n. n \<ge> m \<Longrightarrow> p n * f n - p (Suc n) * f (Suc n) > r * f (Suc n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
336  | 
unfolding eventually_at_top_linorder by blast  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
337  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
338  | 
let ?c = "(norm (\<Sum>k\<le>m. r * f k) + p m * f m) / r"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
339  | 
have "Bseq (\<lambda>n. (\<Sum>k\<le>n + Suc m. f k))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
340  | 
proof (rule BseqI')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
341  | 
fix k :: nat  | 
| 63040 | 342  | 
define n where "n = k + Suc m"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
343  | 
have n: "n > m" by (simp add: n_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
344  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
345  | 
from r have "r * norm (\<Sum>k\<le>n. f k) = norm (\<Sum>k\<le>n. r * f k)"  | 
| 64267 | 346  | 
by (simp add: sum_distrib_left[symmetric] abs_mult)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
347  | 
    also from n have "{..n} = {..m} \<union> {Suc m..n}" by auto
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
348  | 
    hence "(\<Sum>k\<le>n. r * f k) = (\<Sum>k\<in>{..m} \<union> {Suc m..n}. r * f k)" by (simp only:)
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
349  | 
also have "\<dots> = (\<Sum>k\<le>m. r * f k) + (\<Sum>k=Suc m..n. r * f k)"  | 
| 64267 | 350  | 
by (subst sum.union_disjoint) auto  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
351  | 
also have "norm \<dots> \<le> norm (\<Sum>k\<le>m. r * f k) + norm (\<Sum>k=Suc m..n. r * f k)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
352  | 
by (rule norm_triangle_ineq)  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
353  | 
also from r less_imp_le[OF m(1)] have "(\<Sum>k=Suc m..n. r * f k) \<ge> 0"  | 
| 64267 | 354  | 
by (intro sum_nonneg) auto  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
355  | 
hence "norm (\<Sum>k=Suc m..n. r * f k) = (\<Sum>k=Suc m..n. r * f k)" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
356  | 
also have "(\<Sum>k=Suc m..n. r * f k) = (\<Sum>k=m..<n. r * f (Suc k))"  | 
| 
70113
 
c8deb8ba6d05
Fixing the main Homology theory; also moving a lot of sum/prod lemmas into their generic context
 
paulson <lp15@cam.ac.uk> 
parents: 
70097 
diff
changeset
 | 
357  | 
by (subst sum.shift_bounds_Suc_ivl [symmetric])  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
358  | 
(simp only: atLeastLessThanSuc_atLeastAtMost)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
359  | 
also from m have "\<dots> \<le> (\<Sum>k=m..<n. p k * f k - p (Suc k) * f (Suc k))"  | 
| 64267 | 360  | 
by (intro sum_mono[OF less_imp_le]) simp_all  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
361  | 
also have "\<dots> = -(\<Sum>k=m..<n. p (Suc k) * f (Suc k) - p k * f k)"  | 
| 64267 | 362  | 
by (simp add: sum_negf [symmetric] algebra_simps)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
363  | 
also from n have "\<dots> = p m * f m - p n * f n"  | 
| 64267 | 364  | 
by (cases n, simp, simp only: atLeastLessThanSuc_atLeastAtMost, subst sum_Suc_diff) simp_all  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
365  | 
also from less_imp_le[OF m(1)] m(2) n have "\<dots> \<le> p m * f m" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
366  | 
finally show "norm (\<Sum>k\<le>n. f k) \<le> (norm (\<Sum>k\<le>m. r * f k) + p m * f m) / r" using r  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
367  | 
by (subst pos_le_divide_eq[OF r(1)]) (simp only: mult_ac)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
368  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
369  | 
moreover have "(\<Sum>k\<le>n. f k) \<le> (\<Sum>k\<le>n'. f k)" if "Suc m \<le> n" "n \<le> n'" for n n'  | 
| 64267 | 370  | 
using less_imp_le[OF m(1)] that by (intro sum_mono2) auto  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
371  | 
ultimately show "convergent (\<lambda>n. \<Sum>k\<le>n. f k)" by (rule Bseq_monoseq_convergent'_inc)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
372  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
373  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
374  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
375  | 
theorem kummers_test_divergence:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
376  | 
fixes f p :: "nat \<Rightarrow> real"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
377  | 
assumes pos_f: "eventually (\<lambda>n. f n > 0) sequentially"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
378  | 
assumes pos_p: "eventually (\<lambda>n. p n > 0) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
379  | 
assumes divergent_p: "\<not>summable (\<lambda>n. inverse (p n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
380  | 
defines "l \<equiv> limsup (\<lambda>n. ereal (p n * f n / f (Suc n) - p (Suc n)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
381  | 
assumes l: "l < 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
382  | 
shows "\<not>summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
383  | 
proof  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
384  | 
assume "summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
385  | 
from eventually_conj[OF pos_f eventually_conj[OF pos_p Limsup_lessD[OF l[unfolded l_def]]]]  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
386  | 
obtain N where N: "\<And>n. n \<ge> N \<Longrightarrow> p n > 0" "\<And>n. n \<ge> N \<Longrightarrow> f n > 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
387  | 
"\<And>n. n \<ge> N \<Longrightarrow> p n * f n / f (Suc n) - p (Suc n) < 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
388  | 
by (auto simp: eventually_at_top_linorder)  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
389  | 
hence A: "p n * f n < p (Suc n) * f (Suc n)" if "n \<ge> N" for n using that N[of n] N[of "Suc n"]  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
390  | 
by (simp add: field_simps)  | 
| 
65578
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
391  | 
have B: "p n * f n \<ge> p N * f N" if "n \<ge> N" for n using that and A  | 
| 
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
392  | 
by (induction n rule: dec_induct) (auto intro!: less_imp_le elim!: order.trans)  | 
| 
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
393  | 
have "eventually (\<lambda>n. norm (p N * f N * inverse (p n)) \<le> f n) sequentially"  | 
| 
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
394  | 
apply (rule eventually_mono [OF eventually_ge_at_top[of N]])  | 
| 
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
395  | 
using B N by (auto simp: field_simps abs_of_pos)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
396  | 
from this and \<open>summable f\<close> have "summable (\<lambda>n. p N * f N * inverse (p n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
397  | 
by (rule summable_comparison_test_ev)  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
398  | 
from summable_mult[OF this, of "inverse (p N * f N)"] N[OF le_refl]  | 
| 
70817
 
dd675800469d
dedicated fact collections for algebraic simplification rules potentially splitting goals
 
haftmann 
parents: 
70136 
diff
changeset
 | 
399  | 
have "summable (\<lambda>n. inverse (p n))" by (simp add: field_split_simps)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
400  | 
with divergent_p show False by contradiction  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
401  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
402  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
403  | 
|
| 
62085
 
5b7758af429e
Tuned approximations in Multivariate_Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
62072 
diff
changeset
 | 
404  | 
subsubsection \<open>Ratio test\<close>  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
405  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
406  | 
theorem ratio_test_convergence:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
407  | 
fixes f :: "nat \<Rightarrow> real"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
408  | 
assumes pos_f: "eventually (\<lambda>n. f n > 0) sequentially"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
409  | 
defines "l \<equiv> liminf (\<lambda>n. ereal (f n / f (Suc n)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
410  | 
assumes l: "l > 1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
411  | 
shows "summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
412  | 
proof (rule kummers_test_convergence[OF pos_f])  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
413  | 
note l  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
414  | 
also have "l = liminf (\<lambda>n. ereal (f n / f (Suc n) - 1)) + 1"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
415  | 
by (subst Liminf_add_ereal_right[symmetric]) (simp_all add: minus_ereal_def l_def one_ereal_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
416  | 
finally show "liminf (\<lambda>n. ereal (1 * f n / f (Suc n) - 1)) > 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
417  | 
by (cases "liminf (\<lambda>n. ereal (1 * f n / f (Suc n) - 1))") simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
418  | 
qed simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
419  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
420  | 
theorem ratio_test_divergence:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
421  | 
fixes f :: "nat \<Rightarrow> real"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
422  | 
assumes pos_f: "eventually (\<lambda>n. f n > 0) sequentially"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
423  | 
defines "l \<equiv> limsup (\<lambda>n. ereal (f n / f (Suc n)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
424  | 
assumes l: "l < 1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
425  | 
shows "\<not>summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
426  | 
proof (rule kummers_test_divergence[OF pos_f])  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
427  | 
have "limsup (\<lambda>n. ereal (f n / f (Suc n) - 1)) + 1 = l"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
428  | 
by (subst Limsup_add_ereal_right[symmetric]) (simp_all add: minus_ereal_def l_def one_ereal_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
429  | 
also note l  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
430  | 
finally show "limsup (\<lambda>n. ereal (1 * f n / f (Suc n) - 1)) < 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
431  | 
by (cases "limsup (\<lambda>n. ereal (1 * f n / f (Suc n) - 1))") simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
432  | 
qed (simp_all add: summable_const_iff)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
433  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
434  | 
|
| 
62085
 
5b7758af429e
Tuned approximations in Multivariate_Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
62072 
diff
changeset
 | 
435  | 
subsubsection \<open>Raabe's test\<close>  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
436  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
437  | 
theorem raabes_test_convergence:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
438  | 
fixes f :: "nat \<Rightarrow> real"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
439  | 
assumes pos: "eventually (\<lambda>n. f n > 0) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
440  | 
defines "l \<equiv> liminf (\<lambda>n. ereal (of_nat n * (f n / f (Suc n) - 1)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
441  | 
assumes l: "l > 1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
442  | 
shows "summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
443  | 
proof (rule kummers_test_convergence)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
444  | 
let ?l' = "liminf (\<lambda>n. ereal (of_nat n * f n / f (Suc n) - of_nat (Suc n)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
445  | 
have "1 < l" by fact  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
446  | 
also have "l = liminf (\<lambda>n. ereal (of_nat n * f n / f (Suc n) - of_nat (Suc n)) + 1)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
447  | 
by (simp add: l_def algebra_simps)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
448  | 
also have "\<dots> = ?l' + 1" by (subst Liminf_add_ereal_right) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
449  | 
finally show "?l' > 0" by (cases ?l') (simp_all add: algebra_simps)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
450  | 
qed (simp_all add: pos)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
451  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
452  | 
theorem raabes_test_divergence:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
453  | 
fixes f :: "nat \<Rightarrow> real"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
454  | 
assumes pos: "eventually (\<lambda>n. f n > 0) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
455  | 
defines "l \<equiv> limsup (\<lambda>n. ereal (of_nat n * (f n / f (Suc n) - 1)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
456  | 
assumes l: "l < 1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
457  | 
shows "\<not>summable f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
458  | 
proof (rule kummers_test_divergence)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
459  | 
let ?l' = "limsup (\<lambda>n. ereal (of_nat n * f n / f (Suc n) - of_nat (Suc n)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
460  | 
note l  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
461  | 
also have "l = limsup (\<lambda>n. ereal (of_nat n * f n / f (Suc n) - of_nat (Suc n)) + 1)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
462  | 
by (simp add: l_def algebra_simps)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
463  | 
also have "\<dots> = ?l' + 1" by (subst Limsup_add_ereal_right) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
464  | 
finally show "?l' < 0" by (cases ?l') (simp_all add: algebra_simps)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
465  | 
qed (insert pos eventually_gt_at_top[of "0::nat"] not_summable_harmonic, simp_all)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
466  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
467  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
468  | 
subsection \<open>Radius of convergence\<close>  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
469  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
470  | 
text \<open>  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
471  | 
The radius of convergence of a power series. This value always exists, ranges from  | 
| 69597 | 472  | 
\<^term>\<open>0::ereal\<close> to \<^term>\<open>\<infinity>::ereal\<close>, and the power series is guaranteed to converge for  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
473  | 
all inputs with a norm that is smaller than that radius and to diverge for all inputs with a  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
474  | 
norm that is greater.  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
475  | 
\<close>  | 
| 70136 | 476  | 
definition\<^marker>\<open>tag important\<close> conv_radius :: "(nat \<Rightarrow> 'a :: banach) \<Rightarrow> ereal" where  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
477  | 
"conv_radius f = inverse (limsup (\<lambda>n. ereal (root n (norm (f n)))))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
478  | 
|
| 
66466
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
479  | 
lemma conv_radius_cong_weak [cong]: "(\<And>n. f n = g n) \<Longrightarrow> conv_radius f = conv_radius g"  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
480  | 
by (drule ext) simp_all  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
481  | 
|
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
482  | 
lemma conv_radius_nonneg: "conv_radius f \<ge> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
483  | 
proof -  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
484  | 
have "0 = limsup (\<lambda>n. 0)" by (subst Limsup_const) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
485  | 
also have "\<dots> \<le> limsup (\<lambda>n. ereal (root n (norm (f n))))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
486  | 
by (intro Limsup_mono) (simp_all add: real_root_ge_zero)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
487  | 
finally show ?thesis  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
488  | 
unfolding conv_radius_def by (auto simp: ereal_inverse_nonneg_iff)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
489  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
490  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
491  | 
lemma conv_radius_zero [simp]: "conv_radius (\<lambda>_. 0) = \<infinity>"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
492  | 
by (auto simp: conv_radius_def zero_ereal_def [symmetric] Limsup_const)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
493  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
494  | 
lemma conv_radius_altdef:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
495  | 
"conv_radius f = liminf (\<lambda>n. inverse (ereal (root n (norm (f n)))))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
496  | 
by (subst Liminf_inverse_ereal) (simp_all add: real_root_ge_zero conv_radius_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
497  | 
|
| 
66466
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
498  | 
lemma conv_radius_cong':  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
499  | 
assumes "eventually (\<lambda>x. f x = g x) sequentially"  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
500  | 
shows "conv_radius f = conv_radius g"  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
501  | 
unfolding conv_radius_altdef by (intro Liminf_eq eventually_mono [OF assms]) auto  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
502  | 
|
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
503  | 
lemma conv_radius_cong:  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
504  | 
assumes "eventually (\<lambda>x. norm (f x) = norm (g x)) sequentially"  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
505  | 
shows "conv_radius f = conv_radius g"  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
506  | 
unfolding conv_radius_altdef by (intro Liminf_eq eventually_mono [OF assms]) auto  | 
| 
 
aec5d9c88d69
More lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66456 
diff
changeset
 | 
507  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
508  | 
theorem abs_summable_in_conv_radius:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
509  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
510  | 
assumes "ereal (norm z) < conv_radius f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
511  | 
shows "summable (\<lambda>n. norm (f n * z ^ n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
512  | 
proof (rule root_test_convergence')  | 
| 63040 | 513  | 
define l where "l = limsup (\<lambda>n. ereal (root n (norm (f n))))"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
514  | 
have "0 = limsup (\<lambda>n. 0)" by (simp add: Limsup_const)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
515  | 
also have "... \<le> l" unfolding l_def by (intro Limsup_mono) (simp_all add: real_root_ge_zero)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
516  | 
finally have l_nonneg: "l \<ge> 0" .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
517  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
518  | 
have "limsup (\<lambda>n. root n (norm (f n * z^n))) = l * ereal (norm z)" unfolding l_def  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
519  | 
by (rule limsup_root_powser)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
520  | 
also from l_nonneg consider "l = 0" | "l = \<infinity>" | "\<exists>l'. l = ereal l' \<and> l' > 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
521  | 
by (cases "l") (auto simp: less_le)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
522  | 
hence "l * ereal (norm z) < 1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
523  | 
proof cases  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
524  | 
assume "l = \<infinity>"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
525  | 
hence "conv_radius f = 0" unfolding conv_radius_def l_def by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
526  | 
with assms show ?thesis by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
527  | 
next  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
528  | 
assume "\<exists>l'. l = ereal l' \<and> l' > 0"  | 
| 74362 | 529  | 
then obtain l' where l': "l = ereal l'" "0 < l'" by auto  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
530  | 
hence "l \<noteq> \<infinity>" by auto  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
531  | 
have "l * ereal (norm z) < l * conv_radius f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
532  | 
by (intro ereal_mult_strict_left_mono) (simp_all add: l' assms)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
533  | 
also have "conv_radius f = inverse l" by (simp add: conv_radius_def l_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
534  | 
also from l' have "l * inverse l = 1" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
535  | 
finally show ?thesis .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
536  | 
qed simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
537  | 
finally show "limsup (\<lambda>n. ereal (root n (norm (norm (f n * z ^ n))))) < 1" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
538  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
539  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
540  | 
lemma summable_in_conv_radius:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
541  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
542  | 
assumes "ereal (norm z) < conv_radius f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
543  | 
shows "summable (\<lambda>n. f n * z ^ n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
544  | 
by (rule summable_norm_cancel, rule abs_summable_in_conv_radius) fact+  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
545  | 
|
| 
68643
 
3db6c9338ec1
Tagged some more files in HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
68532 
diff
changeset
 | 
546  | 
theorem not_summable_outside_conv_radius:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
547  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
548  | 
assumes "ereal (norm z) > conv_radius f"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
549  | 
shows "\<not>summable (\<lambda>n. f n * z ^ n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
550  | 
proof (rule root_test_divergence)  | 
| 63040 | 551  | 
define l where "l = limsup (\<lambda>n. ereal (root n (norm (f n))))"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
552  | 
have "0 = limsup (\<lambda>n. 0)" by (simp add: Limsup_const)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
553  | 
also have "... \<le> l" unfolding l_def by (intro Limsup_mono) (simp_all add: real_root_ge_zero)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
554  | 
finally have l_nonneg: "l \<ge> 0" .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
555  | 
from assms have l_nz: "l \<noteq> 0" unfolding conv_radius_def l_def by auto  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
556  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
557  | 
have "limsup (\<lambda>n. ereal (root n (norm (f n * z^n)))) = l * ereal (norm z)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
558  | 
unfolding l_def by (rule limsup_root_powser)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
559  | 
also have "... > 1"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
560  | 
proof (cases l)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
561  | 
assume "l = \<infinity>"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
562  | 
with assms conv_radius_nonneg[of f] show ?thesis  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
563  | 
by (auto simp: zero_ereal_def[symmetric])  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
564  | 
next  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
565  | 
fix l' assume l': "l = ereal l'"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
566  | 
from l_nonneg l_nz have "1 = l * inverse l" by (auto simp: l' field_simps)  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
567  | 
also from l_nz have "inverse l = conv_radius f"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
568  | 
unfolding l_def conv_radius_def by auto  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
569  | 
also from l' l_nz l_nonneg assms have "l * \<dots> < l * ereal (norm z)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
570  | 
by (intro ereal_mult_strict_left_mono) (auto simp: l')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
571  | 
finally show ?thesis .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
572  | 
qed (insert l_nonneg, simp_all)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
573  | 
finally show "limsup (\<lambda>n. ereal (root n (norm (f n * z^n)))) > 1" .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
574  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
575  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
576  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
577  | 
lemma conv_radius_geI:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
578  | 
  assumes "summable (\<lambda>n. f n * z ^ n :: 'a :: {banach, real_normed_div_algebra})"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
579  | 
shows "conv_radius f \<ge> norm z"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
580  | 
using not_summable_outside_conv_radius[of f z] assms by (force simp: not_le[symmetric])  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
581  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
582  | 
lemma conv_radius_leI:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
583  | 
  assumes "\<not>summable (\<lambda>n. norm (f n * z ^ n :: 'a :: {banach, real_normed_div_algebra}))"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
584  | 
shows "conv_radius f \<le> norm z"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
585  | 
using abs_summable_in_conv_radius[of z f] assms by (force simp: not_le[symmetric])  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
586  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
587  | 
lemma conv_radius_leI':  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
588  | 
  assumes "\<not>summable (\<lambda>n. f n * z ^ n :: 'a :: {banach, real_normed_div_algebra})"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
589  | 
shows "conv_radius f \<le> norm z"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
590  | 
using summable_in_conv_radius[of z f] assms by (force simp: not_le[symmetric])  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
591  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
592  | 
lemma conv_radius_geI_ex:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
593  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
594  | 
assumes "\<And>r. 0 < r \<Longrightarrow> ereal r < R \<Longrightarrow> \<exists>z. norm z = r \<and> summable (\<lambda>n. f n * z^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
595  | 
shows "conv_radius f \<ge> R"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
596  | 
proof (rule linorder_cases[of "conv_radius f" R])  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
597  | 
assume R: "conv_radius f < R"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
598  | 
with conv_radius_nonneg[of f] obtain conv_radius'  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
599  | 
where [simp]: "conv_radius f = ereal conv_radius'"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
600  | 
by (cases "conv_radius f") simp_all  | 
| 63040 | 601  | 
define r where "r = (if R = \<infinity> then conv_radius' + 1 else (real_of_ereal R + conv_radius') / 2)"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
602  | 
from R conv_radius_nonneg[of f] have "0 < r \<and> ereal r < R \<and> ereal r > conv_radius f"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
603  | 
unfolding r_def by (cases R) (auto simp: r_def field_simps)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
604  | 
with assms(1)[of r] obtain z where "norm z > conv_radius f" "summable (\<lambda>n. f n * z^n)" by auto  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
605  | 
with not_summable_outside_conv_radius[of f z] show ?thesis by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
606  | 
qed simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
607  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
608  | 
lemma conv_radius_geI_ex':  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
609  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
610  | 
assumes "\<And>r. 0 < r \<Longrightarrow> ereal r < R \<Longrightarrow> summable (\<lambda>n. f n * of_real r^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
611  | 
shows "conv_radius f \<ge> R"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
612  | 
proof (rule conv_radius_geI_ex)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
613  | 
fix r assume "0 < r" "ereal r < R"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
614  | 
with assms[of r] show "\<exists>z. norm z = r \<and> summable (\<lambda>n. f n * z ^ n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
615  | 
by (intro exI[of _ "of_real r :: 'a"]) auto  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
616  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
617  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
618  | 
lemma conv_radius_leI_ex:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
619  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
620  | 
assumes "R \<ge> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
621  | 
assumes "\<And>r. 0 < r \<Longrightarrow> ereal r > R \<Longrightarrow> \<exists>z. norm z = r \<and> \<not>summable (\<lambda>n. norm (f n * z^n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
622  | 
shows "conv_radius f \<le> R"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
623  | 
proof (rule linorder_cases[of "conv_radius f" R])  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
624  | 
assume R: "conv_radius f > R"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
625  | 
from R assms(1) obtain R' where R': "R = ereal R'" by (cases R) simp_all  | 
| 63040 | 626  | 
define r where  | 
627  | 
"r = (if conv_radius f = \<infinity> then R' + 1 else (R' + real_of_ereal (conv_radius f)) / 2)"  | 
|
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
628  | 
from R conv_radius_nonneg[of f] have "r > R \<and> r < conv_radius f" unfolding r_def  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
629  | 
by (cases "conv_radius f") (auto simp: r_def field_simps R')  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
630  | 
with assms(1) assms(2)[of r] R'  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
631  | 
obtain z where "norm z < conv_radius f" "\<not>summable (\<lambda>n. norm (f n * z^n))" by auto  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
632  | 
with abs_summable_in_conv_radius[of z f] show ?thesis by auto  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
633  | 
qed simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
634  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
635  | 
lemma conv_radius_leI_ex':  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
636  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
637  | 
assumes "R \<ge> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
638  | 
assumes "\<And>r. 0 < r \<Longrightarrow> ereal r > R \<Longrightarrow> \<not>summable (\<lambda>n. f n * of_real r^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
639  | 
shows "conv_radius f \<le> R"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
640  | 
proof (rule conv_radius_leI_ex)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
641  | 
fix r assume "0 < r" "ereal r > R"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
642  | 
with assms(2)[of r] show "\<exists>z. norm z = r \<and> \<not>summable (\<lambda>n. norm (f n * z ^ n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
643  | 
by (intro exI[of _ "of_real r :: 'a"]) (auto dest: summable_norm_cancel)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
644  | 
qed fact+  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
645  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
646  | 
lemma conv_radius_eqI:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
647  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
648  | 
assumes "R \<ge> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
649  | 
assumes "\<And>r. 0 < r \<Longrightarrow> ereal r < R \<Longrightarrow> \<exists>z. norm z = r \<and> summable (\<lambda>n. f n * z^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
650  | 
assumes "\<And>r. 0 < r \<Longrightarrow> ereal r > R \<Longrightarrow> \<exists>z. norm z = r \<and> \<not>summable (\<lambda>n. norm (f n * z^n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
651  | 
shows "conv_radius f = R"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
652  | 
by (intro antisym conv_radius_geI_ex conv_radius_leI_ex assms)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
653  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
654  | 
lemma conv_radius_eqI':  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
655  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
656  | 
assumes "R \<ge> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
657  | 
assumes "\<And>r. 0 < r \<Longrightarrow> ereal r < R \<Longrightarrow> summable (\<lambda>n. f n * (of_real r)^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
658  | 
assumes "\<And>r. 0 < r \<Longrightarrow> ereal r > R \<Longrightarrow> \<not>summable (\<lambda>n. norm (f n * (of_real r)^n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
659  | 
shows "conv_radius f = R"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
660  | 
proof (intro conv_radius_eqI[OF assms(1)])  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
661  | 
fix r assume "0 < r" "ereal r < R" with assms(2)[OF this]  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
662  | 
show "\<exists>z. norm z = r \<and> summable (\<lambda>n. f n * z ^ n)" by force  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
663  | 
next  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
664  | 
fix r assume "0 < r" "ereal r > R" with assms(3)[OF this]  | 
| 
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
665  | 
show "\<exists>z. norm z = r \<and> \<not>summable (\<lambda>n. norm (f n * z ^ n))" by force  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
666  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
667  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
668  | 
lemma conv_radius_zeroI:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
669  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach,real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
670  | 
assumes "\<And>z. z \<noteq> 0 \<Longrightarrow> \<not>summable (\<lambda>n. f n * z^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
671  | 
shows "conv_radius f = 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
672  | 
proof (rule ccontr)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
673  | 
assume "conv_radius f \<noteq> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
674  | 
with conv_radius_nonneg[of f] have pos: "conv_radius f > 0" by simp  | 
| 63040 | 675  | 
define r where "r = (if conv_radius f = \<infinity> then 1 else real_of_ereal (conv_radius f) / 2)"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
676  | 
from pos have r: "ereal r > 0 \<and> ereal r < conv_radius f"  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
677  | 
by (cases "conv_radius f") (simp_all add: r_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
678  | 
hence "summable (\<lambda>n. f n * of_real r ^ n)" by (intro summable_in_conv_radius) simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
679  | 
moreover from r and assms[of "of_real r"] have "\<not>summable (\<lambda>n. f n * of_real r ^ n)" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
680  | 
ultimately show False by contradiction  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
681  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
682  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
683  | 
lemma conv_radius_inftyI':  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
684  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach,real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
685  | 
assumes "\<And>r. r > c \<Longrightarrow> \<exists>z. norm z = r \<and> summable (\<lambda>n. f n * z^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
686  | 
shows "conv_radius f = \<infinity>"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
687  | 
proof -  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
688  | 
  {
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
689  | 
fix r :: real  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
690  | 
have "max r (c + 1) > c" by (auto simp: max_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
691  | 
from assms[OF this] obtain z where "norm z = max r (c + 1)" "summable (\<lambda>n. f n * z^n)" by blast  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
692  | 
from conv_radius_geI[OF this(2)] this(1) have "conv_radius f \<ge> r" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
693  | 
}  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
694  | 
from this[of "real_of_ereal (conv_radius f + 1)"] show "conv_radius f = \<infinity>"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
695  | 
by (cases "conv_radius f") simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
696  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
697  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
698  | 
lemma conv_radius_inftyI:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
699  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach,real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
700  | 
assumes "\<And>r. \<exists>z. norm z = r \<and> summable (\<lambda>n. f n * z^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
701  | 
shows "conv_radius f = \<infinity>"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
702  | 
using assms by (rule conv_radius_inftyI')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
703  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
704  | 
lemma conv_radius_inftyI'':  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
705  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach,real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
706  | 
assumes "\<And>z. summable (\<lambda>n. f n * z^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
707  | 
shows "conv_radius f = \<infinity>"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
708  | 
proof (rule conv_radius_inftyI')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
709  | 
fix r :: real assume "r > 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
710  | 
with assms show "\<exists>z. norm z = r \<and> summable (\<lambda>n. f n * z^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
711  | 
by (intro exI[of _ "of_real r"]) simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
712  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
713  | 
|
| 
66456
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
714  | 
lemma conv_radius_conv_Sup:  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
715  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
716  | 
  shows "conv_radius f = Sup {r. \<forall>z. ereal (norm z) < r \<longrightarrow> summable (\<lambda>n. f n * z ^ n)}"
 | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
717  | 
proof (rule Sup_eqI [symmetric], goal_cases)  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
718  | 
case (1 r)  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
719  | 
thus ?case  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
720  | 
by (intro conv_radius_geI_ex') auto  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
721  | 
next  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
722  | 
case (2 r)  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
723  | 
from 2[of 0] have r: "r \<ge> 0" by auto  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
724  | 
show ?case  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
725  | 
proof (intro conv_radius_leI_ex' r)  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
726  | 
fix R assume R: "R > 0" "ereal R > r"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
727  | 
with r obtain r' where [simp]: "r = ereal r'" by (cases r) auto  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
728  | 
show "\<not>summable (\<lambda>n. f n * of_real R ^ n)"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
729  | 
proof  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
730  | 
assume *: "summable (\<lambda>n. f n * of_real R ^ n)"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
731  | 
define R' where "R' = (R + r') / 2"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
732  | 
from R have R': "R' > r'" "R' < R" by (simp_all add: R'_def)  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
733  | 
hence "\<forall>z. norm z < R' \<longrightarrow> summable (\<lambda>n. f n * z ^ n)"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
734  | 
using powser_inside[OF *] by auto  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
735  | 
from 2[of R'] and this have "R' \<le> r'" by auto  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
736  | 
with \<open>R' > r'\<close> show False by simp  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
737  | 
qed  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
738  | 
qed  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
739  | 
qed  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
740  | 
|
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
741  | 
lemma conv_radius_shift:  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
742  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach, real_normed_div_algebra}"
 | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
743  | 
shows "conv_radius (\<lambda>n. f (n + m)) = conv_radius f"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
744  | 
unfolding conv_radius_conv_Sup summable_powser_ignore_initial_segment ..  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
745  | 
|
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
746  | 
lemma conv_radius_norm [simp]: "conv_radius (\<lambda>x. norm (f x)) = conv_radius f"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
747  | 
by (simp add: conv_radius_def)  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
748  | 
|
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
749  | 
lemma conv_radius_ratio_limit_ereal:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
750  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach,real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
751  | 
assumes nz: "eventually (\<lambda>n. f n \<noteq> 0) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
752  | 
assumes lim: "(\<lambda>n. ereal (norm (f n) / norm (f (Suc n)))) \<longlonglongrightarrow> c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
753  | 
shows "conv_radius f = c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
754  | 
proof (rule conv_radius_eqI')  | 
| 
68532
 
f8b98d31ad45
Incorporating new/strengthened proofs from Library and AFP entries
 
paulson <lp15@cam.ac.uk> 
parents: 
66672 
diff
changeset
 | 
755  | 
show "c \<ge> 0" by (intro Lim_bounded2[OF lim]) simp_all  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
756  | 
next  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
757  | 
fix r assume r: "0 < r" "ereal r < c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
758  | 
let ?l = "liminf (\<lambda>n. ereal (norm (f n * of_real r ^ n) / norm (f (Suc n) * of_real r ^ Suc n)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
759  | 
have "?l = liminf (\<lambda>n. ereal (norm (f n) / (norm (f (Suc n)))) * ereal (inverse r))"  | 
| 
70817
 
dd675800469d
dedicated fact collections for algebraic simplification rules potentially splitting goals
 
haftmann 
parents: 
70136 
diff
changeset
 | 
760  | 
using r by (simp add: norm_mult norm_power field_split_simps)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
761  | 
also from r have "\<dots> = liminf (\<lambda>n. ereal (norm (f n) / (norm (f (Suc n))))) * ereal (inverse r)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
762  | 
by (intro Liminf_ereal_mult_right) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
763  | 
also have "liminf (\<lambda>n. ereal (norm (f n) / (norm (f (Suc n))))) = c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
764  | 
by (intro lim_imp_Liminf lim) simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
765  | 
finally have l: "?l = c * ereal (inverse r)" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
766  | 
from r have l': "c * ereal (inverse r) > 1" by (cases c) (simp_all add: field_simps)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
767  | 
show "summable (\<lambda>n. f n * of_real r^n)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
768  | 
by (rule summable_norm_cancel, rule ratio_test_convergence)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
769  | 
(insert r nz l l', auto elim!: eventually_mono)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
770  | 
next  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
771  | 
fix r assume r: "0 < r" "ereal r > c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
772  | 
let ?l = "limsup (\<lambda>n. ereal (norm (f n * of_real r ^ n) / norm (f (Suc n) * of_real r ^ Suc n)))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
773  | 
have "?l = limsup (\<lambda>n. ereal (norm (f n) / (norm (f (Suc n)))) * ereal (inverse r))"  | 
| 
70817
 
dd675800469d
dedicated fact collections for algebraic simplification rules potentially splitting goals
 
haftmann 
parents: 
70136 
diff
changeset
 | 
774  | 
using r by (simp add: norm_mult norm_power field_split_simps)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
775  | 
also from r have "\<dots> = limsup (\<lambda>n. ereal (norm (f n) / (norm (f (Suc n))))) * ereal (inverse r)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
776  | 
by (intro Limsup_ereal_mult_right) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
777  | 
also have "limsup (\<lambda>n. ereal (norm (f n) / (norm (f (Suc n))))) = c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
778  | 
by (intro lim_imp_Limsup lim) simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
779  | 
finally have l: "?l = c * ereal (inverse r)" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
780  | 
from r have l': "c * ereal (inverse r) < 1" by (cases c) (simp_all add: field_simps)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
781  | 
show "\<not>summable (\<lambda>n. norm (f n * of_real r^n))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
782  | 
by (rule ratio_test_divergence) (insert r nz l l', auto elim!: eventually_mono)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
783  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
784  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
785  | 
lemma conv_radius_ratio_limit_ereal_nonzero:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
786  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach,real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
787  | 
assumes nz: "c \<noteq> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
788  | 
assumes lim: "(\<lambda>n. ereal (norm (f n) / norm (f (Suc n)))) \<longlonglongrightarrow> c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
789  | 
shows "conv_radius f = c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
790  | 
proof (rule conv_radius_ratio_limit_ereal[OF _ lim], rule ccontr)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
791  | 
assume "\<not>eventually (\<lambda>n. f n \<noteq> 0) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
792  | 
hence "frequently (\<lambda>n. f n = 0) sequentially" by (simp add: frequently_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
793  | 
hence "frequently (\<lambda>n. ereal (norm (f n) / norm (f (Suc n))) = 0) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
794  | 
by (force elim!: frequently_elim1)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
795  | 
hence "c = 0" by (intro limit_frequently_eq[OF _ _ lim]) auto  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
796  | 
with nz show False by contradiction  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
797  | 
qed  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
798  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
799  | 
lemma conv_radius_ratio_limit:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
800  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach,real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
801  | 
assumes "c' = ereal c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
802  | 
assumes nz: "eventually (\<lambda>n. f n \<noteq> 0) sequentially"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
803  | 
assumes lim: "(\<lambda>n. norm (f n) / norm (f (Suc n))) \<longlonglongrightarrow> c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
804  | 
shows "conv_radius f = c'"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
805  | 
using assms by (intro conv_radius_ratio_limit_ereal) simp_all  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
806  | 
|
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
807  | 
lemma conv_radius_ratio_limit_nonzero:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
808  | 
  fixes f :: "nat \<Rightarrow> 'a :: {banach,real_normed_div_algebra}"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
809  | 
assumes "c' = ereal c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
810  | 
assumes nz: "c \<noteq> 0"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
811  | 
assumes lim: "(\<lambda>n. norm (f n) / norm (f (Suc n))) \<longlonglongrightarrow> c"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
812  | 
shows "conv_radius f = c'"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
813  | 
using assms by (intro conv_radius_ratio_limit_ereal_nonzero) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
814  | 
|
| 
66456
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
815  | 
lemma conv_radius_cmult_left:  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
816  | 
  assumes "c \<noteq> (0 :: 'a :: {banach, real_normed_div_algebra})"
 | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
817  | 
shows "conv_radius (\<lambda>n. c * f n) = conv_radius f"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
818  | 
proof -  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
819  | 
have "conv_radius (\<lambda>n. c * f n) =  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
820  | 
inverse (limsup (\<lambda>n. ereal (root n (norm (c * f n)))))"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
821  | 
unfolding conv_radius_def ..  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
822  | 
also have "(\<lambda>n. ereal (root n (norm (c * f n)))) =  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
823  | 
(\<lambda>n. ereal (root n (norm c)) * ereal (root n (norm (f n))))"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
824  | 
by (rule ext) (auto simp: norm_mult real_root_mult)  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
825  | 
also have "limsup \<dots> = ereal 1 * limsup (\<lambda>n. ereal (root n (norm (f n))))"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
826  | 
using assms by (intro ereal_limsup_lim_mult tendsto_ereal LIMSEQ_root_const) auto  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
827  | 
also have "inverse \<dots> = conv_radius f" by (simp add: conv_radius_def)  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
828  | 
finally show ?thesis .  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
829  | 
qed  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
830  | 
|
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
831  | 
lemma conv_radius_cmult_right:  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
832  | 
  assumes "c \<noteq> (0 :: 'a :: {banach, real_normed_div_algebra})"
 | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
833  | 
shows "conv_radius (\<lambda>n. f n * c) = conv_radius f"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
834  | 
proof -  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
835  | 
have "conv_radius (\<lambda>n. f n * c) = conv_radius (\<lambda>n. c * f n)"  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
836  | 
by (simp add: conv_radius_def norm_mult mult.commute)  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
837  | 
with conv_radius_cmult_left[OF assms, of f] show ?thesis by simp  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
838  | 
qed  | 
| 
 
621897f47fab
Various lemmas for HOL-Analysis
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
66453 
diff
changeset
 | 
839  | 
|
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
840  | 
lemma conv_radius_mult_power:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
841  | 
  assumes "c \<noteq> (0 :: 'a :: {real_normed_div_algebra,banach})"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
842  | 
shows "conv_radius (\<lambda>n. c ^ n * f n) = conv_radius f / ereal (norm c)"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
843  | 
proof -  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
844  | 
have "limsup (\<lambda>n. ereal (root n (norm (c ^ n * f n)))) =  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
845  | 
limsup (\<lambda>n. ereal (norm c) * ereal (root n (norm (f n))))"  | 
| 
65578
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
846  | 
by (intro Limsup_eq eventually_mono [OF eventually_gt_at_top[of "0::nat"]])  | 
| 
 
e4997c181cce
New material from PNT proof, as well as more default [simp] declarations. Also removed duplicate theorems about geometric series
 
paulson <lp15@cam.ac.uk> 
parents: 
64449 
diff
changeset
 | 
847  | 
(auto simp: norm_mult norm_power real_root_mult real_root_power)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
848  | 
also have "\<dots> = ereal (norm c) * limsup (\<lambda>n. ereal (root n (norm (f n))))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
849  | 
using assms by (subst Limsup_ereal_mult_left[symmetric]) simp_all  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
850  | 
finally have A: "limsup (\<lambda>n. ereal (root n (norm (c ^ n * f n)))) =  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
851  | 
ereal (norm c) * limsup (\<lambda>n. ereal (root n (norm (f n))))" .  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
852  | 
show ?thesis using assms  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
853  | 
apply (cases "limsup (\<lambda>n. ereal (root n (norm (f n)))) = 0")  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
854  | 
apply (simp add: A conv_radius_def)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
855  | 
apply (unfold conv_radius_def A divide_ereal_def, simp add: mult.commute ereal_inverse_mult)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
856  | 
done  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
857  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
858  | 
|
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
859  | 
lemma conv_radius_mult_power_right:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
860  | 
  assumes "c \<noteq> (0 :: 'a :: {real_normed_div_algebra,banach})"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
861  | 
shows "conv_radius (\<lambda>n. f n * c ^ n) = conv_radius f / ereal (norm c)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
862  | 
using conv_radius_mult_power[OF assms, of f]  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
863  | 
unfolding conv_radius_def by (simp add: mult.commute norm_mult)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
864  | 
|
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
865  | 
lemma conv_radius_divide_power:  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
866  | 
  assumes "c \<noteq> (0 :: 'a :: {real_normed_div_algebra,banach})"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
867  | 
shows "conv_radius (\<lambda>n. f n / c^n) = conv_radius f * ereal (norm c)"  | 
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
868  | 
proof -  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
869  | 
from assms have "inverse c \<noteq> 0" by simp  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
870  | 
from conv_radius_mult_power_right[OF this, of f] show ?thesis  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
871  | 
by (simp add: divide_inverse divide_ereal_def assms norm_inverse power_inverse)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
872  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
873  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
874  | 
|
| 
63594
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
875  | 
lemma conv_radius_add_ge:  | 
| 
 
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
 
hoelzl 
parents: 
63040 
diff
changeset
 | 
876  | 
"min (conv_radius f) (conv_radius g) \<le>  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
877  | 
       conv_radius (\<lambda>x. f x + g x :: 'a :: {banach,real_normed_div_algebra})"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
878  | 
by (rule conv_radius_geI_ex')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
879  | 
(auto simp: algebra_simps intro!: summable_add summable_in_conv_radius)  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
880  | 
|
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
881  | 
lemma conv_radius_mult_ge:  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
882  | 
  fixes f g :: "nat \<Rightarrow> ('a :: {banach,real_normed_div_algebra})"
 | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
883  | 
shows "conv_radius (\<lambda>x. \<Sum>i\<le>x. f i * g (x - i)) \<ge> min (conv_radius f) (conv_radius g)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
884  | 
proof (rule conv_radius_geI_ex')  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
885  | 
fix r assume r: "r > 0" "ereal r < min (conv_radius f) (conv_radius g)"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
886  | 
from r have "summable (\<lambda>n. (\<Sum>i\<le>n. (f i * of_real r^i) * (g (n - i) * of_real r^(n - i))))"  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
887  | 
by (intro summable_Cauchy_product abs_summable_in_conv_radius) simp_all  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
888  | 
thus "summable (\<lambda>n. (\<Sum>i\<le>n. f i * g (n - i)) * of_real r ^ n)"  | 
| 64267 | 889  | 
by (simp add: algebra_simps of_real_def power_add [symmetric] scaleR_sum_right)  | 
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
890  | 
qed  | 
| 
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
891  | 
|
| 
62381
 
a6479cb85944
New and revised material for (multivariate) analysis
 
paulson <lp15@cam.ac.uk> 
parents: 
62085 
diff
changeset
 | 
892  | 
lemma le_conv_radius_iff:  | 
| 
 
a6479cb85944
New and revised material for (multivariate) analysis
 
paulson <lp15@cam.ac.uk> 
parents: 
62085 
diff
changeset
 | 
893  | 
  fixes a :: "nat \<Rightarrow> 'a::{real_normed_div_algebra,banach}"
 | 
| 
 
a6479cb85944
New and revised material for (multivariate) analysis
 
paulson <lp15@cam.ac.uk> 
parents: 
62085 
diff
changeset
 | 
894  | 
shows "r \<le> conv_radius a \<longleftrightarrow> (\<forall>x. norm (x-\<xi>) < r \<longrightarrow> summable (\<lambda>i. a i * (x - \<xi>) ^ i))"  | 
| 
 
a6479cb85944
New and revised material for (multivariate) analysis
 
paulson <lp15@cam.ac.uk> 
parents: 
62085 
diff
changeset
 | 
895  | 
apply (intro iffI allI impI summable_in_conv_radius conv_radius_geI_ex)  | 
| 
 
a6479cb85944
New and revised material for (multivariate) analysis
 
paulson <lp15@cam.ac.uk> 
parents: 
62085 
diff
changeset
 | 
896  | 
apply (meson less_ereal.simps(1) not_le order_trans)  | 
| 
 
a6479cb85944
New and revised material for (multivariate) analysis
 
paulson <lp15@cam.ac.uk> 
parents: 
62085 
diff
changeset
 | 
897  | 
apply (rule_tac x="of_real ra" in exI, simp)  | 
| 
 
a6479cb85944
New and revised material for (multivariate) analysis
 
paulson <lp15@cam.ac.uk> 
parents: 
62085 
diff
changeset
 | 
898  | 
apply (metis abs_of_nonneg add_diff_cancel_left' less_eq_real_def norm_of_real)  | 
| 
 
a6479cb85944
New and revised material for (multivariate) analysis
 
paulson <lp15@cam.ac.uk> 
parents: 
62085 
diff
changeset
 | 
899  | 
done  | 
| 
 
a6479cb85944
New and revised material for (multivariate) analysis
 
paulson <lp15@cam.ac.uk> 
parents: 
62085 
diff
changeset
 | 
900  | 
|
| 
62049
 
b0f941e207cf
Added lots of material on infinite sums, convergence radii, harmonic numbers, Gamma function
 
eberlm 
parents:  
diff
changeset
 | 
901  | 
end  |