691 have con: "continuous_on (ball \<xi> r) (\<lambda>z. deriv g z / g z)" |
691 have con: "continuous_on (ball \<xi> r) (\<lambda>z. deriv g z / g z)" |
692 by (rule continuous_intros) (auto simp: gne holg holomorphic_deriv holomorphic_on_imp_continuous_on) |
692 by (rule continuous_intros) (auto simp: gne holg holomorphic_deriv holomorphic_on_imp_continuous_on) |
693 have cd: "\<And>x. dist \<xi> x < r \<Longrightarrow> (\<lambda>z. deriv g z / g z) field_differentiable at x" |
693 have cd: "\<And>x. dist \<xi> x < r \<Longrightarrow> (\<lambda>z. deriv g z / g z) field_differentiable at x" |
694 apply (rule derivative_intros)+ |
694 apply (rule derivative_intros)+ |
695 using holg mem_ball apply (blast intro: holomorphic_deriv holomorphic_on_imp_differentiable_at) |
695 using holg mem_ball apply (blast intro: holomorphic_deriv holomorphic_on_imp_differentiable_at) |
696 apply (metis Topology_Euclidean_Space.open_ball at_within_open holg holomorphic_on_def mem_ball) |
696 apply (metis open_ball at_within_open holg holomorphic_on_def mem_ball) |
697 using gne mem_ball by blast |
697 using gne mem_ball by blast |
698 obtain h where h: "\<And>x. x \<in> ball \<xi> r \<Longrightarrow> (h has_field_derivative deriv g x / g x) (at x)" |
698 obtain h where h: "\<And>x. x \<in> ball \<xi> r \<Longrightarrow> (h has_field_derivative deriv g x / g x) (at x)" |
699 apply (rule exE [OF holomorphic_convex_primitive [of "ball \<xi> r" "{}" "\<lambda>z. deriv g z / g z"]]) |
699 apply (rule exE [OF holomorphic_convex_primitive [of "ball \<xi> r" "{}" "\<lambda>z. deriv g z / g z"]]) |
700 apply (auto simp: con cd) |
700 apply (auto simp: con cd) |
701 apply (metis open_ball at_within_open mem_ball) |
701 apply (metis open_ball at_within_open mem_ball) |
1232 using * [of \<xi>] \<open>0 < \<delta>\<close> \<open>0 < r\<close> by (simp add: DERIV_imp_deriv gnz) |
1232 using * [of \<xi>] \<open>0 < \<delta>\<close> \<open>0 < r\<close> by (simp add: DERIV_imp_deriv gnz) |
1233 obtain T where "\<xi> \<in> T" "open T" and Tsb: "T \<subseteq> ball \<xi> (min r \<delta>)" and oimT: "open ((\<lambda>w. (w - \<xi>) * g w) ` T)" |
1233 obtain T where "\<xi> \<in> T" "open T" and Tsb: "T \<subseteq> ball \<xi> (min r \<delta>)" and oimT: "open ((\<lambda>w. (w - \<xi>) * g w) ` T)" |
1234 apply (rule has_complex_derivative_locally_invertible [OF holgw, of \<xi>]) |
1234 apply (rule has_complex_derivative_locally_invertible [OF holgw, of \<xi>]) |
1235 using \<open>0 < r\<close> \<open>0 < \<delta>\<close> |
1235 using \<open>0 < r\<close> \<open>0 < \<delta>\<close> |
1236 apply (simp_all add:) |
1236 apply (simp_all add:) |
1237 by (meson Topology_Euclidean_Space.open_ball centre_in_ball) |
1237 by (meson open_ball centre_in_ball) |
1238 define U where "U = (\<lambda>w. (w - \<xi>) * g w) ` T" |
1238 define U where "U = (\<lambda>w. (w - \<xi>) * g w) ` T" |
1239 have "open U" by (metis oimT U_def) |
1239 have "open U" by (metis oimT U_def) |
1240 have "0 \<in> U" |
1240 have "0 \<in> U" |
1241 apply (auto simp: U_def) |
1241 apply (auto simp: U_def) |
1242 apply (rule image_eqI [where x = \<xi>]) |
1242 apply (rule image_eqI [where x = \<xi>]) |
1929 have fz: "(\<lambda>z. f (a + z)) = f o (\<lambda>z. (a + z))" |
1929 have fz: "(\<lambda>z. f (a + z)) = f o (\<lambda>z. (a + z))" |
1930 by (simp add: o_def) |
1930 by (simp add: o_def) |
1931 have hol0: "(\<lambda>z. f (a + z)) holomorphic_on cball 0 r" |
1931 have hol0: "(\<lambda>z. f (a + z)) holomorphic_on cball 0 r" |
1932 unfolding fz by (intro holomorphic_intros holf holomorphic_on_compose | simp)+ |
1932 unfolding fz by (intro holomorphic_intros holf holomorphic_on_compose | simp)+ |
1933 then have [simp]: "\<And>x. norm x < r \<Longrightarrow> (\<lambda>z. f (a + z)) field_differentiable at x" |
1933 then have [simp]: "\<And>x. norm x < r \<Longrightarrow> (\<lambda>z. f (a + z)) field_differentiable at x" |
1934 by (metis Topology_Euclidean_Space.open_ball at_within_open ball_subset_cball diff_0 dist_norm holomorphic_on_def holomorphic_on_subset mem_ball norm_minus_cancel) |
1934 by (metis open_ball at_within_open ball_subset_cball diff_0 dist_norm holomorphic_on_def holomorphic_on_subset mem_ball norm_minus_cancel) |
1935 have [simp]: "\<And>z. norm z < r \<Longrightarrow> f field_differentiable at (a + z)" |
1935 have [simp]: "\<And>z. norm z < r \<Longrightarrow> f field_differentiable at (a + z)" |
1936 by (metis holf open_ball add_diff_cancel_left' dist_complex_def holomorphic_on_imp_differentiable_at holomorphic_on_subset interior_cball interior_subset mem_ball norm_minus_commute) |
1936 by (metis holf open_ball add_diff_cancel_left' dist_complex_def holomorphic_on_imp_differentiable_at holomorphic_on_subset interior_cball interior_subset mem_ball norm_minus_commute) |
1937 then have [simp]: "f field_differentiable at a" |
1937 then have [simp]: "f field_differentiable at a" |
1938 by (metis add.comm_neutral \<open>0 < r\<close> norm_eq_zero) |
1938 by (metis add.comm_neutral \<open>0 < r\<close> norm_eq_zero) |
1939 have hol1: "(\<lambda>z. f (a + z) - f a) holomorphic_on cball 0 r" |
1939 have hol1: "(\<lambda>z. f (a + z) - f a) holomorphic_on cball 0 r" |
2129 proof - |
2129 proof - |
2130 consider "r \<le> 0" | "0 < t * norm(deriv f a) / 12" using rle by force |
2130 consider "r \<le> 0" | "0 < t * norm(deriv f a) / 12" using rle by force |
2131 then show ?thesis |
2131 then show ?thesis |
2132 proof cases |
2132 proof cases |
2133 case 1 then show ?thesis |
2133 case 1 then show ?thesis |
2134 by (simp add: Topology_Euclidean_Space.ball_empty that) |
2134 by (simp add: ball_empty that) |
2135 next |
2135 next |
2136 case 2 |
2136 case 2 |
2137 show ?thesis |
2137 show ?thesis |
2138 proof (cases "deriv f a = 0") |
2138 proof (cases "deriv f a = 0") |
2139 case True then show ?thesis |
2139 case True then show ?thesis |
2140 using rle by (simp add: Topology_Euclidean_Space.ball_empty that) |
2140 using rle by (simp add: ball_empty that) |
2141 next |
2141 next |
2142 case False |
2142 case False |
2143 then have "t > 0" |
2143 then have "t > 0" |
2144 using 2 by (force simp: zero_less_mult_iff) |
2144 using 2 by (force simp: zero_less_mult_iff) |
2145 have "~ ball a t \<subseteq> s \<Longrightarrow> ball a t \<inter> frontier s \<noteq> {}" |
2145 have "~ ball a t \<subseteq> s \<Longrightarrow> ball a t \<inter> frontier s \<noteq> {}" |
3618 proof (rule DERIV_imp_deriv) |
3618 proof (rule DERIV_imp_deriv) |
3619 define der where "der \<equiv> zo * zp w * (w-p)^(zo-1) + deriv zp w * (w-p)^zo" |
3619 define der where "der \<equiv> zo * zp w * (w-p)^(zo-1) + deriv zp w * (w-p)^zo" |
3620 have po:"zo = Suc (zo - Suc 0) " using \<open>zo>0\<close> by auto |
3620 have po:"zo = Suc (zo - Suc 0) " using \<open>zo>0\<close> by auto |
3621 have "(zp has_field_derivative (deriv zp w)) (at w)" |
3621 have "(zp has_field_derivative (deriv zp w)) (at w)" |
3622 using DERIV_deriv_iff_has_field_derivative pp_holo |
3622 using DERIV_deriv_iff_has_field_derivative pp_holo |
3623 by (meson Topology_Euclidean_Space.open_ball \<open>w \<in> ball p r\<close> ball_subset_cball holomorphic_derivI holomorphic_on_subset) |
3623 by (meson open_ball \<open>w \<in> ball p r\<close> ball_subset_cball holomorphic_derivI holomorphic_on_subset) |
3624 then show "(f' has_field_derivative der) (at w)" |
3624 then show "(f' has_field_derivative der) (at w)" |
3625 using \<open>w\<noteq>p\<close> \<open>zo>0\<close> unfolding der_def f'_def |
3625 using \<open>w\<noteq>p\<close> \<open>zo>0\<close> unfolding der_def f'_def |
3626 by (auto intro!: derivative_eq_intros simp add:field_simps) |
3626 by (auto intro!: derivative_eq_intros simp add:field_simps) |
3627 qed |
3627 qed |
3628 ultimately show "prin w + anal w = ff' w" |
3628 ultimately show "prin w + anal w = ff' w" |