835 then show "cmod (f' n y * h - g' y * h) \<le> e * cmod h" |
835 then show "cmod (f' n y * h - g' y * h) \<le> e * cmod h" |
836 by (simp add: norm_mult [symmetric] field_simps) |
836 by (simp add: norm_mult [symmetric] field_simps) |
837 qed |
837 qed |
838 } note ** = this |
838 } note ** = this |
839 show ?thesis |
839 show ?thesis |
840 unfolding has_field_derivative_def |
840 unfolding has_field_derivative_def |
841 proof (rule has_derivative_sequence [OF cvs _ _ x]) |
841 proof (rule has_derivative_sequence [OF cvs _ _ x]) |
842 show "\<forall>n. \<forall>x\<in>s. (f n has_derivative (( * ) (f' n x))) (at x within s)" |
842 show "(\<lambda>n. f n x) \<longlonglongrightarrow> l" |
843 by (metis has_field_derivative_def df) |
|
844 next show "(\<lambda>n. f n x) \<longlonglongrightarrow> l" |
|
845 by (rule tf) |
843 by (rule tf) |
846 next show "\<forall>e>0. \<exists>N. \<forall>n\<ge>N. \<forall>x\<in>s. \<forall>h. cmod (f' n x * h - g' x * h) \<le> e * cmod h" |
844 next show "\<And>e. e > 0 \<Longrightarrow> \<exists>N. \<forall>n\<ge>N. \<forall>x\<in>s. \<forall>h. cmod (f' n x * h - g' x * h) \<le> e * cmod h" |
847 by (blast intro: **) |
845 by (blast intro: **) |
848 qed |
846 qed (metis has_field_derivative_def df) |
849 qed |
847 qed |
850 |
848 |
851 lemma has_complex_derivative_series: |
849 lemma has_complex_derivative_series: |
852 fixes s :: "complex set" |
850 fixes s :: "complex set" |
853 assumes cvs: "convex s" |
851 assumes cvs: "convex s" |
894 fixes f :: "nat \<Rightarrow> 'a::{real_normed_field,banach} \<Rightarrow> 'a" |
892 fixes f :: "nat \<Rightarrow> 'a::{real_normed_field,banach} \<Rightarrow> 'a" |
895 assumes "convex s" "open s" |
893 assumes "convex s" "open s" |
896 assumes "\<And>n x. x \<in> s \<Longrightarrow> (f n has_field_derivative f' n x) (at x)" |
894 assumes "\<And>n x. x \<in> s \<Longrightarrow> (f n has_field_derivative f' n x) (at x)" |
897 assumes "uniformly_convergent_on s (\<lambda>n x. \<Sum>i<n. f' i x)" |
895 assumes "uniformly_convergent_on s (\<lambda>n x. \<Sum>i<n. f' i x)" |
898 assumes "x0 \<in> s" "summable (\<lambda>n. f n x0)" and x: "x \<in> s" |
896 assumes "x0 \<in> s" "summable (\<lambda>n. f n x0)" and x: "x \<in> s" |
899 shows "summable (\<lambda>n. f n x)" and "(\<lambda>x. \<Sum>n. f n x) field_differentiable (at x)" |
897 shows "(\<lambda>x. \<Sum>n. f n x) field_differentiable (at x)" |
900 proof - |
898 proof - |
901 from assms(4) obtain g' where A: "uniform_limit s (\<lambda>n x. \<Sum>i<n. f' i x) g' sequentially" |
899 from assms(4) obtain g' where A: "uniform_limit s (\<lambda>n x. \<Sum>i<n. f' i x) g' sequentially" |
902 unfolding uniformly_convergent_on_def by blast |
900 unfolding uniformly_convergent_on_def by blast |
903 from x and \<open>open s\<close> have s: "at x within s = at x" by (rule at_within_open) |
901 from x and \<open>open s\<close> have s: "at x within s = at x" by (rule at_within_open) |
904 have "\<exists>g. \<forall>x\<in>s. (\<lambda>n. f n x) sums g x \<and> (g has_field_derivative g' x) (at x within s)" |
902 have "\<exists>g. \<forall>x\<in>s. (\<lambda>n. f n x) sums g x \<and> (g has_field_derivative g' x) (at x within s)" |
905 by (intro has_field_derivative_series[of s f f' g' x0] assms A has_field_derivative_at_within) |
903 by (intro has_field_derivative_series[of s f f' g' x0] assms A has_field_derivative_at_within) |
906 then obtain g where g: "\<And>x. x \<in> s \<Longrightarrow> (\<lambda>n. f n x) sums g x" |
904 then obtain g where g: "\<And>x. x \<in> s \<Longrightarrow> (\<lambda>n. f n x) sums g x" |
907 "\<And>x. x \<in> s \<Longrightarrow> (g has_field_derivative g' x) (at x within s)" by blast |
905 "\<And>x. x \<in> s \<Longrightarrow> (g has_field_derivative g' x) (at x within s)" by blast |
908 from g[OF x] show "summable (\<lambda>n. f n x)" by (auto simp: summable_def) |
|
909 from g(2)[OF x] have g': "(g has_derivative ( * ) (g' x)) (at x)" |
906 from g(2)[OF x] have g': "(g has_derivative ( * ) (g' x)) (at x)" |
910 by (simp add: has_field_derivative_def s) |
907 by (simp add: has_field_derivative_def s) |
911 have "((\<lambda>x. \<Sum>n. f n x) has_derivative ( * ) (g' x)) (at x)" |
908 have "((\<lambda>x. \<Sum>n. f n x) has_derivative ( * ) (g' x)) (at x)" |
912 by (rule has_derivative_transform_within_open[OF g' \<open>open s\<close> x]) |
909 by (rule has_derivative_transform_within_open[OF g' \<open>open s\<close> x]) |
913 (insert g, auto simp: sums_iff) |
910 (insert g, auto simp: sums_iff) |
914 thus "(\<lambda>x. \<Sum>n. f n x) field_differentiable (at x)" unfolding differentiable_def |
911 thus "(\<lambda>x. \<Sum>n. f n x) field_differentiable (at x)" unfolding differentiable_def |
915 by (auto simp: summable_def field_differentiable_def has_field_derivative_def) |
912 by (auto simp: summable_def field_differentiable_def has_field_derivative_def) |
916 qed |
913 qed |
917 |
|
918 lemma field_differentiable_series': |
|
919 fixes f :: "nat \<Rightarrow> 'a::{real_normed_field,banach} \<Rightarrow> 'a" |
|
920 assumes "convex s" "open s" |
|
921 assumes "\<And>n x. x \<in> s \<Longrightarrow> (f n has_field_derivative f' n x) (at x)" |
|
922 assumes "uniformly_convergent_on s (\<lambda>n x. \<Sum>i<n. f' i x)" |
|
923 assumes "x0 \<in> s" "summable (\<lambda>n. f n x0)" |
|
924 shows "(\<lambda>x. \<Sum>n. f n x) field_differentiable (at x0)" |
|
925 using field_differentiable_series[OF assms, of x0] \<open>x0 \<in> s\<close> by blast+ |
|
926 |
914 |
927 subsection\<open>Bound theorem\<close> |
915 subsection\<open>Bound theorem\<close> |
928 |
916 |
929 lemma field_differentiable_bound: |
917 lemma field_differentiable_bound: |
930 fixes s :: "'a::real_normed_field set" |
918 fixes s :: "'a::real_normed_field set" |