src/HOL/Analysis/Complex_Analysis_Basics.thy
changeset 68055 2cab37094fc4
parent 67979 53323937ee25
child 68239 0764ee22a4d1
equal deleted inserted replaced
68054:ebd179b82e20 68055:2cab37094fc4
   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"
   882     assume "x \<in> s"
   880     assume "x \<in> s"
   883     then show "((f n) has_derivative (\<lambda>z. z * f' n x)) (at x within s)"
   881     then show "((f n) has_derivative (\<lambda>z. z * f' n x)) (at x within s)"
   884       by (metis df has_field_derivative_def mult_commute_abs)
   882       by (metis df has_field_derivative_def mult_commute_abs)
   885   next show " ((\<lambda>n. f n x) sums l)"
   883   next show " ((\<lambda>n. f n x) sums l)"
   886     by (rule sf)
   884     by (rule sf)
   887   next show "\<forall>e>0. \<exists>N. \<forall>n\<ge>N. \<forall>x\<in>s. \<forall>h. cmod ((\<Sum>i<n. h * f' i x) - g' x * h) \<le> e * cmod h"
   885   next show "\<And>e. e>0 \<Longrightarrow> \<exists>N. \<forall>n\<ge>N. \<forall>x\<in>s. \<forall>h. cmod ((\<Sum>i<n. h * f' i x) - g' x * h) \<le> e * cmod h"
   888     by (blast intro: **)
   886     by (blast intro: **)
   889   qed
   887   qed
   890 qed
   888 qed
   891 
   889 
   892 
   890 
   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"