src/HOL/Complex_Analysis/Meromorphic.thy
author wenzelm
Wed, 12 Mar 2025 11:39:00 +0100
changeset 82265 4b875a4c83b0
parent 80914 d97fdabd9e2b
child 82459 a1de627d417a
permissions -rw-r--r--
update for release;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
1b9388e6eb75 A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77277
diff changeset
  1272
end