author | paulson <lp15@cam.ac.uk> |
Wed, 26 Mar 2025 21:11:04 +0000 | |
changeset 82351 | 882b80bd10c8 |
parent 82349 | a854ca7ca7d9 |
child 82353 | e3a0128f4905 |
permissions | -rw-r--r-- |
63627 | 1 |
(* Title: HOL/Analysis/Uniform_Limit.thy |
60812 | 2 |
Author: Christoph Traut, TU München |
3 |
Author: Fabian Immler, TU München |
|
4 |
*) |
|
5 |
||
6 |
section \<open>Uniform Limit and Uniform Convergence\<close> |
|
7 |
||
8 |
theory Uniform_Limit |
|
77434
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
9 |
imports Connected Summation_Tests Infinite_Sum |
60812 | 10 |
begin |
11 |
||
68838 | 12 |
|
13 |
subsection \<open>Definition\<close> |
|
14 |
||
70136 | 15 |
definition\<^marker>\<open>tag important\<close> uniformly_on :: "'a set \<Rightarrow> ('a \<Rightarrow> 'b::metric_space) \<Rightarrow> ('a \<Rightarrow> 'b) filter" |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
68838
diff
changeset
|
16 |
where "uniformly_on S l = (INF e\<in>{0 <..}. principal {f. \<forall>x\<in>S. dist (f x) (l x) < e})" |
60812 | 17 |
|
70136 | 18 |
abbreviation\<^marker>\<open>tag important\<close> |
60812 | 19 |
"uniform_limit S f l \<equiv> filterlim f (uniformly_on S l)" |
20 |
||
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
21 |
definition uniformly_convergent_on where |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
22 |
"uniformly_convergent_on X f \<longleftrightarrow> (\<exists>l. uniform_limit X f l sequentially)" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
23 |
|
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
24 |
definition uniformly_Cauchy_on where |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
25 |
"uniformly_Cauchy_on X f \<longleftrightarrow> (\<forall>e>0. \<exists>M. \<forall>x\<in>X. \<forall>(m::nat)\<ge>M. \<forall>n\<ge>M. dist (f m x) (f n x) < e)" |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
26 |
|
68838 | 27 |
proposition uniform_limit_iff: |
60812 | 28 |
"uniform_limit S f l F \<longleftrightarrow> (\<forall>e>0. \<forall>\<^sub>F n in F. \<forall>x\<in>S. dist (f n x) (l x) < e)" |
29 |
unfolding filterlim_iff uniformly_on_def |
|
30 |
by (subst eventually_INF_base) |
|
31 |
(fastforce |
|
32 |
simp: eventually_principal uniformly_on_def |
|
33 |
intro: bexI[where x="min a b" for a b] |
|
61810 | 34 |
elim: eventually_mono)+ |
60812 | 35 |
|
36 |
lemma uniform_limitD: |
|
37 |
"uniform_limit S f l F \<Longrightarrow> e > 0 \<Longrightarrow> \<forall>\<^sub>F n in F. \<forall>x\<in>S. dist (f n x) (l x) < e" |
|
38 |
by (simp add: uniform_limit_iff) |
|
39 |
||
40 |
lemma uniform_limitI: |
|
41 |
"(\<And>e. e > 0 \<Longrightarrow> \<forall>\<^sub>F n in F. \<forall>x\<in>S. dist (f n x) (l x) < e) \<Longrightarrow> uniform_limit S f l F" |
|
42 |
by (simp add: uniform_limit_iff) |
|
43 |
||
82351
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
44 |
lemma uniform_limit_singleton [simp]: "uniform_limit {x} f g F \<longleftrightarrow> ((\<lambda>n. f n x) \<longlongrightarrow> g x) F" |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
45 |
by (simp add: uniform_limit_iff tendsto_iff) |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
46 |
|
60812 | 47 |
lemma uniform_limit_sequentially_iff: |
48 |
"uniform_limit S f l sequentially \<longleftrightarrow> (\<forall>e>0. \<exists>N. \<forall>n\<ge>N. \<forall>x \<in> S. dist (f n x) (l x) < e)" |
|
49 |
unfolding uniform_limit_iff eventually_sequentially .. |
|
50 |
||
51 |
lemma uniform_limit_at_iff: |
|
52 |
"uniform_limit S f l (at x) \<longleftrightarrow> |
|
53 |
(\<forall>e>0. \<exists>d>0. \<forall>z. 0 < dist z x \<and> dist z x < d \<longrightarrow> (\<forall>x\<in>S. dist (f z x) (l x) < e))" |
|
62381
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
54 |
unfolding uniform_limit_iff eventually_at by simp |
60812 | 55 |
|
56 |
lemma uniform_limit_at_le_iff: |
|
57 |
"uniform_limit S f l (at x) \<longleftrightarrow> |
|
58 |
(\<forall>e>0. \<exists>d>0. \<forall>z. 0 < dist z x \<and> dist z x < d \<longrightarrow> (\<forall>x\<in>S. dist (f z x) (l x) \<le> e))" |
|
62381
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
59 |
unfolding uniform_limit_iff eventually_at |
60812 | 60 |
by (fastforce dest: spec[where x = "e / 2" for e]) |
61 |
||
78698 | 62 |
lemma uniform_limit_compose: |
63 |
assumes ul: "uniform_limit X g l F" |
|
64 |
and cont: "uniformly_continuous_on U f" |
|
65 |
and g: "\<forall>\<^sub>F n in F. g n ` X \<subseteq> U" and l: "l ` X \<subseteq> U" |
|
66 |
shows "uniform_limit X (\<lambda>a b. f (g a b)) (f \<circ> l) F" |
|
67 |
proof (rule uniform_limitI) |
|
68 |
fix \<epsilon>::real |
|
69 |
assume "0 < \<epsilon>" |
|
70 |
then obtain \<delta> where "\<delta> > 0" and \<delta>: "\<And>u v. \<lbrakk>u\<in>U; v\<in>U; dist u v < \<delta>\<rbrakk> \<Longrightarrow> dist (f u) (f v) < \<epsilon>" |
|
71 |
by (metis cont uniformly_continuous_on_def) |
|
72 |
show "\<forall>\<^sub>F n in F. \<forall>x\<in>X. dist (f (g n x)) ((f \<circ> l) x) < \<epsilon>" |
|
73 |
using uniform_limitD [OF ul \<open>\<delta>>0\<close>] g unfolding o_def |
|
74 |
by eventually_elim (use \<delta> l in blast) |
|
75 |
qed |
|
76 |
||
82351
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
77 |
lemma uniform_limit_compose': |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
78 |
assumes "uniform_limit A f g F" and "h \<in> B \<rightarrow> A" |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
79 |
shows "uniform_limit B (\<lambda>n x. f n (h x)) (\<lambda>x. g (h x)) F" |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
80 |
unfolding uniform_limit_iff |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
81 |
proof (intro strip) |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
82 |
fix e :: real |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
83 |
assume e: "e > 0" |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
84 |
with assms(1) have "\<forall>\<^sub>F n in F. \<forall>x\<in>A. dist (f n x) (g x) < e" |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
85 |
by (auto simp: uniform_limit_iff) |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
86 |
thus "\<forall>\<^sub>F n in F. \<forall>x\<in>B. dist (f n (h x)) (g (h x)) < e" |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
87 |
by eventually_elim (use assms(2) in blast) |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
88 |
qed |
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
89 |
|
62949
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
90 |
lemma metric_uniform_limit_imp_uniform_limit: |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
91 |
assumes f: "uniform_limit S f a F" |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
92 |
assumes le: "eventually (\<lambda>x. \<forall>y\<in>S. dist (g x y) (b y) \<le> dist (f x y) (a y)) F" |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
93 |
shows "uniform_limit S g b F" |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
94 |
proof (rule uniform_limitI) |
78698 | 95 |
fix e :: real |
96 |
assume "0 < e" |
|
62949
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
97 |
from uniform_limitD[OF f this] le |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
98 |
show "\<forall>\<^sub>F x in F. \<forall>y\<in>S. dist (g x y) (b y) < e" |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
99 |
by eventually_elim force |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
100 |
qed |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
101 |
|
68838 | 102 |
|
103 |
subsection \<open>Exchange limits\<close> |
|
104 |
||
105 |
proposition swap_uniform_limit: |
|
61973 | 106 |
assumes f: "\<forall>\<^sub>F n in F. (f n \<longlongrightarrow> g n) (at x within S)" |
107 |
assumes g: "(g \<longlongrightarrow> l) F" |
|
60812 | 108 |
assumes uc: "uniform_limit S f h F" |
109 |
assumes "\<not>trivial_limit F" |
|
61973 | 110 |
shows "(h \<longlongrightarrow> l) (at x within S)" |
60812 | 111 |
proof (rule tendstoI) |
112 |
fix e :: real |
|
63040 | 113 |
define e' where "e' = e/3" |
60812 | 114 |
assume "0 < e" |
115 |
then have "0 < e'" by (simp add: e'_def) |
|
61222 | 116 |
from uniform_limitD[OF uc \<open>0 < e'\<close>] |
60812 | 117 |
have "\<forall>\<^sub>F n in F. \<forall>x\<in>S. dist (h x) (f n x) < e'" |
118 |
by (simp add: dist_commute) |
|
119 |
moreover |
|
120 |
from f |
|
121 |
have "\<forall>\<^sub>F n in F. \<forall>\<^sub>F x in at x within S. dist (g n) (f n x) < e'" |
|
61222 | 122 |
by eventually_elim (auto dest!: tendstoD[OF _ \<open>0 < e'\<close>] simp: dist_commute) |
60812 | 123 |
moreover |
61222 | 124 |
from tendstoD[OF g \<open>0 < e'\<close>] have "\<forall>\<^sub>F x in F. dist l (g x) < e'" |
60812 | 125 |
by (simp add: dist_commute) |
126 |
ultimately |
|
127 |
have "\<forall>\<^sub>F _ in F. \<forall>\<^sub>F x in at x within S. dist (h x) l < e" |
|
128 |
proof eventually_elim |
|
129 |
case (elim n) |
|
130 |
note fh = elim(1) |
|
131 |
note gl = elim(3) |
|
132 |
have "\<forall>\<^sub>F x in at x within S. x \<in> S" |
|
133 |
by (auto simp: eventually_at_filter) |
|
134 |
with elim(2) |
|
135 |
show ?case |
|
136 |
proof eventually_elim |
|
137 |
case (elim x) |
|
61222 | 138 |
from fh[rule_format, OF \<open>x \<in> S\<close>] elim(1) |
60812 | 139 |
have "dist (h x) (g n) < e' + e'" |
140 |
by (rule dist_triangle_lt[OF add_strict_mono]) |
|
141 |
from dist_triangle_lt[OF add_strict_mono, OF this gl] |
|
142 |
show ?case by (simp add: e'_def) |
|
143 |
qed |
|
144 |
qed |
|
145 |
thus "\<forall>\<^sub>F x in at x within S. dist (h x) l < e" |
|
61222 | 146 |
using eventually_happens by (metis \<open>\<not>trivial_limit F\<close>) |
60812 | 147 |
qed |
148 |
||
68838 | 149 |
|
150 |
subsection \<open>Uniform limit theorem\<close> |
|
151 |
||
67371
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
152 |
lemma tendsto_uniform_limitI: |
60812 | 153 |
assumes "uniform_limit S f l F" |
154 |
assumes "x \<in> S" |
|
61973 | 155 |
shows "((\<lambda>y. f y x) \<longlongrightarrow> l x) F" |
60812 | 156 |
using assms |
61810 | 157 |
by (auto intro!: tendstoI simp: eventually_mono dest!: uniform_limitD) |
60812 | 158 |
|
68838 | 159 |
theorem uniform_limit_theorem: |
60812 | 160 |
assumes c: "\<forall>\<^sub>F n in F. continuous_on A (f n)" |
161 |
assumes ul: "uniform_limit A f l F" |
|
162 |
assumes "\<not> trivial_limit F" |
|
163 |
shows "continuous_on A l" |
|
164 |
unfolding continuous_on_def |
|
165 |
proof safe |
|
166 |
fix x assume "x \<in> A" |
|
61973 | 167 |
then have "\<forall>\<^sub>F n in F. (f n \<longlongrightarrow> f n x) (at x within A)" "((\<lambda>n. f n x) \<longlongrightarrow> l x) F" |
60812 | 168 |
using c ul |
61810 | 169 |
by (auto simp: continuous_on_def eventually_mono tendsto_uniform_limitI) |
61973 | 170 |
then show "(l \<longlongrightarrow> l x) (at x within A)" |
60812 | 171 |
by (rule swap_uniform_limit) fact+ |
172 |
qed |
|
173 |
||
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
174 |
lemma uniformly_Cauchy_onI: |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
175 |
assumes "\<And>e. e > 0 \<Longrightarrow> \<exists>M. \<forall>x\<in>X. \<forall>m\<ge>M. \<forall>n\<ge>M. dist (f m x) (f n x) < e" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
176 |
shows "uniformly_Cauchy_on X f" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
177 |
using assms unfolding uniformly_Cauchy_on_def by blast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
178 |
|
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
179 |
lemma uniformly_Cauchy_onI': |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
180 |
assumes "\<And>e. e > 0 \<Longrightarrow> \<exists>M. \<forall>x\<in>X. \<forall>m\<ge>M. \<forall>n>m. dist (f m x) (f n x) < e" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
181 |
shows "uniformly_Cauchy_on X f" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
182 |
proof (rule uniformly_Cauchy_onI) |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
183 |
fix e :: real assume e: "e > 0" |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
184 |
from assms[OF this] obtain M |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
185 |
where M: "\<And>x m n. x \<in> X \<Longrightarrow> m \<ge> M \<Longrightarrow> n > m \<Longrightarrow> dist (f m x) (f n x) < e" by fast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
186 |
{ |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
187 |
fix x m n assume x: "x \<in> X" and m: "m \<ge> M" and n: "n \<ge> M" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
188 |
with M[OF this(1,2), of n] M[OF this(1,3), of m] e have "dist (f m x) (f n x) < e" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
189 |
by (cases m n rule: linorder_cases) (simp_all add: dist_commute) |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
190 |
} |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
191 |
thus "\<exists>M. \<forall>x\<in>X. \<forall>m\<ge>M. \<forall>n\<ge>M. dist (f m x) (f n x) < e" by fast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
192 |
qed |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
193 |
|
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
194 |
lemma uniformly_Cauchy_imp_Cauchy: |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
195 |
"uniformly_Cauchy_on X f \<Longrightarrow> x \<in> X \<Longrightarrow> Cauchy (\<lambda>n. f n x)" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
196 |
unfolding Cauchy_def uniformly_Cauchy_on_def by fast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
197 |
|
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
198 |
lemma uniform_limit_cong: |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
199 |
fixes f g :: "'a \<Rightarrow> 'b \<Rightarrow> ('c :: metric_space)" and h i :: "'b \<Rightarrow> 'c" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
200 |
assumes "eventually (\<lambda>y. \<forall>x\<in>X. f y x = g y x) F" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
201 |
assumes "\<And>x. x \<in> X \<Longrightarrow> h x = i x" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
202 |
shows "uniform_limit X f h F \<longleftrightarrow> uniform_limit X g i F" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
203 |
proof - |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
204 |
{ |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
205 |
fix f g :: "'a \<Rightarrow> 'b \<Rightarrow> 'c" and h i :: "'b \<Rightarrow> 'c" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
206 |
assume C: "uniform_limit X f h F" and A: "eventually (\<lambda>y. \<forall>x\<in>X. f y x = g y x) F" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
207 |
and B: "\<And>x. x \<in> X \<Longrightarrow> h x = i x" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
208 |
{ |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
209 |
fix e ::real assume "e > 0" |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
210 |
with C have "eventually (\<lambda>y. \<forall>x\<in>X. dist (f y x) (h x) < e) F" |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
211 |
unfolding uniform_limit_iff by blast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
212 |
with A have "eventually (\<lambda>y. \<forall>x\<in>X. dist (g y x) (i x) < e) F" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
213 |
by eventually_elim (insert B, simp_all) |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
214 |
} |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
215 |
hence "uniform_limit X g i F" unfolding uniform_limit_iff by blast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
216 |
} note A = this |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
217 |
show ?thesis by (rule iffI) (erule A; insert assms; simp add: eq_commute)+ |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
218 |
qed |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
219 |
|
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
220 |
lemma uniform_limit_cong': |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
221 |
fixes f g :: "'a \<Rightarrow> 'b \<Rightarrow> ('c :: metric_space)" and h i :: "'b \<Rightarrow> 'c" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
222 |
assumes "\<And>y x. x \<in> X \<Longrightarrow> f y x = g y x" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
223 |
assumes "\<And>x. x \<in> X \<Longrightarrow> h x = i x" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
224 |
shows "uniform_limit X f h F \<longleftrightarrow> uniform_limit X g i F" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
225 |
using assms by (intro uniform_limit_cong always_eventually) blast+ |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
226 |
|
67371
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
227 |
lemma uniformly_convergent_cong: |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
228 |
assumes "eventually (\<lambda>x. \<forall>y\<in>A. f x y = g x y) sequentially" "A = B" |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
229 |
shows "uniformly_convergent_on A f \<longleftrightarrow> uniformly_convergent_on B g" |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
230 |
unfolding uniformly_convergent_on_def assms(2) [symmetric] |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
231 |
by (intro iff_exI uniform_limit_cong eventually_mono [OF assms(1)]) auto |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
232 |
|
76722
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
233 |
lemma uniformly_convergent_on_compose: |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
234 |
assumes "uniformly_convergent_on A f" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
235 |
assumes "filterlim g sequentially sequentially" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
236 |
shows "uniformly_convergent_on A (\<lambda>n. f (g n))" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
237 |
proof - |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
238 |
from assms(1) obtain f' where "uniform_limit A f f' sequentially" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
239 |
by (auto simp: uniformly_convergent_on_def) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
240 |
hence "uniform_limit A (\<lambda>n. f (g n)) f' sequentially" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
241 |
by (rule filterlim_compose) fact |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
242 |
thus ?thesis |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
243 |
by (auto simp: uniformly_convergent_on_def) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
244 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
245 |
|
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
246 |
lemma uniformly_convergent_uniform_limit_iff: |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
247 |
"uniformly_convergent_on X f \<longleftrightarrow> uniform_limit X f (\<lambda>x. lim (\<lambda>n. f n x)) sequentially" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
248 |
proof |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
249 |
assume "uniformly_convergent_on X f" |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
250 |
then obtain l where l: "uniform_limit X f l sequentially" |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
251 |
unfolding uniformly_convergent_on_def by blast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
252 |
from l have "uniform_limit X f (\<lambda>x. lim (\<lambda>n. f n x)) sequentially \<longleftrightarrow> |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
253 |
uniform_limit X f l sequentially" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
254 |
by (intro uniform_limit_cong' limI tendsto_uniform_limitI[of f X l]) simp_all |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
255 |
also note l |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
256 |
finally show "uniform_limit X f (\<lambda>x. lim (\<lambda>n. f n x)) sequentially" . |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
257 |
qed (auto simp: uniformly_convergent_on_def) |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
258 |
|
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
259 |
lemma uniformly_convergentI: "uniform_limit X f l sequentially \<Longrightarrow> uniformly_convergent_on X f" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
260 |
unfolding uniformly_convergent_on_def by blast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
261 |
|
62381
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
262 |
lemma uniformly_convergent_on_empty [iff]: "uniformly_convergent_on {} f" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
263 |
by (simp add: uniformly_convergent_on_def uniform_limit_sequentially_iff) |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
264 |
|
67371
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
265 |
lemma uniformly_convergent_on_const [simp,intro]: |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
266 |
"uniformly_convergent_on A (\<lambda>_. c)" |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
267 |
by (auto simp: uniformly_convergent_on_def uniform_limit_iff intro!: exI[of _ c]) |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
268 |
|
65204
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
269 |
text\<open>Cauchy-type criteria for uniform convergence.\<close> |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
270 |
|
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
271 |
lemma Cauchy_uniformly_convergent: |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
272 |
fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b :: complete_space" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
273 |
assumes "uniformly_Cauchy_on X f" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
274 |
shows "uniformly_convergent_on X f" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
275 |
unfolding uniformly_convergent_uniform_limit_iff uniform_limit_iff |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
276 |
proof safe |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
277 |
let ?f = "\<lambda>x. lim (\<lambda>n. f n x)" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
278 |
fix e :: real assume e: "e > 0" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
279 |
hence "e/2 > 0" by simp |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
280 |
with assms obtain N where N: "\<And>x m n. x \<in> X \<Longrightarrow> m \<ge> N \<Longrightarrow> n \<ge> N \<Longrightarrow> dist (f m x) (f n x) < e/2" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
281 |
unfolding uniformly_Cauchy_on_def by fast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
282 |
show "eventually (\<lambda>n. \<forall>x\<in>X. dist (f n x) (?f x) < e) sequentially" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
283 |
using eventually_ge_at_top[of N] |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
284 |
proof eventually_elim |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
285 |
fix n assume n: "n \<ge> N" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
286 |
show "\<forall>x\<in>X. dist (f n x) (?f x) < e" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
287 |
proof |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
288 |
fix x assume x: "x \<in> X" |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
289 |
with assms have "(\<lambda>n. f n x) \<longlonglongrightarrow> ?f x" |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
290 |
by (auto dest!: Cauchy_convergent uniformly_Cauchy_imp_Cauchy simp: convergent_LIMSEQ_iff) |
61808 | 291 |
with \<open>e/2 > 0\<close> have "eventually (\<lambda>m. m \<ge> N \<and> dist (f m x) (?f x) < e/2) sequentially" |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
292 |
by (intro tendstoD eventually_conj eventually_ge_at_top) |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
293 |
then obtain m where m: "m \<ge> N" "dist (f m x) (?f x) < e/2" |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
294 |
unfolding eventually_at_top_linorder by blast |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
295 |
have "dist (f n x) (?f x) \<le> dist (f n x) (f m x) + dist (f m x) (?f x)" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
296 |
by (rule dist_triangle) |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
297 |
also from x n have "... < e/2 + e/2" by (intro add_strict_mono N m) |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
298 |
finally show "dist (f n x) (?f x) < e" by simp |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
299 |
qed |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
300 |
qed |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
301 |
qed |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
302 |
|
65204
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
303 |
lemma uniformly_convergent_Cauchy: |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
304 |
assumes "uniformly_convergent_on X f" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
305 |
shows "uniformly_Cauchy_on X f" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
306 |
proof (rule uniformly_Cauchy_onI) |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
307 |
fix e::real assume "e > 0" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
308 |
then have "0 < e / 2" by simp |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
309 |
with assms[unfolded uniformly_convergent_on_def uniform_limit_sequentially_iff] |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
310 |
obtain l N where l:"x \<in> X \<Longrightarrow> n \<ge> N \<Longrightarrow> dist (f n x) (l x) < e / 2" for n x |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
311 |
by metis |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
312 |
from l l have "x \<in> X \<Longrightarrow> n \<ge> N \<Longrightarrow> m \<ge> N \<Longrightarrow> dist (f n x) (f m x) < e" for n m x |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
313 |
by (rule dist_triangle_half_l) |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
314 |
then show "\<exists>M. \<forall>x\<in>X. \<forall>m\<ge>M. \<forall>n\<ge>M. dist (f m x) (f n x) < e" by blast |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
315 |
qed |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
316 |
|
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
317 |
lemma uniformly_convergent_eq_Cauchy: |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
318 |
"uniformly_convergent_on X f = uniformly_Cauchy_on X f" for f::"nat \<Rightarrow> 'b \<Rightarrow> 'a::complete_space" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
319 |
using Cauchy_uniformly_convergent uniformly_convergent_Cauchy by blast |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
320 |
|
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
321 |
lemma uniformly_convergent_eq_cauchy: |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
322 |
fixes s::"nat \<Rightarrow> 'b \<Rightarrow> 'a::complete_space" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
323 |
shows |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
324 |
"(\<exists>l. \<forall>e>0. \<exists>N. \<forall>n x. N \<le> n \<and> P x \<longrightarrow> dist(s n x)(l x) < e) \<longleftrightarrow> |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
325 |
(\<forall>e>0. \<exists>N. \<forall>m n x. N \<le> m \<and> N \<le> n \<and> P x \<longrightarrow> dist (s m x) (s n x) < e)" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
326 |
proof - |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
327 |
have *: "(\<forall>n\<ge>N. \<forall>x. Q x \<longrightarrow> R n x) \<longleftrightarrow> (\<forall>n x. N \<le> n \<and> Q x \<longrightarrow> R n x)" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
328 |
"(\<forall>x. Q x \<longrightarrow> (\<forall>m\<ge>N. \<forall>n\<ge>N. S n m x)) \<longleftrightarrow> (\<forall>m n x. N \<le> m \<and> N \<le> n \<and> Q x \<longrightarrow> S n m x)" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
329 |
for N::nat and Q::"'b \<Rightarrow> bool" and R S |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
330 |
by blast+ |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
331 |
show ?thesis |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
332 |
using uniformly_convergent_eq_Cauchy[of "Collect P" s] |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
333 |
unfolding uniformly_convergent_on_def uniformly_Cauchy_on_def uniform_limit_sequentially_iff |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
334 |
by (simp add: *) |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
335 |
qed |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
336 |
|
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
337 |
lemma uniformly_cauchy_imp_uniformly_convergent: |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
338 |
fixes s :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::complete_space" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
339 |
assumes "\<forall>e>0.\<exists>N. \<forall>m (n::nat) x. N \<le> m \<and> N \<le> n \<and> P x --> dist(s m x)(s n x) < e" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
340 |
and "\<forall>x. P x --> (\<forall>e>0. \<exists>N. \<forall>n. N \<le> n \<longrightarrow> dist(s n x)(l x) < e)" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
341 |
shows "\<forall>e>0. \<exists>N. \<forall>n x. N \<le> n \<and> P x \<longrightarrow> dist(s n x)(l x) < e" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
342 |
proof - |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
343 |
obtain l' where l:"\<forall>e>0. \<exists>N. \<forall>n x. N \<le> n \<and> P x \<longrightarrow> dist (s n x) (l' x) < e" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
344 |
using assms(1) unfolding uniformly_convergent_eq_cauchy[symmetric] by auto |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
345 |
moreover |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
346 |
{ |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
347 |
fix x |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
348 |
assume "P x" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
349 |
then have "l x = l' x" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
350 |
using tendsto_unique[OF trivial_limit_sequentially, of "\<lambda>n. s n x" "l x" "l' x"] |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
351 |
using l and assms(2) unfolding lim_sequentially by blast |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
352 |
} |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
353 |
ultimately show ?thesis by auto |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
354 |
qed |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
355 |
|
76722
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
356 |
lemma uniformly_convergent_on_sum_E: |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
357 |
fixes \<epsilon>::real and f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{complete_space,real_normed_vector}" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
358 |
assumes uconv: "uniformly_convergent_on K (\<lambda>n z. \<Sum>k<n. f k z)" and "\<epsilon>>0" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
359 |
obtains N where "\<And>m n z. \<lbrakk>N \<le> m; m \<le> n; z\<in>K\<rbrakk> \<Longrightarrow> norm(\<Sum>k=m..<n. f k z) < \<epsilon>" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
360 |
proof - |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
361 |
obtain N where N: "\<And>m n z. \<lbrakk>N \<le> m; N \<le> n; z\<in>K\<rbrakk> \<Longrightarrow> dist (\<Sum>k<m. f k z) (\<Sum>k<n. f k z) < \<epsilon>" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
362 |
using uconv \<open>\<epsilon>>0\<close> unfolding uniformly_Cauchy_on_def uniformly_convergent_eq_Cauchy by meson |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
363 |
show thesis |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
364 |
proof |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
365 |
fix m n z |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
366 |
assume "N \<le> m" "m \<le> n" "z \<in> K" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
367 |
moreover have "(\<Sum>k = m..<n. f k z) = (\<Sum>k<n. f k z) - (\<Sum>k<m. f k z)" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
368 |
by (metis atLeast0LessThan le0 sum_diff_nat_ivl \<open>m \<le> n\<close>) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
369 |
ultimately show "norm(\<Sum>k = m..<n. f k z) < \<epsilon>" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
370 |
using N by (simp add: dist_norm) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
371 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
372 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
373 |
|
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
374 |
lemma uniformly_convergent_on_sum_iff: |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
375 |
fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{complete_space,real_normed_vector}" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
376 |
shows "uniformly_convergent_on K (\<lambda>n z. \<Sum>k<n. f k z) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
377 |
\<longleftrightarrow> (\<forall>\<epsilon>>0. \<exists>N. \<forall>m n z. N\<le>m \<longrightarrow> m\<le>n \<longrightarrow> z\<in>K \<longrightarrow> norm (\<Sum>k=m..<n. f k z) < \<epsilon>)" (is "?lhs=?rhs") |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
378 |
proof |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
379 |
assume R: ?rhs |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
380 |
show ?lhs |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
381 |
unfolding uniformly_Cauchy_on_def uniformly_convergent_eq_Cauchy |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
382 |
proof (intro strip) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
383 |
fix \<epsilon>::real |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
384 |
assume "\<epsilon>>0" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
385 |
then obtain N where "\<And>m n z. \<lbrakk>N \<le> m; m \<le> n; z\<in>K\<rbrakk> \<Longrightarrow> norm(\<Sum>k = m..<n. f k z) < \<epsilon>" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
386 |
using R by blast |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
387 |
then have "\<forall>x\<in>K. \<forall>m\<ge>N. \<forall>n\<ge>m. norm ((\<Sum>k<m. f k x) - (\<Sum>k<n. f k x)) < \<epsilon>" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
388 |
by (metis atLeast0LessThan le0 sum_diff_nat_ivl norm_minus_commute) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
389 |
then have "\<forall>x\<in>K. \<forall>m\<ge>N. \<forall>n\<ge>N. norm ((\<Sum>k<m. f k x) - (\<Sum>k<n. f k x)) < \<epsilon>" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
390 |
by (metis linorder_le_cases norm_minus_commute) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
391 |
then show "\<exists>M. \<forall>x\<in>K. \<forall>m\<ge>M. \<forall>n\<ge>M. dist (\<Sum>k<m. f k x) (\<Sum>k<n. f k x) < \<epsilon>" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
392 |
by (metis dist_norm) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
393 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
394 |
qed (metis uniformly_convergent_on_sum_E) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
395 |
|
76724
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
396 |
lemma uniform_limit_suminf: |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
397 |
fixes f:: "nat \<Rightarrow> 'a::{metric_space, comm_monoid_add} \<Rightarrow> 'a" |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
398 |
assumes "uniformly_convergent_on X (\<lambda>n x. \<Sum>k<n. f k x)" |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
399 |
shows "uniform_limit X (\<lambda>n x. \<Sum>k<n. f k x) (\<lambda>x. \<Sum>k. f k x) sequentially" |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
400 |
proof - |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
401 |
obtain S where S: "uniform_limit X (\<lambda>n x. \<Sum>k<n. f k x) S sequentially" |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
402 |
using assms uniformly_convergent_on_def by blast |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
403 |
then have "(\<Sum>k. f k x) = S x" if "x \<in> X" for x |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
404 |
using that sums_iff sums_def by (blast intro: tendsto_uniform_limitI [OF S]) |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
405 |
with S show ?thesis |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
406 |
by (simp cong: uniform_limit_cong') |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
407 |
qed |
7ff71bdcf731
Additional new material about infinite products, etc.
paulson <lp15@cam.ac.uk>
parents:
76722
diff
changeset
|
408 |
|
65204
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
409 |
text \<open>TODO: remove explicit formulations |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
410 |
@{thm uniformly_convergent_eq_cauchy uniformly_cauchy_imp_uniformly_convergent}?!\<close> |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
411 |
|
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
412 |
lemma uniformly_convergent_imp_convergent: |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
413 |
"uniformly_convergent_on X f \<Longrightarrow> x \<in> X \<Longrightarrow> convergent (\<lambda>n. f n x)" |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
414 |
unfolding uniformly_convergent_on_def convergent_def |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
415 |
by (auto dest: tendsto_uniform_limitI) |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
416 |
|
76722
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
417 |
subsection \<open>Comparison Test\<close> |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
418 |
|
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
419 |
lemma uniformly_summable_comparison_test: |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
420 |
fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b :: banach" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
421 |
assumes "uniformly_convergent_on A (\<lambda>N x. \<Sum>n<N. g n x)" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
422 |
assumes "\<And>n x. x \<in> A \<Longrightarrow> norm (f n x) \<le> g n x" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
423 |
shows "uniformly_convergent_on A (\<lambda>N x. \<Sum>n<N. f n x)" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
424 |
proof - |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
425 |
have "uniformly_Cauchy_on A (\<lambda>N x. \<Sum>n<N. f n x)" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
426 |
proof (rule uniformly_Cauchy_onI') |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
427 |
fix e :: real assume e: "e > 0" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
428 |
obtain M where M: "\<And>x m n. x \<in> A \<Longrightarrow> m \<ge> M \<Longrightarrow> n \<ge> M \<Longrightarrow> dist (\<Sum>k<m. g k x) (\<Sum>k<n. g k x) < e" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
429 |
using assms(1) e unfolding uniformly_convergent_eq_Cauchy uniformly_Cauchy_on_def by metis |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
430 |
show "\<exists>M. \<forall>x\<in>A. \<forall>m\<ge>M. \<forall>n>m. dist (\<Sum>k<m. f k x) (\<Sum>k<n. f k x) < e" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
431 |
proof (rule exI[of _ M], safe) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
432 |
fix x m n assume xmn: "x \<in> A" "m \<ge> M" "m < n" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
433 |
have nonneg: "g k x \<ge> 0" for k |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
434 |
by (rule order.trans[OF _ assms(2)]) (use xmn in auto) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
435 |
have "dist (\<Sum>k<m. f k x) (\<Sum>k<n. f k x) = norm (\<Sum>k\<in>{..<n}-{..<m}. f k x)" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
436 |
using xmn by (subst sum_diff) (auto simp: dist_norm norm_minus_commute) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
437 |
also have "{..<n}-{..<m} = {m..<n}" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
438 |
by auto |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
439 |
also have "norm (\<Sum>k\<in>{m..<n}. f k x) \<le> (\<Sum>k\<in>{m..<n}. norm (f k x))" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
440 |
using norm_sum by blast |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
441 |
also have "\<dots> \<le> (\<Sum>k\<in>{m..<n}. g k x)" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
442 |
by (intro sum_mono assms xmn) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
443 |
also have "\<dots> = \<bar>\<Sum>k\<in>{m..<n}. g k x\<bar>" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
444 |
by (subst abs_of_nonneg) (auto simp: nonneg intro!: sum_nonneg) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
445 |
also have "{m..<n} = {..<n} - {..<m}" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
446 |
by auto |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
447 |
also have "\<bar>\<Sum>k\<in>\<dots>. g k x\<bar> = dist (\<Sum>k<m. g k x) (\<Sum>k<n. g k x)" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
448 |
using xmn by (subst sum_diff) (auto simp: abs_minus_commute dist_norm) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
449 |
also have "\<dots> < e" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
450 |
by (rule M) (use xmn in auto) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
451 |
finally show "dist (\<Sum>k<m. f k x) (\<Sum>k<n. f k x) < e" . |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
452 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
453 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
454 |
thus ?thesis |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
455 |
unfolding uniformly_convergent_eq_Cauchy . |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
456 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
457 |
|
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
458 |
lemma uniform_limit_compose_uniformly_continuous_on: |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
459 |
fixes f :: "'a :: metric_space \<Rightarrow> 'b :: metric_space" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
460 |
assumes lim: "uniform_limit A g g' F" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
461 |
assumes cont: "uniformly_continuous_on B f" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
462 |
assumes ev: "eventually (\<lambda>x. \<forall>y\<in>A. g x y \<in> B) F" and "closed B" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
463 |
shows "uniform_limit A (\<lambda>x y. f (g x y)) (\<lambda>y. f (g' y)) F" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
464 |
proof (cases "F = bot") |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
465 |
case [simp]: False |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
466 |
show ?thesis |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
467 |
unfolding uniform_limit_iff |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
468 |
proof safe |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
469 |
fix e :: real assume e: "e > 0" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
470 |
|
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
471 |
have g'_in_B: "g' y \<in> B" if "y \<in> A" for y |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
472 |
proof (rule Lim_in_closed_set) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
473 |
show "eventually (\<lambda>x. g x y \<in> B) F" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
474 |
using ev by eventually_elim (use that in auto) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
475 |
show "((\<lambda>x. g x y) \<longlongrightarrow> g' y) F" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
476 |
using lim that by (metis tendsto_uniform_limitI) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
477 |
qed (use \<open>closed B\<close> in auto) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
478 |
|
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
479 |
obtain d where d: "d > 0" "\<And>x y. x \<in> B \<Longrightarrow> y \<in> B \<Longrightarrow> dist x y < d \<Longrightarrow> dist (f x) (f y) < e" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
480 |
using e cont unfolding uniformly_continuous_on_def by metis |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
481 |
from lim have "eventually (\<lambda>x. \<forall>y\<in>A. dist (g x y) (g' y) < d) F" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
482 |
unfolding uniform_limit_iff using \<open>d > 0\<close> by meson |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
483 |
thus "eventually (\<lambda>x. \<forall>y\<in>A. dist (f (g x y)) (f (g' y)) < e) F" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
484 |
using assms(3) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
485 |
proof eventually_elim |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
486 |
case (elim x) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
487 |
show "\<forall>y\<in>A. dist (f (g x y)) (f (g' y)) < e" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
488 |
proof safe |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
489 |
fix y assume y: "y \<in> A" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
490 |
show "dist (f (g x y)) (f (g' y)) < e" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
491 |
proof (rule d) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
492 |
show "dist (g x y) (g' y) < d" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
493 |
using elim y by blast |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
494 |
qed (use y elim g'_in_B in auto) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
495 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
496 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
497 |
qed |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
498 |
qed (auto simp: filterlim_def) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
499 |
|
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
500 |
lemma uniformly_convergent_on_compose_uniformly_continuous_on: |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
501 |
fixes f :: "'a :: metric_space \<Rightarrow> 'b :: metric_space" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
502 |
assumes lim: "uniformly_convergent_on A g" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
503 |
assumes cont: "uniformly_continuous_on B f" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
504 |
assumes ev: "eventually (\<lambda>x. \<forall>y\<in>A. g x y \<in> B) sequentially" and "closed B" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
505 |
shows "uniformly_convergent_on A (\<lambda>x y. f (g x y))" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
506 |
proof - |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
507 |
from lim obtain g' where g': "uniform_limit A g g' sequentially" |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
508 |
by (auto simp: uniformly_convergent_on_def) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
509 |
thus ?thesis |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
510 |
using uniform_limit_compose_uniformly_continuous_on[OF g' cont ev \<open>closed B\<close>] |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
511 |
by (auto simp: uniformly_convergent_on_def) |
b1d57dd345e1
First round of moving material from the number theory development
paulson <lp15@cam.ac.uk>
parents:
73932
diff
changeset
|
512 |
qed |
68838 | 513 |
|
514 |
subsection \<open>Weierstrass M-Test\<close> |
|
515 |
||
69529 | 516 |
proposition Weierstrass_m_test_ev: |
60812 | 517 |
fixes f :: "_ \<Rightarrow> _ \<Rightarrow> _ :: banach" |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
518 |
assumes "eventually (\<lambda>n. \<forall>x\<in>A. norm (f n x) \<le> M n) sequentially" |
60812 | 519 |
assumes "summable M" |
520 |
shows "uniform_limit A (\<lambda>n x. \<Sum>i<n. f i x) (\<lambda>x. suminf (\<lambda>i. f i x)) sequentially" |
|
521 |
proof (rule uniform_limitI) |
|
522 |
fix e :: real |
|
523 |
assume "0 < e" |
|
61222 | 524 |
from suminf_exist_split[OF \<open>0 < e\<close> \<open>summable M\<close>] |
60812 | 525 |
have "\<forall>\<^sub>F k in sequentially. norm (\<Sum>i. M (i + k)) < e" |
526 |
by (auto simp: eventually_sequentially) |
|
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
527 |
with eventually_all_ge_at_top[OF assms(1)] |
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
528 |
show "\<forall>\<^sub>F n in sequentially. \<forall>x\<in>A. dist (\<Sum>i<n. f i x) (\<Sum>i. f i x) < e" |
60812 | 529 |
proof eventually_elim |
530 |
case (elim k) |
|
531 |
show ?case |
|
532 |
proof safe |
|
533 |
fix x assume "x \<in> A" |
|
534 |
have "\<exists>N. \<forall>n\<ge>N. norm (f n x) \<le> M n" |
|
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
535 |
using assms(1) \<open>x \<in> A\<close> by (force simp: eventually_at_top_linorder) |
60812 | 536 |
hence summable_norm_f: "summable (\<lambda>n. norm (f n x))" |
61222 | 537 |
by(rule summable_norm_comparison_test[OF _ \<open>summable M\<close>]) |
60812 | 538 |
have summable_f: "summable (\<lambda>n. f n x)" |
539 |
using summable_norm_cancel[OF summable_norm_f] . |
|
540 |
have summable_norm_f_plus_k: "summable (\<lambda>i. norm (f (i + k) x))" |
|
541 |
using summable_ignore_initial_segment[OF summable_norm_f] |
|
542 |
by auto |
|
543 |
have summable_M_plus_k: "summable (\<lambda>i. M (i + k))" |
|
61222 | 544 |
using summable_ignore_initial_segment[OF \<open>summable M\<close>] |
60812 | 545 |
by auto |
546 |
||
547 |
have "dist (\<Sum>i<k. f i x) (\<Sum>i. f i x) = norm ((\<Sum>i. f i x) - (\<Sum>i<k. f i x))" |
|
548 |
using dist_norm dist_commute by (subst dist_commute) |
|
549 |
also have "... = norm (\<Sum>i. f (i + k) x)" |
|
550 |
using suminf_minus_initial_segment[OF summable_f, where k=k] by simp |
|
551 |
also have "... \<le> (\<Sum>i. norm (f (i + k) x))" |
|
552 |
using summable_norm[OF summable_norm_f_plus_k] . |
|
553 |
also have "... \<le> (\<Sum>i. M (i + k))" |
|
554 |
by (rule suminf_le[OF _ summable_norm_f_plus_k summable_M_plus_k]) |
|
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
555 |
(insert elim(1) \<open>x \<in> A\<close>, simp) |
60812 | 556 |
finally show "dist (\<Sum>i<k. f i x) (\<Sum>i. f i x) < e" |
557 |
using elim by auto |
|
558 |
qed |
|
559 |
qed |
|
560 |
qed |
|
561 |
||
62175 | 562 |
text\<open>Alternative version, formulated as in HOL Light\<close> |
70136 | 563 |
corollary\<^marker>\<open>tag unimportant\<close> series_comparison_uniform: |
62131
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
564 |
fixes f :: "_ \<Rightarrow> nat \<Rightarrow> _ :: banach" |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
565 |
assumes g: "summable g" and le: "\<And>n x. N \<le> n \<and> x \<in> A \<Longrightarrow> norm(f x n) \<le> g n" |
64267 | 566 |
shows "\<exists>l. \<forall>e. 0 < e \<longrightarrow> (\<exists>N. \<forall>n x. N \<le> n \<and> x \<in> A \<longrightarrow> dist(sum (f x) {..<n}) (l x) < e)" |
62131
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
567 |
proof - |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
568 |
have 1: "\<forall>\<^sub>F n in sequentially. \<forall>x\<in>A. norm (f x n) \<le> g n" |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
569 |
using le eventually_sequentially by auto |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
570 |
show ?thesis |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
571 |
apply (rule_tac x="(\<lambda>x. \<Sum>i. f x i)" in exI) |
69529 | 572 |
apply (metis (no_types, lifting) eventually_sequentially uniform_limitD [OF Weierstrass_m_test_ev [OF 1 g]]) |
62131
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
573 |
done |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
574 |
qed |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
575 |
|
70136 | 576 |
corollary\<^marker>\<open>tag unimportant\<close> Weierstrass_m_test: |
62131
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
577 |
fixes f :: "_ \<Rightarrow> _ \<Rightarrow> _ :: banach" |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
578 |
assumes "\<And>n x. x \<in> A \<Longrightarrow> norm (f n x) \<le> M n" |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
579 |
assumes "summable M" |
1baed43f453e
nonneg_Reals, nonpos_Reals, Cauchy integral formula, etc.
paulson
parents:
61973
diff
changeset
|
580 |
shows "uniform_limit A (\<lambda>n x. \<Sum>i<n. f i x) (\<lambda>x. suminf (\<lambda>i. f i x)) sequentially" |
69529 | 581 |
using assms by (intro Weierstrass_m_test_ev always_eventually) auto |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
582 |
|
70136 | 583 |
corollary\<^marker>\<open>tag unimportant\<close> Weierstrass_m_test'_ev: |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
584 |
fixes f :: "_ \<Rightarrow> _ \<Rightarrow> _ :: banach" |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
585 |
assumes "eventually (\<lambda>n. \<forall>x\<in>A. norm (f n x) \<le> M n) sequentially" "summable M" |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
586 |
shows "uniformly_convergent_on A (\<lambda>n x. \<Sum>i<n. f i x)" |
69529 | 587 |
unfolding uniformly_convergent_on_def by (rule exI, rule Weierstrass_m_test_ev[OF assms]) |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
588 |
|
70136 | 589 |
corollary\<^marker>\<open>tag unimportant\<close> Weierstrass_m_test': |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
590 |
fixes f :: "_ \<Rightarrow> _ \<Rightarrow> _ :: banach" |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
591 |
assumes "\<And>n x. x \<in> A \<Longrightarrow> norm (f n x) \<le> M n" "summable M" |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
592 |
shows "uniformly_convergent_on A (\<lambda>n x. \<Sum>i<n. f i x)" |
69529 | 593 |
unfolding uniformly_convergent_on_def by (rule exI, rule Weierstrass_m_test[OF assms]) |
61531
ab2e862263e7
Rounding function, uniform limits, cotangent, binomial identities
eberlm
parents:
61222
diff
changeset
|
594 |
|
77434
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
595 |
|
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
596 |
lemma Weierstrass_m_test_general: |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
597 |
fixes f :: "'a \<Rightarrow> 'b \<Rightarrow> 'c :: banach" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
598 |
fixes M :: "'a \<Rightarrow> real" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
599 |
assumes norm_le: "\<And>x y. x \<in> X \<Longrightarrow> y \<in> Y \<Longrightarrow> norm (f x y) \<le> M x" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
600 |
assumes summable: "M summable_on X" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
601 |
shows "uniform_limit Y (\<lambda>X y. \<Sum>x\<in>X. f x y) (\<lambda>y. \<Sum>\<^sub>\<infinity>x\<in>X. f x y) (finite_subsets_at_top X)" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
602 |
proof (rule uniform_limitI) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
603 |
fix \<epsilon> :: real |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
604 |
assume "\<epsilon> > 0" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
605 |
define S where "S = (\<lambda>y. \<Sum>\<^sub>\<infinity>x\<in>X. f x y)" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
606 |
have S: "((\<lambda>x. f x y) has_sum S y) X" if y: "y \<in> Y" for y |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
607 |
unfolding S_def |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
608 |
proof (rule has_sum_infsum) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
609 |
have "(\<lambda>x. norm (f x y)) summable_on X" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
610 |
by (rule abs_summable_on_comparison_test'[OF summable norm_le]) (use y in auto) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
611 |
thus "(\<lambda>x. f x y) summable_on X" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
612 |
by (metis abs_summable_summable) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
613 |
qed |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
614 |
|
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
615 |
define T where "T = (\<Sum>\<^sub>\<infinity>x\<in>X. M x)" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
616 |
have T: "(M has_sum T) X" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
617 |
unfolding T_def by (simp add: local.summable) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
618 |
have M_summable: "M summable_on X'" if "X' \<subseteq> X" for X' |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
619 |
using local.summable summable_on_subset_banach that by blast |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
620 |
|
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
621 |
have f_summable: "(\<lambda>x. f x y) summable_on X'" if "X' \<subseteq> X" "y \<in> Y" for X' y |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
622 |
using S summable_on_def summable_on_subset_banach that by blast |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
623 |
have "eventually (\<lambda>X'. dist (\<Sum>x\<in>X'. M x) T < \<epsilon>) (finite_subsets_at_top X)" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
624 |
using T \<open>\<epsilon> > 0\<close> unfolding T_def has_sum_def tendsto_iff by blast |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
625 |
moreover have "eventually (\<lambda>X'. finite X' \<and> X' \<subseteq> X) (finite_subsets_at_top X)" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
626 |
by (simp add: eventually_finite_subsets_at_top_weakI) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
627 |
ultimately show "\<forall>\<^sub>F X' in finite_subsets_at_top X. \<forall>y\<in>Y. dist (\<Sum>x\<in>X'. f x y) (\<Sum>\<^sub>\<infinity>x\<in>X. f x y) < \<epsilon>" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
628 |
proof eventually_elim |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
629 |
case X': (elim X') |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
630 |
show "\<forall>y\<in>Y. dist (\<Sum>x\<in>X'. f x y) (\<Sum>\<^sub>\<infinity>x\<in>X. f x y) < \<epsilon>" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
631 |
proof |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
632 |
fix y assume y: "y \<in> Y" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
633 |
have 1: "((\<lambda>x. f x y) has_sum (S y - (\<Sum>x\<in>X'. f x y))) (X - X')" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
634 |
using X' y by (intro has_sum_Diff S has_sum_finite[of X'] f_summable) auto |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
635 |
have 2: "(M has_sum (T - (\<Sum>x\<in>X'. M x))) (X - X')" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
636 |
using X' y by (intro has_sum_Diff T has_sum_finite[of X'] M_summable) auto |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
637 |
have "dist (\<Sum>x\<in>X'. f x y) (\<Sum>\<^sub>\<infinity>x\<in>X. f x y) = norm (S y - (\<Sum>x\<in>X'. f x y))" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
638 |
by (simp add: dist_norm norm_minus_commute S_def) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
639 |
also have "norm (S y - (\<Sum>x\<in>X'. f x y)) \<le> (\<Sum>\<^sub>\<infinity>x\<in>X-X'. M x)" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
640 |
using 2 y by (intro norm_infsum_le[OF 1 _ norm_le]) (auto simp: infsumI) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
641 |
also have "\<dots> = T - (\<Sum>x\<in>X'. M x)" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
642 |
using 2 by (auto simp: infsumI) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
643 |
also have "\<dots> < \<epsilon>" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
644 |
using X' by (simp add: dist_norm) |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
645 |
finally show "dist (\<Sum>x\<in>X'. f x y) (\<Sum>\<^sub>\<infinity>x\<in>X. f x y) < \<epsilon>" . |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
646 |
qed |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
647 |
qed |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
648 |
qed |
60812 | 649 |
|
82349
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
650 |
lemma Weierstrass_m_test_general': |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
651 |
fixes f :: "'a \<Rightarrow> 'b \<Rightarrow> 'c :: banach" |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
652 |
fixes M :: "'a \<Rightarrow> real" |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
653 |
assumes norm_le: "\<And>x y. x \<in> X \<Longrightarrow> y \<in> Y \<Longrightarrow> norm (f x y) \<le> M x" |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
654 |
assumes has_sum: "\<And>y. y \<in> Y \<Longrightarrow> ((\<lambda>x. f x y) has_sum S y) X" |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
655 |
assumes summable: "M summable_on X" |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
656 |
shows "uniform_limit Y (\<lambda>X y. \<Sum>x\<in>X. f x y) S (finite_subsets_at_top X)" |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
657 |
proof - |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
658 |
have "uniform_limit Y (\<lambda>X y. \<Sum>x\<in>X. f x y) (\<lambda>y. \<Sum>\<^sub>\<infinity>x\<in>X. f x y) (finite_subsets_at_top X)" |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
659 |
using norm_le summable by (rule Weierstrass_m_test_general) |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
660 |
also have "?this \<longleftrightarrow> ?thesis" |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
661 |
by (intro uniform_limit_cong refl always_eventually allI ballI) |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
662 |
(use has_sum in \<open>auto simp: has_sum_iff\<close>) |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
663 |
finally show ?thesis . |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
664 |
qed |
a854ca7ca7d9
More migration from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
78698
diff
changeset
|
665 |
|
68838 | 666 |
|
70136 | 667 |
subsection\<^marker>\<open>tag unimportant\<close> \<open>Structural introduction rules\<close> |
68838 | 668 |
|
77434
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
669 |
lemma uniform_limit_eq_rhs: "uniform_limit X f l F \<Longrightarrow> l = m \<Longrightarrow> uniform_limit X f m F" |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
670 |
by simp |
da41823d09a7
Imported a theorem about Infinite_Sum. Importing this theory a bit earlier is causing syntactic ambiguities with Infinite_Set_Sum however; no_notation needed
paulson <lp15@cam.ac.uk>
parents:
76724
diff
changeset
|
671 |
|
60812 | 672 |
named_theorems uniform_limit_intros "introduction rules for uniform_limit" |
61222 | 673 |
setup \<open> |
69597 | 674 |
Global_Theory.add_thms_dynamic (\<^binding>\<open>uniform_limit_eq_intros\<close>, |
60812 | 675 |
fn context => |
69597 | 676 |
Named_Theorems.get (Context.proof_of context) \<^named_theorems>\<open>uniform_limit_intros\<close> |
60812 | 677 |
|> map_filter (try (fn thm => @{thm uniform_limit_eq_rhs} OF [thm]))) |
61222 | 678 |
\<close> |
60812 | 679 |
|
680 |
lemma (in bounded_linear) uniform_limit[uniform_limit_intros]: |
|
681 |
assumes "uniform_limit X g l F" |
|
682 |
shows "uniform_limit X (\<lambda>a b. f (g a b)) (\<lambda>a. f (l a)) F" |
|
683 |
proof (rule uniform_limitI) |
|
684 |
fix e::real |
|
685 |
from pos_bounded obtain K |
|
686 |
where K: "\<And>x y. dist (f x) (f y) \<le> K * dist x y" "K > 0" |
|
687 |
by (auto simp: ac_simps dist_norm diff[symmetric]) |
|
61222 | 688 |
assume "0 < e" with \<open>K > 0\<close> have "e / K > 0" by simp |
60812 | 689 |
from uniform_limitD[OF assms this] |
690 |
show "\<forall>\<^sub>F n in F. \<forall>x\<in>X. dist (f (g n x)) (f (l x)) < e" |
|
691 |
by eventually_elim (metis le_less_trans mult.commute pos_less_divide_eq K) |
|
692 |
qed |
|
693 |
||
67371
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
694 |
lemma (in bounded_linear) uniformly_convergent_on: |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
695 |
assumes "uniformly_convergent_on A g" |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
696 |
shows "uniformly_convergent_on A (\<lambda>x y. f (g x y))" |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
697 |
proof - |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
698 |
from assms obtain l where "uniform_limit A g l sequentially" |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
699 |
unfolding uniformly_convergent_on_def by blast |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
700 |
hence "uniform_limit A (\<lambda>x y. f (g x y)) (\<lambda>x. f (l x)) sequentially" |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
701 |
by (rule uniform_limit) |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
702 |
thus ?thesis unfolding uniformly_convergent_on_def by blast |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
703 |
qed |
2d9cf74943e1
moved in some material from Euler-MacLaurin
paulson <lp15@cam.ac.uk>
parents:
66827
diff
changeset
|
704 |
|
60812 | 705 |
lemmas bounded_linear_uniform_limit_intros[uniform_limit_intros] = |
706 |
bounded_linear.uniform_limit[OF bounded_linear_Im] |
|
707 |
bounded_linear.uniform_limit[OF bounded_linear_Re] |
|
708 |
bounded_linear.uniform_limit[OF bounded_linear_cnj] |
|
709 |
bounded_linear.uniform_limit[OF bounded_linear_fst] |
|
710 |
bounded_linear.uniform_limit[OF bounded_linear_snd] |
|
711 |
bounded_linear.uniform_limit[OF bounded_linear_zero] |
|
712 |
bounded_linear.uniform_limit[OF bounded_linear_of_real] |
|
713 |
bounded_linear.uniform_limit[OF bounded_linear_inner_left] |
|
714 |
bounded_linear.uniform_limit[OF bounded_linear_inner_right] |
|
715 |
bounded_linear.uniform_limit[OF bounded_linear_divide] |
|
716 |
bounded_linear.uniform_limit[OF bounded_linear_scaleR_right] |
|
717 |
bounded_linear.uniform_limit[OF bounded_linear_mult_left] |
|
718 |
bounded_linear.uniform_limit[OF bounded_linear_mult_right] |
|
719 |
bounded_linear.uniform_limit[OF bounded_linear_scaleR_left] |
|
720 |
||
67685
bdff8bf0a75b
moved theorems from AFP/Affine_Arithmetic and AFP/Ordinary_Differential_Equations
immler
parents:
67371
diff
changeset
|
721 |
|
60812 | 722 |
lemmas uniform_limit_uminus[uniform_limit_intros] = |
723 |
bounded_linear.uniform_limit[OF bounded_linear_minus[OF bounded_linear_ident]] |
|
724 |
||
65204
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
725 |
lemma uniform_limit_const[uniform_limit_intros]: "uniform_limit S (\<lambda>x. c) c f" |
62949
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
726 |
by (auto intro!: uniform_limitI) |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
727 |
|
60812 | 728 |
lemma uniform_limit_add[uniform_limit_intros]: |
729 |
fixes f g::"'a \<Rightarrow> 'b \<Rightarrow> 'c::real_normed_vector" |
|
730 |
assumes "uniform_limit X f l F" |
|
731 |
assumes "uniform_limit X g m F" |
|
732 |
shows "uniform_limit X (\<lambda>a b. f a b + g a b) (\<lambda>a. l a + m a) F" |
|
733 |
proof (rule uniform_limitI) |
|
734 |
fix e::real |
|
735 |
assume "0 < e" |
|
736 |
hence "0 < e / 2" by simp |
|
737 |
from |
|
738 |
uniform_limitD[OF assms(1) this] |
|
739 |
uniform_limitD[OF assms(2) this] |
|
740 |
show "\<forall>\<^sub>F n in F. \<forall>x\<in>X. dist (f n x + g n x) (l x + m x) < e" |
|
741 |
by eventually_elim (simp add: dist_triangle_add_half) |
|
742 |
qed |
|
743 |
||
744 |
lemma uniform_limit_minus[uniform_limit_intros]: |
|
745 |
fixes f g::"'a \<Rightarrow> 'b \<Rightarrow> 'c::real_normed_vector" |
|
746 |
assumes "uniform_limit X f l F" |
|
747 |
assumes "uniform_limit X g m F" |
|
748 |
shows "uniform_limit X (\<lambda>a b. f a b - g a b) (\<lambda>a. l a - m a) F" |
|
749 |
unfolding diff_conv_add_uminus |
|
750 |
by (rule uniform_limit_intros assms)+ |
|
751 |
||
62949
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
752 |
lemma uniform_limit_norm[uniform_limit_intros]: |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
753 |
assumes "uniform_limit S g l f" |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
754 |
shows "uniform_limit S (\<lambda>x y. norm (g x y)) (\<lambda>x. norm (l x)) f" |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
755 |
using assms |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
756 |
apply (rule metric_uniform_limit_imp_uniform_limit) |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
757 |
apply (rule eventuallyI) |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
758 |
by (metis dist_norm norm_triangle_ineq3 real_norm_def) |
f36a54da47a4
added derivative of scaling in exponential function
immler
parents:
62393
diff
changeset
|
759 |
|
60812 | 760 |
lemma (in bounded_bilinear) bounded_uniform_limit[uniform_limit_intros]: |
761 |
assumes "uniform_limit X f l F" |
|
762 |
assumes "uniform_limit X g m F" |
|
763 |
assumes "bounded (m ` X)" |
|
764 |
assumes "bounded (l ` X)" |
|
765 |
shows "uniform_limit X (\<lambda>a b. prod (f a b) (g a b)) (\<lambda>a. prod (l a) (m a)) F" |
|
766 |
proof (rule uniform_limitI) |
|
767 |
fix e::real |
|
768 |
from pos_bounded obtain K where K: |
|
769 |
"0 < K" "\<And>a b. norm (prod a b) \<le> norm a * norm b * K" |
|
770 |
by auto |
|
771 |
hence "sqrt (K*4) > 0" by simp |
|
772 |
||
773 |
from assms obtain Km Kl |
|
774 |
where Km: "Km > 0" "\<And>x. x \<in> X \<Longrightarrow> norm (m x) \<le> Km" |
|
775 |
and Kl: "Kl > 0" "\<And>x. x \<in> X \<Longrightarrow> norm (l x) \<le> Kl" |
|
776 |
by (auto simp: bounded_pos) |
|
777 |
hence "K * Km * 4 > 0" "K * Kl * 4 > 0" |
|
61222 | 778 |
using \<open>K > 0\<close> |
60812 | 779 |
by simp_all |
780 |
assume "0 < e" |
|
781 |
||
782 |
hence "sqrt e > 0" by simp |
|
61222 | 783 |
from uniform_limitD[OF assms(1) divide_pos_pos[OF this \<open>sqrt (K*4) > 0\<close>]] |
784 |
uniform_limitD[OF assms(2) divide_pos_pos[OF this \<open>sqrt (K*4) > 0\<close>]] |
|
785 |
uniform_limitD[OF assms(1) divide_pos_pos[OF \<open>e > 0\<close> \<open>K * Km * 4 > 0\<close>]] |
|
786 |
uniform_limitD[OF assms(2) divide_pos_pos[OF \<open>e > 0\<close> \<open>K * Kl * 4 > 0\<close>]] |
|
60812 | 787 |
show "\<forall>\<^sub>F n in F. \<forall>x\<in>X. dist (prod (f n x) (g n x)) (prod (l x) (m x)) < e" |
788 |
proof eventually_elim |
|
789 |
case (elim n) |
|
790 |
show ?case |
|
791 |
proof safe |
|
792 |
fix x assume "x \<in> X" |
|
793 |
have "dist (prod (f n x) (g n x)) (prod (l x) (m x)) \<le> |
|
794 |
norm (prod (f n x - l x) (g n x - m x)) + |
|
795 |
norm (prod (f n x - l x) (m x)) + |
|
796 |
norm (prod (l x) (g n x - m x))" |
|
797 |
by (auto simp: dist_norm prod_diff_prod intro: order_trans norm_triangle_ineq add_mono) |
|
798 |
also note K(2)[of "f n x - l x" "g n x - m x"] |
|
61222 | 799 |
also from elim(1)[THEN bspec, OF \<open>_ \<in> X\<close>, unfolded dist_norm] |
60812 | 800 |
have "norm (f n x - l x) \<le> sqrt e / sqrt (K * 4)" |
801 |
by simp |
|
61222 | 802 |
also from elim(2)[THEN bspec, OF \<open>_ \<in> X\<close>, unfolded dist_norm] |
60812 | 803 |
have "norm (g n x - m x) \<le> sqrt e / sqrt (K * 4)" |
804 |
by simp |
|
805 |
also have "sqrt e / sqrt (K * 4) * (sqrt e / sqrt (K * 4)) * K = e / 4" |
|
61222 | 806 |
using \<open>K > 0\<close> \<open>e > 0\<close> by auto |
60812 | 807 |
also note K(2)[of "f n x - l x" "m x"] |
808 |
also note K(2)[of "l x" "g n x - m x"] |
|
61222 | 809 |
also from elim(3)[THEN bspec, OF \<open>_ \<in> X\<close>, unfolded dist_norm] |
60812 | 810 |
have "norm (f n x - l x) \<le> e / (K * Km * 4)" |
811 |
by simp |
|
61222 | 812 |
also from elim(4)[THEN bspec, OF \<open>_ \<in> X\<close>, unfolded dist_norm] |
60812 | 813 |
have "norm (g n x - m x) \<le> e / (K * Kl * 4)" |
814 |
by simp |
|
61222 | 815 |
also note Kl(2)[OF \<open>_ \<in> X\<close>] |
816 |
also note Km(2)[OF \<open>_ \<in> X\<close>] |
|
60812 | 817 |
also have "e / (K * Km * 4) * Km * K = e / 4" |
61222 | 818 |
using \<open>K > 0\<close> \<open>Km > 0\<close> by simp |
60812 | 819 |
also have " Kl * (e / (K * Kl * 4)) * K = e / 4" |
61222 | 820 |
using \<open>K > 0\<close> \<open>Kl > 0\<close> by simp |
821 |
also have "e / 4 + e / 4 + e / 4 < e" using \<open>e > 0\<close> by simp |
|
60812 | 822 |
finally show "dist (prod (f n x) (g n x)) (prod (l x) (m x)) < e" |
61222 | 823 |
using \<open>K > 0\<close> \<open>Kl > 0\<close> \<open>Km > 0\<close> \<open>e > 0\<close> |
60812 | 824 |
by (simp add: algebra_simps mult_right_mono divide_right_mono) |
825 |
qed |
|
826 |
qed |
|
827 |
qed |
|
828 |
||
829 |
lemmas bounded_bilinear_bounded_uniform_limit_intros[uniform_limit_intros] = |
|
830 |
bounded_bilinear.bounded_uniform_limit[OF Inner_Product.bounded_bilinear_inner] |
|
831 |
bounded_bilinear.bounded_uniform_limit[OF Real_Vector_Spaces.bounded_bilinear_mult] |
|
832 |
bounded_bilinear.bounded_uniform_limit[OF Real_Vector_Spaces.bounded_bilinear_scaleR] |
|
833 |
||
65036
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
834 |
lemma uniform_lim_mult: |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
835 |
fixes f :: "'a \<Rightarrow> 'b \<Rightarrow> 'c::real_normed_algebra" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
836 |
assumes f: "uniform_limit S f l F" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
837 |
and g: "uniform_limit S g m F" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
838 |
and l: "bounded (l ` S)" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
839 |
and m: "bounded (m ` S)" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
840 |
shows "uniform_limit S (\<lambda>a b. f a b * g a b) (\<lambda>a. l a * m a) F" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
841 |
by (intro bounded_bilinear_bounded_uniform_limit_intros assms) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
842 |
|
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
843 |
lemma uniform_lim_inverse: |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
844 |
fixes f :: "'a \<Rightarrow> 'b \<Rightarrow> 'c::real_normed_field" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
845 |
assumes f: "uniform_limit S f l F" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
846 |
and b: "\<And>x. x \<in> S \<Longrightarrow> b \<le> norm(l x)" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
847 |
and "b > 0" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
848 |
shows "uniform_limit S (\<lambda>x y. inverse (f x y)) (inverse \<circ> l) F" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
849 |
proof (rule uniform_limitI) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
850 |
fix e::real |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
851 |
assume "e > 0" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
852 |
have lte: "dist (inverse (f x y)) ((inverse \<circ> l) y) < e" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
853 |
if "b/2 \<le> norm (f x y)" "norm (f x y - l y) < e * b\<^sup>2 / 2" "y \<in> S" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
854 |
for x y |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
855 |
proof - |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
856 |
have [simp]: "l y \<noteq> 0" "f x y \<noteq> 0" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
857 |
using \<open>b > 0\<close> that b [OF \<open>y \<in> S\<close>] by fastforce+ |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
858 |
have "norm (l y - f x y) < e * b\<^sup>2 / 2" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
859 |
by (metis norm_minus_commute that(2)) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
860 |
also have "... \<le> e * (norm (f x y) * norm (l y))" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
861 |
using \<open>e > 0\<close> that b [OF \<open>y \<in> S\<close>] apply (simp add: power2_eq_square) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
862 |
by (metis \<open>b > 0\<close> less_eq_real_def mult.left_commute mult_mono') |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
863 |
finally show ?thesis |
70817
dd675800469d
dedicated fact collections for algebraic simplification rules potentially splitting goals
haftmann
parents:
70136
diff
changeset
|
864 |
by (auto simp: dist_norm field_split_simps norm_mult norm_divide) |
65036
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
865 |
qed |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
866 |
have "\<forall>\<^sub>F n in F. \<forall>x\<in>S. dist (f n x) (l x) < b/2" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
867 |
using uniform_limitD [OF f, of "b/2"] by (simp add: \<open>b > 0\<close>) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
868 |
then have "\<forall>\<^sub>F x in F. \<forall>y\<in>S. b/2 \<le> norm (f x y)" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
869 |
apply (rule eventually_mono) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
870 |
using b apply (simp only: dist_norm) |
73932
fd21b4a93043
added opaque_combs and renamed hide_lams to opaque_lifting
desharna
parents:
70817
diff
changeset
|
871 |
by (metis (no_types, opaque_lifting) diff_zero dist_commute dist_norm norm_triangle_half_l not_less) |
65036
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
872 |
then have "\<forall>\<^sub>F x in F. \<forall>y\<in>S. b/2 \<le> norm (f x y) \<and> norm (f x y - l y) < e * b\<^sup>2 / 2" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
873 |
apply (simp only: ball_conj_distrib dist_norm [symmetric]) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
874 |
apply (rule eventually_conj, assumption) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
875 |
apply (rule uniform_limitD [OF f, of "e * b ^ 2 / 2"]) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
876 |
using \<open>b > 0\<close> \<open>e > 0\<close> by auto |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
877 |
then show "\<forall>\<^sub>F x in F. \<forall>y\<in>S. dist (inverse (f x y)) ((inverse \<circ> l) y) < e" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
878 |
using lte by (force intro: eventually_mono) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
879 |
qed |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
880 |
|
65037
2cf841ff23be
some new material, also recasting some theorems using “obtains”
paulson <lp15@cam.ac.uk>
parents:
65036
diff
changeset
|
881 |
lemma uniform_lim_divide: |
65036
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
882 |
fixes f :: "'a \<Rightarrow> 'b \<Rightarrow> 'c::real_normed_field" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
883 |
assumes f: "uniform_limit S f l F" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
884 |
and g: "uniform_limit S g m F" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
885 |
and l: "bounded (l ` S)" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
886 |
and b: "\<And>x. x \<in> S \<Longrightarrow> b \<le> norm(m x)" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
887 |
and "b > 0" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
888 |
shows "uniform_limit S (\<lambda>a b. f a b / g a b) (\<lambda>a. l a / m a) F" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
889 |
proof - |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
890 |
have m: "bounded ((inverse \<circ> m) ` S)" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
891 |
using b \<open>b > 0\<close> |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
892 |
apply (simp add: bounded_iff) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
893 |
by (metis le_imp_inverse_le norm_inverse) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
894 |
have "uniform_limit S (\<lambda>a b. f a b * inverse (g a b)) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
895 |
(\<lambda>a. l a * (inverse \<circ> m) a) F" |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
896 |
by (rule uniform_lim_mult [OF f uniform_lim_inverse [OF g b \<open>b > 0\<close>] l m]) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
897 |
then show ?thesis |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
898 |
by (simp add: field_class.field_divide_inverse) |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
899 |
qed |
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
900 |
|
60812 | 901 |
lemma uniform_limit_null_comparison: |
902 |
assumes "\<forall>\<^sub>F x in F. \<forall>a\<in>S. norm (f x a) \<le> g x a" |
|
903 |
assumes "uniform_limit S g (\<lambda>_. 0) F" |
|
904 |
shows "uniform_limit S f (\<lambda>_. 0) F" |
|
905 |
using assms(2) |
|
906 |
proof (rule metric_uniform_limit_imp_uniform_limit) |
|
907 |
show "\<forall>\<^sub>F x in F. \<forall>y\<in>S. dist (f x y) 0 \<le> dist (g x y) 0" |
|
61810 | 908 |
using assms(1) by (rule eventually_mono) (force simp add: dist_norm) |
60812 | 909 |
qed |
910 |
||
65036
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
911 |
lemma uniform_limit_on_Un: |
60812 | 912 |
"uniform_limit I f g F \<Longrightarrow> uniform_limit J f g F \<Longrightarrow> uniform_limit (I \<union> J) f g F" |
913 |
by (auto intro!: uniform_limitI dest!: uniform_limitD elim: eventually_elim2) |
|
914 |
||
62381
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
915 |
lemma uniform_limit_on_empty [iff]: |
60812 | 916 |
"uniform_limit {} f g F" |
917 |
by (auto intro!: uniform_limitI) |
|
918 |
||
919 |
lemma uniform_limit_on_UNION: |
|
920 |
assumes "finite S" |
|
921 |
assumes "\<And>s. s \<in> S \<Longrightarrow> uniform_limit (h s) f g F" |
|
69313 | 922 |
shows "uniform_limit (\<Union>(h ` S)) f g F" |
60812 | 923 |
using assms |
65036
ab7e11730ad8
Some new lemmas. Existing lemmas modified to use uniform_limit rather than its expansion
paulson <lp15@cam.ac.uk>
parents:
64267
diff
changeset
|
924 |
by induct (auto intro: uniform_limit_on_empty uniform_limit_on_Un) |
60812 | 925 |
|
926 |
lemma uniform_limit_on_Union: |
|
927 |
assumes "finite I" |
|
928 |
assumes "\<And>J. J \<in> I \<Longrightarrow> uniform_limit J f g F" |
|
929 |
shows "uniform_limit (Union I) f g F" |
|
930 |
by (metis SUP_identity_eq assms uniform_limit_on_UNION) |
|
931 |
||
932 |
lemma uniform_limit_on_subset: |
|
933 |
"uniform_limit J f g F \<Longrightarrow> I \<subseteq> J \<Longrightarrow> uniform_limit I f g F" |
|
61810 | 934 |
by (auto intro!: uniform_limitI dest!: uniform_limitD intro: eventually_mono) |
61552
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
935 |
|
65204
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
936 |
lemma uniform_limit_bounded: |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
937 |
fixes f::"'i \<Rightarrow> 'a::topological_space \<Rightarrow> 'b::metric_space" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
938 |
assumes l: "uniform_limit S f l F" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
939 |
assumes bnd: "\<forall>\<^sub>F i in F. bounded (f i ` S)" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
940 |
assumes "F \<noteq> bot" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
941 |
shows "bounded (l ` S)" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
942 |
proof - |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
943 |
from l have "\<forall>\<^sub>F n in F. \<forall>x\<in>S. dist (l x) (f n x) < 1" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
944 |
by (auto simp: uniform_limit_iff dist_commute dest!: spec[where x=1]) |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
945 |
with bnd |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
946 |
have "\<forall>\<^sub>F n in F. \<exists>M. \<forall>x\<in>S. dist undefined (l x) \<le> M + 1" |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
947 |
by eventually_elim |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
948 |
(auto intro!: order_trans[OF dist_triangle2 add_mono] intro: less_imp_le |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
949 |
simp: bounded_any_center[where a=undefined]) |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
950 |
then show ?thesis using assms |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
951 |
by (auto simp: bounded_any_center[where a=undefined] dest!: eventually_happens) |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
952 |
qed |
d23eded35a33
modernized construction of type bcontfun; base explicit theorems on Uniform_Limit.thy; added some lemmas
immler
parents:
65037
diff
changeset
|
953 |
|
61552
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
954 |
lemma uniformly_convergent_add: |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
955 |
"uniformly_convergent_on A f \<Longrightarrow> uniformly_convergent_on A g\<Longrightarrow> |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
956 |
uniformly_convergent_on A (\<lambda>k x. f k x + g k x :: 'a :: {real_normed_algebra})" |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
957 |
unfolding uniformly_convergent_on_def by (blast dest: uniform_limit_add) |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
958 |
|
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
959 |
lemma uniformly_convergent_minus: |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
960 |
"uniformly_convergent_on A f \<Longrightarrow> uniformly_convergent_on A g\<Longrightarrow> |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
961 |
uniformly_convergent_on A (\<lambda>k x. f k x - g k x :: 'a :: {real_normed_algebra})" |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
962 |
unfolding uniformly_convergent_on_def by (blast dest: uniform_limit_minus) |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
963 |
|
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
964 |
lemma uniformly_convergent_mult: |
63594
bd218a9320b5
HOL-Multivariate_Analysis: rename theories for more descriptive names
hoelzl
parents:
63040
diff
changeset
|
965 |
"uniformly_convergent_on A f \<Longrightarrow> |
61552
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
966 |
uniformly_convergent_on A (\<lambda>k x. c * f k x :: 'a :: {real_normed_algebra})" |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
967 |
unfolding uniformly_convergent_on_def |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
968 |
by (blast dest: bounded_linear_uniform_limit_intros(13)) |
980dd46a03fb
Added binomial identities to CONTRIBUTORS; small lemmas on of_int/pochhammer
eberlm
parents:
61531
diff
changeset
|
969 |
|
62381
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
970 |
subsection\<open>Power series and uniform convergence\<close> |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
971 |
|
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
972 |
proposition powser_uniformly_convergent: |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
973 |
fixes a :: "nat \<Rightarrow> 'a::{real_normed_div_algebra,banach}" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
974 |
assumes "r < conv_radius a" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
975 |
shows "uniformly_convergent_on (cball \<xi> r) (\<lambda>n x. \<Sum>i<n. a i * (x - \<xi>) ^ i)" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
976 |
proof (cases "0 \<le> r") |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
977 |
case True |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
978 |
then have *: "summable (\<lambda>n. norm (a n) * r ^ n)" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
979 |
using abs_summable_in_conv_radius [of "of_real r" a] assms |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
980 |
by (simp add: norm_mult norm_power) |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
981 |
show ?thesis |
69529 | 982 |
by (simp add: Weierstrass_m_test'_ev [OF _ *] norm_mult norm_power |
62381
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
983 |
mult_left_mono power_mono dist_norm norm_minus_commute) |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
984 |
next |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
985 |
case False then show ?thesis by (simp add: not_le) |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
986 |
qed |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
987 |
|
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
988 |
lemma powser_uniform_limit: |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
989 |
fixes a :: "nat \<Rightarrow> 'a::{real_normed_div_algebra,banach}" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
990 |
assumes "r < conv_radius a" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
991 |
shows "uniform_limit (cball \<xi> r) (\<lambda>n x. \<Sum>i<n. a i * (x - \<xi>) ^ i) (\<lambda>x. suminf (\<lambda>i. a i * (x - \<xi>) ^ i)) sequentially" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
992 |
using powser_uniformly_convergent [OF assms] |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
993 |
by (simp add: Uniform_Limit.uniformly_convergent_uniform_limit_iff Series.suminf_eq_lim) |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
994 |
|
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
995 |
lemma powser_continuous_suminf: |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
996 |
fixes a :: "nat \<Rightarrow> 'a::{real_normed_div_algebra,banach}" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
997 |
assumes "r < conv_radius a" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
998 |
shows "continuous_on (cball \<xi> r) (\<lambda>x. suminf (\<lambda>i. a i * (x - \<xi>) ^ i))" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
999 |
apply (rule uniform_limit_theorem [OF _ powser_uniform_limit]) |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1000 |
apply (rule eventuallyI continuous_intros assms)+ |
82351
882b80bd10c8
More from Theta_Functions_Library
paulson <lp15@cam.ac.uk>
parents:
82349
diff
changeset
|
1001 |
apply auto |
62381
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1002 |
done |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1003 |
|
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1004 |
lemma powser_continuous_sums: |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1005 |
fixes a :: "nat \<Rightarrow> 'a::{real_normed_div_algebra,banach}" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1006 |
assumes r: "r < conv_radius a" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1007 |
and sm: "\<And>x. x \<in> cball \<xi> r \<Longrightarrow> (\<lambda>n. a n * (x - \<xi>) ^ n) sums (f x)" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1008 |
shows "continuous_on (cball \<xi> r) f" |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1009 |
apply (rule continuous_on_cong [THEN iffD1, OF refl _ powser_continuous_suminf [OF r]]) |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1010 |
using sm sums_unique by fastforce |
a6479cb85944
New and revised material for (multivariate) analysis
paulson <lp15@cam.ac.uk>
parents:
62175
diff
changeset
|
1011 |
|
67685
bdff8bf0a75b
moved theorems from AFP/Affine_Arithmetic and AFP/Ordinary_Differential_Equations
immler
parents:
67371
diff
changeset
|
1012 |
lemmas uniform_limit_subset_union = uniform_limit_on_subset[OF uniform_limit_on_Union] |
bdff8bf0a75b
moved theorems from AFP/Affine_Arithmetic and AFP/Ordinary_Differential_Equations
immler
parents:
67371
diff
changeset
|
1013 |
|
62390 | 1014 |
end |
62393 | 1015 |