src/HOL/Computational_Algebra/Fundamental_Theorem_Algebra.thy
changeset 69529 4ab9657b3257
parent 68527 2f4e2aab190a
child 77282 3fc7c85fdbb5
equal deleted inserted replaced
69526:5574d504cf36 69529:4ab9657b3257
   232 
   232 
   233 lemma metric_bound_lemma: "cmod (x - y) \<le> \<bar>Re x - Re y\<bar> + \<bar>Im x - Im y\<bar>"
   233 lemma metric_bound_lemma: "cmod (x - y) \<le> \<bar>Re x - Re y\<bar> + \<bar>Im x - Im y\<bar>"
   234   using real_sqrt_sum_squares_triangle_ineq[of "Re x - Re y" 0 0 "Im x - Im y"]
   234   using real_sqrt_sum_squares_triangle_ineq[of "Re x - Re y" 0 0 "Im x - Im y"]
   235   unfolding cmod_def by simp
   235   unfolding cmod_def by simp
   236 
   236 
   237 lemma bolzano_weierstrass_complex_disc:
   237 lemma Bolzano_Weierstrass_complex_disc:
   238   assumes r: "\<forall>n. cmod (s n) \<le> r"
   238   assumes r: "\<forall>n. cmod (s n) \<le> r"
   239   shows "\<exists>f z. strict_mono (f :: nat \<Rightarrow> nat) \<and> (\<forall>e >0. \<exists>N. \<forall>n \<ge> N. cmod (s (f n) - z) < e)"
   239   shows "\<exists>f z. strict_mono (f :: nat \<Rightarrow> nat) \<and> (\<forall>e >0. \<exists>N. \<forall>n \<ge> N. cmod (s (f n) - z) < e)"
   240 proof -
   240 proof -
   241   from seq_monosub[of "Re \<circ> s"]
   241   from seq_monosub[of "Re \<circ> s"]
   242   obtain f where f: "strict_mono f" "monoseq (\<lambda>n. Re (s (f n)))"
   242   obtain f where f: "strict_mono f" "monoseq (\<lambda>n. Re (s (f n)))"
   397       using s1[rule_format, of "?m + 1/real (Suc n)"] by simp
   397       using s1[rule_format, of "?m + 1/real (Suc n)"] by simp
   398     then have th: "\<forall>n. \<exists>z. cmod z \<le> r \<and> cmod (poly p z) < - s + 1 / real (Suc n)" ..
   398     then have th: "\<forall>n. \<exists>z. cmod z \<le> r \<and> cmod (poly p z) < - s + 1 / real (Suc n)" ..
   399     from choice[OF th] obtain g where
   399     from choice[OF th] obtain g where
   400         g: "\<forall>n. cmod (g n) \<le> r" "\<forall>n. cmod (poly p (g n)) <?m + 1 /real(Suc n)"
   400         g: "\<forall>n. cmod (g n) \<le> r" "\<forall>n. cmod (poly p (g n)) <?m + 1 /real(Suc n)"
   401       by blast
   401       by blast
   402     from bolzano_weierstrass_complex_disc[OF g(1)]
   402     from Bolzano_Weierstrass_complex_disc[OF g(1)]
   403     obtain f z where fz: "strict_mono (f :: nat \<Rightarrow> nat)" "\<forall>e>0. \<exists>N. \<forall>n\<ge>N. cmod (g (f n) - z) < e"
   403     obtain f z where fz: "strict_mono (f :: nat \<Rightarrow> nat)" "\<forall>e>0. \<exists>N. \<forall>n\<ge>N. cmod (g (f n) - z) < e"
   404       by blast
   404       by blast
   405     {
   405     {
   406       fix w
   406       fix w
   407       assume wr: "cmod w \<le> r"
   407       assume wr: "cmod w \<le> r"