321 then show "g1 +++ g2 \<circ> (\<lambda>x. (x+1) / 2) differentiable at x within {0..1}" |
321 then show "g1 +++ g2 \<circ> (\<lambda>x. (x+1) / 2) differentiable at x within {0..1}" |
322 by (auto intro: differentiable_chain_within) |
322 by (auto intro: differentiable_chain_within) |
323 show "(g1 +++ g2 \<circ> (\<lambda>x. (x + 1) / 2)) x' = g2 x'" if "x' \<in> {0..1}" "dist x' x < dist ((x + 1) / 2) (1/2)" for x' |
323 show "(g1 +++ g2 \<circ> (\<lambda>x. (x + 1) / 2)) x' = g2 x'" if "x' \<in> {0..1}" "dist x' x < dist ((x + 1) / 2) (1/2)" for x' |
324 proof - |
324 proof - |
325 have [simp]: "(2*x'+2)/2 = x'+1" |
325 have [simp]: "(2*x'+2)/2 = x'+1" |
326 by (simp add: divide_simps) |
326 by (simp add: field_split_simps) |
327 show ?thesis |
327 show ?thesis |
328 using that by (auto simp: joinpaths_def) |
328 using that by (auto simp: joinpaths_def) |
329 qed |
329 qed |
330 qed (use that in \<open>auto simp: joinpaths_def\<close>) |
330 qed (use that in \<open>auto simp: joinpaths_def\<close>) |
331 qed |
331 qed |
689 have g2D: "g2 differentiable at x" if "x \<in> {0..1} - insert 0 ((\<lambda>x. 2*x-1) ` S)" for x |
689 have g2D: "g2 differentiable at x" if "x \<in> {0..1} - insert 0 ((\<lambda>x. 2*x-1) ` S)" for x |
690 proof (rule differentiable_transform_within) |
690 proof (rule differentiable_transform_within) |
691 show "g1 +++ g2 \<circ> (\<lambda>x. (x + 1) / 2) differentiable at x" |
691 show "g1 +++ g2 \<circ> (\<lambda>x. (x + 1) / 2) differentiable at x" |
692 using g12D that |
692 using g12D that |
693 apply (simp only: joinpaths_def) |
693 apply (simp only: joinpaths_def) |
694 apply (drule_tac x= "(x+1) / 2" in bspec, force simp: divide_simps) |
694 apply (drule_tac x= "(x+1) / 2" in bspec, force simp: field_split_simps) |
695 apply (rule differentiable_chain_at derivative_intros | force)+ |
695 apply (rule differentiable_chain_at derivative_intros | force)+ |
696 done |
696 done |
697 show "\<And>x'. dist x' x < dist ((x + 1) / 2) (1/2) \<Longrightarrow> (g1 +++ g2 \<circ> (\<lambda>x. (x + 1) / 2)) x' = g2 x'" |
697 show "\<And>x'. dist x' x < dist ((x + 1) / 2) (1/2) \<Longrightarrow> (g1 +++ g2 \<circ> (\<lambda>x. (x + 1) / 2)) x' = g2 x'" |
698 using that by (auto simp: dist_real_def joinpaths_def field_simps) |
698 using that by (auto simp: dist_real_def joinpaths_def field_simps) |
699 qed (use that in \<open>auto simp: dist_norm\<close>) |
699 qed (use that in \<open>auto simp: dist_norm\<close>) |
700 have [simp]: "vector_derivative (g2 \<circ> (\<lambda>x. 2*x-1)) (at ((x+1)/2)) = 2 *\<^sub>R vector_derivative g2 (at x)" |
700 have [simp]: "vector_derivative (g2 \<circ> (\<lambda>x. 2*x-1)) (at ((x+1)/2)) = 2 *\<^sub>R vector_derivative g2 (at x)" |
701 if "x \<in> {0..1} - insert 0 ((\<lambda>x. 2*x-1) ` S)" for x |
701 if "x \<in> {0..1} - insert 0 ((\<lambda>x. 2*x-1) ` S)" for x |
702 using that by (auto simp: vector_derivative_chain_at divide_simps g2D) |
702 using that by (auto simp: vector_derivative_chain_at field_split_simps g2D) |
703 have "continuous_on ({1/2..1} - insert (1/2) S) (\<lambda>x. vector_derivative (g1 +++ g2) (at x))" |
703 have "continuous_on ({1/2..1} - insert (1/2) S) (\<lambda>x. vector_derivative (g1 +++ g2) (at x))" |
704 using co12 by (rule continuous_on_subset) force |
704 using co12 by (rule continuous_on_subset) force |
705 then have coDhalf: "continuous_on ({1/2..1} - insert (1/2) S) (\<lambda>x. vector_derivative (g2 \<circ> (\<lambda>x. 2*x-1)) (at x))" |
705 then have coDhalf: "continuous_on ({1/2..1} - insert (1/2) S) (\<lambda>x. vector_derivative (g2 \<circ> (\<lambda>x. 2*x-1)) (at x))" |
706 proof (rule continuous_on_eq [OF _ vector_derivative_at]) |
706 proof (rule continuous_on_eq [OF _ vector_derivative_at]) |
707 show "(g1 +++ g2 has_vector_derivative vector_derivative (g2 \<circ> (\<lambda>x. 2 * x - 1)) (at x)) |
707 show "(g1 +++ g2 has_vector_derivative vector_derivative (g2 \<circ> (\<lambda>x. 2 * x - 1)) (at x)) |
1924 have bc: "(b - c) = (1 - k) *\<^sub>R (b - a)" |
1924 have bc: "(b - c) = (1 - k) *\<^sub>R (b - a)" |
1925 by (simp add: algebra_simps c') |
1925 by (simp add: algebra_simps c') |
1926 { assume *: "((\<lambda>x. f ((1 - x) *\<^sub>R a + x *\<^sub>R c) * (c - a)) has_integral i) {0..1}" |
1926 { assume *: "((\<lambda>x. f ((1 - x) *\<^sub>R a + x *\<^sub>R c) * (c - a)) has_integral i) {0..1}" |
1927 have **: "\<And>x. ((k - x) / k) *\<^sub>R a + (x / k) *\<^sub>R c = (1 - x) *\<^sub>R a + x *\<^sub>R b" |
1927 have **: "\<And>x. ((k - x) / k) *\<^sub>R a + (x / k) *\<^sub>R c = (1 - x) *\<^sub>R a + x *\<^sub>R b" |
1928 using False apply (simp add: c' algebra_simps) |
1928 using False apply (simp add: c' algebra_simps) |
1929 apply (simp add: real_vector.scale_left_distrib [symmetric] divide_simps) |
1929 apply (simp add: real_vector.scale_left_distrib [symmetric] field_split_simps) |
1930 done |
1930 done |
1931 have "((\<lambda>x. f ((1 - x) *\<^sub>R a + x *\<^sub>R b) * (b - a)) has_integral i) {0..k}" |
1931 have "((\<lambda>x. f ((1 - x) *\<^sub>R a + x *\<^sub>R b) * (b - a)) has_integral i) {0..k}" |
1932 using k has_integral_affinity01 [OF *, of "inverse k" "0"] |
1932 using k has_integral_affinity01 [OF *, of "inverse k" "0"] |
1933 apply (simp add: divide_simps mult.commute [of _ "k"] image_affinity_atLeastAtMost ** c) |
1933 apply (simp add: divide_simps mult.commute [of _ "k"] image_affinity_atLeastAtMost ** c) |
1934 apply (auto dest: has_integral_cmul [where c = "inverse k"]) |
1934 apply (auto dest: has_integral_cmul [where c = "inverse k"]) |
2183 then show ?thesis |
2183 then show ?thesis |
2184 proof cases |
2184 proof cases |
2185 case 1 then have "?\<Phi> a c' b'" |
2185 case 1 then have "?\<Phi> a c' b'" |
2186 using assms |
2186 using assms |
2187 apply (clarsimp simp: c'_def b'_def midpoints_in_convex_hull hull_subset [THEN subsetD]) |
2187 apply (clarsimp simp: c'_def b'_def midpoints_in_convex_hull hull_subset [THEN subsetD]) |
2188 apply (auto simp: midpoint_def dist_norm scaleR_conv_of_real divide_simps) |
2188 apply (auto simp: midpoint_def dist_norm scaleR_conv_of_real field_split_simps) |
2189 done |
2189 done |
2190 then show ?thesis by blast |
2190 then show ?thesis by blast |
2191 next |
2191 next |
2192 case 2 then have "?\<Phi> a' c' b" |
2192 case 2 then have "?\<Phi> a' c' b" |
2193 using assms |
2193 using assms |
2194 apply (clarsimp simp: a'_def c'_def midpoints_in_convex_hull hull_subset [THEN subsetD]) |
2194 apply (clarsimp simp: a'_def c'_def midpoints_in_convex_hull hull_subset [THEN subsetD]) |
2195 apply (auto simp: midpoint_def dist_norm scaleR_conv_of_real divide_simps) |
2195 apply (auto simp: midpoint_def dist_norm scaleR_conv_of_real field_split_simps) |
2196 done |
2196 done |
2197 then show ?thesis by blast |
2197 then show ?thesis by blast |
2198 next |
2198 next |
2199 case 3 then have "?\<Phi> a' c b'" |
2199 case 3 then have "?\<Phi> a' c b'" |
2200 using assms |
2200 using assms |
2201 apply (clarsimp simp: a'_def b'_def midpoints_in_convex_hull hull_subset [THEN subsetD]) |
2201 apply (clarsimp simp: a'_def b'_def midpoints_in_convex_hull hull_subset [THEN subsetD]) |
2202 apply (auto simp: midpoint_def dist_norm scaleR_conv_of_real divide_simps) |
2202 apply (auto simp: midpoint_def dist_norm scaleR_conv_of_real field_split_simps) |
2203 done |
2203 done |
2204 then show ?thesis by blast |
2204 then show ?thesis by blast |
2205 next |
2205 next |
2206 case 4 then have "?\<Phi> a' b' c'" |
2206 case 4 then have "?\<Phi> a' b' c'" |
2207 using assms |
2207 using assms |
2208 apply (clarsimp simp: a'_def c'_def b'_def midpoints_in_convex_hull hull_subset [THEN subsetD]) |
2208 apply (clarsimp simp: a'_def c'_def b'_def midpoints_in_convex_hull hull_subset [THEN subsetD]) |
2209 apply (auto simp: midpoint_def dist_norm scaleR_conv_of_real divide_simps) |
2209 apply (auto simp: midpoint_def dist_norm scaleR_conv_of_real field_split_simps) |
2210 done |
2210 done |
2211 then show ?thesis by blast |
2211 then show ?thesis by blast |
2212 qed |
2212 qed |
2213 qed |
2213 qed |
2214 |
2214 |
2574 using e by (simp add: shrink_def real_vector.scale_right_diff_distrib [symmetric]) |
2574 using e by (simp add: shrink_def real_vector.scale_right_diff_distrib [symmetric]) |
2575 have sh_eq: "\<And>a b d::complex. (b - e *\<^sub>R (b - d)) - (a - e *\<^sub>R (a - d)) - (b - a) = e *\<^sub>R (a - b)" |
2575 have sh_eq: "\<And>a b d::complex. (b - e *\<^sub>R (b - d)) - (a - e *\<^sub>R (a - d)) - (b - a) = e *\<^sub>R (a - b)" |
2576 by (simp add: algebra_simps) |
2576 by (simp add: algebra_simps) |
2577 have "cmod y / (24 * C) \<le> cmod y / cmod (b - a) / 12" |
2577 have "cmod y / (24 * C) \<le> cmod y / cmod (b - a) / 12" |
2578 using False \<open>C>0\<close> diff_2C [of b a] ynz |
2578 using False \<open>C>0\<close> diff_2C [of b a] ynz |
2579 by (auto simp: divide_simps hull_inc) |
2579 by (auto simp: field_split_simps hull_inc) |
2580 have less_C: "\<lbrakk>u \<in> convex hull {a, b, c}; 0 \<le> x; x \<le> 1\<rbrakk> \<Longrightarrow> x * cmod u < C" for x u |
2580 have less_C: "\<lbrakk>u \<in> convex hull {a, b, c}; 0 \<le> x; x \<le> 1\<rbrakk> \<Longrightarrow> x * cmod u < C" for x u |
2581 apply (cases "x=0", simp add: \<open>0<C\<close>) |
2581 apply (cases "x=0", simp add: \<open>0<C\<close>) |
2582 using Cno [of u] mult_left_le_one_le [of "cmod u" x] le_less_trans norm_ge_zero by blast |
2582 using Cno [of u] mult_left_le_one_le [of "cmod u" x] le_less_trans norm_ge_zero by blast |
2583 { fix u v |
2583 { fix u v |
2584 assume uv: "u \<in> convex hull {a, b, c}" "v \<in> convex hull {a, b, c}" "u\<noteq>v" |
2584 assume uv: "u \<in> convex hull {a, b, c}" "v \<in> convex hull {a, b, c}" "u\<noteq>v" |
2608 have "cmod (f (linepath (shrink u) (shrink v) x) - f (linepath u v x)) < cmod y / (24 * C)" |
2608 have "cmod (f (linepath (shrink u) (shrink v) x) - f (linepath u v x)) < cmod y / (24 * C)" |
2609 using x uv shr_uv cmod_less_dt |
2609 using x uv shr_uv cmod_less_dt |
2610 by (auto simp: hull_inc intro: d1 interior_subset [THEN subsetD] linepath_in_convex_hull) |
2610 by (auto simp: hull_inc intro: d1 interior_subset [THEN subsetD] linepath_in_convex_hull) |
2611 also have "\<dots> \<le> cmod y / cmod (v - u) / 12" |
2611 also have "\<dots> \<le> cmod y / cmod (v - u) / 12" |
2612 using False uv \<open>C>0\<close> diff_2C [of v u] ynz |
2612 using False uv \<open>C>0\<close> diff_2C [of v u] ynz |
2613 by (auto simp: divide_simps hull_inc) |
2613 by (auto simp: field_split_simps hull_inc) |
2614 finally have "cmod (f (linepath (shrink u) (shrink v) x) - f (linepath u v x)) \<le> cmod y / cmod (v - u) / 12" |
2614 finally have "cmod (f (linepath (shrink u) (shrink v) x) - f (linepath u v x)) \<le> cmod y / cmod (v - u) / 12" |
2615 by simp |
2615 by simp |
2616 then have cmod_12_le: "cmod (v - u) * cmod (f (linepath (shrink u) (shrink v) x) - f (linepath u v x)) * 12 \<le> cmod y" |
2616 then have cmod_12_le: "cmod (v - u) * cmod (f (linepath (shrink u) (shrink v) x) - f (linepath u v x)) * 12 \<le> cmod y" |
2617 using uv False by (auto simp: field_simps) |
2617 using uv False by (auto simp: field_simps) |
2618 have "cmod (f (linepath (shrink u) (shrink v) x)) * cmod (shrink v - shrink u - (v - u)) + |
2618 have "cmod (f (linepath (shrink u) (shrink v) x)) * cmod (shrink v - shrink u - (v - u)) + |
3991 using eq winding_number_valid_path by force |
3991 using eq winding_number_valid_path by force |
3992 have iff: "(winding_number \<gamma> z \<in> \<int>) \<longleftrightarrow> (exp (contour_integral p (\<lambda>w. 1 / (w - z))) = 1)" |
3992 have iff: "(winding_number \<gamma> z \<in> \<int>) \<longleftrightarrow> (exp (contour_integral p (\<lambda>w. 1 / (w - z))) = 1)" |
3993 using eq by (simp add: exp_eq_1 complex_is_Int_iff) |
3993 using eq by (simp add: exp_eq_1 complex_is_Int_iff) |
3994 have "exp (contour_integral p (\<lambda>w. 1 / (w - z))) = (\<gamma> 1 - z) / (\<gamma> 0 - z)" |
3994 have "exp (contour_integral p (\<lambda>w. 1 / (w - z))) = (\<gamma> 1 - z) / (\<gamma> 0 - z)" |
3995 using p winding_number_exp_integral(2) [of p 0 1 z] |
3995 using p winding_number_exp_integral(2) [of p 0 1 z] |
3996 apply (simp add: valid_path_def path_defs contour_integral_integral exp_minus divide_simps) |
3996 apply (simp add: valid_path_def path_defs contour_integral_integral exp_minus field_split_simps) |
3997 by (metis path_image_def pathstart_def pathstart_in_path_image) |
3997 by (metis path_image_def pathstart_def pathstart_in_path_image) |
3998 then have "winding_number p z \<in> \<int> \<longleftrightarrow> pathfinish p = pathstart p" |
3998 then have "winding_number p z \<in> \<int> \<longleftrightarrow> pathfinish p = pathstart p" |
3999 using p wneq iff by (auto simp: path_defs) |
3999 using p wneq iff by (auto simp: path_defs) |
4000 then show ?thesis using p eq |
4000 then show ?thesis using p eq |
4001 by (auto simp: winding_number_valid_path) |
4001 by (auto simp: winding_number_valid_path) |
4526 then obtain d where "d>0" and d: "\<And>x'. dist x' z < d \<Longrightarrow> dist (winding_number \<gamma> x') (winding_number \<gamma> z) < \<bar>Re(winding_number \<gamma> z)\<bar> - 1/2" |
4526 then obtain d where "d>0" and d: "\<And>x'. dist x' z < d \<Longrightarrow> dist (winding_number \<gamma> x') (winding_number \<gamma> z) < \<bar>Re(winding_number \<gamma> z)\<bar> - 1/2" |
4527 using continuous_at_eps_delta wnz_12 diff_gt_0_iff_gt by blast |
4527 using continuous_at_eps_delta wnz_12 diff_gt_0_iff_gt by blast |
4528 define z' where "z' = z - (d / (2 * cmod a)) *\<^sub>R a" |
4528 define z' where "z' = z - (d / (2 * cmod a)) *\<^sub>R a" |
4529 have *: "a \<bullet> z' \<le> b - d / 3 * cmod a" |
4529 have *: "a \<bullet> z' \<le> b - d / 3 * cmod a" |
4530 unfolding z'_def inner_mult_right' divide_inverse |
4530 unfolding z'_def inner_mult_right' divide_inverse |
4531 apply (simp add: divide_simps algebra_simps dot_square_norm power2_eq_square anz) |
4531 apply (simp add: field_split_simps algebra_simps dot_square_norm power2_eq_square anz) |
4532 apply (metis \<open>0 < d\<close> add_increasing azb less_eq_real_def mult_nonneg_nonneg mult_right_mono norm_ge_zero norm_numeral) |
4532 apply (metis \<open>0 < d\<close> add_increasing azb less_eq_real_def mult_nonneg_nonneg mult_right_mono norm_ge_zero norm_numeral) |
4533 done |
4533 done |
4534 have "cmod (winding_number \<gamma> z' - winding_number \<gamma> z) < \<bar>Re (winding_number \<gamma> z)\<bar> - 1/2" |
4534 have "cmod (winding_number \<gamma> z' - winding_number \<gamma> z) < \<bar>Re (winding_number \<gamma> z)\<bar> - 1/2" |
4535 using d [of z'] anz \<open>d>0\<close> by (simp add: dist_norm z'_def) |
4535 using d [of z'] anz \<open>d>0\<close> by (simp add: dist_norm z'_def) |
4536 then have "1/2 < \<bar>Re (winding_number \<gamma> z)\<bar> - cmod (winding_number \<gamma> z' - winding_number \<gamma> z)" |
4536 then have "1/2 < \<bar>Re (winding_number \<gamma> z)\<bar> - cmod (winding_number \<gamma> z' - winding_number \<gamma> z)" |
4540 then have wnz_12': "\<bar>Re (winding_number \<gamma> z')\<bar> > 1/2" |
4540 then have wnz_12': "\<bar>Re (winding_number \<gamma> z')\<bar> > 1/2" |
4541 by linarith |
4541 by linarith |
4542 moreover have "\<bar>Re (winding_number \<gamma> z')\<bar> < 1/2" |
4542 moreover have "\<bar>Re (winding_number \<gamma> z')\<bar> < 1/2" |
4543 apply (rule winding_number_lt_half [OF \<gamma> *]) |
4543 apply (rule winding_number_lt_half [OF \<gamma> *]) |
4544 using azb \<open>d>0\<close> pag |
4544 using azb \<open>d>0\<close> pag |
4545 apply (auto simp: add_strict_increasing anz divide_simps algebra_simps dest!: subsetD) |
4545 apply (auto simp: add_strict_increasing anz field_split_simps algebra_simps dest!: subsetD) |
4546 done |
4546 done |
4547 ultimately have False |
4547 ultimately have False |
4548 by simp |
4548 by simp |
4549 } |
4549 } |
4550 then show ?thesis by force |
4550 then show ?thesis by force |
4618 apply (rule derivative_intros fcd | simp)+ |
4618 apply (rule derivative_intros fcd | simp)+ |
4619 done |
4619 done |
4620 show ?thesis |
4620 show ?thesis |
4621 apply (rule has_contour_integral_eq) |
4621 apply (rule has_contour_integral_eq) |
4622 using znotin has_contour_integral_add [OF has_contour_integral_lmul [OF has_contour_integral_winding_number [OF vpg znotin], of "f z"] *] |
4622 using znotin has_contour_integral_add [OF has_contour_integral_lmul [OF has_contour_integral_winding_number [OF vpg znotin], of "f z"] *] |
4623 apply (auto simp: mult_ac divide_simps) |
4623 apply (auto simp: ac_simps divide_simps) |
4624 done |
4624 done |
4625 qed |
4625 qed |
4626 |
4626 |
4627 theorem Cauchy_integral_formula_convex_simple: |
4627 theorem Cauchy_integral_formula_convex_simple: |
4628 "\<lbrakk>convex s; f holomorphic_on s; z \<in> interior s; valid_path \<gamma>; path_image \<gamma> \<subseteq> s - {z}; |
4628 "\<lbrakk>convex s; f holomorphic_on s; z \<in> interior s; valid_path \<gamma>; path_image \<gamma> \<subseteq> s - {z}; |
5007 { fix z |
5007 { fix z |
5008 assume "s \<le> z" "z \<le> t" |
5008 assume "s \<le> z" "z \<le> t" |
5009 then have "z + of_real r * exp (\<i> * of_real z) \<in> (\<lambda>x. z + of_real r * exp (\<i> * linepath s t x)) ` {0..1}" |
5009 then have "z + of_real r * exp (\<i> * of_real z) \<in> (\<lambda>x. z + of_real r * exp (\<i> * linepath s t x)) ` {0..1}" |
5010 apply (rule_tac x="(z - s)/(t - s)" in image_eqI) |
5010 apply (rule_tac x="(z - s)/(t - s)" in image_eqI) |
5011 apply (simp add: linepath_def scaleR_conv_of_real divide_simps exp_eq) |
5011 apply (simp add: linepath_def scaleR_conv_of_real divide_simps exp_eq) |
5012 apply (auto simp: algebra_simps divide_simps) |
5012 apply (auto simp: field_split_simps) |
5013 done |
5013 done |
5014 } |
5014 } |
5015 ultimately show ?thesis |
5015 ultimately show ?thesis |
5016 by (fastforce simp add: path_image_def part_circlepath_def) |
5016 by (fastforce simp add: path_image_def part_circlepath_def) |
5017 qed |
5017 qed |
5146 next |
5146 next |
5147 case False |
5147 case False |
5148 have *: "finite {x. cmod (complex_of_real (2 * real_of_int x * pi) * \<i>) \<le> b + cmod (Ln w)}" |
5148 have *: "finite {x. cmod (complex_of_real (2 * real_of_int x * pi) * \<i>) \<le> b + cmod (Ln w)}" |
5149 apply (simp add: norm_mult finite_int_iff_bounded_le) |
5149 apply (simp add: norm_mult finite_int_iff_bounded_le) |
5150 apply (rule_tac x="\<lfloor>(b + cmod (Ln w)) / (2*pi)\<rfloor>" in exI) |
5150 apply (rule_tac x="\<lfloor>(b + cmod (Ln w)) / (2*pi)\<rfloor>" in exI) |
5151 apply (auto simp: divide_simps le_floor_iff) |
5151 apply (auto simp: field_split_simps le_floor_iff) |
5152 done |
5152 done |
5153 have [simp]: "\<And>P f. {z. P z \<and> (\<exists>n. z = f n)} = f ` {n. P (f n)}" |
5153 have [simp]: "\<And>P f. {z. P z \<and> (\<exists>n. z = f n)} = f ` {n. P (f n)}" |
5154 by blast |
5154 by blast |
5155 show ?thesis |
5155 show ?thesis |
5156 apply (subst exp_Ln [OF False, symmetric]) |
5156 apply (subst exp_Ln [OF False, symmetric]) |
5272 have 1: "\<bar>s - t\<bar> \<le> 2 * pi" |
5272 have 1: "\<bar>s - t\<bar> \<le> 2 * pi" |
5273 if "\<And>x. 0 \<le> x \<and> x \<le> 1 \<Longrightarrow> (\<exists>n. x * (t - s) = 2 * (real_of_int n * pi)) \<longrightarrow> x = 0 \<or> x = 1" |
5273 if "\<And>x. 0 \<le> x \<and> x \<le> 1 \<Longrightarrow> (\<exists>n. x * (t - s) = 2 * (real_of_int n * pi)) \<longrightarrow> x = 0 \<or> x = 1" |
5274 proof (rule ccontr) |
5274 proof (rule ccontr) |
5275 assume "\<not> \<bar>s - t\<bar> \<le> 2 * pi" |
5275 assume "\<not> \<bar>s - t\<bar> \<le> 2 * pi" |
5276 then have *: "\<And>n. t - s \<noteq> of_int n * \<bar>s - t\<bar>" |
5276 then have *: "\<And>n. t - s \<noteq> of_int n * \<bar>s - t\<bar>" |
5277 using False that [of "2*pi / \<bar>t - s\<bar>"] by (simp add: abs_minus_commute divide_simps) |
5277 using False that [of "2*pi / \<bar>t - s\<bar>"] |
|
5278 by (simp add: abs_minus_commute divide_simps) |
5278 show False |
5279 show False |
5279 using * [of 1] * [of "-1"] by auto |
5280 using * [of 1] * [of "-1"] by auto |
5280 qed |
5281 qed |
5281 have 2: "\<bar>s - t\<bar> = \<bar>2 * (real_of_int n * pi) / x\<bar>" if "x \<noteq> 0" "x * (t - s) = 2 * (real_of_int n * pi)" for x n |
5282 have 2: "\<bar>s - t\<bar> = \<bar>2 * (real_of_int n * pi) / x\<bar>" if "x \<noteq> 0" "x * (t - s) = 2 * (real_of_int n * pi)" for x n |
5282 proof - |
5283 proof - |
5290 apply (simp add: simple_path_def) |
5291 apply (simp add: simple_path_def) |
5291 apply (simp add: part_circlepath_def linepath_def exp_eq * ** abs01 del: Set.insert_iff) |
5292 apply (simp add: part_circlepath_def linepath_def exp_eq * ** abs01 del: Set.insert_iff) |
5292 apply (subst abs_away) |
5293 apply (subst abs_away) |
5293 apply (auto simp: 1) |
5294 apply (auto simp: 1) |
5294 apply (rule ccontr) |
5295 apply (rule ccontr) |
5295 apply (auto simp: 2 divide_simps abs_mult dest: of_int_leD) |
5296 apply (auto simp: 2 field_split_simps abs_mult dest: of_int_leD) |
5296 done |
5297 done |
5297 qed |
5298 qed |
5298 |
5299 |
5299 lemma arc_part_circlepath: |
5300 lemma arc_part_circlepath: |
5300 assumes "r \<noteq> 0" "s \<noteq> t" "\<bar>s - t\<bar> < 2*pi" |
5301 assumes "r \<noteq> 0" "s \<noteq> t" "\<bar>s - t\<bar> < 2*pi" |
5406 using cis_conv_exp complex_eq_iff by auto |
5407 using cis_conv_exp complex_eq_iff by auto |
5407 show ?thesis |
5408 show ?thesis |
5408 apply (rule sincos_total_2pi [of "Re(w/of_real(norm w))" "Im(w/of_real(norm w))"]) |
5409 apply (rule sincos_total_2pi [of "Re(w/of_real(norm w))" "Im(w/of_real(norm w))"]) |
5409 apply (simp add: divide_simps \<open>w \<noteq> 0\<close> cmod_power2 [symmetric]) |
5410 apply (simp add: divide_simps \<open>w \<noteq> 0\<close> cmod_power2 [symmetric]) |
5410 apply (rule_tac x="t / (2*pi)" in image_eqI) |
5411 apply (rule_tac x="t / (2*pi)" in image_eqI) |
5411 apply (simp add: divide_simps \<open>w \<noteq> 0\<close>) |
5412 apply (simp add: field_simps \<open>w \<noteq> 0\<close>) |
5412 using False ** |
5413 using False ** |
5413 apply (auto simp: w_def) |
5414 apply (auto simp: w_def) |
5414 done |
5415 done |
5415 qed |
5416 qed |
5416 show ?thesis |
5417 show ?thesis |
5563 obtain a where fga: "\<And>x. x \<in> {0..1} \<Longrightarrow> cmod (f a (\<gamma> x) - l (\<gamma> x)) < e / (\<bar>B\<bar> + 1)" |
5564 obtain a where fga: "\<And>x. x \<in> {0..1} \<Longrightarrow> cmod (f a (\<gamma> x) - l (\<gamma> x)) < e / (\<bar>B\<bar> + 1)" |
5564 and inta: "(\<lambda>t. f a (\<gamma> t) * vector_derivative \<gamma> (at t)) integrable_on {0..1}" |
5565 and inta: "(\<lambda>t. f a (\<gamma> t) * vector_derivative \<gamma> (at t)) integrable_on {0..1}" |
5565 using eventually_happens [OF eventually_conj] |
5566 using eventually_happens [OF eventually_conj] |
5566 by (fastforce simp: contour_integrable_on path_image_def) |
5567 by (fastforce simp: contour_integrable_on path_image_def) |
5567 have Ble: "B * e / (\<bar>B\<bar> + 1) \<le> e" |
5568 have Ble: "B * e / (\<bar>B\<bar> + 1) \<le> e" |
5568 using \<open>0 \<le> B\<close> \<open>0 < e\<close> by (simp add: divide_simps) |
5569 using \<open>0 \<le> B\<close> \<open>0 < e\<close> by (simp add: field_split_simps) |
5569 have "\<exists>h. (\<forall>x\<in>{0..1}. cmod (l (\<gamma> x) * vector_derivative \<gamma> (at x) - h x) \<le> e) \<and> h integrable_on {0..1}" |
5570 have "\<exists>h. (\<forall>x\<in>{0..1}. cmod (l (\<gamma> x) * vector_derivative \<gamma> (at x) - h x) \<le> e) \<and> h integrable_on {0..1}" |
5570 proof (intro exI conjI ballI) |
5571 proof (intro exI conjI ballI) |
5571 show "cmod (l (\<gamma> x) * vector_derivative \<gamma> (at x) - f a (\<gamma> x) * vector_derivative \<gamma> (at x)) \<le> e" |
5572 show "cmod (l (\<gamma> x) * vector_derivative \<gamma> (at x) - f a (\<gamma> x) * vector_derivative \<gamma> (at x)) \<le> e" |
5572 if "x \<in> {0..1}" for x |
5573 if "x \<in> {0..1}" for x |
5573 apply (rule order_trans [OF _ Ble]) |
5574 apply (rule order_trans [OF _ Ble]) |
5691 apply (rule derivative_eq_intros | simp add: km1 | simp add: field_simps neq neqq)+ |
5692 apply (rule derivative_eq_intros | simp add: km1 | simp add: field_simps neq neqq)+ |
5692 done |
5693 done |
5693 qed |
5694 qed |
5694 { fix a::real and b::real assume ab: "a > 0" "b > 0" |
5695 { fix a::real and b::real assume ab: "a > 0" "b > 0" |
5695 then have "k * (1 + real k) * (1 / a) \<le> k * (1 + real k) * (4 / b) \<longleftrightarrow> b \<le> 4 * a" |
5696 then have "k * (1 + real k) * (1 / a) \<le> k * (1 + real k) * (4 / b) \<longleftrightarrow> b \<le> 4 * a" |
5696 by (subst mult_le_cancel_left_pos) (use \<open>k \<noteq> 0\<close> in \<open>auto simp: divide_simps\<close>) |
5697 by (subst mult_le_cancel_left_pos) |
|
5698 (use \<open>k \<noteq> 0\<close> in \<open>auto simp: divide_simps\<close>) |
5697 with ab have "real k * (1 + real k) / a \<le> (real k * 4 + real k * real k * 4) / b \<longleftrightarrow> b \<le> 4 * a" |
5699 with ab have "real k * (1 + real k) / a \<le> (real k * 4 + real k * real k * 4) / b \<longleftrightarrow> b \<le> 4 * a" |
5698 by (simp add: field_simps) |
5700 by (simp add: field_simps) |
5699 } note canc = this |
5701 } note canc = this |
5700 have ff2: "cmod (ff (Suc 1) v) \<le> real (k * (k + 1)) / (d/2) ^ (k + 2)" |
5702 have ff2: "cmod (ff (Suc 1) v) \<le> real (k * (k + 1)) / (d/2) ^ (k + 2)" |
5701 if "v \<in> ball w (d/2)" for v |
5703 if "v \<in> ball w (d/2)" for v |
5704 by (metis that norm_minus_commute norm_triangle_half_r dist_norm mem_ball) |
5706 by (metis that norm_minus_commute norm_triangle_half_r dist_norm mem_ball) |
5705 have "d/2 \<le> cmod (x - v)" using d x that |
5707 have "d/2 \<le> cmod (x - v)" using d x that |
5706 using lessd d x |
5708 using lessd d x |
5707 by (auto simp add: dist_norm path_image_def ball_def not_less [symmetric] del: divide_const_simps) |
5709 by (auto simp add: dist_norm path_image_def ball_def not_less [symmetric] del: divide_const_simps) |
5708 then have "d \<le> cmod (x - v) * 2" |
5710 then have "d \<le> cmod (x - v) * 2" |
5709 by (simp add: divide_simps) |
5711 by (simp add: field_split_simps) |
5710 then have dpow_le: "d ^ (k+2) \<le> (cmod (x - v) * 2) ^ (k+2)" |
5712 then have dpow_le: "d ^ (k+2) \<le> (cmod (x - v) * 2) ^ (k+2)" |
5711 using \<open>0 < d\<close> order_less_imp_le power_mono by blast |
5713 using \<open>0 < d\<close> order_less_imp_le power_mono by blast |
5712 have "x \<noteq> v" using that |
5714 have "x \<noteq> v" using that |
5713 using \<open>x \<in> path_image \<gamma>\<close> ball_divide_subset_numeral d by fastforce |
5715 using \<open>x \<in> path_image \<gamma>\<close> ball_divide_subset_numeral d by fastforce |
5714 then show ?thesis |
5716 then show ?thesis |
5715 using \<open>d > 0\<close> apply (simp add: ff_def norm_mult norm_divide norm_power dist_norm canc) |
5717 using \<open>d > 0\<close> apply (simp add: ff_def norm_mult norm_divide norm_power dist_norm canc) |
5716 using dpow_le apply (simp add: algebra_simps divide_simps mult_less_0_iff) |
5718 using dpow_le apply (simp add: algebra_simps field_split_simps mult_less_0_iff) |
5717 done |
5719 done |
5718 qed |
5720 qed |
5719 have ub: "u \<in> ball w (d/2)" |
5721 have ub: "u \<in> ball w (d/2)" |
5720 using uwd by (simp add: dist_commute dist_norm) |
5722 using uwd by (simp add: dist_commute dist_norm) |
5721 have "cmod (inverse (x - u) ^ k - (inverse (x - w) ^ k + of_nat k * (u - w) / ((x - w) * (x - w) ^ k))) |
5723 have "cmod (inverse (x - u) ^ k - (inverse (x - w) ^ k + of_nat k * (u - w) / ((x - w) * (x - w) ^ k))) |
6368 using Cauchy_has_contour_integral_higher_derivative_circlepath [OF assms] |
6370 using Cauchy_has_contour_integral_higher_derivative_circlepath [OF assms] |
6369 by simp |
6371 by simp |
6370 show ?thes1 using * |
6372 show ?thes1 using * |
6371 using contour_integrable_on_def by blast |
6373 using contour_integrable_on_def by blast |
6372 show ?thes2 |
6374 show ?thes2 |
6373 unfolding contour_integral_unique [OF *] by (simp add: divide_simps) |
6375 unfolding contour_integral_unique [OF *] by (simp add: field_split_simps) |
6374 qed |
6376 qed |
6375 |
6377 |
6376 corollary Cauchy_contour_integral_circlepath: |
6378 corollary Cauchy_contour_integral_circlepath: |
6377 assumes "continuous_on (cball z r) f" "f holomorphic_on ball z r" "w \<in> ball z r" |
6379 assumes "continuous_on (cball z r) f" "f holomorphic_on ball z r" "w \<in> ball z r" |
6378 shows "contour_integral(circlepath z r) (\<lambda>u. f u/(u - w)^(Suc k)) = (2 * pi * \<i>) * (deriv ^^ k) f w / (fact k)" |
6380 shows "contour_integral(circlepath z r) (\<lambda>u. f u/(u - w)^(Suc k)) = (2 * pi * \<i>) * (deriv ^^ k) f w / (fact k)" |
6459 also have "\<dots> < e * k" |
6461 also have "\<dots> < e * k" |
6460 using \<open>0 < B\<close> N by (simp add: divide_simps) |
6462 using \<open>0 < B\<close> N by (simp add: divide_simps) |
6461 also have "\<dots> \<le> e * norm (u - w)" |
6463 also have "\<dots> \<le> e * norm (u - w)" |
6462 using r kle \<open>0 < e\<close> by (simp add: dist_commute dist_norm) |
6464 using r kle \<open>0 < e\<close> by (simp add: dist_commute dist_norm) |
6463 finally show ?thesis |
6465 finally show ?thesis |
6464 by (simp add: divide_simps norm_divide del: power_Suc) |
6466 by (simp add: field_split_simps norm_divide del: power_Suc) |
6465 qed |
6467 qed |
6466 with \<open>0 < r\<close> show "\<forall>\<^sub>F n in sequentially. \<forall>x\<in>sphere z r. |
6468 with \<open>0 < r\<close> show "\<forall>\<^sub>F n in sequentially. \<forall>x\<in>sphere z r. |
6467 norm ((\<Sum>k<n. (w - z) ^ k * (f x / (x - z) ^ Suc k)) - f x / (x - w)) < e" |
6469 norm ((\<Sum>k<n. (w - z) ^ k * (f x / (x - z) ^ Suc k)) - f x / (x - w)) < e" |
6468 by (auto simp: mult_ac less_imp_le eventually_sequentially Ball_def) |
6470 by (auto simp: mult_ac less_imp_le eventually_sequentially Ball_def) |
6469 qed |
6471 qed |
6525 have "cmod (x - z) = R \<Longrightarrow> cmod (f x) * 2 < cmod (f z)" for x |
6527 have "cmod (x - z) = R \<Longrightarrow> cmod (f x) * 2 < cmod (f z)" for x |
6526 unfolding R_def |
6528 unfolding R_def |
6527 by (rule B) (use norm_triangle_ineq4 [of x z] in auto) |
6529 by (rule B) (use norm_triangle_ineq4 [of x z] in auto) |
6528 with \<open>R > 0\<close> fz show False |
6530 with \<open>R > 0\<close> fz show False |
6529 using has_contour_integral_bound_circlepath [OF *, of "norm(f z)/2/R"] |
6531 using has_contour_integral_bound_circlepath [OF *, of "norm(f z)/2/R"] |
6530 by (auto simp: less_imp_le norm_mult norm_divide divide_simps) |
6532 by (auto simp: less_imp_le norm_mult norm_divide field_split_simps) |
6531 qed |
6533 qed |
6532 |
6534 |
6533 proposition Liouville_weak: |
6535 proposition Liouville_weak: |
6534 assumes "f holomorphic_on UNIV" and "(f \<longlongrightarrow> l) at_infinity" |
6536 assumes "f holomorphic_on UNIV" and "(f \<longlongrightarrow> l) at_infinity" |
6535 shows "f z = l" |
6537 shows "f z = l" |
6544 have 1: "(\<lambda>x. 1 / f x) holomorphic_on UNIV" |
6546 have 1: "(\<lambda>x. 1 / f x) holomorphic_on UNIV" |
6545 by (simp add: holomorphic_on_divide holomorphic_on_const assms f) |
6547 by (simp add: holomorphic_on_divide holomorphic_on_const assms f) |
6546 have 2: "((\<lambda>x. 1 / f x) \<longlongrightarrow> 0) at_infinity" |
6548 have 2: "((\<lambda>x. 1 / f x) \<longlongrightarrow> 0) at_infinity" |
6547 apply (rule tendstoI [OF eventually_mono]) |
6549 apply (rule tendstoI [OF eventually_mono]) |
6548 apply (rule_tac B="2/e" in unbounded) |
6550 apply (rule_tac B="2/e" in unbounded) |
6549 apply (simp add: dist_norm norm_divide divide_simps mult_ac) |
6551 apply (simp add: dist_norm norm_divide field_split_simps mult_ac) |
6550 done |
6552 done |
6551 have False |
6553 have False |
6552 using Liouville_weak_0 [OF 1 2] f by simp |
6554 using Liouville_weak_0 [OF 1 2] f by simp |
6553 } |
6555 } |
6554 then show ?thesis |
6556 then show ?thesis |
6677 have "(f n has_field_derivative 1 / (2 * of_real pi * \<i>) * ?conint (\<lambda>u. f n u / (u - w)\<^sup>2)) (at w)" |
6679 have "(f n has_field_derivative 1 / (2 * of_real pi * \<i>) * ?conint (\<lambda>u. f n u / (u - w)\<^sup>2)) (at w)" |
6678 by (rule Cauchy_derivative_integral_circlepath [OF cont_fn hol_fn w]) |
6680 by (rule Cauchy_derivative_integral_circlepath [OF cont_fn hol_fn w]) |
6679 then have f': "f' n w = 1 / (2 * of_real pi * \<i>) * ?conint (\<lambda>u. f n u / (u - w)\<^sup>2)" |
6681 then have f': "f' n w = 1 / (2 * of_real pi * \<i>) * ?conint (\<lambda>u. f n u / (u - w)\<^sup>2)" |
6680 using DERIV_unique [OF fnd] w by blast |
6682 using DERIV_unique [OF fnd] w by blast |
6681 show ?thesis |
6683 show ?thesis |
6682 by (simp add: f' Cauchy_contour_integral_circlepath_2 [OF g w] derg [OF w] divide_simps) |
6684 by (simp add: f' Cauchy_contour_integral_circlepath_2 [OF g w] derg [OF w] field_split_simps) |
6683 qed |
6685 qed |
6684 define d where "d = (r - norm(w - z))^2" |
6686 define d where "d = (r - norm(w - z))^2" |
6685 have "d > 0" |
6687 have "d > 0" |
6686 using w by (simp add: dist_commute dist_norm d_def) |
6688 using w by (simp add: dist_commute dist_norm d_def) |
6687 have dle: "d \<le> cmod ((y - w)\<^sup>2)" if "r = cmod (z - y)" for y |
6689 have dle: "d \<le> cmod ((y - w)\<^sup>2)" if "r = cmod (z - y)" for y |
6701 unfolding uniform_limit_iff |
6703 unfolding uniform_limit_iff |
6702 proof clarify |
6704 proof clarify |
6703 fix e::real |
6705 fix e::real |
6704 assume "0 < e" |
6706 assume "0 < e" |
6705 with \<open>r > 0\<close> show "\<forall>\<^sub>F n in F. \<forall>x\<in>sphere z r. dist (f n x / (x - w)\<^sup>2) (g x / (x - w)\<^sup>2) < e" |
6707 with \<open>r > 0\<close> show "\<forall>\<^sub>F n in F. \<forall>x\<in>sphere z r. dist (f n x / (x - w)\<^sup>2) (g x / (x - w)\<^sup>2) < e" |
6706 apply (simp add: norm_divide divide_simps sphere_def dist_norm) |
6708 apply (simp add: norm_divide field_split_simps sphere_def dist_norm) |
6707 apply (rule eventually_mono [OF uniform_limitD [OF ulim], of "e*d"]) |
6709 apply (rule eventually_mono [OF uniform_limitD [OF ulim], of "e*d"]) |
6708 apply (simp add: \<open>0 < d\<close>) |
6710 apply (simp add: \<open>0 < d\<close>) |
6709 apply (force simp: dist_norm dle intro: less_le_trans) |
6711 apply (force simp: dist_norm dle intro: less_le_trans) |
6710 done |
6712 done |
6711 qed |
6713 qed |
6947 have "\<exists>f'. (f has_field_derivative f') (at w)" if w: "dist z w < r" for w |
6949 have "\<exists>f'. (f has_field_derivative f') (at w)" if w: "dist z w < r" for w |
6948 proof - |
6950 proof - |
6949 have inb: "z + complex_of_real ((dist z w + r) / 2) \<in> ball z r" |
6951 have inb: "z + complex_of_real ((dist z w + r) / 2) \<in> ball z r" |
6950 proof - |
6952 proof - |
6951 have wz: "cmod (w - z) < r" using w |
6953 have wz: "cmod (w - z) < r" using w |
6952 by (auto simp: divide_simps dist_norm norm_minus_commute) |
6954 by (auto simp: field_split_simps dist_norm norm_minus_commute) |
6953 then have "0 \<le> r" |
6955 then have "0 \<le> r" |
6954 by (meson less_eq_real_def norm_ge_zero order_trans) |
6956 by (meson less_eq_real_def norm_ge_zero order_trans) |
6955 show ?thesis |
6957 show ?thesis |
6956 using w by (simp add: dist_norm \<open>0\<le>r\<close> flip: of_real_add) |
6958 using w by (simp add: dist_norm \<open>0\<le>r\<close> flip: of_real_add) |
6957 qed |
6959 qed |
7143 assumes holg: "g holomorphic_on S" and a: "a \<in> interior S" |
7145 assumes holg: "g holomorphic_on S" and a: "a \<in> interior S" |
7144 and eq: "\<And>z. z \<in> S - {a} \<Longrightarrow> g z = (z - a) * f z" |
7146 and eq: "\<And>z. z \<in> S - {a} \<Longrightarrow> g z = (z - a) * f z" |
7145 shows "(\<lambda>z. if z = a then deriv g a |
7147 shows "(\<lambda>z. if z = a then deriv g a |
7146 else f z - g a/(z - a)) holomorphic_on S" |
7148 else f z - g a/(z - a)) holomorphic_on S" |
7147 using pole_lemma [OF holg a] |
7149 using pole_lemma [OF holg a] |
7148 by (rule holomorphic_transform) (simp add: eq divide_simps) |
7150 by (rule holomorphic_transform) (simp add: eq field_split_simps) |
7149 |
7151 |
7150 lemma pole_lemma_open: |
7152 lemma pole_lemma_open: |
7151 assumes "f holomorphic_on S" "open S" |
7153 assumes "f holomorphic_on S" "open S" |
7152 shows "(\<lambda>z. if z = a then deriv f a else (f z - f a)/(z - a)) holomorphic_on S" |
7154 shows "(\<lambda>z. if z = a then deriv f a else (f z - f a)/(z - a)) holomorphic_on S" |
7153 proof (cases "a \<in> S") |
7155 proof (cases "a \<in> S") |
7173 assumes holg: "g holomorphic_on S" and a: "a \<in> interior S" |
7175 assumes holg: "g holomorphic_on S" and a: "a \<in> interior S" |
7174 and eq: "\<And>z. z \<in> S - {a} \<Longrightarrow> g z = (z - a) * f z" |
7176 and eq: "\<And>z. z \<in> S - {a} \<Longrightarrow> g z = (z - a) * f z" |
7175 and [simp]: "f a = deriv g a" "g a = 0" |
7177 and [simp]: "f a = deriv g a" "g a = 0" |
7176 shows "f holomorphic_on S" |
7178 shows "f holomorphic_on S" |
7177 using pole_theorem [OF holg a eq] |
7179 using pole_theorem [OF holg a eq] |
7178 by (rule holomorphic_transform) (auto simp: eq divide_simps) |
7180 by (rule holomorphic_transform) (auto simp: eq field_split_simps) |
7179 |
7181 |
7180 lemma pole_theorem_open_0: |
7182 lemma pole_theorem_open_0: |
7181 assumes holg: "g holomorphic_on S" and S: "open S" |
7183 assumes holg: "g holomorphic_on S" and S: "open S" |
7182 and eq: "\<And>z. z \<in> S - {a} \<Longrightarrow> g z = (z - a) * f z" |
7184 and eq: "\<And>z. z \<in> S - {a} \<Longrightarrow> g z = (z - a) * f z" |
7183 and [simp]: "f a = deriv g a" "g a = 0" |
7185 and [simp]: "f a = deriv g a" "g a = 0" |
7184 shows "f holomorphic_on S" |
7186 shows "f holomorphic_on S" |
7185 using pole_theorem_open [OF holg S eq] |
7187 using pole_theorem_open [OF holg S eq] |
7186 by (rule holomorphic_transform) (auto simp: eq divide_simps) |
7188 by (rule holomorphic_transform) (auto simp: eq field_split_simps) |
7187 |
7189 |
7188 lemma pole_theorem_analytic: |
7190 lemma pole_theorem_analytic: |
7189 assumes g: "g analytic_on S" |
7191 assumes g: "g analytic_on S" |
7190 and eq: "\<And>z. z \<in> S |
7192 and eq: "\<And>z. z \<in> S |
7191 \<Longrightarrow> \<exists>d. 0 < d \<and> (\<forall>w \<in> ball z d - {a}. g w = (w - a) * f w)" |
7193 \<Longrightarrow> \<exists>d. 0 < d \<and> (\<forall>w \<in> ball z d - {a}. g w = (w - a) * f w)" |
7377 then have "((\<lambda>x. 1 / (x - z)) has_contour_integral 0) \<gamma>" |
7379 then have "((\<lambda>x. 1 / (x - z)) has_contour_integral 0) \<gamma>" |
7378 using z v_def has_contour_integral_winding_number [OF \<open>valid_path \<gamma>\<close>] by fastforce |
7380 using z v_def has_contour_integral_winding_number [OF \<open>valid_path \<gamma>\<close>] by fastforce |
7379 then have "((\<lambda>x. f z * (1 / (x - z))) has_contour_integral 0) \<gamma>" |
7381 then have "((\<lambda>x. f z * (1 / (x - z))) has_contour_integral 0) \<gamma>" |
7380 using has_contour_integral_lmul by fastforce |
7382 using has_contour_integral_lmul by fastforce |
7381 then have "((\<lambda>x. f z / (x - z)) has_contour_integral 0) \<gamma>" |
7383 then have "((\<lambda>x. f z / (x - z)) has_contour_integral 0) \<gamma>" |
7382 by (simp add: divide_simps) |
7384 by (simp add: field_split_simps) |
7383 moreover have "((\<lambda>x. (f x - f z) / (x - z)) has_contour_integral contour_integral \<gamma> (d z)) \<gamma>" |
7385 moreover have "((\<lambda>x. (f x - f z) / (x - z)) has_contour_integral contour_integral \<gamma> (d z)) \<gamma>" |
7384 using z |
7386 using z |
7385 apply (auto simp: v_def) |
7387 apply (auto simp: v_def) |
7386 apply (metis (no_types, lifting) contour_integrable_eq d_def has_contour_integral_eq has_contour_integral_integral cint_fxy) |
7388 apply (metis (no_types, lifting) contour_integrable_eq d_def has_contour_integral_eq has_contour_integral_integral cint_fxy) |
7387 done |
7389 done |
7465 by (simp add: norm_mult norm_inverse Fields.field_class.field_divide_inverse) |
7467 by (simp add: norm_mult norm_inverse Fields.field_class.field_divide_inverse) |
7466 also have "\<dots> \<le> D * (e / L / D)" |
7468 also have "\<dots> \<le> D * (e / L / D)" |
7467 apply (rule mult_mono) |
7469 apply (rule mult_mono) |
7468 using that D interior_subset apply blast |
7470 using that D interior_subset apply blast |
7469 using \<open>L>0\<close> \<open>e>0\<close> \<open>D>0\<close> DL2 |
7471 using \<open>L>0\<close> \<open>e>0\<close> \<open>D>0\<close> DL2 |
7470 apply (auto simp: norm_divide divide_simps algebra_simps) |
7472 apply (auto simp: norm_divide field_split_simps algebra_simps) |
7471 done |
7473 done |
7472 finally show ?thesis . |
7474 finally show ?thesis . |
7473 qed |
7475 qed |
7474 have "dist (h y) 0 = cmod (contour_integral \<gamma> (\<lambda>w. f w / (w - y)))" |
7476 have "dist (h y) 0 = cmod (contour_integral \<gamma> (\<lambda>w. f w / (w - y)))" |
7475 by (simp add: dist_norm) |
7477 by (simp add: dist_norm) |
7699 have "((\<lambda>w. 1 / (w - z)) has_contour_integral complex_of_real (2 * pi) * \<i> * winding_number \<gamma> z) \<gamma>" |
7701 have "((\<lambda>w. 1 / (w - z)) has_contour_integral complex_of_real (2 * pi) * \<i> * winding_number \<gamma> z) \<gamma>" |
7700 by (rule has_contour_integral_winding_number [OF \<open>valid_path \<gamma>\<close> znot]) |
7702 by (rule has_contour_integral_winding_number [OF \<open>valid_path \<gamma>\<close> znot]) |
7701 then have "((\<lambda>w. f z * (1 / (w - z))) has_contour_integral complex_of_real (2 * pi) * \<i> * winding_number \<gamma> z * f z) \<gamma>" |
7703 then have "((\<lambda>w. f z * (1 / (w - z))) has_contour_integral complex_of_real (2 * pi) * \<i> * winding_number \<gamma> z * f z) \<gamma>" |
7702 by (metis mult.commute has_contour_integral_lmul) |
7704 by (metis mult.commute has_contour_integral_lmul) |
7703 then have 1: "((\<lambda>w. f z / (w - z)) has_contour_integral complex_of_real (2 * pi) * \<i> * winding_number \<gamma> z * f z) \<gamma>" |
7705 then have 1: "((\<lambda>w. f z / (w - z)) has_contour_integral complex_of_real (2 * pi) * \<i> * winding_number \<gamma> z * f z) \<gamma>" |
7704 by (simp add: divide_simps) |
7706 by (simp add: field_split_simps) |
7705 moreover have 2: "((\<lambda>w. (f w - f z) / (w - z)) has_contour_integral 0) \<gamma>" |
7707 moreover have 2: "((\<lambda>w. (f w - f z) / (w - z)) has_contour_integral 0) \<gamma>" |
7706 using U [OF z] pasz d_def by (force elim: has_contour_integral_eq [where g = "\<lambda>w. (f w - f z)/(w - z)"]) |
7708 using U [OF z] pasz d_def by (force elim: has_contour_integral_eq [where g = "\<lambda>w. (f w - f z)/(w - z)"]) |
7707 show ?thesis |
7709 show ?thesis |
7708 using has_contour_integral_add [OF 1 2] by (simp add: diff_divide_distrib) |
7710 using has_contour_integral_add [OF 1 2] by (simp add: diff_divide_distrib) |
7709 qed |
7711 qed |