136 using \<open>open S\<close> \<open>0 \<in> S\<close> openE by auto |
136 using \<open>open S\<close> \<open>0 \<in> S\<close> openE by auto |
137 have bdd: "bdd_above ((\<lambda>h. norm(deriv h 0)) ` F)" |
137 have bdd: "bdd_above ((\<lambda>h. norm(deriv h 0)) ` F)" |
138 proof (intro bdd_aboveI exI ballI, clarify) |
138 proof (intro bdd_aboveI exI ballI, clarify) |
139 show "norm (deriv f 0) \<le> 1 / r" if "f \<in> F" for f |
139 show "norm (deriv f 0) \<le> 1 / r" if "f \<in> F" for f |
140 proof - |
140 proof - |
141 have r01: "( * ) (complex_of_real r) ` ball 0 1 \<subseteq> S" |
141 have r01: "(*) (complex_of_real r) ` ball 0 1 \<subseteq> S" |
142 using that \<open>r > 0\<close> by (auto simp: norm_mult r [THEN subsetD]) |
142 using that \<open>r > 0\<close> by (auto simp: norm_mult r [THEN subsetD]) |
143 then have "f holomorphic_on ( * ) (complex_of_real r) ` ball 0 1" |
143 then have "f holomorphic_on (*) (complex_of_real r) ` ball 0 1" |
144 using holomorphic_on_subset [OF holF] by (simp add: that) |
144 using holomorphic_on_subset [OF holF] by (simp add: that) |
145 then have holf: "f \<circ> (\<lambda>z. (r * z)) holomorphic_on (ball 0 1)" |
145 then have holf: "f \<circ> (\<lambda>z. (r * z)) holomorphic_on (ball 0 1)" |
146 by (intro holomorphic_intros holomorphic_on_compose) |
146 by (intro holomorphic_intros holomorphic_on_compose) |
147 have f0: "(f \<circ> ( * ) (complex_of_real r)) 0 = 0" |
147 have f0: "(f \<circ> (*) (complex_of_real r)) 0 = 0" |
148 using F_def that by auto |
148 using F_def that by auto |
149 have "f ` S \<subseteq> ball 0 1" |
149 have "f ` S \<subseteq> ball 0 1" |
150 using F_def that by blast |
150 using F_def that by blast |
151 with r01 have fr1: "\<And>z. norm z < 1 \<Longrightarrow> norm ((f \<circ> ( * )(of_real r))z) < 1" |
151 with r01 have fr1: "\<And>z. norm z < 1 \<Longrightarrow> norm ((f \<circ> (*)(of_real r))z) < 1" |
152 by force |
152 by force |
153 have *: "((\<lambda>w. f (r * w)) has_field_derivative deriv f (r * z) * r) (at z)" |
153 have *: "((\<lambda>w. f (r * w)) has_field_derivative deriv f (r * z) * r) (at z)" |
154 if "z \<in> ball 0 1" for z::complex |
154 if "z \<in> ball 0 1" for z::complex |
155 proof (rule DERIV_chain' [where g=f]) |
155 proof (rule DERIV_chain' [where g=f]) |
156 show "(f has_field_derivative deriv f (of_real r * z)) (at (of_real r * z))" |
156 show "(f has_field_derivative deriv f (of_real r * z)) (at (of_real r * z))" |
160 qed simp |
160 qed simp |
161 have df0: "((\<lambda>w. f (r * w)) has_field_derivative deriv f 0 * r) (at 0)" |
161 have df0: "((\<lambda>w. f (r * w)) has_field_derivative deriv f 0 * r) (at 0)" |
162 using * [of 0] by simp |
162 using * [of 0] by simp |
163 have deq: "deriv (\<lambda>x. f (complex_of_real r * x)) 0 = deriv f 0 * complex_of_real r" |
163 have deq: "deriv (\<lambda>x. f (complex_of_real r * x)) 0 = deriv f 0 * complex_of_real r" |
164 using DERIV_imp_deriv df0 by blast |
164 using DERIV_imp_deriv df0 by blast |
165 have "norm (deriv (f \<circ> ( * ) (complex_of_real r)) 0) \<le> 1" |
165 have "norm (deriv (f \<circ> (*) (complex_of_real r)) 0) \<le> 1" |
166 by (auto intro: Schwarz_Lemma [OF holf f0 fr1, of 0]) |
166 by (auto intro: Schwarz_Lemma [OF holf f0 fr1, of 0]) |
167 with \<open>r > 0\<close> show ?thesis |
167 with \<open>r > 0\<close> show ?thesis |
168 by (simp add: deq norm_mult divide_simps o_def) |
168 by (simp add: deq norm_mult divide_simps o_def) |
169 qed |
169 qed |
170 qed |
170 qed |