src/HOL/Analysis/Cauchy_Integral_Theorem.thy
changeset 66793 deabce3ccf1f
parent 66708 015a95f15040
child 66827 c94531b5007d
equal deleted inserted replaced
66792:6b76a5d1b7a5 66793:deabce3ccf1f
   178       case le show ?diff_fg
   178       case le show ?diff_fg
   179       proof (rule differentiable_transform_within [where d = "dist x c" and f = f])
   179       proof (rule differentiable_transform_within [where d = "dist x c" and f = f])
   180         have "f differentiable at x within ({a<..<c} - s)"
   180         have "f differentiable at x within ({a<..<c} - s)"
   181           apply (rule differentiable_at_withinI)
   181           apply (rule differentiable_at_withinI)
   182           using x le st
   182           using x le st
   183           by (metis (no_types, lifting) DiffD1 DiffD2 DiffI UnCI atLeastAtMost_diff_ends atLeastAtMost_iff at_within_interior insert_iff interior_atLeastAtMost le st(3) x)
   183           by (metis (no_types, lifting) DiffD1 DiffD2 DiffI UnCI atLeastAtMost_diff_ends atLeastAtMost_iff at_within_interior insert_iff interior_atLeastAtMost_real le st(3) x)
   184         moreover have "open ({a<..<c} - s)"
   184         moreover have "open ({a<..<c} - s)"
   185           by (blast intro: open_greaterThanLessThan \<open>finite s\<close> finite_imp_closed)
   185           by (blast intro: open_greaterThanLessThan \<open>finite s\<close> finite_imp_closed)
   186         ultimately show "f differentiable at x within {a..b}"
   186         ultimately show "f differentiable at x within {a..b}"
   187           using x le by (auto simp add: at_within_open_NO_MATCH differentiable_at_withinI)
   187           using x le by (auto simp add: at_within_open_NO_MATCH differentiable_at_withinI)
   188       qed (use x le st dist_real_def in auto)
   188       qed (use x le st dist_real_def in auto)
   190       case ge show ?diff_fg
   190       case ge show ?diff_fg
   191       proof (rule differentiable_transform_within [where d = "dist x c" and f = g])
   191       proof (rule differentiable_transform_within [where d = "dist x c" and f = g])
   192         have "g differentiable at x within ({c<..<b} - t)"
   192         have "g differentiable at x within ({c<..<b} - t)"
   193           apply (rule differentiable_at_withinI)
   193           apply (rule differentiable_at_withinI)
   194           using x ge st
   194           using x ge st
   195           by (metis DiffD1 DiffD2 DiffI UnCI atLeastAtMost_diff_ends atLeastAtMost_iff at_within_interior insert_iff interior_atLeastAtMost)
   195           by (metis DiffD1 DiffD2 DiffI UnCI atLeastAtMost_diff_ends atLeastAtMost_iff at_within_interior insert_iff interior_atLeastAtMost_real)
   196         moreover have "open ({c<..<b} - t)"
   196         moreover have "open ({c<..<b} - t)"
   197           by (blast intro: open_greaterThanLessThan \<open>finite t\<close> finite_imp_closed)
   197           by (blast intro: open_greaterThanLessThan \<open>finite t\<close> finite_imp_closed)
   198         ultimately show "g differentiable at x within {a..b}"
   198         ultimately show "g differentiable at x within {a..b}"
   199           using x ge by (auto simp add: at_within_open_NO_MATCH differentiable_at_withinI)
   199           using x ge by (auto simp add: at_within_open_NO_MATCH differentiable_at_withinI)
   200       qed (use x ge st dist_real_def in auto)
   200       qed (use x ge st dist_real_def in auto)
  1444       by (simp add: has_vector_derivative_def scaleR_conv_of_real o_def mult_ac)
  1444       by (simp add: has_vector_derivative_def scaleR_conv_of_real o_def mult_ac)
  1445   } note * = this
  1445   } note * = this
  1446   show ?thesis
  1446   show ?thesis
  1447     apply (rule fundamental_theorem_of_calculus_interior_strong)
  1447     apply (rule fundamental_theorem_of_calculus_interior_strong)
  1448     using k assms cfg *
  1448     using k assms cfg *
  1449     apply (auto simp: at_within_closed_interval)
  1449     apply (auto simp: at_within_Icc_at)
  1450     done
  1450     done
  1451 qed
  1451 qed
  1452 
  1452 
  1453 lemma contour_integral_primitive:
  1453 lemma contour_integral_primitive:
  1454   assumes "\<And>x. x \<in> s \<Longrightarrow> (f has_field_derivative f' x) (at x within s)"
  1454   assumes "\<And>x. x \<in> s \<Longrightarrow> (f has_field_derivative f' x) (at x within s)"
  4156     by (auto simp: open_dist)
  4156     by (auto simp: open_dist)
  4157 qed
  4157 qed
  4158 
  4158 
  4159 subsection\<open>Winding number is zero "outside" a curve, in various senses\<close>
  4159 subsection\<open>Winding number is zero "outside" a curve, in various senses\<close>
  4160 
  4160 
  4161 lemma winding_number_zero_in_outside:
  4161 proposition winding_number_zero_in_outside:
  4162   assumes \<gamma>: "path \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>" and z: "z \<in> outside (path_image \<gamma>)"
  4162   assumes \<gamma>: "path \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>" and z: "z \<in> outside (path_image \<gamma>)"
  4163     shows "winding_number \<gamma> z = 0"
  4163     shows "winding_number \<gamma> z = 0"
  4164 proof -
  4164 proof -
  4165   obtain B::real where "0 < B" and B: "path_image \<gamma> \<subseteq> ball 0 B"
  4165   obtain B::real where "0 < B" and B: "path_image \<gamma> \<subseteq> ball 0 B"
  4166     using bounded_subset_ballD [OF bounded_path_image [OF \<gamma>]] by auto
  4166     using bounded_subset_ballD [OF bounded_path_image [OF \<gamma>]] by auto
  4208       by (auto intro: winding_number_unique [OF \<gamma>] simp add: wnot)
  4208       by (auto intro: winding_number_unique [OF \<gamma>] simp add: wnot)
  4209   qed
  4209   qed
  4210   finally show ?thesis .
  4210   finally show ?thesis .
  4211 qed
  4211 qed
  4212 
  4212 
  4213 lemma winding_number_zero_outside:
  4213 corollary winding_number_zero_const: "a \<noteq> z \<Longrightarrow> winding_number (\<lambda>t. a) z = 0"
       
  4214   by (rule winding_number_zero_in_outside)
       
  4215      (auto simp: pathfinish_def pathstart_def path_polynomial_function)
       
  4216 
       
  4217 corollary winding_number_zero_outside:
  4214     "\<lbrakk>path \<gamma>; convex s; pathfinish \<gamma> = pathstart \<gamma>; z \<notin> s; path_image \<gamma> \<subseteq> s\<rbrakk> \<Longrightarrow> winding_number \<gamma> z = 0"
  4218     "\<lbrakk>path \<gamma>; convex s; pathfinish \<gamma> = pathstart \<gamma>; z \<notin> s; path_image \<gamma> \<subseteq> s\<rbrakk> \<Longrightarrow> winding_number \<gamma> z = 0"
  4215   by (meson convex_in_outside outside_mono subsetCE winding_number_zero_in_outside)
  4219   by (meson convex_in_outside outside_mono subsetCE winding_number_zero_in_outside)
  4216 
  4220 
  4217 lemma winding_number_zero_at_infinity:
  4221 lemma winding_number_zero_at_infinity:
  4218   assumes \<gamma>: "path \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>"
  4222   assumes \<gamma>: "path \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>"