| author | haftmann | 
| Mon, 14 Apr 2025 20:19:05 +0200 | |
| changeset 82509 | c476149a3790 | 
| parent 82459 | a1de627d417a | 
| child 82517 | 111b1b2a2d13 | 
| permissions | -rw-r--r-- | 
| 80072 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 1 | (* | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 2 | Authors: Manuel Eberl, University of Innsbruck | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 3 | Wenda Li, University of Edinburgh | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 4 | *) | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 5 | theory Meromorphic imports | 
| 79933 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 Manuel Eberl <eberlm@in.tum.de> parents: 
79864diff
changeset | 6 | Laurent_Convergence | 
| 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 Manuel Eberl <eberlm@in.tum.de> parents: 
79864diff
changeset | 7 | Cauchy_Integral_Formula | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 8 | "HOL-Analysis.Sparse_In" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 9 | begin | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 10 | |
| 79864 
fed0a3c60e2b
Fixed a latex error in the markup
 paulson <lp15@cam.ac.uk> parents: 
79857diff
changeset | 11 | subsection \<open>Remove singular points\<close> | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 12 | |
| 80072 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 13 | text \<open> | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 14 | This function takes a complex function and returns a version of it where all removable | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 15 | singularities have been removed and all other singularities (to be more precise, | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 16 | unremovable discontinuities) are set to 0. | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 17 | |
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 18 | This is very useful since it is sometimes difficult to avoid introducing removable singularities. | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 19 | For example, consider the meromorphic functions $f(z) = z$ and $g(z) = 1/z$. | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 20 | Then a mathematician would write $f(z)g(z) = 1$, but in Isabelle of course this is not so. | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 21 | |
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 22 | Using the \<open>remove_sings\<close> function, we indeed have \<open>remove_sings (\<lambda>z. f z * g z) = (\<lambda>_. 1)\<close>. | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 23 | \<close> | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 24 | definition%important remove_sings :: "(complex \<Rightarrow> complex) \<Rightarrow> complex \<Rightarrow> complex" where | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 25 | "remove_sings f z = (if \<exists>c. f \<midarrow>z\<rightarrow> c then Lim (at z) f else 0)" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 26 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 27 | lemma remove_sings_eqI [intro]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 28 | assumes "f \<midarrow>z\<rightarrow> c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 29 | shows "remove_sings f z = c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 30 | using assms unfolding remove_sings_def by (auto simp: tendsto_Lim) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 31 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 32 | lemma remove_sings_at_analytic [simp]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 33 |   assumes "f analytic_on {z}"
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 34 | shows "remove_sings f z = f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 35 | using assms by (intro remove_sings_eqI) (simp add: analytic_at_imp_isCont isContD) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 36 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 37 | lemma remove_sings_at_pole [simp]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 38 | assumes "is_pole f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 39 | shows "remove_sings f z = 0" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 40 | using assms unfolding remove_sings_def is_pole_def | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 41 | by (meson at_neq_bot not_tendsto_and_filterlim_at_infinity) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 42 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 43 | lemma eventually_remove_sings_eq_at: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 44 | assumes "isolated_singularity_at f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 45 | shows "eventually (\<lambda>w. remove_sings f w = f w) (at z)" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 46 | proof - | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 47 |   from assms obtain r where r: "r > 0" "f analytic_on ball z r - {z}"
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 48 | by (auto simp: isolated_singularity_at_def) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 49 |   hence *: "f analytic_on {w}" if "w \<in> ball z r - {z}" for w
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 50 | using r that by (auto intro: analytic_on_subset) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 51 |   have "eventually (\<lambda>w. w \<in> ball z r - {z}) (at z)"
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 52 | using r by (intro eventually_at_in_open) auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 53 | thus ?thesis | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 54 | by eventually_elim (auto simp: remove_sings_at_analytic * ) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 55 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 56 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 57 | lemma eventually_remove_sings_eq_nhds: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 58 |   assumes "f analytic_on {z}"
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 59 | shows "eventually (\<lambda>w. remove_sings f w = f w) (nhds z)" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 60 | proof - | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 61 | from assms obtain A where A: "open A" "z \<in> A" "f holomorphic_on A" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 62 | by (auto simp: analytic_at) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 63 | have "eventually (\<lambda>z. z \<in> A) (nhds z)" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 64 | by (intro eventually_nhds_in_open A) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 65 | thus ?thesis | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 66 | proof eventually_elim | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 67 | case (elim w) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 68 |     from elim have "f analytic_on {w}"
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 69 | using A analytic_at by blast | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 70 | thus ?case by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 71 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 72 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 73 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 74 | lemma remove_sings_compose: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 75 | assumes "filtermap g (at z) = at z'" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 76 | shows "remove_sings (f \<circ> g) z = remove_sings f z'" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 77 | proof (cases "\<exists>c. f \<midarrow>z'\<rightarrow> c") | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 78 | case True | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 79 | then obtain c where c: "f \<midarrow>z'\<rightarrow> c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 80 | by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 81 | from c have "remove_sings f z' = c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 82 | by blast | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 83 | moreover from c have "remove_sings (f \<circ> g) z = c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 84 | using c by (intro remove_sings_eqI) (auto simp: filterlim_def filtermap_compose assms) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 85 | ultimately show ?thesis | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 86 | by simp | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 87 | next | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 88 | case False | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 89 | hence "\<not>(\<exists>c. (f \<circ> g) \<midarrow>z\<rightarrow> c)" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 90 | by (auto simp: filterlim_def filtermap_compose assms) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 91 | with False show ?thesis | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 92 | by (auto simp: remove_sings_def) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 93 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 94 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 95 | lemma remove_sings_cong: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 96 | assumes "eventually (\<lambda>x. f x = g x) (at z)" "z = z'" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 97 | shows "remove_sings f z = remove_sings g z'" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 98 | proof (cases "\<exists>c. f \<midarrow>z\<rightarrow> c") | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 99 | case True | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 100 | then obtain c where c: "f \<midarrow>z\<rightarrow> c" by blast | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 101 | hence "remove_sings f z = c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 102 | by blast | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 103 | moreover have "f \<midarrow>z\<rightarrow> c \<longleftrightarrow> g \<midarrow>z'\<rightarrow> c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 104 | using assms by (intro filterlim_cong refl) auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 105 | with c have "remove_sings g z' = c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 106 | by (intro remove_sings_eqI) auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 107 | ultimately show ?thesis | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 108 | by simp | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 109 | next | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 110 | case False | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 111 | have "f \<midarrow>z\<rightarrow> c \<longleftrightarrow> g \<midarrow>z'\<rightarrow> c" for c | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 112 | using assms by (intro filterlim_cong) auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 113 | with False show ?thesis | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 114 | by (auto simp: remove_sings_def) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 115 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 116 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 117 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 118 | lemma deriv_remove_sings_at_analytic [simp]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 119 |   assumes "f analytic_on {z}"
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 120 | shows "deriv (remove_sings f) z = deriv f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 121 | apply (rule deriv_cong_ev) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 122 | apply (rule eventually_remove_sings_eq_nhds) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 123 | using assms by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 124 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 125 | lemma isolated_singularity_at_remove_sings [simp, intro]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 126 | assumes "isolated_singularity_at f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 127 | shows "isolated_singularity_at (remove_sings f) z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 128 | using isolated_singularity_at_cong[OF eventually_remove_sings_eq_at[OF assms] refl] assms | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 129 | by simp | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 130 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 131 | lemma not_essential_remove_sings_iff [simp]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 132 | assumes "isolated_singularity_at f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 133 | shows "not_essential (remove_sings f) z \<longleftrightarrow> not_essential f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 134 | using not_essential_cong[OF eventually_remove_sings_eq_at[OF assms(1)] refl] | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 135 | by simp | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 136 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 137 | lemma not_essential_remove_sings [intro]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 138 | assumes "isolated_singularity_at f z" "not_essential f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 139 | shows "not_essential (remove_sings f) z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 140 | by (subst not_essential_remove_sings_iff) (use assms in auto) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 141 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 142 | lemma | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 143 | assumes "isolated_singularity_at f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 144 | shows is_pole_remove_sings_iff [simp]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 145 | "is_pole (remove_sings f) z \<longleftrightarrow> is_pole f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 146 | and zorder_remove_sings [simp]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 147 | "zorder (remove_sings f) z = zorder f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 148 | and zor_poly_remove_sings [simp]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 149 | "zor_poly (remove_sings f) z = zor_poly f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 150 | and has_laurent_expansion_remove_sings_iff [simp]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 151 | "(\<lambda>w. remove_sings f (z + w)) has_laurent_expansion F \<longleftrightarrow> | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 152 | (\<lambda>w. f (z + w)) has_laurent_expansion F" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 153 | and tendsto_remove_sings_iff [simp]: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 154 | "remove_sings f \<midarrow>z\<rightarrow> c \<longleftrightarrow> f \<midarrow>z\<rightarrow> c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 155 | by (intro is_pole_cong eventually_remove_sings_eq_at refl zorder_cong | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 156 | zor_poly_cong has_laurent_expansion_cong' tendsto_cong assms)+ | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 157 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 158 | lemma get_all_poles_from_remove_sings: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 159 | fixes f:: "complex \<Rightarrow> complex" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 160 | defines "ff\<equiv>remove_sings f" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 161 | assumes f_holo:"f holomorphic_on s - pts" and "finite pts" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 162 | "pts\<subseteq>s" "open s" and not_ess:"\<forall>x\<in>pts. not_essential f x" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 163 | obtains pts' where | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 164 | "pts' \<subseteq> pts" "finite pts'" "ff holomorphic_on s - pts'" "\<forall>x\<in>pts'. is_pole ff x" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 165 | proof - | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 166 |   define pts' where "pts' = {x\<in>pts. is_pole f x}"
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 167 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 168 | have "pts' \<subseteq> pts" unfolding pts'_def by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 169 | then have "finite pts'" using \<open>finite pts\<close> | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 170 | using rev_finite_subset by blast | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 171 | then have "open (s - pts')" using \<open>open s\<close> | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 172 | by (simp add: finite_imp_closed open_Diff) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 173 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 174 | have isolated:"isolated_singularity_at f z" if "z\<in>pts" for z | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 175 | proof (rule isolated_singularity_at_holomorphic) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 176 |     show "f holomorphic_on (s-(pts-{z})) - {z}" 
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 177 | by (metis Diff_insert f_holo insert_Diff that) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 178 |     show " open (s - (pts - {z}))" 
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 179 | by (meson assms(3) assms(5) finite_Diff finite_imp_closed open_Diff) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 180 |     show "z \<in> s - (pts - {z})" 
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 181 | using assms(4) that by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 182 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 183 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 184 | have "ff holomorphic_on s - pts'" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 185 | proof (rule no_isolated_singularity') | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 186 | show "(ff \<longlongrightarrow> ff z) (at z within s - pts')" if "z \<in> pts-pts'" for z | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 187 | proof - | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 188 | have "at z within s - pts' = at z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 189 | apply (rule at_within_open) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 190 | using \<open>open (s - pts')\<close> that \<open>pts\<subseteq>s\<close> by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 191 | moreover have "ff \<midarrow>z\<rightarrow> ff z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 192 | unfolding ff_def | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 193 | proof (subst tendsto_remove_sings_iff) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 194 | show "isolated_singularity_at f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 195 | apply (rule isolated) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 196 | using that by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 197 | have "not_essential f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 198 | using not_ess that by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 199 | moreover have "\<not>is_pole f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 200 | using that unfolding pts'_def by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 201 | ultimately have "\<exists>c. f \<midarrow>z\<rightarrow> c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 202 | unfolding not_essential_def by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 203 | then show "f \<midarrow>z\<rightarrow> remove_sings f z" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 204 | using remove_sings_eqI by blast | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 205 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 206 | ultimately show ?thesis by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 207 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 208 | have "ff holomorphic_on s - pts" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 209 | using f_holo | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 210 | proof (elim holomorphic_transform) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 211 | fix x assume "x \<in> s - pts" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 212 |       then have "f analytic_on {x}" 
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 213 | using assms(3) assms(5) f_holo | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 214 | by (meson finite_imp_closed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 215 | holomorphic_on_imp_analytic_at open_Diff) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 216 | from remove_sings_at_analytic[OF this] | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 217 | show "f x = ff x" unfolding ff_def by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 218 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 219 | then show "ff holomorphic_on s - pts' - (pts - pts')" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 220 | apply (elim holomorphic_on_subset) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 221 | by blast | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 222 | show "open (s - pts')" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 223 | by (simp add: \<open>open (s - pts')\<close>) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 224 | show "finite (pts - pts')" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 225 | by (simp add: assms(3)) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 226 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 227 | moreover have "\<forall>x\<in>pts'. is_pole ff x" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 228 | unfolding pts'_def | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 229 | using ff_def is_pole_remove_sings_iff isolated by blast | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 230 | moreover note \<open>pts' \<subseteq> pts\<close> \<open>finite pts'\<close> | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 231 | ultimately show ?thesis using that by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 232 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 233 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 234 | lemma remove_sings_eq_0_iff: | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 235 | assumes "not_essential f w" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 236 | shows "remove_sings f w = 0 \<longleftrightarrow> is_pole f w \<or> f \<midarrow>w\<rightarrow> 0" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 237 | proof (cases "is_pole f w") | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 238 | case False | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 239 | then obtain c where c:"f \<midarrow>w\<rightarrow> c" | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 240 | using \<open>not_essential f w\<close> unfolding not_essential_def by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 241 | then show ?thesis | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 242 | using False remove_sings_eqI by auto | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 243 | qed simp | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 244 | |
| 80072 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 245 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 246 | subsection \<open>Meromorphicity\<close> | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 247 | |
| 80072 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 248 | text \<open> | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 249 | We define meromorphicity in terms of Laurent series expansions. This has the advantage of | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 250 | giving us a particularly simple definition that makes many of the lemmas below trivial because | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 251 | they reduce to similar statements about Laurent series that are already in the library. | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 252 | |
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 253 | On open domains, this definition coincides with the usual one from the literature, namely that | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 254 | the function be holomorphic on its domain except for a set of non-essential singularities that | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 255 | is \<^emph>\<open>sparse\<close>, i.e.\ that has no limit point inside the domain. | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 256 | |
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 257 | However, unlike the definitions found in the literature, our definition also makes sense for | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 258 | non-open domains: similarly to \<^const>\<open>analytic_on\<close>, we consider a function meromorphic on a | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 259 | non-open domain if it is meromorphic on some open superset of that domain. | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 260 | |
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 261 | We will prove all of this below. | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 262 | \<close> | 
| 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 263 | definition%important meromorphic_on :: "(complex \<Rightarrow> complex) \<Rightarrow> complex set \<Rightarrow> bool" | 
| 80914 
d97fdabd9e2b
standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
 wenzelm parents: 
80072diff
changeset | 264 | (infixl \<open>(meromorphic'_on)\<close> 50) where | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 265 | "f meromorphic_on A \<longleftrightarrow> (\<forall>z\<in>A. \<exists>F. (\<lambda>w. f (z + w)) has_laurent_expansion F)" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 266 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 267 | lemma meromorphic_at_iff: "f meromorphic_on {z} \<longleftrightarrow> isolated_singularity_at f z \<and> not_essential f z"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 268 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 269 | by (metis has_laurent_expansion_isolated has_laurent_expansion_not_essential | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 270 | insertI1 singletonD not_essential_has_laurent_expansion) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 271 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 272 | named_theorems meromorphic_intros | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 273 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 274 | lemma meromorphic_on_empty [simp, intro]: "f meromorphic_on {}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 275 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 276 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 277 | lemma meromorphic_on_def': | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 278 | "f meromorphic_on A \<longleftrightarrow> (\<forall>z\<in>A. (\<lambda>w. f (z + w)) has_laurent_expansion laurent_expansion f z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 279 | unfolding meromorphic_on_def using laurent_expansion_eqI by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 280 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 281 | lemma meromorphic_on_meromorphic_at: "f meromorphic_on A \<longleftrightarrow> (\<forall>x\<in>A. f meromorphic_on {x})"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 282 | by (auto simp: meromorphic_on_def) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 283 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 284 | lemma meromorphic_on_altdef: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 285 | "f meromorphic_on A \<longleftrightarrow> (\<forall>z\<in>A. isolated_singularity_at f z \<and> not_essential f z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 286 | by (subst meromorphic_on_meromorphic_at) (auto simp: meromorphic_at_iff) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 287 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 288 | lemma meromorphic_on_cong: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 289 | assumes "\<And>z. z \<in> A \<Longrightarrow> eventually (\<lambda>w. f w = g w) (at z)" "A = B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 290 | shows "f meromorphic_on A \<longleftrightarrow> g meromorphic_on B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 291 | unfolding meromorphic_on_def using assms | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 292 | by (intro ball_cong refl arg_cong[of _ _ Ex] has_laurent_expansion_cong ext) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 293 | (simp_all add: at_to_0' eventually_filtermap add_ac) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 294 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 295 | lemma meromorphic_on_subset: "f meromorphic_on A \<Longrightarrow> B \<subseteq> A \<Longrightarrow> f meromorphic_on B" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 296 | by (auto simp: meromorphic_on_def) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 297 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 298 | lemma meromorphic_on_Un: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 299 | assumes "f meromorphic_on A" "f meromorphic_on B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 300 | shows "f meromorphic_on (A \<union> B)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 301 | using assms unfolding meromorphic_on_def by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 302 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 303 | lemma meromorphic_on_Union: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 304 | assumes "\<And>A. A \<in> B \<Longrightarrow> f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 305 | shows "f meromorphic_on (\<Union>B)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 306 | using assms unfolding meromorphic_on_def by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 307 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 308 | lemma meromorphic_on_UN: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 309 | assumes "\<And>x. x \<in> X \<Longrightarrow> f meromorphic_on (A x)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 310 | shows "f meromorphic_on (\<Union>x\<in>X. A x)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 311 | using assms unfolding meromorphic_on_def by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 312 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 313 | lemma meromorphic_on_imp_has_laurent_expansion: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 314 | assumes "f meromorphic_on A" "z \<in> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 315 | shows "(\<lambda>w. f (z + w)) has_laurent_expansion laurent_expansion f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 316 | using assms laurent_expansion_eqI unfolding meromorphic_on_def by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 317 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 318 | lemma meromorphic_on_open_nhd: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 319 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 320 | obtains B where "open B" "A \<subseteq> B" "f meromorphic_on B" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 321 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 322 | obtain F where F: "\<And>z. z \<in> A \<Longrightarrow> (\<lambda>w. f (z + w)) has_laurent_expansion F z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 323 | using assms unfolding meromorphic_on_def by metis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 324 |   have "\<exists>Z. open Z \<and> z \<in> Z \<and> (\<forall>w\<in>Z-{z}. eval_fls (F z) (w - z) = f w)" if z: "z \<in> A" for z
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 325 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 326 |     obtain Z where Z: "open Z" "0 \<in> Z" "\<And>w. w \<in> Z - {0} \<Longrightarrow> eval_fls (F z) w = f (z + w)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 327 | using F[OF z] unfolding has_laurent_expansion_def eventually_at_topological by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 328 | hence "open ((+) z ` Z)" and "z \<in> (+) z ` Z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 329 | using open_translation by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 330 |     moreover have "eval_fls (F z) (w - z) = f w" if "w \<in> (+) z ` Z - {z}" for w
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 331 | using Z(3)[of "w - z"] that by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 332 | ultimately show ?thesis by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 333 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 334 | then obtain Z where Z: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 335 |     "\<And>z. z \<in> A \<Longrightarrow> open (Z z) \<and> z \<in> Z z \<and> (\<forall>w\<in>Z z-{z}. eval_fls (F z) (w - z) = f w)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 336 | by metis | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 337 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 338 | define B where "B = (\<Union>z\<in>A. Z z \<inter> eball z (fls_conv_radius (F z)))" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 339 | show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 340 | proof (rule that[of B]) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 341 | show "open B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 342 | using Z unfolding B_def by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 343 | show "A \<subseteq> B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 344 | unfolding B_def using F Z by (auto simp: has_laurent_expansion_def zero_ereal_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 345 | show "f meromorphic_on B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 346 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 347 | proof | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 348 | fix z assume z: "z \<in> B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 349 | show "\<exists>F. (\<lambda>w. f (z + w)) has_laurent_expansion F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 350 | proof (cases "z \<in> A") | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 351 | case True | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 352 | thus ?thesis using F by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 353 | next | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 354 | case False | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 355 |         then obtain z0 where z0: "z0 \<in> A" "z \<in> Z z0 - {z0}" "dist z0 z < fls_conv_radius (F z0)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 356 | using z False Z unfolding B_def by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 357 |         hence "(\<lambda>w. eval_fls (F z0) (w - z0)) analytic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 358 | by (intro analytic_on_eval_fls' analytic_intros) (auto simp: dist_norm) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 359 |         also have "?this \<longleftrightarrow> f analytic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 360 | proof (intro analytic_at_cong refl) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 361 |           have "eventually (\<lambda>w. w \<in> Z z0 - {z0}) (nhds z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 362 | using Z[of z0] z0 by (intro eventually_nhds_in_open) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 363 | thus "\<forall>\<^sub>F x in nhds z. eval_fls (F z0) (x - z0) = f x" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 364 | by eventually_elim (use Z[of z0] z0 in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 365 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 366 | finally show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 367 | using analytic_at_imp_has_fps_expansion has_fps_expansion_to_laurent by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 368 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 369 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 370 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 371 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 372 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 373 | lemma meromorphic_on_not_essential: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 374 |   assumes "f meromorphic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 375 | shows "not_essential f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 376 | using assms has_laurent_expansion_not_essential unfolding meromorphic_on_def by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 377 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 378 | lemma meromorphic_on_isolated_singularity: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 379 |   assumes "f meromorphic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 380 | shows "isolated_singularity_at f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 381 | using assms has_laurent_expansion_isolated unfolding meromorphic_on_def by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 382 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 383 | lemma meromorphic_on_imp_not_islimpt_singularities: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 384 | assumes "f meromorphic_on A" "z \<in> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 385 |   shows   "\<not>z islimpt {w. \<not>f analytic_on {w}}"
 | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 386 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 387 | obtain B where B: "open B" "A \<subseteq> B" "f meromorphic_on B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 388 | using assms meromorphic_on_open_nhd by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 389 | obtain F where F: "(\<lambda>w. f (z + w)) has_laurent_expansion F" | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 390 | using B assms(2) unfolding meromorphic_on_def by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 391 | from F have "isolated_singularity_at f z" | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 392 | using has_laurent_expansion_isolated assms(2) by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 393 |   then obtain r where r: "r > 0" "f analytic_on ball z r - {z}"
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 394 | unfolding isolated_singularity_at_def by blast | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 395 |   have "f analytic_on {w}" if "w \<in> ball z r - {z}" for w
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 396 | by (rule analytic_on_subset[OF r(2)]) (use that in auto) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 397 |   hence "eventually (\<lambda>w. f analytic_on {w}) (at z)"
 | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 398 | using eventually_at_in_open[of "ball z r" z] \<open>r > 0\<close> by (auto elim!: eventually_mono) | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 399 |   thus "\<not>z islimpt {w. \<not>f analytic_on {w}}"
 | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 400 | by (auto simp: islimpt_conv_frequently_at frequently_def) | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 401 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 402 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 403 | lemma meromorphic_on_imp_sparse_singularities: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 404 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 405 |   shows   "{w. \<not>f analytic_on {w}} sparse_in A"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 406 | by (metis assms meromorphic_on_imp_not_islimpt_singularities | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 407 | meromorphic_on_open_nhd sparse_in_open sparse_in_subset) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 408 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 409 | lemma meromorphic_on_imp_sparse_singularities': | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 410 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 411 |   shows   "{w\<in>A. \<not>f analytic_on {w}} sparse_in A"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 412 | using meromorphic_on_imp_sparse_singularities[OF assms] | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 413 | by (rule sparse_in_subset2) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 414 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 415 | lemma meromorphic_onE: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 416 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 417 | obtains pts where "pts \<subseteq> A" "pts sparse_in A" "f analytic_on A - pts" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 418 | "\<And>z. z \<in> A \<Longrightarrow> not_essential f z" "\<And>z. z \<in> A \<Longrightarrow> isolated_singularity_at f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 419 | proof (rule that) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 420 |   show "{z \<in> A. \<not> f analytic_on {z}} sparse_in A"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 421 | using assms by (rule meromorphic_on_imp_sparse_singularities') | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 422 |   show "f analytic_on A - {z \<in> A. \<not> f analytic_on {z}}"
 | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 423 | by (subst analytic_on_analytic_at) auto | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 424 | qed (use assms in \<open>auto intro: meromorphic_on_isolated_singularity meromorphic_on_not_essential meromorphic_on_subset\<close>) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 425 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 426 | lemma meromorphic_onI_weak: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 427 | assumes "f analytic_on A - pts" "\<And>z. z \<in> pts \<Longrightarrow> not_essential f z" "pts sparse_in A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 428 |           "pts \<inter> frontier A = {}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 429 | shows "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 430 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 431 | proof | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 432 | fix z assume z: "z \<in> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 433 | show "(\<exists>F. (\<lambda>w. f (z + w)) has_laurent_expansion F)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 434 | proof (cases "z \<in> pts") | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 435 | case False | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 436 |     have "f analytic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 437 | using assms(1) by (rule analytic_on_subset) (use False z in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 438 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 439 | using isolated_singularity_at_analytic not_essential_analytic | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 440 | not_essential_has_laurent_expansion by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 441 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 442 | case True | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 443 | show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 444 | proof (rule exI, rule not_essential_has_laurent_expansion) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 445 | show "not_essential f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 446 | using assms(2) True by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 447 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 448 | show "isolated_singularity_at f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 449 | proof (rule isolated_singularity_at_holomorphic) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 450 |         show "open (interior A - (pts - {z}))"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 451 | proof (rule open_diff_sparse_pts) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 452 |           show "pts - {z} sparse_in interior A"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 453 | using sparse_in_subset sparse_in_subset2 assms interior_subset Diff_subset by metis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 454 | qed auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 455 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 456 |         have "f analytic_on interior A - (pts - {z}) - {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 457 | using assms(1) by (rule analytic_on_subset) (use interior_subset in blast) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 458 |         thus "f holomorphic_on interior A - (pts - {z}) - {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 459 | by (rule analytic_imp_holomorphic) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 460 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 461 | from assms(4) and True have "z \<in> interior A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 462 | unfolding frontier_def using closure_subset z by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 463 |         thus "z \<in> interior A - (pts - {z})"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 464 | by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 465 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 466 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 467 | qed | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 468 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 469 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 470 | lemma meromorphic_onI_open: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 471 | assumes "open A" "f analytic_on A - pts" "\<And>z. z \<in> pts \<Longrightarrow> not_essential f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 472 | assumes "\<And>z. z \<in> A \<Longrightarrow> \<not>z islimpt pts \<inter> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 473 | shows "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 474 | proof (rule meromorphic_onI_weak) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 475 | have *: "A - pts \<inter> A = A - pts" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 476 | by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 477 | show "f analytic_on A - pts \<inter> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 478 | unfolding * by fact | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 479 | show "pts \<inter> A sparse_in A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 480 | using assms(1,4) by (subst sparse_in_open) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 481 | show "not_essential f z" if "z \<in> pts \<inter> A" for z | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 482 | using assms(3) that by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 483 |   show "pts \<inter> A \<inter> frontier A = {}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 484 | using \<open>open A\<close> frontier_disjoint_eq by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 485 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 486 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 487 | lemma meromorphic_at_isCont_imp_analytic: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 488 |   assumes "f meromorphic_on {z}" "isCont f z"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 489 |   shows   "f analytic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 490 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 491 | have *: "(\<lambda>w. f (z + w)) has_laurent_expansion laurent_expansion f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 492 | using assms by (auto intro: meromorphic_on_imp_has_laurent_expansion) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 493 | from assms have "\<not>is_pole f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 494 | using is_pole_def not_tendsto_and_filterlim_at_infinity trivial_limit_at by (metis isContD) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 495 | with * have "fls_subdegree (laurent_expansion f z) \<ge> 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 496 | using has_laurent_expansion_imp_is_pole linorder_not_le by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 497 |   hence **: "(\<lambda>w. eval_fls (laurent_expansion f z) (w - z)) analytic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 498 | by (intro analytic_intros)+ (use * in \<open>auto simp: has_laurent_expansion_def zero_ereal_def\<close>) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 499 | have "(\<lambda>w. eval_fls (laurent_expansion f z) (w - z)) \<midarrow>z\<rightarrow> eval_fls (laurent_expansion f z) (z - z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 500 | by (intro isContD analytic_at_imp_isCont **) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 501 | also have "?this \<longleftrightarrow> f \<midarrow>z\<rightarrow> eval_fls (laurent_expansion f z) (z - z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 502 | by (intro filterlim_cong refl) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 503 | (use * in \<open>auto simp: has_laurent_expansion_def at_to_0' eventually_filtermap add_ac\<close>) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 504 | finally have "f \<midarrow>z\<rightarrow> eval_fls (laurent_expansion f z) 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 505 | by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 506 | moreover from assms have "f \<midarrow>z\<rightarrow> f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 507 | by (auto intro: isContD) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 508 | ultimately have ***: "eval_fls (laurent_expansion f z) 0 = f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 509 | by (rule LIM_unique) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 510 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 511 | have "eventually (\<lambda>w. f w = eval_fls (laurent_expansion f z) (w - z)) (at z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 512 | using * by (simp add: has_laurent_expansion_def at_to_0' eventually_filtermap add_ac eq_commute) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 513 | hence "eventually (\<lambda>w. f w = eval_fls (laurent_expansion f z) (w - z)) (nhds z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 514 | unfolding eventually_at_filter by eventually_elim (use *** in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 515 |   hence "f analytic_on {z} \<longleftrightarrow> (\<lambda>w. eval_fls (laurent_expansion f z) (w - z)) analytic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 516 | by (intro analytic_at_cong refl) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 517 | with ** show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 518 | by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 519 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 520 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 521 | lemma analytic_on_imp_meromorphic_on: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 522 | assumes "f analytic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 523 | shows "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 524 |   by (rule meromorphic_onI_weak[of _ _ "{}"]) (use assms in auto)
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 525 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 526 | lemma meromorphic_on_compose: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 527 | assumes "g meromorphic_on A" "f analytic_on B" "f ` B \<subseteq> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 528 | shows "(\<lambda>w. g (f w)) meromorphic_on B" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 529 | unfolding meromorphic_on_def | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 530 | proof safe | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 531 | fix z assume z: "z \<in> B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 532 |   have "f analytic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 533 | using assms(2) by (rule analytic_on_subset) (use assms(3) z in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 534 |   hence "(\<lambda>w. f w - f z) analytic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 535 | by (intro analytic_intros) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 536 | then obtain F where F: "(\<lambda>w. f (z + w) - f z) has_fps_expansion F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 537 | using analytic_at_imp_has_fps_expansion by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 538 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 539 | from assms(3) and z have "f z \<in> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 540 | by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 541 | with assms(1) obtain G where G: "(\<lambda>w. g (f z + w)) has_laurent_expansion G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 542 | using z by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 543 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 544 | have "\<exists>H. ((\<lambda>w. g (f z + w)) \<circ> (\<lambda>w. f (z + w) - f z)) has_laurent_expansion H" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 545 | proof (cases "F = 0") | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 546 | case False | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 547 | show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 548 | proof (rule exI, rule has_laurent_expansion_compose) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 549 | show "(\<lambda>w. f (z + w) - f z) has_laurent_expansion fps_to_fls F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 550 | using F by (rule has_laurent_expansion_fps) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 551 | show "fps_nth F 0 = 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 552 | using has_fps_expansion_imp_0_eq_fps_nth_0[OF F] by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 553 | qed fact+ | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 554 | next | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 555 | case True | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 556 | have "(\<lambda>w. g (f z)) has_laurent_expansion fls_const (g (f z))" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 557 | by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 558 | also have "?this \<longleftrightarrow> (\<lambda>w. ((\<lambda>w. g (f z + w)) \<circ> (\<lambda>w. f (z + w) - f z)) w) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 559 | has_laurent_expansion fls_const (g (f z))" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 560 | proof (rule has_laurent_expansion_cong, goal_cases) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 561 | case 1 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 562 | from F and True have "eventually (\<lambda>w. f (z + w) - f z = 0) (nhds 0)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 563 | by (simp add: has_fps_expansion_0_iff) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 564 | hence "eventually (\<lambda>w. f (z + w) - f z = 0) (at 0)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 565 | by (simp add: eventually_nhds_conv_at) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 566 | thus ?case | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 567 | by eventually_elim auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 568 | qed auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 569 | finally show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 570 | by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 571 | qed | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 572 | thus "\<exists>H. (\<lambda>w. g (f (z + w))) has_laurent_expansion H" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 573 | by (simp add: o_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 574 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 575 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 576 | lemma constant_on_imp_meromorphic_on: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 577 | assumes "f constant_on A" "open A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 578 | shows "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 579 | using assms analytic_on_imp_meromorphic_on | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 580 | constant_on_imp_analytic_on | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 581 | by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 582 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 583 | subsection \<open>Nice meromorphicity\<close> | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 584 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 585 | text \<open> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 586 | This is probably very non-standard, but we call a function ``nicely meromorphic'' if it is | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 587 | meromorphic and has no removable singularities. That means that the only singularities are | 
| 80072 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 Manuel Eberl <manuel@pruvisto.org> parents: 
79945diff
changeset | 588 | poles. We furthermore require that the function return 0 at any pole, for convenience. | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 589 | \<close> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 590 | definition nicely_meromorphic_on :: "(complex \<Rightarrow> complex) \<Rightarrow> complex set \<Rightarrow> bool" | 
| 80914 
d97fdabd9e2b
standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
 wenzelm parents: 
80072diff
changeset | 591 | (infixl \<open>(nicely'_meromorphic'_on)\<close> 50) | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 592 | where "f nicely_meromorphic_on A \<longleftrightarrow> f meromorphic_on A | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 593 | \<and> (\<forall>z\<in>A. (is_pole f z \<and> f z=0) \<or> f \<midarrow>z\<rightarrow> f z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 594 | |
| 79933 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 Manuel Eberl <eberlm@in.tum.de> parents: 
79864diff
changeset | 595 | lemma nicely_meromorphic_on_subset: | 
| 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 Manuel Eberl <eberlm@in.tum.de> parents: 
79864diff
changeset | 596 | "f nicely_meromorphic_on A \<Longrightarrow> B \<subseteq> A \<Longrightarrow> f nicely_meromorphic_on B" | 
| 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 Manuel Eberl <eberlm@in.tum.de> parents: 
79864diff
changeset | 597 | using meromorphic_on_subset unfolding nicely_meromorphic_on_def by blast | 
| 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 Manuel Eberl <eberlm@in.tum.de> parents: 
79864diff
changeset | 598 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 599 | lemma constant_on_imp_nicely_meromorphic_on: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 600 | assumes "f constant_on A" "open A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 601 | shows "f nicely_meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 602 | by (meson analytic_at_imp_isCont assms | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 603 | constant_on_imp_holomorphic_on | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 604 | constant_on_imp_meromorphic_on | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 605 | holomorphic_on_imp_analytic_at isCont_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 606 | nicely_meromorphic_on_def) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 607 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 608 | lemma nicely_meromorphic_on_imp_analytic_at: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 609 | assumes "f nicely_meromorphic_on A" "z \<in> A" "\<not>is_pole f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 610 |   shows   "f analytic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 611 | proof (rule meromorphic_at_isCont_imp_analytic) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 612 |   show "f meromorphic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 613 | by (rule meromorphic_on_subset[of _ A]) (use assms in \<open>auto simp: nicely_meromorphic_on_def\<close>) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 614 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 615 | from assms have "f \<midarrow>z\<rightarrow> f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 616 | by (auto simp: nicely_meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 617 | thus "isCont f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 618 | by (auto simp: isCont_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 619 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 620 | |
| 82459 | 621 | lemma analytic_on_imp_nicely_meromorphic_on: | 
| 622 | "f analytic_on A \<Longrightarrow> f nicely_meromorphic_on A" | |
| 623 | by (meson analytic_at_imp_isCont analytic_on_analytic_at | |
| 624 | analytic_on_imp_meromorphic_on isContD nicely_meromorphic_on_def) | |
| 625 | ||
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 626 | lemma remove_sings_meromorphic [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 627 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 628 | shows "remove_sings f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 629 | unfolding meromorphic_on_def | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 630 | proof safe | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 631 | fix z assume z: "z \<in> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 632 | show "\<exists>F. (\<lambda>w. remove_sings f (z + w)) has_laurent_expansion F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 633 | using assms meromorphic_on_isolated_singularity meromorphic_on_not_essential | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 634 | not_essential_has_laurent_expansion z meromorphic_on_subset by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 635 | qed | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 636 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 637 | lemma remove_sings_nicely_meromorphic: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 638 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 639 | shows "remove_sings f nicely_meromorphic_on A" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 640 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 641 | have "remove_sings f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 642 | by (simp add: assms remove_sings_meromorphic) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 643 | moreover have "is_pole (remove_sings f) z | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 644 | \<and> remove_sings f z = 0 \<or> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 645 | remove_sings f \<midarrow>z\<rightarrow> remove_sings f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 646 | if "z\<in>A" for z | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 647 | proof (cases "\<exists>c. f \<midarrow>z\<rightarrow> c") | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 648 | case True | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 649 | then have "remove_sings f \<midarrow>z\<rightarrow> remove_sings f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 650 | by (metis remove_sings_eqI tendsto_remove_sings_iff | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 651 | assms meromorphic_onE that) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 652 | then show ?thesis by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 653 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 654 | case False | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 655 | then have "is_pole (remove_sings f) z | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 656 | \<and> remove_sings f z = 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 657 | by (meson is_pole_remove_sings_iff remove_sings_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 658 | remove_sings_eq_0_iff assms meromorphic_onE that) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 659 | then show ?thesis by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 660 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 661 | ultimately show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 662 | unfolding nicely_meromorphic_on_def by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 663 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 664 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 665 | text \<open> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 666 | A nicely meromorphic function that frequently takes the same value in the neighbourhood of some | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 667 | point is constant. | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 668 | \<close> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 669 | lemma frequently_eq_meromorphic_imp_constant: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 670 | assumes "frequently (\<lambda>z. f z = c) (at z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 671 | assumes "f nicely_meromorphic_on A" "open A" "connected A" "z \<in> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 672 | shows "\<And>w. w \<in> A \<Longrightarrow> f w = c" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 673 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 674 | from assms(2) have mero: "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 675 | by (auto simp: nicely_meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 676 |   have sparse: "{z. is_pole f z} sparse_in A"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 677 | using assms(2) mero | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 678 | by (meson assms(3) meromorphic_on_isolated_singularity meromorphic_on_meromorphic_at not_islimpt_poles sparse_in_open) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 679 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 680 | have eq: "f w = c" if w: "w \<in> A" "\<not>is_pole f w" for w | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 681 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 682 | have "f w - c = 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 683 | proof (rule analytic_continuation[of "\<lambda>w. f w - c"]) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 684 |       show "(\<lambda>w. f w - c) holomorphic_on {z\<in>A. \<not>is_pole f z}" using assms(2)
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 685 | by (intro holomorphic_intros) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 686 | (metis (mono_tags, lifting) analytic_imp_holomorphic analytic_on_analytic_at | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 687 | mem_Collect_eq nicely_meromorphic_on_imp_analytic_at) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 688 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 689 |       from sparse and assms(3) have "open (A - {z. is_pole f z})"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 690 | by (simp add: open_diff_sparse_pts) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 691 |       also have "A - {z. is_pole f z} = {z\<in>A. \<not>is_pole f z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 692 | by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 693 | finally show "open \<dots>" . | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 694 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 695 |       from sparse have "connected (A - {z. is_pole f z})"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 696 | using assms(3,4) by (intro sparse_imp_connected) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 697 |       also have "A - {z. is_pole f z} = {z\<in>A. \<not>is_pole f z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 698 | by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 699 | finally show "connected \<dots>" . | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 700 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 701 | have "eventually (\<lambda>w. w \<in> A) (at z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 702 | using assms by (intro eventually_at_in_open') auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 703 | moreover have "eventually (\<lambda>w. \<not>is_pole f w) (at z)" using mero | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 704 | by (metis assms(5) eventually_not_pole meromorphic_onE) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 705 | ultimately have ev: "eventually (\<lambda>w. w \<in> A \<and> \<not>is_pole f w) (at z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 706 | by eventually_elim auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 707 |       show "z islimpt {z\<in>A. \<not>is_pole f z \<and> f z = c}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 708 | using frequently_eventually_frequently[OF assms(1) ev] | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 709 | unfolding islimpt_conv_frequently_at by (rule frequently_elim1) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 710 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 711 | from assms(1) have "\<not>is_pole f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 712 | by (simp add: frequently_const_imp_not_is_pole) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 713 |       with \<open>z \<in> A\<close> show "z \<in> {z \<in> A. \<not> is_pole f z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 714 | by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 715 | qed (use w in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 716 | thus "f w = c" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 717 | by simp | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 718 | qed | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 719 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 720 | have not_pole: "\<not>is_pole f w" if w: "w \<in> A" for w | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 721 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 722 | have "eventually (\<lambda>w. \<not>is_pole f w) (at w)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 723 | using mero by (metis eventually_not_pole meromorphic_onE that) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 724 | moreover have "eventually (\<lambda>w. w \<in> A) (at w)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 725 | using w \<open>open A\<close> by (intro eventually_at_in_open') | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 726 | ultimately have "eventually (\<lambda>w. f w = c) (at w)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 727 | by eventually_elim (auto simp: eq) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 728 | hence "is_pole f w \<longleftrightarrow> is_pole (\<lambda>_. c) w" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 729 | by (intro is_pole_cong refl) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 730 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 731 | by simp | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 732 | qed | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 733 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 734 | show "f w = c" if w: "w \<in> A" for w | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 735 | using eq[OF w not_pole[OF w]] . | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 736 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 737 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 738 | subsection \<open>Closure properties and proofs for individual functions\<close> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 739 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 740 | lemma meromorphic_on_const [intro, meromorphic_intros]: "(\<lambda>_. c) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 741 | by (rule analytic_on_imp_meromorphic_on) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 742 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 743 | lemma meromorphic_on_id [intro, meromorphic_intros]: "(\<lambda>w. w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 744 | by (auto simp: meromorphic_on_def intro!: exI laurent_expansion_intros) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 745 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 746 | lemma meromorphic_on_id' [intro, meromorphic_intros]: "id meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 747 | by (auto simp: meromorphic_on_def intro!: exI laurent_expansion_intros) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 748 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 749 | lemma meromorphic_on_add [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 750 | assumes "f meromorphic_on A" "g meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 751 | shows "(\<lambda>w. f w + g w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 752 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 753 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 754 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 755 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 756 | lemma meromorphic_on_uminus [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 757 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 758 | shows "(\<lambda>w. -f w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 759 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 760 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 761 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 762 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 763 | lemma meromorphic_on_diff [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 764 | assumes "f meromorphic_on A" "g meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 765 | shows "(\<lambda>w. f w - g w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 766 | using meromorphic_on_add[OF assms(1) meromorphic_on_uminus[OF assms(2)]] by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 767 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 768 | lemma meromorphic_on_mult [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 769 | assumes "f meromorphic_on A" "g meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 770 | shows "(\<lambda>w. f w * g w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 771 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 772 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 773 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 774 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 775 | lemma meromorphic_on_power [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 776 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 777 | shows "(\<lambda>w. f w ^ n) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 778 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 779 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 780 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 781 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 782 | lemma meromorphic_on_powi [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 783 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 784 | shows "(\<lambda>w. f w powi n) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 785 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 786 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 787 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 788 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 789 | lemma meromorphic_on_scaleR [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 790 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 791 | shows "(\<lambda>w. scaleR x (f w)) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 792 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 793 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 794 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 795 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 796 | lemma meromorphic_on_inverse [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 797 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 798 | shows "(\<lambda>w. inverse (f w)) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 799 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 800 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 801 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 802 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 803 | lemma meromorphic_on_divide [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 804 | assumes "f meromorphic_on A" "g meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 805 | shows "(\<lambda>w. f w / g w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 806 | using meromorphic_on_mult[OF assms(1) meromorphic_on_inverse[OF assms(2)]] | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 807 | by (simp add: field_simps) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 808 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 809 | lemma meromorphic_on_sum [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 810 | assumes "\<And>i. i \<in> I \<Longrightarrow> f i meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 811 | shows "(\<lambda>w. \<Sum>i\<in>I. f i w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 812 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 813 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 814 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 815 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 816 | lemma meromorphic_on_sum_list [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 817 | assumes "\<And>i. i \<in> set fs \<Longrightarrow> f i meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 818 | shows "(\<lambda>w. \<Sum>i\<leftarrow>fs. f i w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 819 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 820 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 821 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 822 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 823 | lemma meromorphic_on_sum_mset [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 824 | assumes "\<And>i. i \<in># I \<Longrightarrow> f i meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 825 | shows "(\<lambda>w. \<Sum>i\<in>#I. f i w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 826 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 827 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 828 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 829 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 830 | lemma meromorphic_on_prod [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 831 | assumes "\<And>i. i \<in> I \<Longrightarrow> f i meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 832 | shows "(\<lambda>w. \<Prod>i\<in>I. f i w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 833 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 834 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 835 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 836 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 837 | lemma meromorphic_on_prod_list [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 838 | assumes "\<And>i. i \<in> set fs \<Longrightarrow> f i meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 839 | shows "(\<lambda>w. \<Prod>i\<leftarrow>fs. f i w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 840 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 841 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 842 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 843 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 844 | lemma meromorphic_on_prod_mset [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 845 | assumes "\<And>i. i \<in># I \<Longrightarrow> f i meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 846 | shows "(\<lambda>w. \<Prod>i\<in>#I. f i w) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 847 | unfolding meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 848 | by (rule laurent_expansion_intros exI ballI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 849 | assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 850 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 851 | lemma meromorphic_on_If [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 852 | assumes "f meromorphic_on A" "g meromorphic_on B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 853 | assumes "\<And>z. z \<in> A \<Longrightarrow> z \<in> B \<Longrightarrow> f z = g z" "open A" "open B" "C \<subseteq> A \<union> B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 854 | shows "(\<lambda>z. if z \<in> A then f z else g z) meromorphic_on C" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 855 | proof (rule meromorphic_on_subset) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 856 | show "(\<lambda>z. if z \<in> A then f z else g z) meromorphic_on (A \<union> B)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 857 | proof (rule meromorphic_on_Un) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 858 | have "(\<lambda>z. if z \<in> A then f z else g z) meromorphic_on A \<longleftrightarrow> f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 859 | proof (rule meromorphic_on_cong) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 860 | fix z assume "z \<in> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 861 | hence "eventually (\<lambda>z. z \<in> A) (at z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 862 | using \<open>open A\<close> by (intro eventually_at_in_open') auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 863 | thus "\<forall>\<^sub>F w in at z. (if w \<in> A then f w else g w) = f w" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 864 | by eventually_elim auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 865 | qed auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 866 | with assms(1) show "(\<lambda>z. if z \<in> A then f z else g z) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 867 | by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 868 | next | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 869 | have "(\<lambda>z. if z \<in> A then f z else g z) meromorphic_on B \<longleftrightarrow> g meromorphic_on B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 870 | proof (rule meromorphic_on_cong) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 871 | fix z assume "z \<in> B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 872 | hence "eventually (\<lambda>z. z \<in> B) (at z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 873 | using \<open>open B\<close> by (intro eventually_at_in_open') auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 874 | thus "\<forall>\<^sub>F w in at z. (if w \<in> A then f w else g w) = g w" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 875 | by eventually_elim (use assms(3) in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 876 | qed auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 877 | with assms(2) show "(\<lambda>z. if z \<in> A then f z else g z) meromorphic_on B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 878 | by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 879 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 880 | qed fact | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 881 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 882 | lemma meromorphic_on_deriv [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 883 | "f meromorphic_on A \<Longrightarrow> deriv f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 884 | by (metis meromorphic_on_def isolated_singularity_at_deriv meromorphic_on_isolated_singularity | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 885 | meromorphic_on_meromorphic_at meromorphic_on_not_essential not_essential_deriv | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 886 | not_essential_has_laurent_expansion) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 887 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 888 | lemma meromorphic_on_higher_deriv [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 889 | "f meromorphic_on A \<Longrightarrow> (deriv ^^ n) f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 890 | by (induction n) (auto intro!: meromorphic_intros) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 891 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 892 | lemma analytic_on_eval_fps [analytic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 893 | assumes "f analytic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 894 | assumes "\<And>z. z \<in> A \<Longrightarrow> norm (f z) < fps_conv_radius F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 895 | shows "(\<lambda>w. eval_fps F (f w)) analytic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 896 | by (rule analytic_on_compose[OF assms(1) analytic_on_eval_fps, unfolded o_def]) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 897 | (use assms(2) in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 898 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 899 | lemma meromorphic_on_eval_fps [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 900 | assumes "f analytic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 901 | assumes "\<And>z. z \<in> A \<Longrightarrow> norm (f z) < fps_conv_radius F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 902 | shows "(\<lambda>w. eval_fps F (f w)) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 903 | by (rule analytic_on_imp_meromorphic_on analytic_intros analytic_on_eval_fps assms)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 904 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 905 | lemma meromorphic_on_eval_fls [meromorphic_intros]: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 906 | assumes "f analytic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 907 | assumes "\<And>z. z \<in> A \<Longrightarrow> norm (f z) < fls_conv_radius F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 908 | shows "(\<lambda>w. eval_fls F (f w)) meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 909 | proof (cases "fls_conv_radius F > 0") | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 910 | case False | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 911 |   with assms(2) have "A = {}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 912 | by (metis all_not_in_conv ereal_less(2) norm_eq_zero order.strict_trans | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 913 | zero_ereal_def zero_less_norm_iff) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 914 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 915 | by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 916 | next | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 917 | case True | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 918 | have F: "eval_fls F has_laurent_expansion F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 919 | using True by (rule eval_fls_has_laurent_expansion) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 920 | show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 921 | proof (rule meromorphic_on_compose[OF _ assms(1)]) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 922 | show "eval_fls F meromorphic_on eball 0 (fls_conv_radius F)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 923 | proof (rule meromorphic_onI_open) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 924 |       show "eval_fls F analytic_on eball 0 (fls_conv_radius F) - {0}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 925 | by (rule analytic_on_eval_fls) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 926 |       show "not_essential (eval_fls F) z" if "z \<in> {0}" for z
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 927 | using that F has_laurent_expansion_not_essential_0 by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 928 | qed (auto simp: islimpt_finite) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 929 | qed (use assms(2) in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 930 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 931 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 932 | lemma meromorphic_on_imp_analytic_cosparse: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 933 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 934 |   shows   "eventually (\<lambda>z. f analytic_on {z}) (cosparse A)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 935 | unfolding eventually_cosparse using assms meromorphic_on_imp_sparse_singularities by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 936 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 937 | lemma meromorphic_on_imp_not_pole_cosparse: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 938 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 939 | shows "eventually (\<lambda>z. \<not>is_pole f z) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 940 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 941 |   have "eventually (\<lambda>z. f analytic_on {z}) (cosparse A)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 942 | by (rule meromorphic_on_imp_analytic_cosparse) fact | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 943 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 944 | by eventually_elim (blast dest: analytic_at_imp_no_pole) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 945 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 946 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 947 | lemma eventually_remove_sings_eq: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 948 | assumes "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 949 | shows "eventually (\<lambda>z. remove_sings f z = f z) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 950 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 951 |   have "eventually (\<lambda>z. f analytic_on {z}) (cosparse A)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 952 | using assms by (rule meromorphic_on_imp_analytic_cosparse) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 953 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 954 | by eventually_elim auto | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 955 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 956 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 957 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 958 | text \<open> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 959 | A meromorphic function on a connected domain takes any given value either almost everywhere | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 960 | or almost nowhere. | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 961 | \<close> | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 962 | lemma meromorphic_imp_constant_or_avoid: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 963 | assumes mero: "f meromorphic_on A" and A: "open A" "connected A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 964 | shows "eventually (\<lambda>z. f z = c) (cosparse A) \<or> eventually (\<lambda>z. f z \<noteq> c) (cosparse A)" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 965 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 966 | have "eventually (\<lambda>z. f z = c) (cosparse A)" if freq: "frequently (\<lambda>z. f z = c) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 967 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 968 | let ?f = "remove_sings f" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 969 | have ev: "eventually (\<lambda>z. ?f z = f z) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 970 | by (rule eventually_remove_sings_eq) fact | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 971 | have "frequently (\<lambda>z. ?f z = c) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 972 | using frequently_eventually_frequently[OF freq ev] by (rule frequently_elim1) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 973 | then obtain z0 where z0: "z0 \<in> A" "frequently (\<lambda>z. ?f z = c) (at z0)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 974 | using A by (auto simp: eventually_cosparse_open_eq frequently_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 975 | have mero': "?f nicely_meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 976 | using mero remove_sings_nicely_meromorphic by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 977 | have eq: "?f w = c" if w: "w \<in> A" for w | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 978 | using frequently_eq_meromorphic_imp_constant[OF z0(2) mero'] A z0(1) w by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 979 | have "eventually (\<lambda>z. z \<in> A) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 980 | by (rule eventually_in_cosparse) (use A in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 981 | thus "eventually (\<lambda>z. f z = c) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 982 | using ev by eventually_elim (use eq in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 983 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 984 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 985 | by (auto simp: frequently_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 986 | qed | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 987 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 988 | lemma nicely_meromorphic_imp_constant_or_avoid: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 989 | assumes "f nicely_meromorphic_on A" "open A" "connected A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 990 | shows "(\<forall>x\<in>A. f x = c) \<or> (\<forall>\<^sub>\<approx>x\<in>A. f x \<noteq> c)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 991 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 992 | have "(\<forall>\<^sub>\<approx>x\<in>A. f x = c) \<or> (\<forall>\<^sub>\<approx>x\<in>A. f x \<noteq> c)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 993 | by (intro meromorphic_imp_constant_or_avoid) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 994 | (use assms in \<open>auto simp: nicely_meromorphic_on_def\<close>) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 995 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 996 | proof | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 997 | assume ev: "\<forall>\<^sub>\<approx>x\<in>A. f x = c" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 998 | have "\<forall>x\<in>A. f x = c " | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 999 | proof | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1000 | fix x assume x: "x \<in> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1001 | have "not_essential f x" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1002 | using assms x unfolding nicely_meromorphic_on_def by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1003 | moreover have "is_pole f x \<longleftrightarrow> is_pole (\<lambda>_. c) x" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1004 | by (intro is_pole_cong) (use ev x in \<open>auto simp: eventually_cosparse_open_eq assms\<close>) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1005 | hence "\<not>is_pole f x" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1006 | by auto | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1007 |       ultimately have "f analytic_on {x}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1008 | using assms(1) nicely_meromorphic_on_imp_analytic_at x by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1009 | hence "f \<midarrow>x\<rightarrow> f x" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1010 | by (intro isContD analytic_at_imp_isCont) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1011 | also have "?this \<longleftrightarrow> (\<lambda>_. c) \<midarrow>x\<rightarrow> f x" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1012 | by (intro tendsto_cong) (use ev x in \<open>auto simp: eventually_cosparse_open_eq assms\<close>) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1013 | finally have "(\<lambda>_. c) \<midarrow>x\<rightarrow> f x" . | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1014 | moreover have "(\<lambda>_. c) \<midarrow>x\<rightarrow> c" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1015 | by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1016 | ultimately show "f x = c" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1017 | using LIM_unique by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1018 | qed | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1019 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1020 | by blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1021 | qed blast | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1022 | qed | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1023 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1024 | lemma nicely_meromorphic_onE: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1025 | assumes "f nicely_meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1026 | obtains pts where "pts \<subseteq> A" "pts sparse_in A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1027 | "f analytic_on A - pts" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1028 | "\<And>z. z \<in> pts \<Longrightarrow> is_pole f z \<and> f z=0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1029 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1030 |   define pts where "pts = {z \<in> A. \<not> f analytic_on {z}}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1031 | have "pts \<subseteq> A" "pts sparse_in A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1032 | using assms unfolding pts_def nicely_meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1033 | by (auto intro:meromorphic_on_imp_sparse_singularities') | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1034 | moreover have "f analytic_on A - pts" unfolding pts_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1035 | by (subst analytic_on_analytic_at) auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1036 | moreover have "\<And>z. z \<in> pts \<Longrightarrow> is_pole f z \<and> f z=0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1037 | by (metis (no_types, lifting) remove_sings_eqI | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1038 | remove_sings_eq_0_iff assms is_pole_imp_not_essential | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1039 | mem_Collect_eq nicely_meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1040 | nicely_meromorphic_on_imp_analytic_at pts_def) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1041 | ultimately show ?thesis using that by auto | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1042 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1043 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1044 | lemma nicely_meromorphic_onI_open: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1045 | assumes "open A" and | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1046 | analytic:"f analytic_on A - pts" and | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1047 | pole:"\<And>x. x\<in>pts \<Longrightarrow> is_pole f x \<and> f x = 0" and | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1048 | isolated:"\<And>x. x\<in>A \<Longrightarrow> isolated_singularity_at f x" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1049 | shows "f nicely_meromorphic_on A" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1050 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1051 | have "f meromorphic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1052 | proof (rule meromorphic_onI_open) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1053 | show "\<And>z. z \<in> pts \<Longrightarrow> not_essential f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1054 | using pole unfolding not_essential_def by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1055 | show "\<And>z. z \<in> A \<Longrightarrow> \<not> z islimpt pts \<inter> A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1056 | by (metis assms(3) assms(4) inf_commute inf_le2 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1057 | islimpt_subset mem_Collect_eq not_islimpt_poles subsetI) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1058 | qed fact+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1059 | moreover have "(\<forall>z\<in>A. (is_pole f z \<and> f z=0) \<or> f \<midarrow>z\<rightarrow> f z)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1060 | by (meson DiffI analytic analytic_at_imp_isCont | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1061 | analytic_on_analytic_at assms(3) isContD) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1062 | ultimately show ?thesis unfolding nicely_meromorphic_on_def | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1063 | by auto | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1064 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1065 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1066 | lemma nicely_meromorphic_without_singularities: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1067 | assumes "f nicely_meromorphic_on A" "\<forall>z\<in>A. \<not> is_pole f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1068 | shows "f analytic_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1069 | by (meson analytic_on_analytic_at assms | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1070 | nicely_meromorphic_on_imp_analytic_at) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1071 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1072 | lemma meromorphic_on_cong': | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1073 | assumes "eventually (\<lambda>z. f z = g z) (cosparse A)" "A = B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1074 | shows "f meromorphic_on A \<longleftrightarrow> g meromorphic_on B" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1075 | unfolding assms(2)[symmetric] | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1076 | by (rule meromorphic_on_cong eventually_cosparse_imp_eventually_at assms)+ auto | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1077 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1078 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1079 | subsection \<open>Meromorphic functions and zorder\<close> | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1080 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1081 | lemma zorder_power_int: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1082 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1083 | shows "zorder (\<lambda>z. f z powi n) z = n * zorder f z" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1084 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1085 | from assms(1) obtain L where L: "(\<lambda>w. f (z + w)) has_laurent_expansion L" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1086 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1087 | from assms(2) and L have [simp]: "L \<noteq> 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1088 | by (metis assms(1) has_laurent_expansion_eventually_nonzero_iff meromorphic_at_iff | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1089 | not_essential_frequently_0_imp_eventually_0 not_eventually not_frequently) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1090 | from L have L': "(\<lambda>w. f (z + w) powi n) has_laurent_expansion L powi n" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1091 | by (intro laurent_expansion_intros) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1092 | have "zorder f z = fls_subdegree L" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1093 | using L assms(2) \<open>L \<noteq> 0\<close> by (simp add: has_laurent_expansion_zorder) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1094 | moreover have "zorder (\<lambda>z. f z powi n) z = fls_subdegree (L powi n)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1095 | using L' assms(2) \<open>L \<noteq> 0\<close> by (simp add: has_laurent_expansion_zorder) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1096 | moreover have "fls_subdegree (L powi n) = n * fls_subdegree L" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1097 | by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1098 | ultimately show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1099 | by simp | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1100 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1101 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1102 | lemma zorder_power: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1103 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1104 | shows "zorder (\<lambda>z. f z ^ n) z = n * zorder f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1105 | using zorder_power_int[OF assms, of "int n"] by simp | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1106 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1107 | lemma zorder_add1: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1108 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1109 |   assumes "g meromorphic_on {z}" "frequently (\<lambda>z. g z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1110 | assumes "zorder f z < zorder g z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1111 | shows "zorder (\<lambda>z. f z + g z) z = zorder f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1112 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1113 | from assms(1) obtain F where F: "(\<lambda>w. f (z + w)) has_laurent_expansion F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1114 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1115 | from assms(3) obtain G where G: "(\<lambda>w. g (z + w)) has_laurent_expansion G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1116 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1117 | have [simp]: "F \<noteq> 0" "G \<noteq> 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1118 | by (metis assms has_laurent_expansion_eventually_nonzero_iff meromorphic_at_iff | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1119 | not_essential_frequently_0_imp_eventually_0 not_eventually not_frequently F G)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1120 | have *: "zorder f z = fls_subdegree F" "zorder g z = fls_subdegree G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1121 | using F G assms by (simp_all add: has_laurent_expansion_zorder) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1122 | from assms * have "F \<noteq> -G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1123 | by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1124 | hence [simp]: "F + G \<noteq> 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1125 | by (simp add: add_eq_0_iff2) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1126 | moreover have "zorder (\<lambda>z. f z + g z) z = fls_subdegree (F + G)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1127 | using has_laurent_expansion_zorder[OF has_laurent_expansion_add[OF F G]] \<open>F \<noteq> -G\<close> by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1128 | moreover have "fls_subdegree (F + G) = fls_subdegree F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1129 | using assms by (simp add: * fls_subdegree_add_eq1) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1130 | ultimately show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1131 | by (simp add: *) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1132 | qed | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1133 | |
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1134 | lemma zorder_add2: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1135 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1136 |   assumes "g meromorphic_on {z}" "frequently (\<lambda>z. g z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1137 | assumes "zorder f z > zorder g z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1138 | shows "zorder (\<lambda>z. f z + g z) z = zorder g z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1139 | using zorder_add1[OF assms(3,4) assms(1,2)] assms(5-) by (simp add: add.commute) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1140 | |
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1141 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1142 | lemma zorder_add_ge: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1143 | fixes f g :: "complex \<Rightarrow> complex" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1144 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1145 |   assumes "g meromorphic_on {z}" "frequently (\<lambda>z. g z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1146 | assumes "frequently (\<lambda>z. f z + g z \<noteq> 0) (at z)" "zorder f z \<ge> c" "zorder g z \<ge> c" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1147 | shows "zorder (\<lambda>z. f z + g z) z \<ge> c" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1148 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1149 | from assms(1) obtain F where F: "(\<lambda>w. f (z + w)) has_laurent_expansion F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1150 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1151 | from assms(3) obtain G where G: "(\<lambda>w. g (z + w)) has_laurent_expansion G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1152 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1153 | have [simp]: "F \<noteq> 0" "G \<noteq> 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1154 | using assms F G has_laurent_expansion_frequently_nonzero_iff by blast+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1155 | have FG: "(\<lambda>w. f (z + w) + g (z + w)) has_laurent_expansion F + G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1156 | by (intro laurent_expansion_intros F G) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1157 | have [simp]: "F + G \<noteq> 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1158 | using assms(5) has_laurent_expansion_frequently_nonzero_iff[OF FG] by blast | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1159 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1160 | have *: "zorder f z = fls_subdegree F" "zorder g z = fls_subdegree G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1161 | "zorder (\<lambda>z. f z + g z) z = fls_subdegree (F + G)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1162 | using F G FG has_laurent_expansion_zorder by simp_all | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1163 | moreover have "zorder (\<lambda>z. f z + g z) z = fls_subdegree (F + G)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1164 | using has_laurent_expansion_zorder[OF has_laurent_expansion_add[OF F G]] by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1165 | moreover have "fls_subdegree (F + G) \<ge> min (fls_subdegree F) (fls_subdegree G)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1166 | by (intro fls_plus_subdegree) simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1167 | ultimately show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1168 | using assms(6,7) unfolding * by linarith | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1169 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1170 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1171 | lemma zorder_diff_ge: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1172 | fixes f g :: "complex \<Rightarrow> complex" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1173 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1174 |   assumes "g meromorphic_on {z}" "frequently (\<lambda>z. g z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1175 | assumes "frequently (\<lambda>z. f z \<noteq> g z) (at z)" "zorder f z \<ge> c" "zorder g z \<ge> c" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1176 | shows "zorder (\<lambda>z. f z - g z) z \<ge> c" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1177 | proof - | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1178 |   have "(\<lambda>z. - g z) meromorphic_on {z}"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1179 | by (auto intro: meromorphic_intros assms) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1180 | thus ?thesis | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1181 | using zorder_add_ge[of f z "\<lambda>z. -g z" c] assms by simp | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1182 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1183 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1184 | lemma zorder_diff1: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1185 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1186 |   assumes "g meromorphic_on {z}" "frequently (\<lambda>z. g z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1187 | assumes "zorder f z < zorder g z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1188 | shows "zorder (\<lambda>z. f z - g z) z = zorder f z" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1189 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1190 | have "zorder (\<lambda>z. f z + (-g z)) z = zorder f z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1191 | by (intro zorder_add1 meromorphic_intros assms) (use assms in auto) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1192 | thus ?thesis | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1193 | by simp | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1194 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1195 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1196 | lemma zorder_diff2: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1197 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1198 |   assumes "g meromorphic_on {z}" "frequently (\<lambda>z. g z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1199 | assumes "zorder f z > zorder g z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1200 | shows "zorder (\<lambda>z. f z - g z) z = zorder g z" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1201 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1202 | have "zorder (\<lambda>z. f z + (-g z)) z = zorder (\<lambda>z. -g z) z" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1203 | by (intro zorder_add2 meromorphic_intros assms) (use assms in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1204 | thus ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1205 | by simp | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1206 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1207 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1208 | lemma zorder_mult: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1209 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1210 |   assumes "g meromorphic_on {z}" "frequently (\<lambda>z. g z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1211 | shows "zorder (\<lambda>z. f z * g z) z = zorder f z + zorder g z" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1212 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1213 | from assms(1) obtain F where F: "(\<lambda>w. f (z + w)) has_laurent_expansion F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1214 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1215 | from assms(3) obtain G where G: "(\<lambda>w. g (z + w)) has_laurent_expansion G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1216 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1217 | have [simp]: "F \<noteq> 0" "G \<noteq> 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1218 | by (metis assms has_laurent_expansion_eventually_nonzero_iff meromorphic_at_iff | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1219 | not_essential_frequently_0_imp_eventually_0 not_eventually not_frequently F G)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1220 | have *: "zorder f z = fls_subdegree F" "zorder g z = fls_subdegree G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1221 | using F G assms by (simp_all add: has_laurent_expansion_zorder) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1222 | moreover have "zorder (\<lambda>z. f z * g z) z = fls_subdegree (F * G)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1223 | using has_laurent_expansion_zorder[OF has_laurent_expansion_mult[OF F G]] by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1224 | moreover have "fls_subdegree (F * G) = fls_subdegree F + fls_subdegree G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1225 | using assms by simp | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1226 | ultimately show ?thesis | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1227 | by (simp add: *) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1228 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1229 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1230 | lemma zorder_divide: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1231 |   assumes "f meromorphic_on {z}" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1232 |   assumes "g meromorphic_on {z}" "frequently (\<lambda>z. g z \<noteq> 0) (at z)"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1233 | shows "zorder (\<lambda>z. f z / g z) z = zorder f z - zorder g z" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1234 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1235 | from assms(1) obtain F where F: "(\<lambda>w. f (z + w)) has_laurent_expansion F" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1236 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1237 | from assms(3) obtain G where G: "(\<lambda>w. g (z + w)) has_laurent_expansion G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1238 | by (auto simp: meromorphic_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1239 | have [simp]: "F \<noteq> 0" "G \<noteq> 0" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1240 | by (metis assms has_laurent_expansion_eventually_nonzero_iff meromorphic_at_iff | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1241 | not_essential_frequently_0_imp_eventually_0 not_eventually not_frequently F G)+ | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1242 | have *: "zorder f z = fls_subdegree F" "zorder g z = fls_subdegree G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1243 | using F G assms by (simp_all add: has_laurent_expansion_zorder) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1244 | moreover have "zorder (\<lambda>z. f z / g z) z = fls_subdegree (F / G)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1245 | using has_laurent_expansion_zorder[OF has_laurent_expansion_divide[OF F G]] by simp | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1246 | moreover have "fls_subdegree (F / G) = fls_subdegree F - fls_subdegree G" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1247 | using assms by (simp add: fls_divide_subdegree) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1248 | ultimately show ?thesis | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1249 | by (simp add: *) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1250 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1251 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1252 | lemma constant_on_extend_nicely_meromorphic_on: | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1253 | assumes "f nicely_meromorphic_on B" "f constant_on A" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1254 |   assumes "open A" "open B" "connected B" "A \<noteq> {}" "A \<subseteq> B"
 | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1255 | shows "f constant_on B" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1256 | proof - | 
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1257 | from assms obtain c where c: "\<And>z. z \<in> A \<Longrightarrow> f z = c" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1258 | by (auto simp: constant_on_def) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1259 | have "eventually (\<lambda>z. z \<in> A) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1260 | by (intro eventually_in_cosparse assms order.refl) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1261 | hence "eventually (\<lambda>z. f z = c) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1262 | by eventually_elim (use c in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1263 | hence freq: "frequently (\<lambda>z. f z = c) (cosparse A)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1264 | by (intro eventually_frequently) (use assms in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1265 | then obtain z0 where z0: "z0 \<in> A" "frequently (\<lambda>z. f z = c) (at z0)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1266 | using assms by (auto simp: frequently_def eventually_cosparse_open_eq) | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1267 | |
| 79857 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1268 | have "f z = c" if "z \<in> B" for z | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1269 | proof (rule frequently_eq_meromorphic_imp_constant[OF _ assms(1)]) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1270 | show "z0 \<in> B" "frequently (\<lambda>z. f z = c) (at z0)" | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1271 | using z0 assms by auto | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1272 | qed (use assms that in auto) | 
| 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 paulson <lp15@cam.ac.uk> parents: 
78698diff
changeset | 1273 | thus "f constant_on B" | 
| 77277 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1274 | by (auto simp: constant_on_def) | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1275 | qed | 
| 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 paulson <lp15@cam.ac.uk> parents: diff
changeset | 1276 | |
| 78698 | 1277 | end |