# HG changeset patch # User Angeliki KoutsoukouArgyraki # Date 1535977732 -3600 # Node ID 725d5ed565635df79bee54d752a4d7667d1d65e5 # Parent 511d163ab623b0d419e2ed2bd22a5cf94fd5f9da tagged 1 theory: Great_Picard diff -r 511d163ab623 -r 725d5ed56563 src/HOL/Analysis/Great_Picard.thy --- a/src/HOL/Analysis/Great_Picard.thy Wed Aug 29 20:01:39 2018 +0200 +++ b/src/HOL/Analysis/Great_Picard.thy Mon Sep 03 13:28:52 2018 +0100 @@ -1,4 +1,4 @@ -section\The Great Picard Theorem and its Applications\ +section%important \The Great Picard Theorem and its Applications\ text\Ported from HOL Light (cauchy.ml) by L C Paulson, 2017\ @@ -9,13 +9,13 @@ subsection\Schottky's theorem\ -lemma Schottky_lemma0: +lemma%important Schottky_lemma0: assumes holf: "f holomorphic_on S" and cons: "contractible S" and "a \ S" and f: "\z. z \ S \ f z \ 1 \ f z \ -1" obtains g where "g holomorphic_on S" "norm(g a) \ 1 + norm(f a) / 3" "\z. z \ S \ f z = cos(of_real pi * g z)" -proof - +proof%unimportant - obtain g where holg: "g holomorphic_on S" and g: "norm(g a) \ pi + norm(f a)" and f_eq_cos: "\z. z \ S \ f z = cos(g z)" using contractible_imp_holomorphic_arccos_bounded [OF assms] @@ -38,7 +38,7 @@ qed -lemma Schottky_lemma1: +lemma%unimportant Schottky_lemma1: fixes n::nat assumes "0 < n" shows "0 < n + sqrt(real n ^ 2 - 1)" @@ -54,7 +54,7 @@ qed -lemma Schottky_lemma2: +lemma%unimportant Schottky_lemma2: fixes x::real assumes "0 \ x" obtains n where "0 < n" "\x - ln (real n + sqrt ((real n)\<^sup>2 - 1)) / pi\ < 1/2" @@ -158,12 +158,12 @@ qed -lemma Schottky_lemma3: +lemma%important Schottky_lemma3: fixes z::complex assumes "z \ (\m \ Ints. \n \ {0<..}. {Complex m (ln(n + sqrt(real n ^ 2 - 1)) / pi)}) \ (\m \ Ints. \n \ {0<..}. {Complex m (-ln(n + sqrt(real n ^ 2 - 1)) / pi)})" shows "cos(pi * cos(pi * z)) = 1 \ cos(pi * cos(pi * z)) = -1" -proof - +proof%unimportant - have sqrt2 [simp]: "complex_of_real (sqrt x) * complex_of_real (sqrt x) = x" if "x \ 0" for x::real by (metis abs_of_nonneg of_real_mult real_sqrt_mult_self that) have 1: "\k. exp (\ * (of_int m * complex_of_real pi) - @@ -223,13 +223,13 @@ qed -theorem Schottky: +theorem%important Schottky: assumes holf: "f holomorphic_on cball 0 1" and nof0: "norm(f 0) \ r" and not01: "\z. z \ cball 0 1 \ \(f z = 0 \ f z = 1)" and "0 < t" "t < 1" "norm z \ t" shows "norm(f z) \ exp(pi * exp(pi * (2 + 2 * r + 12 * t / (1 - t))))" -proof - +proof%unimportant - obtain h where holf: "h holomorphic_on cball 0 1" and nh0: "norm (h 0) \ 1 + norm(2 * f 0 - 1) / 3" and h: "\z. z \ cball 0 1 \ 2 * f z - 1 = cos(of_real pi * h z)" @@ -374,14 +374,14 @@ qed -subsection\The Little Picard Theorem\ +subsection%important\The Little Picard Theorem\ -lemma Landau_Picard: +lemma%important Landau_Picard: obtains R where "\z. 0 < R z" "\f. \f holomorphic_on cball 0 (R(f 0)); \z. norm z \ R(f 0) \ f z \ 0 \ f z \ 1\ \ norm(deriv f 0) < 1" -proof - +proof%unimportant - define R where "R \ \z. 3 * exp(pi * exp(pi*(2 + 2 * cmod z + 12)))" show ?thesis proof @@ -436,10 +436,10 @@ qed qed -lemma little_Picard_01: +lemma%important little_Picard_01: assumes holf: "f holomorphic_on UNIV" and f01: "\z. f z \ 0 \ f z \ 1" obtains c where "f = (\x. c)" -proof - +proof%unimportant - obtain R where Rpos: "\z. 0 < R z" and R: "\h. \h holomorphic_on cball 0 (R(h 0)); @@ -481,11 +481,11 @@ qed -theorem little_Picard: +theorem%important little_Picard: assumes holf: "f holomorphic_on UNIV" and "a \ b" "range f \ {a,b} = {}" obtains c where "f = (\x. c)" -proof - +proof%unimportant - let ?g = "\x. 1/(b - a)*(f x - b) + 1" obtain c where "?g = (\x. c)" proof (rule little_Picard_01) @@ -505,7 +505,7 @@ text\A couple of little applications of Little Picard\ -lemma holomorphic_periodic_fixpoint: +lemma%unimportant holomorphic_periodic_fixpoint: assumes holf: "f holomorphic_on UNIV" and "p \ 0" and per: "\z. f(z + p) = f z" obtains x where "f x = x" @@ -527,7 +527,7 @@ qed -lemma holomorphic_involution_point: +lemma%unimportant holomorphic_involution_point: assumes holfU: "f holomorphic_on UNIV" and non: "\a. f \ (\x. a + x)" obtains x where "f(f x) = x" proof - @@ -614,9 +614,9 @@ qed -subsection\The ArzelĂ --Ascoli theorem\ +subsection%important\The ArzelĂ --Ascoli theorem\ -lemma subsequence_diagonalization_lemma: +lemma%unimportant subsequence_diagonalization_lemma: fixes P :: "nat \ (nat \ 'a) \ bool" assumes sub: "\i r. \k. strict_mono (k :: nat \ nat) \ P i (r \ k)" and P_P: "\i r::nat \ 'a. \k1 k2 N. @@ -660,7 +660,7 @@ qed qed -lemma function_convergent_subsequence: +lemma%unimportant function_convergent_subsequence: fixes f :: "[nat,'a] \ 'b::{real_normed_vector,heine_borel}" assumes "countable S" and M: "\n::nat. \x. x \ S \ norm(f n x) \ M" obtains k where "strict_mono (k::nat\nat)" "\x. x \ S \ \l. (\n. f (k n) x) \ l" @@ -698,7 +698,7 @@ qed -theorem Arzela_Ascoli: +theorem%important Arzela_Ascoli: fixes \ :: "[nat,'a::euclidean_space] \ 'b::{real_normed_vector,heine_borel}" assumes "compact S" and M: "\n x. x \ S \ norm(\ n x) \ M" @@ -707,7 +707,7 @@ \ \d. 0 < d \ (\n y. y \ S \ norm(x - y) < d \ norm(\ n x - \ n y) < e)" obtains g k where "continuous_on S g" "strict_mono (k :: nat \ nat)" "\e. 0 < e \ \N. \n x. n \ N \ x \ S \ norm(\(k n) x - g x) < e" -proof - +proof%unimportant - have UEQ: "\e. 0 < e \ \d. 0 < d \ (\n. \x \ S. \x' \ S. dist x' x < d \ dist (\ n x') (\ n x) < e)" apply (rule compact_uniformly_equicontinuous [OF \compact S\, of "range \"]) using equicont by (force simp: dist_commute dist_norm)+ @@ -788,14 +788,14 @@ -subsubsection\Montel's theorem\ +subsubsection%important\Montel's theorem\ text\a sequence of holomorphic functions uniformly bounded on compact subsets of an open set S has a subsequence that converges to a holomorphic function, and converges \emph{uniformly} on compact subsets of S.\ -theorem Montel: +theorem%important Montel: fixes \ :: "[nat,complex] \ complex" assumes "open S" and \: "\h. h \ \ \ h holomorphic_on S" @@ -805,7 +805,7 @@ where "g holomorphic_on S" "strict_mono (r :: nat \ nat)" "\x. x \ S \ ((\n. \ (r n) x) \ g x) sequentially" "\K. \compact K; K \ S\ \ uniform_limit K (\ \ r) g sequentially" -proof - +proof%unimportant - obtain K where comK: "\n. compact(K n)" and KS: "\n::nat. K n \ S" and subK: "\X. \compact X; X \ S\ \ \N. \n\N. X \ K n" using open_Union_compact_subsets [OF \open S\] by metis @@ -993,9 +993,9 @@ -subsection\Some simple but useful cases of Hurwitz's theorem\ +subsection%important\Some simple but useful cases of Hurwitz's theorem\ -proposition Hurwitz_no_zeros: +proposition%important Hurwitz_no_zeros: assumes S: "open S" "connected S" and holf: "\n::nat. \ n holomorphic_on S" and holg: "g holomorphic_on S" @@ -1004,7 +1004,7 @@ and nz: "\n z. z \ S \ \ n z \ 0" and "z0 \ S" shows "g z0 \ 0" -proof +proof%unimportant assume g0: "g z0 = 0" obtain h r m where "0 < m" "0 < r" and subS: "ball z0 r \ S" @@ -1159,7 +1159,7 @@ ultimately show False using \0 < m\ by auto qed -corollary Hurwitz_injective: +corollary%important Hurwitz_injective: assumes S: "open S" "connected S" and holf: "\n::nat. \ n holomorphic_on S" and holg: "g holomorphic_on S" @@ -1167,7 +1167,7 @@ and nonconst: "~ g constant_on S" and inj: "\n. inj_on (\ n) S" shows "inj_on g S" -proof - +proof%unimportant - have False if z12: "z1 \ S" "z2 \ S" "z1 \ z2" "g z2 = g z1" for z1 z2 proof - obtain z0 where "z0 \ S" and z0: "g z0 \ g z2" @@ -1229,15 +1229,15 @@ -subsection\The Great Picard theorem\ +subsection%important\The Great Picard theorem\ -lemma GPicard1: +lemma%important GPicard1: assumes S: "open S" "connected S" and "w \ S" "0 < r" "Y \ X" and holX: "\h. h \ X \ h holomorphic_on S" and X01: "\h z. \h \ X; z \ S\ \ h z \ 0 \ h z \ 1" and r: "\h. h \ Y \ norm(h w) \ r" obtains B Z where "0 < B" "open Z" "w \ Z" "Z \ S" "\h z. \h \ Y; z \ Z\ \ norm(h z) \ B" -proof - +proof%unimportant - obtain e where "e > 0" and e: "cball w e \ S" using assms open_contains_cball_eq by blast show ?thesis @@ -1277,20 +1277,20 @@ qed (use \e > 0\ in auto) qed -lemma GPicard2: +lemma%important GPicard2: assumes "S \ T" "connected T" "S \ {}" "open S" "\x. \x islimpt S; x \ T\ \ x \ S" shows "S = T" - by (metis assms open_subset connected_clopen closedin_limpt) + by%unimportant (metis assms open_subset connected_clopen closedin_limpt) -lemma GPicard3: +lemma%important GPicard3: assumes S: "open S" "connected S" "w \ S" and "Y \ X" and holX: "\h. h \ X \ h holomorphic_on S" and X01: "\h z. \h \ X; z \ S\ \ h z \ 0 \ h z \ 1" and no_hw_le1: "\h. h \ Y \ norm(h w) \ 1" and "compact K" "K \ S" obtains B where "\h z. \h \ Y; z \ K\ \ norm(h z) \ B" -proof - +proof%unimportant - define U where "U \ {z \ S. \B Z. 0 < B \ open Z \ z \ Z \ Z \ S \ (\h z'. h \ Y \ z' \ Z \ norm(h z') \ B)}" then have "U \ S" by blast @@ -1432,11 +1432,11 @@ qed -lemma GPicard4: +lemma%important GPicard4: assumes "0 < k" and holf: "f holomorphic_on (ball 0 k - {0})" and AE: "\e. \0 < e; e < k\ \ \d. 0 < d \ d < e \ (\z \ sphere 0 d. norm(f z) \ B)" obtains \ where "0 < \" "\ < k" "\z. z \ ball 0 \ - {0} \ norm(f z) \ B" -proof - +proof%unimportant - obtain \ where "0 < \" "\ < k/2" and \: "\z. norm z = \ \ norm(f z) \ B" using AE [of "k/2"] \0 < k\ by auto show ?thesis @@ -1471,13 +1471,13 @@ qed -lemma GPicard5: +lemma%important GPicard5: assumes holf: "f holomorphic_on (ball 0 1 - {0})" and f01: "\z. z \ ball 0 1 - {0} \ f z \ 0 \ f z \ 1" obtains e B where "0 < e" "e < 1" "0 < B" "(\z \ ball 0 e - {0}. norm(f z) \ B) \ (\z \ ball 0 e - {0}. norm(f z) \ B)" -proof - +proof%unimportant - have [simp]: "1 + of_nat n \ (0::complex)" for n using of_nat_eq_0_iff by fastforce have [simp]: "cmod (1 + of_nat n) = 1 + of_nat n" for n @@ -1614,13 +1614,13 @@ qed -lemma GPicard6: +lemma%important GPicard6: assumes "open M" "z \ M" "a \ 0" and holf: "f holomorphic_on (M - {z})" and f0a: "\w. w \ M - {z} \ f w \ 0 \ f w \ a" obtains r where "0 < r" "ball z r \ M" "bounded(f ` (ball z r - {z})) \ bounded((inverse \ f) ` (ball z r - {z}))" -proof - +proof%unimportant - obtain r where "0 < r" and r: "ball z r \ M" using assms openE by blast let ?g = "\w. f (z + of_real r * w) / a" @@ -1669,11 +1669,11 @@ qed -theorem great_Picard: +theorem%important great_Picard: assumes "open M" "z \ M" "a \ b" and holf: "f holomorphic_on (M - {z})" and fab: "\w. w \ M - {z} \ f w \ a \ f w \ b" obtains l where "(f \ l) (at z) \ ((inverse \ f) \ l) (at z)" -proof - +proof%unimportant - obtain r where "0 < r" and zrM: "ball z r \ M" and r: "bounded((\z. f z - a) ` (ball z r - {z})) \ bounded((inverse \ (\z. f z - a)) ` (ball z r - {z}))" @@ -1776,19 +1776,19 @@ qed -corollary great_Picard_alt: +corollary%important great_Picard_alt: assumes M: "open M" "z \ M" and holf: "f holomorphic_on (M - {z})" and non: "\l. \ (f \ l) (at z)" "\l. \ ((inverse \ f) \ l) (at z)" obtains a where "- {a} \ f ` (M - {z})" - apply (simp add: subset_iff image_iff) - by (metis great_Picard [OF M _ holf] non) + apply%unimportant (simp add: subset_iff image_iff) + by%unimportant (metis great_Picard [OF M _ holf] non) -corollary great_Picard_infinite: +corollary%important great_Picard_infinite: assumes M: "open M" "z \ M" and holf: "f holomorphic_on (M - {z})" and non: "\l. \ (f \ l) (at z)" "\l. \ ((inverse \ f) \ l) (at z)" obtains a where "\w. w \ a \ infinite {x. x \ M - {z} \ f x = w}" -proof - +proof%unimportant - have False if "a \ b" and ab: "finite {x. x \ M - {z} \ f x = a}" "finite {x. x \ M - {z} \ f x = b}" for a b proof - have finab: "finite {x. x \ M - {z} \ f x \ {a,b}}" @@ -1830,11 +1830,11 @@ by meson qed -corollary Casorati_Weierstrass: +corollary%important Casorati_Weierstrass: assumes "open M" "z \ M" "f holomorphic_on (M - {z})" and "\l. \ (f \ l) (at z)" "\l. \ ((inverse \ f) \ l) (at z)" shows "closure(f ` (M - {z})) = UNIV" -proof - +proof%unimportant - obtain a where a: "- {a} \ f ` (M - {z})" using great_Picard_alt [OF assms] . have "UNIV = closure(- {a})"