| author | wenzelm | 
| Tue, 05 Nov 2024 22:05:50 +0100 | |
| changeset 81350 | 1818358373e2 | 
| parent 80914 | d97fdabd9e2b | 
| child 82459 | a1de627d417a | 
| permissions | -rw-r--r-- | 
| 
80072
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
changeset
 | 
1  | 
(*  | 
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
changeset
 | 
2  | 
Authors: Manuel Eberl, University of Innsbruck  | 
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
changeset
 | 
3  | 
Wenda Li, University of Edinburgh  | 
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
changeset
 | 
4  | 
*)  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
5  | 
theory Meromorphic imports  | 
| 
79933
 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
79864 
diff
changeset
 | 
6  | 
Laurent_Convergence  | 
| 
 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
79864 
diff
changeset
 | 
7  | 
Cauchy_Integral_Formula  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
79857 
diff
changeset
 | 
11  | 
subsection \<open>Remove singular points\<close>  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
12  | 
|
| 
80072
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
changeset
 | 
13  | 
text \<open>  | 
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
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: 
79945 
diff
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: 
79945 
diff
changeset
 | 
16  | 
unremovable discontinuities) are set to 0.  | 
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
changeset
 | 
17  | 
|
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
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: 
79945 
diff
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: 
79945 
diff
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: 
79945 
diff
changeset
 | 
21  | 
|
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
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: 
79945 
diff
changeset
 | 
23  | 
\<close>  | 
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
79945 
diff
changeset
 | 
245  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
79945 
diff
changeset
 | 
248  | 
text \<open>  | 
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
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: 
79945 
diff
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: 
79945 
diff
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: 
79945 
diff
changeset
 | 
252  | 
|
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
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: 
79945 
diff
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: 
79945 
diff
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: 
79945 
diff
changeset
 | 
256  | 
|
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
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: 
79945 
diff
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: 
79945 
diff
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: 
79945 
diff
changeset
 | 
260  | 
|
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
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: 
79945 
diff
changeset
 | 
262  | 
\<close>  | 
| 
 
33a9b1d6a651
added documentation for meromorphicity etc. in HOL-Complex_Analysis
 
Manuel Eberl <manuel@pruvisto.org> 
parents: 
79945 
diff
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: 
80072 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
268  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
275  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
276  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
277  | 
lemma meromorphic_on_def':  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
280  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
284  | 
lemma meromorphic_on_altdef:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
288  | 
lemma meromorphic_on_cong:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
291  | 
unfolding meromorphic_on_def using assms  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
298  | 
lemma meromorphic_on_Un:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
300  | 
shows "f meromorphic_on (A \<union> B)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
303  | 
lemma meromorphic_on_Union:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
305  | 
shows "f meromorphic_on (\<Union>B)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
308  | 
lemma meromorphic_on_UN:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
313  | 
lemma meromorphic_on_imp_has_laurent_expansion:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
318  | 
lemma meromorphic_on_open_nhd:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
319  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
325  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
329  | 
using open_translation by auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
332  | 
ultimately show ?thesis by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
333  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
334  | 
then obtain Z where Z:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
339  | 
show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
340  | 
proof (rule that[of B])  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
341  | 
show "open B"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
342  | 
using Z unfolding B_def by auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
343  | 
show "A \<subseteq> B"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
345  | 
show "f meromorphic_on B"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
346  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
347  | 
proof  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
348  | 
fix z assume z: "z \<in> B"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
350  | 
proof (cases "z \<in> A")  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
351  | 
case True  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
352  | 
thus ?thesis using F by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
360  | 
proof (intro analytic_at_cong refl)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
365  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
366  | 
finally show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
373  | 
lemma meromorphic_on_not_essential:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
374  | 
  assumes "f meromorphic_on {z}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
375  | 
shows "not_essential f z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
378  | 
lemma meromorphic_on_isolated_singularity:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
379  | 
  assumes "f meromorphic_on {z}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
380  | 
shows "isolated_singularity_at f z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
383  | 
lemma meromorphic_on_imp_not_islimpt_singularities:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
401  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
402  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
403  | 
lemma meromorphic_on_imp_sparse_singularities:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
404  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
408  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
409  | 
lemma meromorphic_on_imp_sparse_singularities':  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
410  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
413  | 
by (rule sparse_in_subset2) auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
414  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
415  | 
lemma meromorphic_onE:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
416  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
419  | 
proof (rule that)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
426  | 
lemma meromorphic_onI_weak:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
428  | 
          "pts \<inter> frontier A = {}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
429  | 
shows "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
430  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
431  | 
proof  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
432  | 
fix z assume z: "z \<in> A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
434  | 
proof (cases "z \<in> pts")  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
435  | 
case False  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
436  | 
    have "f analytic_on {z}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
438  | 
thus ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
440  | 
not_essential_has_laurent_expansion by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
441  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
442  | 
case True  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
443  | 
show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
445  | 
show "not_essential f z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
446  | 
using assms(2) True by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
447  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
448  | 
show "isolated_singularity_at f z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
449  | 
proof (rule isolated_singularity_at_holomorphic)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
450  | 
        show "open (interior A - (pts - {z}))"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
451  | 
proof (rule open_diff_sparse_pts)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
452  | 
          show "pts - {z} sparse_in interior A"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
454  | 
qed auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
455  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
459  | 
by (rule analytic_imp_holomorphic)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
460  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
463  | 
        thus "z \<in> interior A - (pts - {z})"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
464  | 
by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
465  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
466  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
470  | 
lemma meromorphic_onI_open:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
473  | 
shows "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
474  | 
proof (rule meromorphic_onI_weak)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
475  | 
have *: "A - pts \<inter> A = A - pts"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
476  | 
by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
478  | 
unfolding * by fact  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
479  | 
show "pts \<inter> A sparse_in A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
482  | 
using assms(3) that by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
483  | 
  show "pts \<inter> A \<inter> frontier A = {}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
485  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
486  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
487  | 
lemma meromorphic_at_isCont_imp_analytic:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
489  | 
  shows   "f analytic_on {z}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
490  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
500  | 
by (intro isContD analytic_at_imp_isCont **)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
502  | 
by (intro filterlim_cong refl)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
505  | 
by simp  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
507  | 
by (auto intro: isContD)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
509  | 
by (rule LIM_unique)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
510  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
516  | 
by (intro analytic_at_cong refl)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
517  | 
with ** show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
518  | 
by simp  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
519  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
520  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
521  | 
lemma analytic_on_imp_meromorphic_on:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
522  | 
assumes "f analytic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
523  | 
shows "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
525  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
526  | 
lemma meromorphic_on_compose:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
531  | 
fix z assume z: "z \<in> B"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
532  | 
  have "f analytic_on {z}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
535  | 
by (intro analytic_intros)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
538  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
540  | 
by auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
543  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
547  | 
show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
551  | 
show "fps_nth F 0 = 0"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
557  | 
by auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
561  | 
case 1  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
565  | 
by (simp add: eventually_nhds_conv_at)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
566  | 
thus ?case  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
567  | 
by eventually_elim auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
568  | 
qed auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
569  | 
finally show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
573  | 
by (simp add: o_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
574  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
575  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
576  | 
lemma constant_on_imp_meromorphic_on:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
577  | 
assumes "f constant_on A" "open A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
578  | 
shows "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
579  | 
using assms analytic_on_imp_meromorphic_on  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
580  | 
constant_on_imp_analytic_on  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
581  | 
by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
582  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
585  | 
text \<open>  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
79945 
diff
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: 
78698 
diff
changeset
 | 
589  | 
\<close>  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
80072 
diff
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: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
594  | 
|
| 
79933
 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
79864 
diff
changeset
 | 
595  | 
lemma nicely_meromorphic_on_subset:  | 
| 
 
3f415c76a511
more general definition of meromorphicity; Weierstraß factorisation theorem
 
Manuel Eberl <eberlm@in.tum.de> 
parents: 
79864 
diff
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: 
79864 
diff
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: 
79864 
diff
changeset
 | 
598  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
599  | 
lemma constant_on_imp_nicely_meromorphic_on:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
600  | 
assumes "f constant_on A" "open A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
601  | 
shows "f nicely_meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
602  | 
by (meson analytic_at_imp_isCont assms  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
603  | 
constant_on_imp_holomorphic_on  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
604  | 
constant_on_imp_meromorphic_on  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
605  | 
holomorphic_on_imp_analytic_at isCont_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
608  | 
lemma nicely_meromorphic_on_imp_analytic_at:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
610  | 
  shows   "f analytic_on {z}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
611  | 
proof (rule meromorphic_at_isCont_imp_analytic)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
612  | 
  show "f meromorphic_on {z}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
614  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
616  | 
by (auto simp: nicely_meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
617  | 
thus "isCont f z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
618  | 
by (auto simp: isCont_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
619  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
620  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
621  | 
lemma remove_sings_meromorphic [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
622  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
623  | 
shows "remove_sings f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
624  | 
unfolding meromorphic_on_def  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
625  | 
proof safe  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
626  | 
fix z assume z: "z \<in> A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
627  | 
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: 
78698 
diff
changeset
 | 
628  | 
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: 
78698 
diff
changeset
 | 
629  | 
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: 
78698 
diff
changeset
 | 
630  | 
qed  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
631  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
632  | 
lemma remove_sings_nicely_meromorphic:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
633  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
634  | 
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
 | 
635  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
636  | 
have "remove_sings f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
637  | 
by (simp add: assms remove_sings_meromorphic)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
638  | 
moreover have "is_pole (remove_sings f) z  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
639  | 
\<and> remove_sings f z = 0 \<or>  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
640  | 
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: 
78698 
diff
changeset
 | 
641  | 
if "z\<in>A" for z  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
642  | 
proof (cases "\<exists>c. f \<midarrow>z\<rightarrow> c")  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
643  | 
case True  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
644  | 
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: 
78698 
diff
changeset
 | 
645  | 
by (metis remove_sings_eqI tendsto_remove_sings_iff  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
646  | 
assms meromorphic_onE that)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
647  | 
then show ?thesis by simp  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
648  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
649  | 
case False  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
650  | 
then have "is_pole (remove_sings f) z  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
651  | 
\<and> remove_sings f z = 0"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
652  | 
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: 
78698 
diff
changeset
 | 
653  | 
remove_sings_eq_0_iff assms meromorphic_onE that)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
654  | 
then show ?thesis by simp  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
655  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
656  | 
ultimately show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
657  | 
unfolding nicely_meromorphic_on_def by simp  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
658  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
659  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
660  | 
text \<open>  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
661  | 
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: 
78698 
diff
changeset
 | 
662  | 
point is constant.  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
663  | 
\<close>  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
664  | 
lemma frequently_eq_meromorphic_imp_constant:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
665  | 
assumes "frequently (\<lambda>z. f z = c) (at z)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
666  | 
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: 
78698 
diff
changeset
 | 
667  | 
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: 
78698 
diff
changeset
 | 
668  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
669  | 
from assms(2) have mero: "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
670  | 
by (auto simp: nicely_meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
671  | 
  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: 
78698 
diff
changeset
 | 
672  | 
using assms(2) mero  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
673  | 
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: 
78698 
diff
changeset
 | 
674  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
675  | 
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
 | 
676  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
677  | 
have "f w - c = 0"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
678  | 
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: 
78698 
diff
changeset
 | 
679  | 
      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: 
78698 
diff
changeset
 | 
680  | 
by (intro holomorphic_intros)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
681  | 
(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: 
78698 
diff
changeset
 | 
682  | 
mem_Collect_eq nicely_meromorphic_on_imp_analytic_at)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
683  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
684  | 
      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: 
78698 
diff
changeset
 | 
685  | 
by (simp add: open_diff_sparse_pts)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
686  | 
      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: 
78698 
diff
changeset
 | 
687  | 
by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
688  | 
finally show "open \<dots>" .  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
689  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
690  | 
      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: 
78698 
diff
changeset
 | 
691  | 
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: 
78698 
diff
changeset
 | 
692  | 
      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: 
78698 
diff
changeset
 | 
693  | 
by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
694  | 
finally show "connected \<dots>" .  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
695  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
696  | 
have "eventually (\<lambda>w. w \<in> A) (at z)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
697  | 
using assms by (intro eventually_at_in_open') auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
698  | 
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: 
78698 
diff
changeset
 | 
699  | 
by (metis assms(5) eventually_not_pole meromorphic_onE)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
700  | 
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: 
78698 
diff
changeset
 | 
701  | 
by eventually_elim auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
702  | 
      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: 
78698 
diff
changeset
 | 
703  | 
using frequently_eventually_frequently[OF assms(1) ev]  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
704  | 
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: 
78698 
diff
changeset
 | 
705  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
706  | 
from assms(1) have "\<not>is_pole f z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
707  | 
by (simp add: frequently_const_imp_not_is_pole)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
708  | 
      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: 
78698 
diff
changeset
 | 
709  | 
by auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
710  | 
qed (use w in auto)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
711  | 
thus "f w = c"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
712  | 
by simp  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
713  | 
qed  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
714  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
715  | 
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
 | 
716  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
717  | 
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: 
78698 
diff
changeset
 | 
718  | 
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: 
78698 
diff
changeset
 | 
719  | 
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: 
78698 
diff
changeset
 | 
720  | 
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: 
78698 
diff
changeset
 | 
721  | 
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: 
78698 
diff
changeset
 | 
722  | 
by eventually_elim (auto simp: eq)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
723  | 
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: 
78698 
diff
changeset
 | 
724  | 
by (intro is_pole_cong refl)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
725  | 
thus ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
726  | 
by simp  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
727  | 
qed  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
728  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
729  | 
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: 
78698 
diff
changeset
 | 
730  | 
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
 | 
731  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
732  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
733  | 
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: 
78698 
diff
changeset
 | 
734  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
735  | 
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: 
78698 
diff
changeset
 | 
736  | 
by (rule analytic_on_imp_meromorphic_on) auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
737  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
738  | 
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: 
78698 
diff
changeset
 | 
739  | 
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: 
78698 
diff
changeset
 | 
740  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
741  | 
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: 
78698 
diff
changeset
 | 
742  | 
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: 
78698 
diff
changeset
 | 
743  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
744  | 
lemma meromorphic_on_add [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
745  | 
assumes "f meromorphic_on A" "g meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
746  | 
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: 
78698 
diff
changeset
 | 
747  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
748  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
749  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
750  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
751  | 
lemma meromorphic_on_uminus [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
752  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
753  | 
shows "(\<lambda>w. -f w) meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
754  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
755  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
756  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
757  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
758  | 
lemma meromorphic_on_diff [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
759  | 
assumes "f meromorphic_on A" "g meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
760  | 
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: 
78698 
diff
changeset
 | 
761  | 
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: 
78698 
diff
changeset
 | 
762  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
763  | 
lemma meromorphic_on_mult [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
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: 
78698 
diff
changeset
 | 
766  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
767  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
768  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
769  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
770  | 
lemma meromorphic_on_power [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
771  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
772  | 
shows "(\<lambda>w. f w ^ n) meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
773  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
774  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
775  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
776  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
777  | 
lemma meromorphic_on_powi [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
778  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
779  | 
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: 
78698 
diff
changeset
 | 
780  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
781  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
782  | 
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
 | 
783  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
784  | 
lemma meromorphic_on_scaleR [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
785  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
786  | 
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: 
78698 
diff
changeset
 | 
787  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
788  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
789  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
790  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
791  | 
lemma meromorphic_on_inverse [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
792  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
793  | 
shows "(\<lambda>w. inverse (f w)) meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
794  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
795  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
796  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
797  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
798  | 
lemma meromorphic_on_divide [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
799  | 
assumes "f meromorphic_on A" "g meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
800  | 
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: 
78698 
diff
changeset
 | 
801  | 
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: 
78698 
diff
changeset
 | 
802  | 
by (simp add: field_simps)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
803  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
804  | 
lemma meromorphic_on_sum [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
805  | 
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: 
78698 
diff
changeset
 | 
806  | 
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: 
78698 
diff
changeset
 | 
807  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
808  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
809  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
810  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
811  | 
lemma meromorphic_on_sum_list [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
812  | 
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: 
78698 
diff
changeset
 | 
813  | 
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: 
78698 
diff
changeset
 | 
814  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
815  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
816  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
817  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
818  | 
lemma meromorphic_on_sum_mset [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
819  | 
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: 
78698 
diff
changeset
 | 
820  | 
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: 
78698 
diff
changeset
 | 
821  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
822  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
823  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
824  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
825  | 
lemma meromorphic_on_prod [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
826  | 
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: 
78698 
diff
changeset
 | 
827  | 
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: 
78698 
diff
changeset
 | 
828  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
829  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
830  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
831  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
832  | 
lemma meromorphic_on_prod_list [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
833  | 
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: 
78698 
diff
changeset
 | 
834  | 
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: 
78698 
diff
changeset
 | 
835  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
836  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
837  | 
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
 | 
838  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
839  | 
lemma meromorphic_on_prod_mset [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
840  | 
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: 
78698 
diff
changeset
 | 
841  | 
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: 
78698 
diff
changeset
 | 
842  | 
unfolding meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
843  | 
by (rule laurent_expansion_intros exI ballI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
844  | 
assms[THEN meromorphic_on_imp_has_laurent_expansion] | assumption)+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
845  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
846  | 
lemma meromorphic_on_If [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
847  | 
assumes "f meromorphic_on A" "g meromorphic_on B"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
848  | 
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: 
78698 
diff
changeset
 | 
849  | 
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: 
78698 
diff
changeset
 | 
850  | 
proof (rule meromorphic_on_subset)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
851  | 
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: 
78698 
diff
changeset
 | 
852  | 
proof (rule meromorphic_on_Un)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
853  | 
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: 
78698 
diff
changeset
 | 
854  | 
proof (rule meromorphic_on_cong)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
855  | 
fix z assume "z \<in> A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
856  | 
hence "eventually (\<lambda>z. z \<in> A) (at z)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
857  | 
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: 
78698 
diff
changeset
 | 
858  | 
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: 
78698 
diff
changeset
 | 
859  | 
by eventually_elim auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
860  | 
qed auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
861  | 
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: 
78698 
diff
changeset
 | 
862  | 
by blast  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
863  | 
next  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
864  | 
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: 
78698 
diff
changeset
 | 
865  | 
proof (rule meromorphic_on_cong)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
866  | 
fix z assume "z \<in> B"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
867  | 
hence "eventually (\<lambda>z. z \<in> B) (at z)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
868  | 
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: 
78698 
diff
changeset
 | 
869  | 
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: 
78698 
diff
changeset
 | 
870  | 
by eventually_elim (use assms(3) in auto)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
871  | 
qed auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
872  | 
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: 
78698 
diff
changeset
 | 
873  | 
by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
874  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
875  | 
qed fact  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
876  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
877  | 
lemma meromorphic_on_deriv [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
878  | 
"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: 
78698 
diff
changeset
 | 
879  | 
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: 
78698 
diff
changeset
 | 
880  | 
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: 
78698 
diff
changeset
 | 
881  | 
not_essential_has_laurent_expansion)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
882  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
883  | 
lemma meromorphic_on_higher_deriv [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
884  | 
"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: 
78698 
diff
changeset
 | 
885  | 
by (induction n) (auto intro!: meromorphic_intros)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
886  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
887  | 
lemma analytic_on_eval_fps [analytic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
888  | 
assumes "f analytic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
889  | 
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: 
78698 
diff
changeset
 | 
890  | 
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: 
78698 
diff
changeset
 | 
891  | 
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: 
78698 
diff
changeset
 | 
892  | 
(use assms(2) in auto)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
893  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
894  | 
lemma meromorphic_on_eval_fps [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
895  | 
assumes "f analytic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
896  | 
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: 
78698 
diff
changeset
 | 
897  | 
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: 
78698 
diff
changeset
 | 
898  | 
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: 
78698 
diff
changeset
 | 
899  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
900  | 
lemma meromorphic_on_eval_fls [meromorphic_intros]:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
901  | 
assumes "f analytic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
902  | 
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: 
78698 
diff
changeset
 | 
903  | 
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: 
78698 
diff
changeset
 | 
904  | 
proof (cases "fls_conv_radius F > 0")  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
905  | 
case False  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
906  | 
  with assms(2) have "A = {}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
907  | 
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: 
78698 
diff
changeset
 | 
908  | 
zero_ereal_def zero_less_norm_iff)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
909  | 
thus ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
910  | 
by auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
911  | 
next  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
912  | 
case True  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
913  | 
have F: "eval_fls F has_laurent_expansion F"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
914  | 
using True by (rule eval_fls_has_laurent_expansion)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
915  | 
show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
916  | 
proof (rule meromorphic_on_compose[OF _ assms(1)])  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
917  | 
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: 
78698 
diff
changeset
 | 
918  | 
proof (rule meromorphic_onI_open)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
919  | 
      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: 
78698 
diff
changeset
 | 
920  | 
by (rule analytic_on_eval_fls) auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
921  | 
      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: 
78698 
diff
changeset
 | 
922  | 
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: 
78698 
diff
changeset
 | 
923  | 
qed (auto simp: islimpt_finite)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
924  | 
qed (use assms(2) in auto)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
925  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
926  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
927  | 
lemma meromorphic_on_imp_analytic_cosparse:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
928  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
929  | 
  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: 
78698 
diff
changeset
 | 
930  | 
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: 
78698 
diff
changeset
 | 
931  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
932  | 
lemma meromorphic_on_imp_not_pole_cosparse:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
933  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
934  | 
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: 
78698 
diff
changeset
 | 
935  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
936  | 
  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: 
78698 
diff
changeset
 | 
937  | 
by (rule meromorphic_on_imp_analytic_cosparse) fact  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
938  | 
thus ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
939  | 
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: 
78698 
diff
changeset
 | 
940  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
941  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
942  | 
lemma eventually_remove_sings_eq:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
943  | 
assumes "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
944  | 
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: 
78698 
diff
changeset
 | 
945  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
946  | 
  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: 
78698 
diff
changeset
 | 
947  | 
using assms by (rule meromorphic_on_imp_analytic_cosparse)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
948  | 
thus ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
949  | 
by eventually_elim auto  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
950  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
951  | 
|
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
952  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
953  | 
text \<open>  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
954  | 
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: 
78698 
diff
changeset
 | 
955  | 
or almost nowhere.  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
956  | 
\<close>  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
957  | 
lemma meromorphic_imp_constant_or_avoid:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
958  | 
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: 
78698 
diff
changeset
 | 
959  | 
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
 | 
960  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
961  | 
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: 
78698 
diff
changeset
 | 
962  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
963  | 
let ?f = "remove_sings f"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
964  | 
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: 
78698 
diff
changeset
 | 
965  | 
by (rule eventually_remove_sings_eq) fact  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
966  | 
have "frequently (\<lambda>z. ?f z = c) (cosparse A)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
967  | 
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: 
78698 
diff
changeset
 | 
968  | 
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: 
78698 
diff
changeset
 | 
969  | 
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: 
78698 
diff
changeset
 | 
970  | 
have mero': "?f nicely_meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
971  | 
using mero remove_sings_nicely_meromorphic by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
972  | 
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: 
78698 
diff
changeset
 | 
973  | 
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: 
78698 
diff
changeset
 | 
974  | 
have "eventually (\<lambda>z. z \<in> A) (cosparse A)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
975  | 
by (rule eventually_in_cosparse) (use A in auto)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
976  | 
thus "eventually (\<lambda>z. f z = c) (cosparse A)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
977  | 
using ev by eventually_elim (use eq in auto)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
978  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
979  | 
thus ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
980  | 
by (auto simp: frequently_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
981  | 
qed  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
982  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
983  | 
lemma nicely_meromorphic_imp_constant_or_avoid:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
984  | 
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: 
78698 
diff
changeset
 | 
985  | 
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: 
78698 
diff
changeset
 | 
986  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
987  | 
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: 
78698 
diff
changeset
 | 
988  | 
by (intro meromorphic_imp_constant_or_avoid)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
989  | 
(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: 
78698 
diff
changeset
 | 
990  | 
thus ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
991  | 
proof  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
992  | 
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: 
78698 
diff
changeset
 | 
993  | 
have "\<forall>x\<in>A. f x = c "  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
994  | 
proof  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
995  | 
fix x assume x: "x \<in> A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
996  | 
have "not_essential f x"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
997  | 
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: 
78698 
diff
changeset
 | 
998  | 
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: 
78698 
diff
changeset
 | 
999  | 
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: 
78698 
diff
changeset
 | 
1000  | 
hence "\<not>is_pole f x"  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1001  | 
by auto  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1002  | 
      ultimately have "f analytic_on {x}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1003  | 
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: 
78698 
diff
changeset
 | 
1004  | 
hence "f \<midarrow>x\<rightarrow> f x"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1005  | 
by (intro isContD analytic_at_imp_isCont)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1006  | 
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: 
78698 
diff
changeset
 | 
1007  | 
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: 
78698 
diff
changeset
 | 
1008  | 
finally have "(\<lambda>_. c) \<midarrow>x\<rightarrow> f x" .  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1009  | 
moreover have "(\<lambda>_. c) \<midarrow>x\<rightarrow> c"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1010  | 
by simp  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1011  | 
ultimately show "f x = c"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1012  | 
using LIM_unique by blast  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1013  | 
qed  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1014  | 
thus ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1015  | 
by blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1016  | 
qed blast  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1017  | 
qed  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1018  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1019  | 
lemma nicely_meromorphic_onE:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1020  | 
assumes "f nicely_meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1021  | 
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: 
78698 
diff
changeset
 | 
1022  | 
"f analytic_on A - pts"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1023  | 
"\<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: 
78698 
diff
changeset
 | 
1024  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1025  | 
  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: 
78698 
diff
changeset
 | 
1026  | 
have "pts \<subseteq> A" "pts sparse_in A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1027  | 
using assms unfolding pts_def nicely_meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1028  | 
by (auto intro:meromorphic_on_imp_sparse_singularities')  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1029  | 
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: 
78698 
diff
changeset
 | 
1030  | 
by (subst analytic_on_analytic_at) auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1031  | 
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: 
78698 
diff
changeset
 | 
1032  | 
by (metis (no_types, lifting) remove_sings_eqI  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1033  | 
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: 
78698 
diff
changeset
 | 
1034  | 
mem_Collect_eq nicely_meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1035  | 
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
 | 
1036  | 
ultimately show ?thesis using that by auto  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1037  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1038  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1039  | 
lemma nicely_meromorphic_onI_open:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1040  | 
assumes "open A" and  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1041  | 
analytic:"f analytic_on A - pts" and  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1042  | 
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: 
78698 
diff
changeset
 | 
1043  | 
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: 
78698 
diff
changeset
 | 
1044  | 
shows "f nicely_meromorphic_on A"  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1045  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1046  | 
have "f meromorphic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1047  | 
proof (rule meromorphic_onI_open)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1048  | 
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: 
78698 
diff
changeset
 | 
1049  | 
using pole unfolding not_essential_def by auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1050  | 
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: 
78698 
diff
changeset
 | 
1051  | 
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: 
78698 
diff
changeset
 | 
1052  | 
islimpt_subset mem_Collect_eq not_islimpt_poles subsetI)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1053  | 
qed fact+  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1054  | 
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: 
78698 
diff
changeset
 | 
1055  | 
by (meson DiffI analytic analytic_at_imp_isCont  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1056  | 
analytic_on_analytic_at assms(3) isContD)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1057  | 
ultimately show ?thesis unfolding nicely_meromorphic_on_def  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1058  | 
by auto  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1059  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1060  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1061  | 
lemma nicely_meromorphic_without_singularities:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1062  | 
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: 
78698 
diff
changeset
 | 
1063  | 
shows "f analytic_on A"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1064  | 
by (meson analytic_on_analytic_at assms  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1065  | 
nicely_meromorphic_on_imp_analytic_at)  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1066  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1067  | 
lemma meromorphic_on_cong':  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1068  | 
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: 
78698 
diff
changeset
 | 
1069  | 
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: 
78698 
diff
changeset
 | 
1070  | 
unfolding assms(2)[symmetric]  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1071  | 
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
 | 
1072  | 
|
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1073  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1074  | 
subsection \<open>Meromorphic functions and zorder\<close>  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1075  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1076  | 
lemma zorder_power_int:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1077  | 
  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: 
78698 
diff
changeset
 | 
1078  | 
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
 | 
1079  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1080  | 
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: 
78698 
diff
changeset
 | 
1081  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1082  | 
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: 
78698 
diff
changeset
 | 
1083  | 
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: 
78698 
diff
changeset
 | 
1084  | 
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: 
78698 
diff
changeset
 | 
1085  | 
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: 
78698 
diff
changeset
 | 
1086  | 
by (intro laurent_expansion_intros)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1087  | 
have "zorder f z = fls_subdegree L"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1088  | 
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: 
78698 
diff
changeset
 | 
1089  | 
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: 
78698 
diff
changeset
 | 
1090  | 
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: 
78698 
diff
changeset
 | 
1091  | 
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: 
78698 
diff
changeset
 | 
1092  | 
by simp  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1093  | 
ultimately show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1094  | 
by simp  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1095  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1096  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1097  | 
lemma zorder_power:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1098  | 
  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: 
78698 
diff
changeset
 | 
1099  | 
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: 
78698 
diff
changeset
 | 
1100  | 
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
 | 
1101  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1102  | 
lemma zorder_add1:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
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: 
78698 
diff
changeset
 | 
1104  | 
  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: 
78698 
diff
changeset
 | 
1105  | 
assumes "zorder f z < zorder g z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1106  | 
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: 
78698 
diff
changeset
 | 
1107  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1108  | 
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: 
78698 
diff
changeset
 | 
1109  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1110  | 
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: 
78698 
diff
changeset
 | 
1111  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1112  | 
have [simp]: "F \<noteq> 0" "G \<noteq> 0"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1113  | 
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: 
78698 
diff
changeset
 | 
1114  | 
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: 
78698 
diff
changeset
 | 
1115  | 
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: 
78698 
diff
changeset
 | 
1116  | 
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: 
78698 
diff
changeset
 | 
1117  | 
from assms * have "F \<noteq> -G"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1118  | 
by auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1119  | 
hence [simp]: "F + G \<noteq> 0"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1120  | 
by (simp add: add_eq_0_iff2)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1121  | 
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: 
78698 
diff
changeset
 | 
1122  | 
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: 
78698 
diff
changeset
 | 
1123  | 
moreover have "fls_subdegree (F + G) = fls_subdegree F"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1124  | 
using assms by (simp add: * fls_subdegree_add_eq1)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1125  | 
ultimately show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1126  | 
by (simp add: *)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1127  | 
qed  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1128  | 
|
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1129  | 
lemma zorder_add2:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1130  | 
  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: 
78698 
diff
changeset
 | 
1131  | 
  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: 
78698 
diff
changeset
 | 
1132  | 
assumes "zorder f z > zorder g z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1133  | 
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: 
78698 
diff
changeset
 | 
1134  | 
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
 | 
1135  | 
|
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1136  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1137  | 
lemma zorder_add_ge:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1138  | 
fixes f g :: "complex \<Rightarrow> complex"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1139  | 
  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: 
78698 
diff
changeset
 | 
1140  | 
  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: 
78698 
diff
changeset
 | 
1141  | 
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: 
78698 
diff
changeset
 | 
1142  | 
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
 | 
1143  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1144  | 
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: 
78698 
diff
changeset
 | 
1145  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1146  | 
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: 
78698 
diff
changeset
 | 
1147  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1148  | 
have [simp]: "F \<noteq> 0" "G \<noteq> 0"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1149  | 
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: 
78698 
diff
changeset
 | 
1150  | 
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: 
78698 
diff
changeset
 | 
1151  | 
by (intro laurent_expansion_intros F G)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1152  | 
have [simp]: "F + G \<noteq> 0"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1153  | 
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
 | 
1154  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1155  | 
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: 
78698 
diff
changeset
 | 
1156  | 
"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: 
78698 
diff
changeset
 | 
1157  | 
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: 
78698 
diff
changeset
 | 
1158  | 
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: 
78698 
diff
changeset
 | 
1159  | 
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: 
78698 
diff
changeset
 | 
1160  | 
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: 
78698 
diff
changeset
 | 
1161  | 
by (intro fls_plus_subdegree) simp  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1162  | 
ultimately show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1163  | 
using assms(6,7) unfolding * by linarith  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1164  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1165  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1166  | 
lemma zorder_diff_ge:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1167  | 
fixes f g :: "complex \<Rightarrow> complex"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1168  | 
  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: 
78698 
diff
changeset
 | 
1169  | 
  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: 
78698 
diff
changeset
 | 
1170  | 
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: 
78698 
diff
changeset
 | 
1171  | 
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: 
78698 
diff
changeset
 | 
1172  | 
proof -  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1173  | 
  have "(\<lambda>z. - g z) meromorphic_on {z}"
 | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1174  | 
by (auto intro: meromorphic_intros assms)  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1175  | 
thus ?thesis  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1176  | 
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
 | 
1177  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1178  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1179  | 
lemma zorder_diff1:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1180  | 
  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: 
78698 
diff
changeset
 | 
1181  | 
  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: 
78698 
diff
changeset
 | 
1182  | 
assumes "zorder f z < zorder g z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1183  | 
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
 | 
1184  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1185  | 
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: 
78698 
diff
changeset
 | 
1186  | 
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
 | 
1187  | 
thus ?thesis  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1188  | 
by simp  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1189  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1190  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1191  | 
lemma zorder_diff2:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1192  | 
  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: 
78698 
diff
changeset
 | 
1193  | 
  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: 
78698 
diff
changeset
 | 
1194  | 
assumes "zorder f z > zorder g z"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1195  | 
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
 | 
1196  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1197  | 
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: 
78698 
diff
changeset
 | 
1198  | 
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: 
78698 
diff
changeset
 | 
1199  | 
thus ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1200  | 
by simp  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1201  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1202  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1203  | 
lemma zorder_mult:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1204  | 
  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: 
78698 
diff
changeset
 | 
1205  | 
  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: 
78698 
diff
changeset
 | 
1206  | 
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
 | 
1207  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1208  | 
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: 
78698 
diff
changeset
 | 
1209  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1210  | 
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: 
78698 
diff
changeset
 | 
1211  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1212  | 
have [simp]: "F \<noteq> 0" "G \<noteq> 0"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1213  | 
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: 
78698 
diff
changeset
 | 
1214  | 
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: 
78698 
diff
changeset
 | 
1215  | 
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: 
78698 
diff
changeset
 | 
1216  | 
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: 
78698 
diff
changeset
 | 
1217  | 
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: 
78698 
diff
changeset
 | 
1218  | 
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: 
78698 
diff
changeset
 | 
1219  | 
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: 
78698 
diff
changeset
 | 
1220  | 
using assms by simp  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1221  | 
ultimately show ?thesis  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1222  | 
by (simp add: *)  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1223  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1224  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1225  | 
lemma zorder_divide:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1226  | 
  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: 
78698 
diff
changeset
 | 
1227  | 
  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: 
78698 
diff
changeset
 | 
1228  | 
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
 | 
1229  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1230  | 
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: 
78698 
diff
changeset
 | 
1231  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1232  | 
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: 
78698 
diff
changeset
 | 
1233  | 
by (auto simp: meromorphic_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1234  | 
have [simp]: "F \<noteq> 0" "G \<noteq> 0"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1235  | 
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: 
78698 
diff
changeset
 | 
1236  | 
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: 
78698 
diff
changeset
 | 
1237  | 
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: 
78698 
diff
changeset
 | 
1238  | 
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: 
78698 
diff
changeset
 | 
1239  | 
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: 
78698 
diff
changeset
 | 
1240  | 
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: 
78698 
diff
changeset
 | 
1241  | 
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: 
78698 
diff
changeset
 | 
1242  | 
using assms by (simp add: fls_divide_subdegree)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1243  | 
ultimately show ?thesis  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1244  | 
by (simp add: *)  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1245  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1246  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1247  | 
lemma constant_on_extend_nicely_meromorphic_on:  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1248  | 
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: 
78698 
diff
changeset
 | 
1249  | 
  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: 
78698 
diff
changeset
 | 
1250  | 
shows "f constant_on B"  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1251  | 
proof -  | 
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1252  | 
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: 
78698 
diff
changeset
 | 
1253  | 
by (auto simp: constant_on_def)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1254  | 
have "eventually (\<lambda>z. z \<in> A) (cosparse A)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1255  | 
by (intro eventually_in_cosparse assms order.refl)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1256  | 
hence "eventually (\<lambda>z. f z = c) (cosparse A)"  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1257  | 
by eventually_elim (use c in auto)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1258  | 
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: 
78698 
diff
changeset
 | 
1259  | 
by (intro eventually_frequently) (use assms in auto)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1260  | 
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: 
78698 
diff
changeset
 | 
1261  | 
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
 | 
1262  | 
|
| 
79857
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1263  | 
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: 
78698 
diff
changeset
 | 
1264  | 
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: 
78698 
diff
changeset
 | 
1265  | 
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: 
78698 
diff
changeset
 | 
1266  | 
using z0 assms by auto  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1267  | 
qed (use assms that in auto)  | 
| 
 
819c28a7280f
New material by Wenda Li and Manuel Eberl
 
paulson <lp15@cam.ac.uk> 
parents: 
78698 
diff
changeset
 | 
1268  | 
thus "f constant_on B"  | 
| 
77277
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1269  | 
by (auto simp: constant_on_def)  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1270  | 
qed  | 
| 
 
c6b50597abbc
More of Eberl's contributions: memomorphic functions
 
paulson <lp15@cam.ac.uk> 
parents:  
diff
changeset
 | 
1271  | 
|
| 78698 | 1272  | 
end  |