Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/Isabelle/HOL/Complex_Analysis/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 132 kB image not shown  

Quelle  Winding_Numbers.thy   Sprache: Isabelle

 
ection
theory
   Cauchy_Integral_Theorem Cauchy_Integral_Theorembegin
begin<>\<close>

 \<open>Definition\<close>

definition>\<open>tag important\<close> winding_number_prop :: "[real \<Rightarrow> complex, complex, real, real \<Rightarrow> complex, complex] \<Rightarrow> bool" where
  winding_number_prop \<gamma> z e p n \<equiv>
      valid_path p \<and> z \<notin> path_image p \<and>
      pathstart p = pathstart \<gamma> \<and>
      pathfinish p = pathfinish \<gamma> \<and>
      (\<forall>t \<in> {0..1}. norm(\<gamma> t - p t) < e) \<and>
      contour_integral p (\<lambda>w. 1/(w - z)) = 2 * pi * \<i> * n"

definition\<^marker>\<open>tag important\<close> winding_number:: "[real \<Rightarrow> complex, complex] \<Rightarrow> complex" where
  "winding_number \ z \ SOME n. \e > 0. \p. winding_number_prop \ z e p n"


lemma winding_number:
  assumes "path \" "z \ path_image \" "0 < e"
    shows "\p. winding_number_prop \ z e p (winding_number \ z)"
proof -
  have "path_image \ \ UNIV - {z}"
    using assms by blast
  then obtain d
    where d: "d>0"
      and pi_eq: "\h1 h2. valid_path h1 \ valid_path h2 \
                    (\<forall>t\<in>{0..1}. cmod (h1 t - \<gamma> t) < d \<and> cmod (h2 t - \<gamma> t) < d) \<and>
                    pathstart h2 = pathstart h1 \<and> pathfinish h2 = pathfinish h1 \<longrightarrow>
                      path_image h1 \<subseteq> UNIV - {z} \<and> path_image h2 \<subseteq> UNIV - {z} \<and>
                      (\<forall>f. f holomorphic_on UNIV - {z} \<longrightarrow> contour_integral h2 f = contour_integral h1 f)"
    using contour_integral_nearby_ends [of "UNIV - {z}" \<gamma>] assms by (auto simp: open_delete)
  then obtain h where h: "polynomial_function h \ pathstart h = pathstart \ \ pathfinish h = pathfinish \ \
                          (\<forall>t \<in> {0..1}. norm(h t - \<gamma> t) < d/2)"
    using path_approx_polynomial_function [OF \<open>path \<gamma>\<close>, of "d/2"] d by (metis half_gt_zero_iff)
  define nn where "nn = 1/(2* pi*\) * contour_integral h (\w. 1/(w - z))"
  have "\n. \e > 0. \p. winding_number_prop \ z e p n"
    proof (rule_tac x=nn in exI, clarify)
      fix e::real
      assume e: "e>0"
      obtain p where p: "polynomial_function p \
            pathstart p = pathstart \<gamma> \<and> pathfinish p = pathfinish \<gamma> \<and> (\<forall>t\<in>{0..1}. cmod (p t - \<gamma> t) < min e (d/2))"
        using path_approx_polynomial_function [OF \<open>path \<gamma>\<close>, of "min e (d/2)"] d \<open>0<e\<close>
        by (metis min_less_iff_conj zero_less_divide_iff zero_less_numeral) 
      have "(\w. 1 / (w - z)) holomorphic_on UNIV - {z}"
        by (auto simp: intro!: holomorphic_intros)
      then have "winding_number_prop \ z e p nn"
        using pi_eq [of h p] h p d
        by (auto simp: valid_path_polynomial_function norm_minus_commute nn_def winding_number_prop_def)
      then show "\p. winding_number_prop \ z e p nn"
        by metis
    qed
  then show ?thesis
    unfolding winding_number_def by (rule someI2_ex) (blast intro: \<open>0<e\<close>)
qed

lemma winding_number_unique:
  assumes \<gamma>: "path \<gamma>" "z \<notin> path_image \<gamma>"
      and pi: "\e. e>0 \ \p. winding_number_prop \ z e p n"
   shows "winding_number \ z = n"
proof -
  have "path_image \ \ UNIV - {z}"
    using assms by blast
  then obtain e
    where e: "e>0"
      and pi_eq: "\h1 h2 f. \valid_path h1; valid_path h2;
                    (\<forall>t\<in>{0..1}. cmod (h1 t - \<gamma> t) < e \<and> cmod (h2 t - \<gamma> t) < e);
                    pathstart h2 = pathstart h1; pathfinish h2 = pathfinish h1; f holomorphic_on UNIV - {z}\<rbrakk> \<Longrightarrow>
                    contour_integral h2 f = contour_integral h1 f"
    using contour_integral_nearby_ends [of "UNIV - {z}" \<gamma>] assms  by (auto simp: open_delete)
  obtain p where p: "winding_number_prop \ z e p n"
    using pi [OF e] by blast
  obtain q where q: "winding_number_prop \ z e q (winding_number \ z)"
    using winding_number [OF \<gamma> e] by blast
  have "2 * complex_of_real pi * \ * n = contour_integral p (\w. 1 / (w - z))"
    using p by (auto simp: winding_number_prop_def)
  also have "\ = contour_integral q (\w. 1 / (w - z))"
  proof (rule pi_eq)
    show "(\w. 1 / (w - z)) holomorphic_on UNIV - {z}"
      by (auto intro!: holomorphic_intros)
  qed (use p q in \<open>auto simp: winding_number_prop_def norm_minus_commute\<close>)
  also have "\ = 2 * complex_of_real pi * \ * winding_number \ z"
    using q by (auto simp: winding_number_prop_def)
  finally have "2 * complex_of_real pi * \ * n = 2 * complex_of_real pi * \ * winding_number \ z" .
  then show ?thesis
    by simp
qed

lemma winding_number_prop_reversepath:
  assumes "winding_number_prop \ z e p n"
  shows   "winding_number_prop (reversepath \) z e (reversepath p) (-n)"
proof -
  have p: "valid_path p" "z \ path_image p" "pathstart p = pathstart \"
          "pathfinish p = pathfinish \" "\t. t \ {0..1} \ norm (\ t - p t) < e"
          "contour_integral p (\w. 1 / (w - z)) = 2 * complex_of_real pi * \ * n"
    using assms by (auto simp: winding_number_prop_def)
  show ?thesis
    unfolding winding_number_prop_def
  proof (intro conjI strip)
    show "norm (reversepath \ t - reversepath p t) < e" if "t \ {0..1}" for t
      unfolding reversepath_def using p(5)[of "1 - t"] that by auto
    show "contour_integral (reversepath p) (\w. 1 / (w - z)) =
             complex_of_real (2 * pi) * \<i> * - n"
      using p by (subst contour_integral_reversepath) auto
  qed (use p in auto)
qed

lemma winding_number_prop_reversepath_iff:
  "winding_number_prop (reversepath \) z e p n \ winding_number_prop \ z e (reversepath p) (-n)"
  using winding_number_prop_reversepath[of "reversepath \" z e p n]
        winding_number_prop_reversepath[of \<gamma> z e "reversepath p" "-n"] by auto

(*NB not winding_number_prop here due to the loop in p*)
lemma winding_number_unique_loop:
  assumes \<gamma>: "path \<gamma>" "z \<notin> path_image \<gamma>"
      and"pathfinish \ = pathstart \"
      and :
        "e. e>0 \ \p. valid_path p \ z \ path_image p \
                           pathfinish p = pathstart p \<and>
                           \<>t \<in> {0..1}. norm (\<gamma> t - p t) < e) \<and>
                           contour_integral p (\<lambda>w. 1/(w - z)) = 2 * pi * \<i> * n"
   shows
proof -
  have path_image
      " \ z e p n \
 obtain
"e>"
java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
     d: ">0
                     h1  h1;  h2= h2 UNIV}rbrakk
                    contour_integral\<forall>t \<in> {0..1}. norm(\<gamma> t - p t) < e) \<and>\<lambda>w. 1/(w - z)) = 2 * pi * \<i> * n"
   "path \" "z \ path_image \" "0 < e"
  obtain p where p: -
     valid_path
      (\<forall>t \<in> {0..1}. norm (\<gamma> t - p t) < e) \<and>
      contour_integral\lambdaw /w- ))=2*pi* \<i> * n"
    using pi [OF e] by blast
  obtain q where q: "winding_number_prop \ z e q (winding_number \ z)"
    using winding_number [OF \<gamma> e] by blast
  have"2* pi*\ * n = contour_integral p (\w. 1 / (w - z))"
    sing java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
      using  [OF <open>path \<gamma>\<close>, of "d/2"] d by (metis half_gt_zero_iff)
 rule r x in, )

 auto :java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
qed p q loop \<open>auto simp: winding_number_prop_def norm_minus_commute\<close>)
  alsohave"<2*complex_of_realpi* \ * winding_number \ z"
  usingbyauto: winding_number_prop_def d: ">
  finally have "2 * contour_integral p (\w. 1/(w - z)) = 2 * pi * \ * n"
  then show ?thesis
    by simp
qed

proposition:
  assumes "valid_path \" "z \ path_image \"
  shows <gamma> z = 1/(2*pi*\<i>) * contour_integral \<gamma> (\<lambda>w. 1/(w - z))"d    shows

  (use "path_image \ \ UNIV - {z}"

proposition obtainjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  assumesarrow> contour_integral h2 f = contour_integral h1 f)"usingof-z (<forall>t\<in>{0..1}. cmod (h1 t - \<gamma> t) < d \<and> cmod (h2 t - \<gamma> t) < d) \<and>
     "((\w. 1/(w - z)) has_contour_integral (2*pi*\*winding_number \ z)) \"
number_valid_path \<subseteq> UNIV - {z} \<and> path_image h2 \<subseteq> UNIV - {z} \<and>

lemma  [simp:"z\ winding_number(linepath a a) z= 0contour_integral_nearby_endsfUNIV- {z}
  by (simp: winding_number_valid_path:eal

lemma      assume e: e>0
  by (simpaddwinding_number_valid_path

lemma         using contour_integral_nearby_ends -z" <>]assms auto open_delete)
  assumeshave
       \<gamma>2: "path \<gamma>2" "z \<notin> path_image \<gamma>2"
obtain                          
    shows      have"\w. 1 / (w - z)) holomorphic_on UNIV - {z}"
(java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
  show   exI
              (winding_number
  proof
     p1       have "(\<lambda>w. 1 / (w ( : intro
               pi_equnfoldingbysomeI2_exintro:
    moreover
    obtain         by (auto simp: valid_path_polynomial_function norm_minus_commute nn_def winding_number_prop_def) java.lang.NullPointerException
number
    ultimately
    have "winding_number_prop (\1+++\2) z e (p1+++p2) (winding_number \1 z + winding_number \2 z)"
      using     unfolding java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 15
       <>  \<gamma>" "z \<notin> path_image \<gamma>"
      apply (auto: joinpaths_def
done
             -
byjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
    (    [ e 
qeduse in

     winding_number
 <gamma>" "z \<notin> path_image \<gamma>"  [ofp]  java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
shows(reversepath
proof (rule winding_number_uniqueby auto pathstart=h1h2 ;     -{}
showpwinding_number_prop
  proof -
    obtain p where java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
      using 
    then winding_number_propjava.lang.NullPointerException
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 3
applysimp  valid_path_imp_reverse
    apply(simp
      java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
    then thesis
      by blast 
  qedpathstart)
qed (    using assms                      h2

lemma (uto!: )
assumes
      andshownorm
    showswinding_number\<gamma>) z = winding_number \<gamma> z" q byauto:  obtain p where p: "winding_number_prop \<gamma> 
(rulewinding_number_unique_loop pjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  show "\p. valid_path p \ z \ path_image p \ pathfinish p = pathstart p \
\<forall>t\<in>{0..1}. cmod (shiftpath a \<gamma> t - p t) < e) \<and>
            p(<>w.          ppathfinish<>.  \<in> {0..1} \<Longrightarrow> norm (\<gamma> t - p t) < e"[java.lang.StringIndexOutOfBoundsException: Index 85 out of bounds for length 85
2  )
if "> pi*\ * winding_number \ z"
   -
number_prop
      using \<open>0 < e\<close> assms winding_number by blast
    then       usingp java.lang.NullPointerException
qedproof-
      using that
      apply (-
     apply"reversepath\) z e p n \ winding_number_prop \ z e (reversepath p) (-n)"
      done
 obtain
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0

lemma:
 "c \ closed_segment a b" "z \ closed_segment a b"
shows"(linepath a bz ( a c)z (linepathc b)z
proof-
  have\<notin> closed_segment a c" "z \<notin> closed_segment c b"contour_integral_nearby_loopspathfinish p \<and>
contour_integral\<lambda>w. 1/(w - z)) = 2 * pi * \<i> * n"
  then ?thesis -

    by : winding_number_valid_pathsymmetric field_simps
qed obtainjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15

lemma:
   java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  by winding_number_unique_looppathfinish

      \< contour_integralw.1 wz)"
and
  shows "qed (use qp p = p \
proof
  have "winding_number pi [OF blast
    usingg  by fastforce
  " (linepath c "
     java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
  ultimately show ? shows"
qed

lemmawinding_number_offset"show\lambdaw1 (-z athfinish=pathstarth1 h2=pathstarth2;fholomorphic_on z<>\java.lang.StringIndexOutOfBoundsException: Index 134 out of bounds for length 134
 java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
  "*pi*
   n 
  lemma ]:z OF
  then p 
    by (rule_tac b winding_number_unique assms
       (force simp: winding_number_prop_def"(gamma1 roof( )
 
next
neg
  assume "0 < e" and g: "winding_number_prop (\w. p w - z) 0 e g n"
thenjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 9
proposition    
piecewise_C1_differentiable_addC1_differentiable_imp_piecewise
    apply       \<open>0 < e\<close> \<gamma>2 winding_number by blast
done \<gamma>2: "path \<gamma>2" "z \<notin> path_image \<gamma>2"
r_prop  \<gamma>1 z + winding_number \<gamma>2 z"

qed

lemma
  NO_MATCH
  usinglemma winding_number_trivial []: "z\<> a \ winding_number(linepath a a) z = 0"

lemma winding_number_negatepath   (proof winding_number_unique
  assumes  :java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  shows 
proof winding_number_unique
  have "(/) 1 contour_integrable_on \"
           assmswinding_number_prop_def
      assume""
    ( 
  then "(\z. 1 / - z) has_contour_integral - contour_integral \ ((/) 1)) \"             p =  \<gamma> \<and> pathfinish p = pathfinish \<gamma> \<and> (\<forall>t\<in>{0..1}. cmod (p t - \<gamma> t) < min e (d/2))")
    using
  then ( 
        contour_integral \<gamma> ((/) 1)"
java.lang.StringIndexOutOfBoundsException: Index 89 out of bounds for length 89
  then show
 assms:winding_number_valid_path
            contour_integral

lemmawinding_number_cnj
  assumesjava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
(
 ruleshows
showe
    ife
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 9
2
    obtain                    using
      byblast  
then" "z
        "pathstart p = pathstart \"
   2java.lang.StringIndexOutOfBoundsException: Range [30, 27) out of bounds for length 89
        
       "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     
winding_number_prop_def
    
    have "( : winding_number_valid_path symmetric )
      usingp1 (ubst
     havez
      lemma : winding_number_prop_defjava.lang.StringIndexOutOfBoundsException: Index 88 out of bounds for length 88
    moreover">"for
using  add
moreover show
p)imp
     have (\>  moreover have "winding_number (linepath c c) z = 0"
      if(: java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 27
    proof -
      have ( <circ> \<gamma>) t - (cnj \<circ> p) t = cnj (\<gamma> t - p t)"( extarg_cong "( p) (\w. 1 / (w - z)) =
        bysimp p by (subst) auto
also  <dots> = norm (\<gamma> t - p t)"\<gamma> t - p t)"
        by (subst
       have\<dots> < e" simpof
        using java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
    show

 contour_integral
            (*)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    proof -
    "<>. r n" 
        by simpo_def
  \dotsbyjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
 ( :o_def
      also have "\ = ?R"
        using p_contassumesultimately thesis
      finally ? java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
    qed
    ultimately show ?thesis havejava.lang.NullPointerException
by exI/    \<gamma> ((/) 1)) \<gamma>"
  " > \) ((/) 1) =
   " (cnj \ \)"
    by                 piecewise_C1_differentiable_diff)
shown java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11

qed

text \<open>A combined theorem deducing several things piecewise.\<close>
lemma     apply (force simp: algebra_simps
     "\valid_path \1; z \ path_image \1; 0 < Re(winding_number \1 z);
       valid_path \<gamma>2; z \<notin> path_image \<gamma>2; 0 < Re(winding_number \<gamma>2 z); pathfinish \<gamma>1 = pathstart \<gamma>2\<rbrakk>
      \<Longrightarrow> valid_path(\<gamma>1 +++ \<gamma>2) \<and> z \<notin> path_image(\<gamma>1 +++ \<gamma>2) \<and> 0 < Re(winding_number(\<gamma>1 +++ \<gamma>2) z)"[OF1,2 
  by (simpshowswinding_number


subsubsection

lemma :
    "\valid_path \; z \ path_image \\
     \<Longrightarrow> Re(winding_number \<gamma> z) = Im(contour_integral \<gamma> (\<lambda>w. 1/(w - z))) / (2*pi)"


mber_pos_le h2proof
using ofjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
      and     " notin ( \ p)"
    shows "0contour_integral p (\w. 1/(w - z)) = 2 * pi * \ * n"
proof
have" >( \ (at x) / (\ x - z))" if x: "0 < x" "x < 1" for x
    using p3 add)
  let?  then contour_integral)pathfinish\
letint\<
have\le> ? )java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 28
  proof ( -  "dots (w. 1 / (w - z))"
    show "usingassms (simp add: winding_number_valid_path java.lang.StringIndexOutOfBoundsException: Range [56, 20) out of bounds for length 20
 : ge0have <dots> = norm (\<gamma> t - p t)"
    have "alsohave"
      using
    then "e >then show thesis
      java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
    show(-z)java.lang.StringIndexOutOfBoundsException: Index 103 out of bounds for length 103
      by(le [OF)(
  qed
obtainwhere
<>] field_simps
qed then have p: "valid_path p" "z \<notin> path_image p"

lemma:
   \<gamma>: "valid_path \<gamma>" "z \<notin> path_image \<gamma>"
         ( : winding_number_valid_path
            also " = ( p \x. 1 / (x - z)))"
shows winding_number
proof
  let="lambda>.1 "dots
  let = "\z. contour_integral \ (\w. 1 / (w - z))"
  have "e\ Im (contour_integral \ (\w. 1 / (w - z)))"
  proofrule of
    have "((\a. 1 / (a - z)) has_contour_integral contour_integral \ (\w. 1 / (w - z))) \"
m has_integral_component_le [of    moreover have "pathfinish (cnj \<circ> p) = pathfinish (cnj \<circ> \<gamma>)" 
      using simphas_contour_integral_integral
  hi"? intz cbox 01"
 has_contour_integraljava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
    show "((\x. if 0 < x \ x < 1 then ?vd x else \ * e) has_integral ?int z) {0..1}"
       rule [OF, simplified
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      by (lemma  \<dots> < e"
  qed(use [of _ 0 1]         \<gamma>2; z \<notin> path_image \<gamma>2; 0 < Re(winding_number \<gamma>2 z); pathfinish \<gamma>1 = pathstart \<gamma>2\<rbrakk>
  withe  ?thesis
gamma>] field_simps)
qed

lemmawinding_number_pos_lt
  assumes \<gamma>: "valid_path \<gamma>" "z \<notin> path_image \<gamma>"
      and \<gamma>1 z + winding_number \<gamma>2 z)" if "e > 0" for e
      and ge Re_winding_number
    shows "0 < Re (winding_number \ z)"

  havebm (<>.w-z)`( <gamma>))"
    using bounded_translation [of _lemmawinding_number_pos_le:sing
assumes
_posTHEN, OF] byjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
  { fixx::eal x: have " \ Im (vector_derivative \ (at x) / (\ x - z))" if x: "0 < x" "x < 1" for x
    then have B2
      by (simp use in
le winding_number_reversepath
       path_image_def
    then have "e / B\<^sup>2 \ e / (cmod (\ x - z))\<^sup>2"
       
also"
      using ge "cnj then " reversepath
    have(lambda/-  contour_integral
apply add   )
      (
  } note * = this \<open>A combined theorem deducing several things piecewise.\<close>
  java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 5
 e  assumes
qed

subsection ( winding_number_unique_loop

text "0
onof"e

lemma
sz:
"(g has_vector_derivative :"<java.lang.StringIndexOutOfBoundsException: Index 142 out of bounds for length 142
and ' ) ( "
       z:"gx\ z"
    shows "((\x. exp(-f x) * (g x - z)) has_vector_derivative 0) (at x within s)"
proof -
  have *: "(exp \ (\x. (- f x)) has_vector_derivative - (g' / (g x - z)) * exp (- f x)) (at x within s)"
         geadd(: java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
    by (auto!: )
  show ?thesisjava.lang.StringIndexOutOfBoundsException: Index 124 out of bounds for length 124
    using z by (auto         "linepatha( )+ )z
qed

lemma winding_number_exp_integral assms
 lemma:then ( ? )(  )
assumes
      and
      and z: "z \ \ ` {a..b}"
    shows  by( add  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
          (isjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 7
"exp of_ z]
          (is"
proof
      java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    lambda>x. 1 / (\<gamma> x - z) * vector_derivative \<gamma> (at x)"
    using (imp:path_image_def mult_mono
  havexhave<gamma> x \<noteq> z" using \<gamma>
    using rule_tacjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
o        eby( simphave(\ambda.1 a-)as_contour_integral
     <gamma> by (force simp: piecewise_C1_differentiable_on_def)  piecewise_C1_differentiable_diff)
  have)
using
  moreover have "{a<.. {a..b} - k"
    by force
ultimatelyg_diff_at
    by (metis Diff_iff differentiable_on_subset piecewise_C1_differentiable_add C1_differentiable_imp_piecewise
   java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
    assumejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    have "continuous_on (ball w (cmod (w - z))) show "(
      by (auto simp: dist_norm intro!: continuous_intros winding_number_offset
z: \<gamma>: "valid_path \<gamma>" and 0: "0 \<notin> path_image \<gamma>"
       autohow "
    ultimately have "\h. \y. norm(y - w) < norm(w - z) \ (h has_field_derivative 1/(y - z)) (at y)"
of norm   qed (use has_integral_const_real)
       force  Ball_def) :"x
  }
  thenh* exp
 meson
      lemma:
    unfolding
   rule
    show and gamma <gamma>"
                rule

        z:
by   "exists.( \ \) (cnj z) e p (-cnj (winding_number \ z))"
   java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
have p  gamma
     java.lang.NullPointerException
    by (auto introcomplex_of_real ""
  with ab show ?thesis1
   &ds for length 7

   force
  con_g{.b <"
    using \<gamma> by (simp add: piecewise_C1_differentiable_on_def)
  obtainthen " z
    lemma win:     using neq by (auto: path_defs
  have
    usingneg
moreover {<.b -k\<subseteq> {a..b} - k"
    byforce
  ultimately have g_diff_at: java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
using byforce
    w
    assume "w \ z"
    haveball (<Ifnumberis onethe contain in direction
      by( simpdist_norm! java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
    moreover have "\x. cmod (w - x) < cmod (w - z) \ \f'. ((\w. 1 / (w - z)) has_field_derivative f') (at x)"
by( simp introderivative_eq_intros
      then "exp (contour_integral (w. 1 / (w - z))) = (\ 1 - z) / (\ 0 - z)"
      usingdone
      by (then"<>. r"java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
  }
     where"java.lang.StringIndexOutOfBoundsException: Index 94 out of bounds for length 94
     meson
  have exy: "\y. ((\x. inverse (\ x - z) * ?D\ x) has_integral y) {a..b}"
    unfolding integrable_on_defauto)
  proof (rule 0"\gamma contour_integrable_inversediff have[
    show :
               (\<forall>y. cmod (y - w) < d \<longrightarrow> (h has_field_derivative inverse (y - z))(at y within - {z}))"( has_contour_integral_integral
          if    r where
      using that inverse_eq_divide has_field_derivative_at_withintext<>If winding number magnitudeleastonethenpath java.lang.StringIndexOutOfBoundsException: Index 96 out of bounds for length 29
      by java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
shows(java.lang.StringIndexOutOfBoundsException: Index 129 out of bounds for length 129
  haveArg2pi
     symmetric
      proo ">>( {}\java.lang.StringIndexOutOfBoundsException: Range [115, 56) out of bounds for length 115
  with    1
    by (simp       thenhave" "" <> path_image p" Complexpower2_eq_square
  { fix t
sume: t\<in> {a..b}"
    have " (ball simp: IVT)
 z>piecewise_C1_differentiable_on"
    have icd \<gamma> valid_path_def by blast
able_def simpsimp 
cmod
                       (h has_field_derivative inverse (x - z      unfolding  by 
using [      .t<java.lang.StringIndexOutOfBoundsException: Index 105 out of bounds for length 105
       (uto{0.x <lambda>x. vector_derivative \<gamma> (at x) / (\<gamma> x - z))))"
    have" (-( {a..
    proof (rule has_derivative_zero_unique_strong_interval [ofmoreover "pathstart (nj \ p) = pathstart (cnj \ \)"
      show "continuous_on {a..b} (\b. exp (- integral {a..b} (\x. ?D\ x / (\ x - z))) * (\ b - z))"
        by (      using:      using)bysimppathfinish_compose
      show " if t: "\in{.1   use auto
            (at x within {a..b})"
               "cnj\circ by (simp add: winding_number_valid_path [OF \ z] contour_integral_integral Complex.Re_divide field_simps power2_eq_square)
      proof   have" r \ Im (integral {0..1} (\x. vector_derivative \ (at x) / (\ x - z)))" .
havex<notin> k" "a < x" "x < b"
          also "
        then have "x \ interior ({a..b} - k)"
\circ] f
        then have con: "isCont ?D using by (simp : i_def)
usingby and ntegral}java.lang.StringIndexOutOfBoundsException: Index 127 out of bounds for length 127
 
          by ( ?  cnj
have "<> differentiable atxjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
          using  by( add g_diff_at
        (i*(gamma >0-z
          by    unfolding
        show(
          (at x within {a..           proof winding_number_exp_integral gpdt
java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
          showa w:  ultimately ?
roof cnj
          have "(show" (cnj-
                within.}"
proof  then  r<
show" (at xjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
              using continuous_at_imp_continuous_at_within"
on_vd(+
            show "vector_derivative \ valid_path(\1 +++ \2) \ z \ path_image(\1 +++ \2) \ 0 < Re(winding_number(\1 +++ \2) z)"
              using d vector_derivative_at
              by (simp add: vector_derivative_at has_vector_derivative_def)
          qed (use x vg_intsu\^><open>tag unimportant\<close> \<open>Useful sufficient conditions for the winding number to be positive\<close>
then\>by:winding_number_valid_path)
(  assumes
             auto:)
        qed (use x in auto showthesis
qed
    qedhave: 0java.lang.StringIndexOutOfBoundsException: Range [0, 95) out of bounds for length 3
  }
  with showthesis2
 simpcomplex
qed :"\ z"

lemma winding_number_exp_2pi:
    "\path p; z \ path_image p\
     <Longrightarrow> pathfinish p - z = exp (2 * pi * \<i> * winding_number p z) * (pathstart p - z)"
ing_numberp z ]unfolding path_image_def pathfinish_def"
  by (force: winding_number_exp_integral

lemma:
  assumes \<gamma>: "path \<gamma>" and z: "z \<notin> path_image \<gamma>"
  shows winding_number_eq_1:
proofmoreover " <>path_image(eversepath \)"
obtainwhere"valid_pathz:java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
                           winding_number_pos_meetsjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
           "p\lambdaw /w ) =complex_of_real ( pi
    using
 ?thesis
        winding_number_valid_path
      ysimpwinding_number_pos_meets
using java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
 "
    by (metis pathstart_def
  then" (contour_integral (<>w.1 ( -))=(
    using (2) ofz]
    by (simp add: valid_path_def path_defs contour_integral_integral

>If  winding's magnitude is at one, then the path contain points inevery direction.*)
We thus the numberproofrule

g_number_pos_meetsjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
  fixes z::complex
  assumes \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>" and 1: "Re (winding_number \<gamma> z) \<ge> 1"
      and w: "w \ z"
  shows "\a::real. 0 < a \ z + of_real a * (w - z) \ path_image \"
proof -
  have[simp\<And>x. 0 \<le> x \<Longrightarrow> x \<le> 1 \<Longrightarrow> \<gamma> x \<noteq> z"
    using
   []: "z\ \ ` {0..1}"
    using path_image_def z by auto shows
  have gpd: "\ piecewise_C1_differentiable_on {0..1}"
    using
  define "r (-z)/ ( 0 - z)"
  have [simp]: "r \ 0"   <> Re \<gamma> z) < 1"
   by( )
  have cont: "continuous_on {0..1}
     (\<lambda>x. Im (integral {0..x} (\<lambda>x. vector_derivative \<gamma> (at x) / (\<gamma> x - z))))"
    by (intro continuous_intros[OF] 
 java.lang.NullPointerException
    by (simp add: Arg2pi less_eq_real_def)
  alsohave"\ \ Im (integral {0..1} (\x. vector_derivative \ (at x) / (\ x - z)))"
    using 1
    by (simp add: winding_number_valid_path
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
  then have "java.lang.StringIndexOutOfBoundsException: Range [0, 140) out of bounds for length 7
    by (simp     Longrightarrow> \<exists>z. z \<in> S \<and> winding_number \<gamma> z = 0"
  then obtain t where t:  then thesis  [of 
deqArg integral{.java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    by
  define i where
theoremcontinuous_at_winding_number
    by (metis have\<dots> < 2*e"
  have "exp (- i) * (\ t - z) = \ 0 - z"
    unfolding
  proof rulewinding_number_exp_integral gpdt])
show
      using t z unfolding path_image_def by force
  qed       \<open>L>0\<close> e by (force simp: field_simps)
      finallyhave" (winding_number obtain e where ">0and "cball \ - path_image \"
     (imp      usinge
  then have "(w - z) = r * (\ 0 - z)"
    by(add
  moreover have "z + exp (Re i) * (exp (\ * Im i) * (\ 0 - z)) = \ t"
    using * by (simp add: exp_eq_polar field_simps)
  moreover have "Arg2pi r = Im i"
u eqArg ( add )
  ultimately have "z + complex_of_real (exp (Re i)) * (w - z) / complex_of_real (cmod r) "<in> inside (path_image \<gamma>)"
usingArg2pi_eq
    by (metis  mult
     ?thesis
     (rule_tac="(Re i) / normr" )( :path_image_def
qed

lemma winding_number_big_meets:
        using byjava.lang.StringIndexOutOfBoundsException: Range [22, 23) out of bounds for length 22
  assumes       by (simp add: cls connected_with_inside cos)
      and w: "w \ z"
  shows using winding_number_pos_meets
    then have          using image_subset_iff
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   using
  then show ?thesis
    using
    by (simp addthen ?thesis
qed     metis []: "

lemma winding_number_less_1:
  fixes zhavesimp 
  
  "\valid_path \; z \ path_image \; w \ z;
    \<And>a::real. 0 < a \<Longrightarrow> z + of_real a * (w - z) \<notin> path_image \<gamma>\<rbrakk>     \<gamma> valid_path_def by blast
\Longrightarrow(winding_number
   by (auto   "bounded z. winding_number gz\noteq> usingwzby(tosimp java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35

text\<open>One way of proving that WN=1 for a loop.\<close>

  fixes z::complex
  assumes \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>"
 :<( \<gamma> z)" and 2: "Re(winding_number \<gamma> z) < 2"  java.lang.StringIndexOutOfBoundsException: Index 115 out of bounds for length 115
   " \ z = 1"
proof -
  have "winding_number \ z \ Ints"
    by<java.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82
  then show?
    using 0 2 by (auto simp: Ints_def)
qed

subsection\<open>Continuity of winding number and invariance on connected sets\<close>

theorem :
  java.lang.StringIndexOutOfBoundsException: Range [29, 8) out of bounds for length 29
  assumes(  [OFjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
        z 
proof -
":cballze
    using open_contains_cball [of "- path_image by simp : r_def)
    by (force simp: closed_def     " \ S"
then : "path_image\ \ - cball z (e/2)"
    by (force simp: cball_def dist_norm)
  have oc: "open (- cball z (e/2))"
    by (simp add: closed_def [symmetric])
  obtain d where     . of
    "\h1 h2. \valid_path h1; valid_path h2;
              (by xexp "inexI autosimp path_image_def)
              pathstart h2 = pathstart h1; pathfinish
             \<Longrightarrow>
               path_image h1 \<subseteq> - cball z (e/2) \<and>
               path_image h2 \<subseteq> - cball z (e/2) \<and>
               (\<forall>f. f holomorphic_on - cball z (e/2) \<longrightarrow> contour_integral h2 f = contour_integral h1 f)"
    using contour_integral_nearby_ends [OF oc \<gamma> ppag] by metis
obtain"p" z\<notin> path_image p"
              and p: "
               pg "(winding_number p) z"
              java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 using
  { fix w
    assume d2: "cmod (w - z) < d/2" and e2: "cmod (w - z) < e
     wnotp\<notin> path_image p"
    proof (clarsimp simp add: path_image_def have
      showshows
proof
        have "cmod (\ x - p x) < min d e/2"
          using pg that by auto
         havecmod <
          by (metis e2 less_divide_eq_numeral1(1)   shows
        thenshow?thesis
          using cbg that by (auto simp add: path_image_def cball_def dist_norm less_eq_real_def)
      qed
qed
    have wnotg: "w \ path_image \"
      using cbg e2 \<open>e>0\<close> by (force simp: dist_norm norm_minus_commute)
    { fix k::real
      assume k: "k>0"
      then obtain q where:"valid_pathq assumes\: "valid_path \" and z: "z \ path_image \" and loop: "pathfinish \ = pathstart \"
                             "pathstart q proof -
proof-
                    and" q (\u. 1 / (u - w)) = complex_of_real (2 * pi) * \ * winding_number \ w"
        using winding_number [OF    show"d>0. \x'. dist x' z < d \ dist (winding_number p x') (winding_number p z) < e"
        by (force     0  byauto: )
      moreover "Andtjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        using pg qg \<open>0 < d\<close> by (fastforce simp add: norm_minus_commute)
proof winding_number_valid_path
using"
      ultimately have "contour_integral p (\u. 1 / (u - w)) = contour_integral q (\u. 1 / (u - w))"
        ( \<open>valid_path p\<close> pi_eq)
      then have "contour_integral p (\x. 1 / (x - w)) = complex_of_real (2 * pi) * \ * winding_number \ w"
        by (simp add: pi qi)
    } note pip = this
    ave"
      by (simp add: \<open>valid_path p\<close> valid_path_imp_path)
    moreover have "\e. e > 0 \ winding_number_prop p w e p (winding_number \ w)"
      by (simp  then ?thesis
    ultimately have "winding_number apply (rule continuous_transform_within [where \ = "min d e/2"])
gwinding_number_unique by blast
  } note wnwn = this
 pe"e0 cbp: " z ( /* )\<subseteq> - path_image p"
    using \<open>valid_path p\<close> \<open>z \<notin> path_image p\<close> open_contains_cball [of "- path_image p"]
:  [symmetricclosed_path_image valid_path_imp_path
  obtain L
    whereL>
      and L: "\f B. \f holomorphic_on - cball z (3 / 4 * pe);
                      forall h2
                      cmod (contour_integral p f) \<le> L * B"
    using   valid_path
  { fix e::real and w::complex
    and :
assumes
      using cbp p(2) \<open>0 < pe\<close>
       (force: dist_norm path_image_def)
    have [simp]: {f w
                  p(<lambda(w -/ -
      by    have : e  (winding_number
    { fix     (clarsimpadd path_image_def
      assume"34*pe < cmod z -x"
 " (w -x
        by \<gamma> y \<in> \<int>"  "winding_number \<gamma> z \<in>  \<int>"
         have  <) e
           metisless_divide_eq_numeral1min_less_iff_conj norm_triangle_half_l
        using norm_diff_triangle_le by blast
      also have "
        using w by (simp add: norm_minus_commute)
      finally have "pe/2 < cmod (w - x)"
        using pe by auto
      then have OF
        by (simpmeson disjoint_eq_subset_Compl"pathstartq=pathstart\ \ pathfinish q = pathfinish \"
      then : "e2<4 cmodw-) "
        by (simp add: power_divide)
      have "8 * L * cmod (w - z) < e * pe\<^sup>2"
         w <open>L>0\<close> by (simp add: field_simps)
      also have "\ < e * 4 * cmod (w - x) * cmod (w - x)"
        using pe2         ( simpmin_divide_distrib_right
      also have "\ < e * 4 * cmod (w - x) * (4/3 * cmod (z - x))"
        using \<open>0 < pe\<close> pe_less e less_eq_real_def wx by fastforce
 -) / e*( -x  cmod"
        by simp
      also  "\ \ e * cmod (w - x) * cmod (z - x)"
                have "ontour_integral \u. 1 / (u - w)) = contour_integral q (\u. 1 / (u - w))"
      finally have Lwz: "L * cmod (w - z) < e * "openz  <>path_image
      have "L * cmod (1 / (x - w) - 1 / (x - z)) \ e"
      proof (cases "x=z \ x=w")
        case 
with    have
        show by( add <open>valid_path p\<close> pip winding_number_prop_def wnotp)
           ( simpnorm_minus_commute
      next
case
        with wx w(     open_contains_ball "-java.lang.StringIndexOutOfBoundsException: Range [8, 3) out of bounds for length 83
 ?
          byauto java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
      qed
    } note L_cmod_le = this
    let ?f = "(\x. 1 / (x - w) - 1 / (x - z))"
    have "cmod (contour_integral p ?f) \ L * (e * pe\<^sup>2 / L / 4 * (inverse (pe / 2))\<^sup>2)"

       "?f - cball z (3 /4 *pe)"
        using \<open>pe>0\<close> w
by( simpnorm_minus_commute!: holomorphic_intros)
      show " java.lang.StringIndexOutOfBoundsException: Range [0, 45) out of bounds for length 7
        using \<open>pe>0\<close> w \<open>L>0\<close>
        by (auto "path_image \ \ cball 0 B"
    qed
    alsohave\<dots> < 2*e"
 " 0 (B )\(ath_image\)"
    finally have "cmod (winding_number p w - winding_number p z) using B subset_ball ( using assms by (auto simp: path_image_def image_def)
      using pi_ge_two w 
      by (force    usingOF
  }bymetis bounded_path_image.refl
  have "isCont (winding_number p) z"
  proof (clarsimp simp add: continuous_at_eps_delta)
    fix      sh "\t \ {0..1}. Re(winding_number(subpath 0 t \) z) = w"
    show "\d>0. \x'. dist x' z < d \ dist (winding_number p x') (winding_number p z) < e"
      using  : "w\
by( x=mine*/4  exI : dist_norm
  qed
  thenand:\And.
    apply pgejava.lang.StringIndexOutOfBoundsException: Index 123 out of bounds for length 123
    apply (autosimp
    done
qedby( atLeastAtMost_iff zero_less_one

corollary                      pathstart p = pathstart \<gamma> \<and> pathfinish p = pathfinish \<gamma> \<and>

  

\<^marker>\<open>tag unimportant\<close> \<open>The winding number is constant on a connected region\<close>

lemma \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>" and az: "a \<bullet> z \<le> b" and pag: "path_image \<gamma> \<subseteq> {w. a \<bullet> w > b}"
  assumes \<gamma>: "path \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>" and cs: "connected S" and sg: "S \<inter> path_image \<gamma> = {}"
  shows "winding_number \ constant_on S"
proof -
  have *: "1 \ cmod (winding_number \ y - winding_number \ z)"
 : "
  proof -
    have       simpjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
      using that integer_winding_number [OF \<gamma> loop] sg \<open>y \<in> S\<close> by auto
    with neproofrule [OF [OF [of 0"
      by (auto simp: Ints_def simp flip: of_int_diff)
  qed
  have cont: "continuous_on S (\w. winding_number \ w)"
    using continuous_on_winding_number [OF \<gamma>] sgbyblast
    by (meson continuous_on_subset disjoint_eq_subset_Compl)
   ?
    using "*" zero_less_one
    by (blast intro: continuous_discrete_range_constant [OF cs contsimp: )+
qed

lemma winding_number_eqsimp: inner_mult_right)
"lbrakk>path \; pathfinish \ = pathstart \; w \ S; z \ S; connected S; S \ path_image \ = {}\
> winding_number   \<gamma> z"
  using winding_number_constant by (metis java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

 open_winding_number_levelsets
  assumes \<gamma>: "path \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>"
  shows "open {z. z \ path_image \ \ winding_number \ z = k}"
proof
  fix z assume z: "z \ path_image \" and k: "k = winding_number \ z"
  have "open (- path_image \)"
b  :  \<gamma> open_Compl)
  then obtain e where "e>0" "ball z e \ - path_image \"
     contour_integral_bound_exists
  then  { e: and
by( simp dist_normintro: winding_number_eq [OF, where=" z e"])
qed

subsection\<open>Winding number is zero "outside" a curve\<close>winding_number_le_half

proposition winding_number_zero_in_outside:
  assumes \<gamma>: "path \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>" and z: "z \<in> outside (path_image \<gamma>)"
    shows "winding_number \ z = 0"
proof -
  obtain B::real where "0 < B" and B: "path_image \ \ ball 0 B"
    using [OF [OF
  obtain w::complex where w: "w \ ball 0 (B + 1)"
    by (metis abs_of_nonneg le_less less_irrefl mem_ball_0 norm_of_real)
   "- ball 0 (B 1) \ outside (path_image \)"
    using B subset_ball  by (intro outside_subset_convex) auto
  then have wout: "w \ outside (path_image \)"
    using w by blast
  moreover"\ constant_on outside (path_image \)"
    using winding_number_constant [OF \<gamma> loop, of "outside(path_image \<gamma>)"] connected_outside cbp p() <>0<      using . by blast
    by(metis bounded_path_image dual_orderrefl show?hesis
  ultimately"inding_number\java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
    by (metis (lemma bounded_winding_number_nz
  also have "\ = 0"
  proof
    have wnot: "w \ path_image \" using wout by (simp add: outside_def)
    { fix e::real assume "0
      obtain p where p: "polynomial_function p" "pathstart p = pathstart \" "pathfinish p = pathfinish \"
                    obtain"x. norm x \ B \ winding_number g x = 0"
                 and pge: "(\t. \0 \ t; t \ 1\ \ cmod (p t - \ t) < e)"
 path_approx_polynomial_function <,of1"
 zero_less_one
      have "\p. valid_path p \ w \ path_image p \
                      =pathstart
                     (<>t\<in>{0..1}. cmod (\<gamma> t - p t) < e) \<and> contour_integral p (\<lambda>wa. 1 / (wa - w)) = 0":
      proof (introobtainwhereAndnorm
        have "\x. \0 \ x; x \ 1\ \ cmod (p x) < B + 1"
          using B unfolding image_subset_iff path_image_def
          by (meson add_strict_mono atLeastAtMost_iff le_less_trans
         have:" p
          by (auto simp add" = pathstart \; open S; path_image \ \ S\
        then show "w \ path_image p" using w by blast
        show vap: "valid_path p"
by( add1 valid_path_polynomial_function
        show textopenIf winds a , it rounds 
          by (metis atLeastAtMost_iff norm_minus_commute pge)
        show "contour_integral p (\wa. 1 / (wa - w)) = 0"
        proofandcls "\ S"
          havejava.lang.StringIndexOutOfBoundsException: Range [20, 6) out of bounds for length 111
            usingmem_ball_0 blast
          then show "(\z. 1 / (z - w)) holomorphic_on ball 0 (B + 1)"
            byintro  addjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
        qed          w \<open>L>0\<close> by (simp add: field_simps)
   &olor:red'>using
 w  
          then show "( bysimp add: inner_diff_right)+
            by (intro holomorphic_intros; simp add: dist_norm)
        qed (use p vap pip loop in auto)
      qed (use p in auto)
    }
    then show ?thesis
      by java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  qed
  finally show ?thesis .
qed

java.lang.StringIndexOutOfBoundsException: Index 146 out of bounds for length 146
  by (rule winding_number_zero_in_outside)
     ( simp pathstart_def)

corollary^marker
    "\path \; convex s; pathfinish \ = pathstart \; z \ s; path_image \ \ s\ \ winding_number \ z = 0"
  by (meson convex_in_outside outside_mono subsetCE winding_number_zero_in_outside)

lemma winding_number_zero_at_infinity:
  assumes \<gamma>: "path \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>"
    lemma:
proof -
  obtain B::real where "0 < B" and B: "path_image \ \ ball 0 B"
    using     : "
   (
proof winding_number_zero_outside
    show "z \ cball 0 B"
      using that by auto
    show "path_image \ \ cball 0 B"
      using B order.trans by blast
  qed
  then show ?thesis
    by metis
qed

lemma bounded_winding_number_nz:
  assumes "path g" "pathfinish g = pathstart g"
  shows   "bounded {z. winding_number g z \ 0}"
proof -
  obtain B where "\x. norm x \ B \ winding_number g x = 0"
    using winding_number_zero_at_infinity[OF assms] by auto
  thus ?thesis
    unfolding bounded_iff by (intro exI[of _ "B + 1"]) force
qed
  
lemma winding_number_zero_point:
    "\path \; convex S; pathfinish \ = pathstart \; open S; path_image \ \ S\
     \<Longrightarrow> \<exists>z. z \<in> S \<and> winding_number \<gamma> z = 0"
  using outside_compact_in_open [of "path_image \" S] path_image_nonempty winding_number_zero_in_outside
  by (fastforce simp add: compact_path_image)


text\<open>If a path winds round a set, it winds rounds its inside.\<close>
lemma winding_number_around_inside:
  assumes \<gamma>: "path \<gamma>" and loop: "pathfinish \<gamma> = pathstart \<gamma>"
      and cls: "closed S" and cos: "connected S" and S_disj: "S \ path_image \ = {}"
      and z: "z \ S" and wn_nz: "winding_number \ z \ 0" and w: "w \ S \ inside S"
    shows "winding_number \ w = winding_number \ z"
proof -
  have ssb: "S \ inside(path_image \)"
  proof
    fix x :: complex
    assume "x \ S"
    hence "x \ path_image \"
      by (meson disjoint_iff_not_equal S_disj)
    thus "x \ inside (path_image \)"
      by (metis Compl_iff S_disj UnE \<gamma> \<open>x \<in> S\<close> cos inside_outside loop winding_number_eq winding_number_zero_in_outside wn_nz z)
  qed
  show ?thesis
  proof (rule winding_number_eq [OF \<gamma> loop w])
    show "z \ S \ inside S"
      using z by blast
    show "connected (S \ inside S)"
      by (simp add: cls connected_with_inside cos)
    show "(S \ inside S) \ path_image \ = {}"
      unfolding disjoint_iff Un_iff 
      by (metis ComplD UnI1 \<gamma> cls compact_path_image connected_path_image inside_Un_outside inside_inside_compact_connected ssb subsetD)
  qed
qed

text\<open>Bounding a WN by 1/2 for a path and point in opposite halfspaces.\<close>
lemma winding_number_subpath_continuous:
  assumes \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>"
    shows "continuous_on {0..1} (\x. winding_number(subpath 0 x \) z)"
proof (rule continuous_on_eq)
  let ?f = "\x. integral {0..x} (\t. vector_derivative \ (at t) / (\ t - z))"
  show "continuous_on {0..1} (\x. 1 / (2 * pi * \) * ?f x)"
  proof (intro indefinite_integral_continuous_1 winding_number_exp_integral continuous_intros)
    show "\ piecewise_C1_differentiable_on {0..1}"
      using \<gamma> valid_path_def by blast
  qed (use path_image_def z in auto)
  show "1 / (2 * pi * \) * ?f x = winding_number (subpath 0 x \) z"
    if x: "x \ {0..1}" for x
  proof -
    have "1 / (2*pi*\) * ?f x = 1 / (2*pi*\) * contour_integral (subpath 0 x \) (\w. 1/(w - z))"
      using assms x
      by (simp add: contour_integral_subcontour_integral [OF contour_integrable_inversediff])
    also have "\ = winding_number (subpath 0 x \) z"
    proof (subst winding_number_valid_path)
      show "z \ path_image (subpath 0 x \)"
        using assms x atLeastAtMost_iff path_image_subpath_subset by force
    qed (use assms x valid_path_subpath in \<open>force+\<close>)
    finally show ?thesis .
  qed
qed

lemma winding_number_ivt_pos:
    assumes \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>" and "0 \<le> w" "w \<le> Re(winding_number \<gamma> z)"
    shows "\t \ {0..1}. Re(winding_number(subpath 0 t \) z) = w"
proof -
  have "continuous_on {0..1} (\x. winding_number (subpath 0 x \) z)"
    using \<gamma> winding_number_subpath_continuous z by blast
  moreover have "Re (winding_number (subpath 0 0 \) z) \ w" "w \ Re (winding_number (subpath 0 1 \) z)"
    using assms by (auto simp: path_image_def image_def)
  ultimately show ?thesis
    using ivt_increasing_component_on_1[of 0 1, where ?k = "1"by force
qed

lemma winding_number_ivt_neg:
    assumes \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>" and "Re(winding_number \<gamma> z) \<le> w" "w \<le> 0"
      shows "\t \ {0..1}. Re(winding_number(subpath 0 t \) z) = w"
proof -
  have "continuous_on {0..1} (\x. winding_number (subpath 0 x \) z)"
    using \<gamma> winding_number_subpath_continuous z by blast
  moreover have "Re (winding_number (subpath 0 0 \) z) \ w" "w \ Re (winding_number (subpath 0 1 \) z)"
    using assms by (auto simp: path_image_def image_def)
  ultimately show ?thesis
    using ivt_decreasing_component_on_1[of 0 1, where ?k = "1"by force
qed

lemma winding_number_ivt_abs:
    assumes \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>" and "0 \<le> w" "w \<le> \<bar>Re(winding_number \<gamma> z)\<bar>"
      shows "\t \ {0..1}. \Re (winding_number (subpath 0 t \) z)\ = w"
  using assms winding_number_ivt_pos [of \<gamma> z w] winding_number_ivt_neg [of \<gamma> z "-w"]
  by force

lemma winding_number_lt_half_lemma:
  assumes \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>" and az: "a \<bullet> z \<le> b" and pag: "path_image \<gamma> \<subseteq> {w. a \<bullet> w > b}"
    shows "Re(winding_number \ z) < 1/2"
proof -
  { assume "Re(winding_number \ z) \ 1/2"
    then obtain t::real where t: "0 \ t" "t \ 1" and sub12: "Re (winding_number (subpath 0 t \) z) = 1/2"
      using winding_number_ivt_pos [OF \<gamma> z, of "1/2"] by auto
    have gt: "\ t - z = - (of_real (exp (- (2 * pi * Im (winding_number (subpath 0 t \) z)))) * (\ 0 - z))"
      using winding_number_exp_2pi [of "subpath 0 t \" z]
      apply (simp add: t \<gamma> valid_path_imp_path)
      using closed_segment_eq_real_ivl path_image_def t z by (fastforce simp: path_image_subpath Euler sub12)
    have "b < a \ \ 0"
    proof -
      have "\ 0 \ {c. b < a \ c}"
        by (metis (no_types) pag atLeastAtMost_iff image_subset_iff order_refl path_image_def zero_le_one)
      thus ?thesis
        by blast
    qed
    moreover have "b < a \ \ t"
      by (metis atLeastAtMost_iff image_eqI mem_Collect_eq pag path_image_def subset_iff t)
    ultimately have "0 < a \ (\ 0 - z)" "0 < a \ (\ t - z)" using az
      by (simp add: inner_diff_right)+
    then have False
      by (simp add: gt inner_mult_right mult_less_0_iff)
  }
  then show ?thesis by force
qed

lemma winding_number_lt_half:
  assumes "valid_path \" "a \ z \ b" "path_image \ \ {w. a \ w > b}"
    shows "\Re (winding_number \ z)\ < 1/2"
proof -
  have "z \ path_image \" using assms by auto
  with assms have "Re (winding_number \ z) < 0 \ - Re (winding_number \ z) < 1/2"
    by (metis complex_inner_1_right winding_number_lt_half_lemma [OF valid_path_imp_reverse, of \<gamma> z a b]
        winding_number_reversepath valid_path_imp_path inner_minus_left path_image_reversepath)
  with assms show ?thesis
    using \<open>z \<notin> path_image \<gamma>\<close> winding_number_lt_half_lemma by fastforce
qed

lemma winding_number_le_half:
  assumes \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>"
      and anz: "a \ 0" and azb: "a \ z \ b" and pag: "path_image \ \ {w. a \ w \ b}"
    shows "\Re (winding_number \ z)\ \ 1/2"
proof -
  { assume wnz_12: "\Re (winding_number \ z)\ > 1/2"
    have "isCont (winding_number \) z"
      by (metis continuous_at_winding_number valid_path_imp_path \<gamma> z)
--> --------------------

--> maximum size reached

--> --------------------

99%

pan>:
      0( 1java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
    shows
proof -
  have " with assms Re(inding_number\ z) < 0 \ - Re (winding_number \ z) < 1/2"
      by( complex_inner_1_right [OF, ofusing\<gamma> loop, of "outside(path_image \<gamma>)"] connected_outside
    by   ultimately winding_number
         valid_path_imp_path     ( no_types constant_on_def
  withusing 
    using \<open>z \<notin> path_image \<gamma>\<close> winding_number_lt_half_lemma by fastforce
qed

lemma winding_number_le_half:
  assumes \<gamma>: "valid_path \<gamma>" and z: "z \<notin> path_image \<gamma>"
      and anz: "a \ 0" and azb: "a \ z \ b" and pag: "path_image \ \ {w. a \ w \ b}"
    shows"
proof -
  { assume wnz_12: "\Re (winding_number \ z)\ > 1/2"
   pathstart \<gamma> \<and> pathfinish p = pathfinish \<gamma> \<and>
      by (metis   { assume wnz_12: "\<bar>Re \<gamma> z)\<bar> > 1/2"
--> --------------------

--> maximum size reached

--> --------------------

99%


¤ Dauer der Verarbeitung: 0.24 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.