src/HOL/Analysis/Conformal_Mappings.thy
changeset 66827 c94531b5007d
parent 66793 deabce3ccf1f
child 66884 c2128ab11f61
equal deleted inserted replaced
66826:0d60d2118544 66827:c94531b5007d
   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"