diff -r f2e51e704a96 -r ab2e862263e7 src/HOL/Multivariate_Analysis/Complex_Analysis_Basics.thy --- a/src/HOL/Multivariate_Analysis/Complex_Analysis_Basics.thy Thu Oct 29 15:40:52 2015 +0100 +++ b/src/HOL/Multivariate_Analysis/Complex_Analysis_Basics.thy Mon Nov 02 11:56:28 2015 +0100 @@ -819,6 +819,7 @@ subsection\Complex differentiation of sequences and series\ +(* TODO: Could probably be simplified using Uniform_Limit *) lemma has_complex_derivative_sequence: fixes s :: "complex set" assumes cvs: "convex s" @@ -899,6 +900,41 @@ qed qed + +lemma complex_differentiable_series: + fixes f :: "nat \ complex \ complex" + assumes "convex s" "open s" + assumes "\n x. x \ s \ (f n has_field_derivative f' n x) (at x)" + assumes "uniformly_convergent_on s (\n x. \i s" "summable (\n. f n x0)" and x: "x \ s" + shows "summable (\n. f n x)" and "(\x. \n. f n x) complex_differentiable (at x)" +proof - + from assms(4) obtain g' where A: "uniform_limit s (\n x. \ig. \x\s. (\n. f n x) sums g x \ (g has_field_derivative g' x) (at x within s)" + by (intro has_field_derivative_series[of s f f' g' x0] assms A has_field_derivative_at_within) + then obtain g where g: "\x. x \ s \ (\n. f n x) sums g x" + "\x. x \ s \ (g has_field_derivative g' x) (at x within s)" by blast + from g[OF x] show "summable (\n. f n x)" by (auto simp: summable_def) + from g(2)[OF x] have g': "(g has_derivative op * (g' x)) (at x)" + by (simp add: has_field_derivative_def s) + have "((\x. \n. f n x) has_derivative op * (g' x)) (at x)" + by (rule has_derivative_transform_within_open[OF `open s` x _ g']) + (insert g, auto simp: sums_iff) + thus "(\x. \n. f n x) complex_differentiable (at x)" unfolding differentiable_def + by (auto simp: summable_def complex_differentiable_def has_field_derivative_def) +qed + +lemma complex_differentiable_series': + fixes f :: "nat \ complex \ complex" + assumes "convex s" "open s" + assumes "\n x. x \ s \ (f n has_field_derivative f' n x) (at x)" + assumes "uniformly_convergent_on s (\n x. \i s" "summable (\n. f n x0)" + shows "(\x. \n. f n x) complex_differentiable (at x0)" + using complex_differentiable_series[OF assms, of x0] `x0 \ s` by blast+ + subsection\Bound theorem\ lemma complex_differentiable_bound: