src/HOL/Complex_Analysis/Meromorphic.thy
author nipkow
Tue, 17 Jun 2025 14:11:40 +0200
changeset 82733 8b537e1af2ec
parent 82653 565545b7fe9d
permissions -rw-r--r--
reinstated intersection of lists as inter_list_set
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
82653
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   158
lemma remove_sings_has_laurent_expansion [laurent_expansion_intros]:
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   159
  assumes "f has_laurent_expansion F"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   160
  shows   "remove_sings f has_laurent_expansion F"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   161
proof -
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   162
  have "remove_sings f has_laurent_expansion F \<longleftrightarrow> f has_laurent_expansion F"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   163
  proof (rule has_laurent_expansion_cong)
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   164
    have "isolated_singularity_at f 0"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   165
      using assms by (metis has_laurent_expansion_isolated_0)
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   166
    thus "eventually (\<lambda>x. remove_sings f x = f x) (at 0)"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   167
      by (rule eventually_remove_sings_eq_at)
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   168
  qed auto
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   169
  with assms show ?thesis
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   170
    by simp
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   171
qed
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   172
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   173
lemma get_all_poles_from_remove_sings:
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   174
  fixes f:: "complex \<Rightarrow> complex"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   175
  defines "ff\<equiv>remove_sings f"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   176
  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
   177
    "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
   178
  obtains pts' where 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   179
    "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
   180
proof -
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   181
  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
   182
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   183
  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
   184
  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
   185
    using rev_finite_subset by blast
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   186
  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
   187
    by (simp add: finite_imp_closed open_Diff)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   188
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   189
  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
   190
  proof (rule isolated_singularity_at_holomorphic)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   191
    show "f holomorphic_on (s-(pts-{z})) - {z}" 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   192
      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
   193
    show " open (s - (pts - {z}))" 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   194
      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
   195
    show "z \<in> s - (pts - {z})" 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   196
      using assms(4) that by auto
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   197
  qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   198
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   199
  have "ff holomorphic_on s - pts'"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   200
  proof (rule no_isolated_singularity')
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   201
    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
   202
    proof -
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   203
      have "at z within s - pts' = at z"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   204
        apply (rule at_within_open)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   205
        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
   206
      moreover have "ff \<midarrow>z\<rightarrow> ff z"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   207
        unfolding ff_def
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   208
      proof (subst tendsto_remove_sings_iff)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   209
        show "isolated_singularity_at f z"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   210
          apply (rule isolated)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   211
          using that by auto
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   212
        have "not_essential f z" 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   213
          using not_ess that by auto
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   214
        moreover have "\<not>is_pole f z"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   215
          using that unfolding pts'_def by auto
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   216
        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
   217
          unfolding not_essential_def by auto
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   218
        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
   219
          using remove_sings_eqI by blast
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   220
      qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   221
      ultimately show ?thesis by auto
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   222
    qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   223
    have "ff holomorphic_on s - pts"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   224
      using f_holo 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   225
    proof (elim holomorphic_transform)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   226
      fix x assume "x \<in> s - pts"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   227
      then have "f analytic_on {x}" 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   228
        using assms(3) assms(5) f_holo
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   229
        by (meson finite_imp_closed 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   230
            holomorphic_on_imp_analytic_at open_Diff) 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   231
      from remove_sings_at_analytic[OF this]
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   232
      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
   233
    qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   234
    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
   235
      apply (elim holomorphic_on_subset)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   236
      by blast
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   237
    show "open (s - pts')" 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   238
      by (simp add: \<open>open (s - pts')\<close>)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   239
    show "finite (pts - pts')" 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   240
      by (simp add: assms(3))
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   241
  qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   242
  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
   243
    unfolding pts'_def 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   244
    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
   245
  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
   246
  ultimately show ?thesis using that by auto
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   247
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   248
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   249
lemma remove_sings_eq_0_iff:
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   250
  assumes "not_essential f w"
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   251
  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
   252
proof (cases "is_pole f w")
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   253
  case False
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   254
  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
   255
    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
   256
  then show ?thesis 
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   257
    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
   258
qed simp
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   259
82653
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   260
lemma remove_sings_analytic_at:
82517
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   261
  assumes "isolated_singularity_at f z" "f \<midarrow>z\<rightarrow> c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   262
  shows   "remove_sings f analytic_on {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   263
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   264
  from assms(1) obtain A where A: "open A" "z \<in> A" "f holomorphic_on (A - {z})"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   265
    using analytic_imp_holomorphic isolated_singularity_at_iff_analytic_nhd by auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   266
  have ana: "f analytic_on (A - {z})"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   267
    by (subst analytic_on_open) (use A in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   268
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   269
  have "remove_sings f holomorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   270
  proof (rule no_isolated_singularity)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   271
    have "f holomorphic_on (A - {z})"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   272
      by fact
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   273
    moreover have "remove_sings f holomorphic_on (A - {z}) \<longleftrightarrow> f holomorphic_on (A - {z})"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   274
      by (intro holomorphic_cong remove_sings_at_analytic) (auto intro!: analytic_on_subset[OF ana])
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   275
    ultimately show "remove_sings f holomorphic_on (A - {z})"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   276
      by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   277
    hence "continuous_on (A-{z}) (remove_sings f)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   278
      by (intro holomorphic_on_imp_continuous_on)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   279
    moreover have "isCont (remove_sings f) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   280
      using assms isCont_def remove_sings_eqI tendsto_remove_sings_iff by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   281
    ultimately show "continuous_on A (remove_sings f)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   282
      by (metis A(1) DiffI closed_singleton continuous_on_eq_continuous_at open_Diff singletonD)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   283
  qed (use A(1) in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   284
  thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   285
    using A(1,2) analytic_at by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   286
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   287
82653
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   288
lemma remove_sings_analytic_on:
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   289
  assumes "f analytic_on A"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   290
  shows   "remove_sings f analytic_on A"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   291
proof -
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   292
  from assms obtain B where B: "open B" "A \<subseteq> B" "f holomorphic_on B"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   293
    by (metis analytic_on_holomorphic)
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   294
  have "remove_sings f holomorphic_on B \<longleftrightarrow> f holomorphic_on B"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   295
  proof (rule holomorphic_cong)
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   296
    fix z assume "z \<in> B"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   297
    have "f analytic_on {z}"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   298
      using \<open>z \<in> B\<close> B holomorphic_on_imp_analytic_at by blast
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   299
    thus "remove_sings f z = f z"
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   300
      by (rule remove_sings_at_analytic)
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   301
  qed auto
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   302
  thus ?thesis
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   303
    using B analytic_on_holomorphic by blast
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   304
qed
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
   305
82517
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   306
lemma residue_remove_sings [simp]:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   307
  assumes "isolated_singularity_at f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   308
  shows   "residue (remove_sings f) z = residue f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   309
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   310
  from assms have "eventually (\<lambda>w. remove_sings f w = f w) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   311
    using eventually_remove_sings_eq_at by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   312
  then obtain A where A: "open A" "z \<in> A" "\<And>w. w \<in> A - {z} \<Longrightarrow> remove_sings f w = f w"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   313
    by (subst (asm) eventually_at_topological) blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   314
  from A(1,2) obtain \<epsilon> where \<epsilon>: "\<epsilon> > 0" "cball z \<epsilon> \<subseteq> A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   315
    using open_contains_cball_eq by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   316
  hence eq: "remove_sings f w = f w" if "w \<in> cball z \<epsilon> - {z}" for w
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   317
    using that A \<epsilon> by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   318
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   319
  define P where "P = (\<lambda>f c \<epsilon>. (f has_contour_integral of_real (2 * pi) * \<i> * c) (circlepath z \<epsilon>))"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   320
  have "P (remove_sings f) c \<delta> \<longleftrightarrow> P f c \<delta>" if "0 < \<delta>" "\<delta> < \<epsilon>" for c \<delta>
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   321
    unfolding P_def using \<open>\<epsilon> > 0\<close> that by (intro has_contour_integral_cong) (auto simp: eq)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   322
  hence *: "(\<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P (remove_sings f) c \<epsilon>) \<longleftrightarrow> (\<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P f c \<epsilon>)" if "e \<le> \<epsilon>" for c e
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   323
    using that by force
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   324
  have **: "(\<exists>e>0. \<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P (remove_sings f) c \<epsilon>) \<longleftrightarrow> (\<exists>e>0. \<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P f c \<epsilon>)" for c
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   325
  proof
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   326
    assume "(\<exists>e>0. \<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P (remove_sings f) c \<epsilon>)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   327
    then obtain e where "e > 0" "\<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P (remove_sings f) c \<epsilon>"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   328
      by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   329
    thus "(\<exists>e>0. \<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P f c \<epsilon>)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   330
      by (intro exI[of _ "min e \<epsilon>"]) (use *[of "min e \<epsilon>" c] \<epsilon>(1) in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   331
  next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   332
    assume "(\<exists>e>0. \<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P f c \<epsilon>)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   333
    then obtain e where "e > 0" "\<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P f c \<epsilon>"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   334
      by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   335
    thus "(\<exists>e>0. \<forall>\<epsilon>>0. \<epsilon> < e \<longrightarrow> P (remove_sings f) c \<epsilon>)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   336
      by (intro exI[of _ "min e \<epsilon>"]) (use *[of "min e \<epsilon>" c] \<epsilon>(1) in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   337
  qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   338
  show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   339
    unfolding residue_def by (intro arg_cong[of _ _ Eps] ext **[unfolded P_def])
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   340
qed    
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   341
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   342
lemma remove_sings_shift_0:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   343
  "remove_sings f z = remove_sings (\<lambda>w. f (z + w)) 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   344
proof (cases "\<exists>c. f \<midarrow>z\<rightarrow> c")
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   345
  case True
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   346
  then obtain c where c: "f \<midarrow>z\<rightarrow> c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   347
    by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   348
  from c have "remove_sings f z = c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   349
    by (rule remove_sings_eqI)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   350
  moreover have "remove_sings (\<lambda>w. f (z + w)) 0 = c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   351
    by (rule remove_sings_eqI) (use c in \<open>simp_all add: at_to_0' filterlim_filtermap add_ac\<close>)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   352
  ultimately show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   353
    by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   354
next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   355
  case False
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   356
  hence "\<not>(\<exists>c. (\<lambda>w. f (z + w)) \<midarrow>0\<rightarrow> c)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   357
    by (simp add: at_to_0' filterlim_filtermap add_ac)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   358
  with False show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   359
    by (simp add: remove_sings_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   360
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   361
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   362
lemma remove_sings_shift_0':
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   363
  "NO_MATCH 0 z \<Longrightarrow> remove_sings f z = remove_sings (\<lambda>w. f (z + w)) 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   364
  by (rule remove_sings_shift_0)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   365
80072
33a9b1d6a651 added documentation for meromorphicity etc. in HOL-Complex_Analysis
Manuel Eberl <manuel@pruvisto.org>
parents: 79945
diff changeset
   366
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   367
subsection \<open>Meromorphicity\<close>
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   368
80072
33a9b1d6a651 added documentation for meromorphicity etc. in HOL-Complex_Analysis
Manuel Eberl <manuel@pruvisto.org>
parents: 79945
diff changeset
   369
text \<open>
33a9b1d6a651 added documentation for meromorphicity etc. in HOL-Complex_Analysis
Manuel Eberl <manuel@pruvisto.org>
parents: 79945
diff changeset
   370
  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
   371
  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
   372
  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
   373
33a9b1d6a651 added documentation for meromorphicity etc. in HOL-Complex_Analysis
Manuel Eberl <manuel@pruvisto.org>
parents: 79945
diff changeset
   374
  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
   375
  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
   376
  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
   377
  
33a9b1d6a651 added documentation for meromorphicity etc. in HOL-Complex_Analysis
Manuel Eberl <manuel@pruvisto.org>
parents: 79945
diff changeset
   378
  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
   379
  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
   380
  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
   381
33a9b1d6a651 added documentation for meromorphicity etc. in HOL-Complex_Analysis
Manuel Eberl <manuel@pruvisto.org>
parents: 79945
diff changeset
   382
  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
   383
\<close>
33a9b1d6a651 added documentation for meromorphicity etc. in HOL-Complex_Analysis
Manuel Eberl <manuel@pruvisto.org>
parents: 79945
diff changeset
   384
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
   385
  (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
   386
  "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
   387
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   388
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
   389
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   390
  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
   391
            insertI1 singletonD not_essential_has_laurent_expansion)
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   392
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   393
named_theorems meromorphic_intros
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   394
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   395
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
   396
  by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   397
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   398
lemma meromorphic_on_def':
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   399
  "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
   400
  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
   401
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   402
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
   403
  by (auto simp: meromorphic_on_def)
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   404
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   405
lemma meromorphic_on_altdef:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   406
  "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
   407
  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
   408
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   409
lemma meromorphic_on_cong:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   410
  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
   411
  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
   412
  unfolding meromorphic_on_def using assms
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   413
  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
   414
     (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
   415
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   416
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
   417
  by (auto simp: meromorphic_on_def)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   418
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   419
lemma meromorphic_on_Un:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   420
  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
   421
  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
   422
  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
   423
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   424
lemma meromorphic_on_Union:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   425
  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
   426
  shows   "f meromorphic_on (\<Union>B)"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   427
  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
   428
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   429
lemma meromorphic_on_UN:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   430
  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
   431
  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
   432
  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
   433
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   434
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
   435
  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
   436
  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
   437
  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
   438
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   439
lemma meromorphic_on_open_nhd:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   440
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   441
  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
   442
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   443
  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
   444
    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
   445
  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
   446
  proof -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   447
    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
   448
      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
   449
    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
   450
      using open_translation by auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   451
    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
   452
      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
   453
    ultimately show ?thesis by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   454
  qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   455
  then obtain Z where Z:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   456
    "\<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
   457
    by metis
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   458
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   459
  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
   460
  show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   461
  proof (rule that[of B])
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   462
    show "open B"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   463
      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
   464
    show "A \<subseteq> B"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   465
      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
   466
    show "f meromorphic_on B"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   467
      unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   468
    proof
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   469
      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
   470
      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
   471
      proof (cases "z \<in> A")
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   472
        case True
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   473
        thus ?thesis using F by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   474
      next
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   475
        case False
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   476
        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
   477
          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
   478
        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
   479
          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
   480
        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
   481
        proof (intro analytic_at_cong refl)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   482
          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
   483
            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
   484
          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
   485
            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
   486
        qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   487
        finally show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   488
          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
   489
      qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   490
    qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   491
  qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   492
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   493
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   494
lemma meromorphic_on_not_essential:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   495
  assumes "f meromorphic_on {z}"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   496
  shows   "not_essential f z"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   497
  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
   498
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   499
lemma meromorphic_on_isolated_singularity:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   500
  assumes "f meromorphic_on {z}"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   501
  shows   "isolated_singularity_at f z"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   502
  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
   503
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   504
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
   505
  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
   506
  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
   507
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   508
  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
   509
    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
   510
  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
   511
    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
   512
  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
   513
    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
   514
  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
   515
    unfolding isolated_singularity_at_def by blast
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   516
  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
   517
    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
   518
  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
   519
    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
   520
  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
   521
    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
   522
qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   523
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   524
lemma meromorphic_on_imp_sparse_singularities:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   525
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   526
  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
   527
  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
   528
        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
   529
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   530
lemma meromorphic_on_imp_sparse_singularities':
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   531
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   532
  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
   533
  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
   534
  by (rule sparse_in_subset2) auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   535
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   536
lemma meromorphic_onE:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   537
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   538
  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
   539
    "\<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
   540
proof (rule that)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   541
  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
   542
    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
   543
  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
   544
    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
   545
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
   546
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   547
lemma meromorphic_onI_weak:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   548
  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
   549
          "pts \<inter> frontier A = {}"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   550
  shows   "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   551
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   552
proof
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   553
  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
   554
  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
   555
  proof (cases "z \<in> pts")
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   556
    case False
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   557
    have "f analytic_on {z}"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   558
      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
   559
    thus ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   560
      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
   561
            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
   562
  next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   563
    case True
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   564
    show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   565
    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
   566
      show "not_essential f z"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   567
        using assms(2) True by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   568
    next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   569
      show "isolated_singularity_at f z"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   570
      proof (rule isolated_singularity_at_holomorphic)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   571
        show "open (interior A - (pts - {z}))"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   572
        proof (rule open_diff_sparse_pts)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   573
          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
   574
            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
   575
        qed auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   576
      next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   577
        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
   578
          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
   579
        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
   580
          by (rule analytic_imp_holomorphic)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   581
      next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   582
        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
   583
          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
   584
        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
   585
          by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   586
      qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   587
    qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   588
  qed
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   589
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   590
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   591
lemma meromorphic_onI_open:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   592
  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
   593
  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
   594
  shows   "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   595
proof (rule meromorphic_onI_weak)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   596
  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
   597
    by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   598
  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
   599
    unfolding * by fact
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   600
  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
   601
    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
   602
  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
   603
    using assms(3) that by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   604
  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
   605
    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
   606
qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   607
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   608
lemma meromorphic_at_isCont_imp_analytic:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   609
  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
   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 -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   612
  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
   613
    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
   614
  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
   615
    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
   616
  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
   617
    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
   618
  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
   619
    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
   620
  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
   621
    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
   622
  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
   623
    by (intro filterlim_cong refl)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   624
       (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
   625
  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
   626
    by simp
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   627
  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
   628
    by (auto intro: isContD)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   629
  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
   630
    by (rule LIM_unique)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   631
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   632
  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
   633
    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
   634
  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
   635
    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
   636
  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
   637
    by (intro analytic_at_cong refl)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   638
  with ** show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   639
    by simp
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   640
qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   641
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   642
lemma analytic_on_imp_meromorphic_on:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   643
  assumes "f analytic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   644
  shows   "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   645
  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
   646
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   647
lemma meromorphic_on_compose:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   648
  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
   649
  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
   650
  unfolding meromorphic_on_def
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   651
proof safe
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   652
  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
   653
  have "f analytic_on {z}"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   654
    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
   655
  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
   656
    by (intro analytic_intros)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   657
  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
   658
    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
   659
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   660
  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
   661
    by auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   662
  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
   663
    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
   664
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   665
  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
   666
  proof (cases "F = 0")
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   667
    case False
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   668
    show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   669
    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
   670
      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
   671
        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
   672
      show "fps_nth F 0 = 0"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   673
        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
   674
    qed fact+
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   675
  next
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   676
    case True
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   677
    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
   678
      by auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   679
    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
   680
                           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
   681
    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
   682
      case 1
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   683
      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
   684
        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
   685
      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
   686
        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
   687
      thus ?case
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   688
        by eventually_elim auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   689
    qed auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   690
    finally show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   691
      by blast
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   692
  qed
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   693
  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
   694
    by (simp add: o_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   695
qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   696
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   697
lemma constant_on_imp_meromorphic_on:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   698
  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
   699
  shows "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   700
  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
   701
    constant_on_imp_analytic_on 
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   702
  by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   703
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   704
subsection \<open>Nice meromorphicity\<close>
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   705
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   706
text \<open>
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   707
  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
   708
  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
   709
  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
   710
\<close>
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   711
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
   712
    (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
   713
    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
   714
        \<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
   715
79933
3f415c76a511 more general definition of meromorphicity; Weierstraß factorisation theorem
Manuel Eberl <eberlm@in.tum.de>
parents: 79864
diff changeset
   716
lemma nicely_meromorphic_on_subset:
3f415c76a511 more general definition of meromorphicity; Weierstraß factorisation theorem
Manuel Eberl <eberlm@in.tum.de>
parents: 79864
diff changeset
   717
  "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
   718
  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
   719
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   720
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
   721
  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
   722
  shows "f nicely_meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   723
  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
   724
      constant_on_imp_holomorphic_on 
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   725
      constant_on_imp_meromorphic_on 
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   726
      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
   727
      nicely_meromorphic_on_def)
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   728
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   729
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
   730
  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
   731
  shows   "f analytic_on {z}"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   732
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
   733
  show "f meromorphic_on {z}"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   734
    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
   735
next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   736
  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
   737
    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
   738
  thus "isCont f z"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   739
    by (auto simp: isCont_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   740
qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   741
  
82459
a1de627d417a More of Manuel's material
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   742
lemma analytic_on_imp_nicely_meromorphic_on:
a1de627d417a More of Manuel's material
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   743
  "f analytic_on A \<Longrightarrow> f nicely_meromorphic_on A"
a1de627d417a More of Manuel's material
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   744
  by (meson analytic_at_imp_isCont analytic_on_analytic_at
a1de627d417a More of Manuel's material
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   745
            analytic_on_imp_meromorphic_on isContD nicely_meromorphic_on_def)
a1de627d417a More of Manuel's material
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   746
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   747
lemma remove_sings_meromorphic [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   748
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   749
  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
   750
  unfolding meromorphic_on_def
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   751
proof safe
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   752
  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
   753
  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
   754
    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
   755
          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
   756
qed
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   757
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   758
lemma remove_sings_nicely_meromorphic:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   759
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   760
  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
   761
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   762
  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
   763
    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
   764
  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
   765
        \<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
   766
            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
   767
    if "z\<in>A" for z
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   768
  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
   769
    case True
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   770
    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
   771
      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
   772
          assms meromorphic_onE that)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   773
    then show ?thesis by simp
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   774
  next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   775
    case False
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   776
    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
   777
        \<and> remove_sings f z = 0"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   778
      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
   779
            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
   780
    then show ?thesis by simp
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   781
  qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   782
  ultimately show ?thesis 
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   783
    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
   784
qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   785
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   786
text \<open>
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   787
  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
   788
  point is constant.
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   789
\<close>
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   790
lemma frequently_eq_meromorphic_imp_constant:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   791
  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
   792
  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
   793
  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
   794
proof -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   795
  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
   796
    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
   797
  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
   798
    using assms(2) mero
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   799
    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
   800
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   801
  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
   802
  proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   803
    have "f w - c = 0"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   804
    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
   805
      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
   806
        by (intro holomorphic_intros)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   807
           (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
   808
              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
   809
    next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   810
      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
   811
        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
   812
      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
   813
        by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   814
      finally show "open \<dots>" .
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   815
    next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   816
      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
   817
        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
   818
      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
   819
        by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   820
      finally show "connected \<dots>" .
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   821
    next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   822
      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
   823
        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
   824
      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
   825
        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
   826
      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
   827
        by eventually_elim auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   828
      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
   829
        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
   830
        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
   831
    next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   832
      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
   833
        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
   834
      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
   835
        by auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   836
    qed (use w in auto)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   837
    thus "f w = c"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   838
      by simp
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   839
  qed
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   840
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   841
  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
   842
  proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   843
    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
   844
      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
   845
    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
   846
      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
   847
    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
   848
      by eventually_elim (auto simp: eq)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   849
    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
   850
      by (intro is_pole_cong refl)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   851
    thus ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   852
      by simp
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   853
  qed
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   854
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   855
  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
   856
    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
   857
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   858
82517
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   859
lemma nicely_meromorphic_on_unop:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   860
  assumes "f nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   861
  assumes "f meromorphic_on A \<Longrightarrow> (\<lambda>z. h (f z)) meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   862
  assumes "\<And>z. z \<in> A \<Longrightarrow> is_pole f z \<Longrightarrow> is_pole (\<lambda>z. h (f z)) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   863
  assumes "\<And>z. z \<in> f ` A \<Longrightarrow> isCont h z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   864
  assumes "h 0 = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   865
  shows   "(\<lambda>z. h (f z)) nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   866
  unfolding nicely_meromorphic_on_def
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   867
proof (intro conjI ballI)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   868
  show "(\<lambda>z. h (f z)) meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   869
    using assms(1,2) by (auto simp: nicely_meromorphic_on_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   870
next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   871
  fix z assume z: "z \<in> A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   872
  hence "is_pole f z \<and> f z = 0 \<or> f \<midarrow>z\<rightarrow> f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   873
    using assms by (auto simp: nicely_meromorphic_on_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   874
  thus "is_pole (\<lambda>z. h (f z)) z \<and> h (f z) = 0 \<or> (\<lambda>z. h (f z)) \<midarrow>z\<rightarrow> h (f z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   875
  proof (rule disj_forward)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   876
    assume "is_pole f z \<and> f z = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   877
    thus "is_pole (\<lambda>z. h (f z)) z \<and> h (f z) = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   878
      using assms z by auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   879
  next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   880
    assume *: "f \<midarrow>z\<rightarrow> f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   881
    from z assms have "isCont h (f z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   882
      by auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   883
    with * show "(\<lambda>z. h (f z)) \<midarrow>z\<rightarrow> h (f z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   884
      using continuous_within continuous_within_compose3 by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   885
  qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   886
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   887
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   888
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
   889
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   890
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
   891
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   892
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
   893
  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
   894
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   895
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
   896
  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
   897
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   898
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
   899
  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
   900
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   901
lemma meromorphic_on_add [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   902
  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
   903
  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
   904
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   905
  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
   906
           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
   907
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   908
lemma meromorphic_on_uminus [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   909
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   910
  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
   911
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   912
  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
   913
           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
   914
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   915
lemma meromorphic_on_diff [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   916
  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
   917
  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
   918
  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
   919
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   920
lemma meromorphic_on_mult [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   921
  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
   922
  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
   923
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   924
  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
   925
           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
   926
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   927
lemma meromorphic_on_power [meromorphic_intros]:
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   "(\<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
   930
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   931
  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
   932
           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
   933
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   934
lemma meromorphic_on_powi [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   935
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   936
  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
   937
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   938
  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
   939
           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
   940
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   941
lemma meromorphic_on_scaleR [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   942
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   943
  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
   944
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   945
  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
   946
           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
   947
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   948
lemma meromorphic_on_inverse [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   949
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   950
  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
   951
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   952
  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
   953
           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
   954
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   955
lemma meromorphic_on_divide [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   956
  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
   957
  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
   958
  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
   959
  by (simp add: field_simps)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   960
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   961
lemma meromorphic_on_sum [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   962
  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
   963
  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
   964
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   965
  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
   966
           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
   967
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   968
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
   969
  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
   970
  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
   971
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   972
  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
   973
           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
   974
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   975
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
   976
  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
   977
  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
   978
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   979
  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
   980
           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
   981
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   982
lemma meromorphic_on_prod [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   983
  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
   984
  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
   985
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   986
  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
   987
           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
   988
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   989
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
   990
  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
   991
  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
   992
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   993
  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
   994
           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
   995
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
   996
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
   997
  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
   998
  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
   999
  unfolding meromorphic_on_def
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1000
  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
  1001
           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
  1002
82517
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1003
lemma nicely_meromorphic_on_const [intro]: "(\<lambda>_. c) nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1004
  unfolding nicely_meromorphic_on_def by auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1005
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1006
lemma nicely_meromorphic_on_cmult_left [intro]:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1007
  assumes "f nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1008
  shows   "(\<lambda>z. c * f z) nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1009
proof (cases "c = 0")
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1010
  case [simp]: False
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1011
  show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1012
    using assms by (rule nicely_meromorphic_on_unop) (auto intro!: meromorphic_intros)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1013
qed (auto intro!: nicely_meromorphic_on_const)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1014
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1015
lemma nicely_meromorphic_on_cmult_right [intro]:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1016
  assumes "f nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1017
  shows   "(\<lambda>z. f z * c) nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1018
  using nicely_meromorphic_on_cmult_left[OF assms, of c] by (simp add: mult.commute)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1019
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1020
lemma nicely_meromorphic_on_scaleR [intro]:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1021
  assumes "f nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1022
  shows   "(\<lambda>z. c *\<^sub>R f z) nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1023
  using assms by (auto simp: scaleR_conv_of_real)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1024
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1025
lemma nicely_meromorphic_on_uminus [intro]:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1026
  assumes "f nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1027
  shows   "(\<lambda>z. -f z) nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1028
  using nicely_meromorphic_on_cmult_left[OF assms, of "-1"] by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1029
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1030
lemma meromorphic_on_If [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1031
  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
  1032
  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
  1033
  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
  1034
proof (rule meromorphic_on_subset)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1035
  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
  1036
  proof (rule meromorphic_on_Un)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1037
    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
  1038
    proof (rule meromorphic_on_cong)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1039
      fix z assume "z \<in> A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1040
      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
  1041
        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
  1042
      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
  1043
        by eventually_elim auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1044
    qed auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1045
    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
  1046
      by blast
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1047
  next
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1048
    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
  1049
    proof (rule meromorphic_on_cong)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1050
      fix z assume "z \<in> B"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1051
      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
  1052
        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
  1053
      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
  1054
        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
  1055
    qed auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1056
    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
  1057
      by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1058
  qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1059
qed fact
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1060
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1061
lemma meromorphic_on_deriv [meromorphic_intros]:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1062
  "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
  1063
  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
  1064
            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
  1065
            not_essential_has_laurent_expansion)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1066
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1067
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
  1068
  "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
  1069
  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
  1070
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1071
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
  1072
  assumes "f analytic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1073
  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
  1074
  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
  1075
  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
  1076
     (use assms(2) in auto)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1077
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1078
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
  1079
  assumes "f analytic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1080
  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
  1081
  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
  1082
  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
  1083
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1084
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
  1085
  assumes "f analytic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1086
  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
  1087
  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
  1088
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
  1089
  case False
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1090
  with assms(2) have "A = {}"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1091
    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
  1092
              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
  1093
  thus ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1094
    by auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1095
next
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1096
  case True
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1097
  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
  1098
    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
  1099
  show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1100
  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
  1101
    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
  1102
    proof (rule meromorphic_onI_open)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1103
      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
  1104
        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
  1105
      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
  1106
        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
  1107
    qed (auto simp: islimpt_finite)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1108
  qed (use assms(2) in auto)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1109
qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1110
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1111
lemma meromorphic_on_imp_analytic_cosparse:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1112
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1113
  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
  1114
  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
  1115
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1116
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
  1117
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1118
  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
  1119
proof -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1120
  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
  1121
    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
  1122
  thus ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1123
    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
  1124
qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1125
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1126
lemma eventually_remove_sings_eq:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1127
  assumes "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1128
  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
  1129
proof -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1130
  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
  1131
    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
  1132
  thus ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1133
    by eventually_elim auto
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1134
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1135
82517
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1136
lemma remove_sings_constant_on_open_iff:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1137
  assumes "f meromorphic_on A" "open A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1138
  shows   "remove_sings f constant_on A \<longleftrightarrow> (\<exists>c. \<forall>\<^sub>\<approx>x\<in>A. f x = c)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1139
proof
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1140
  assume "remove_sings f constant_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1141
  then obtain c where c: "remove_sings f z = c" if "z \<in> A" for z
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1142
    using that by (auto simp: constant_on_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1143
  have "\<forall>\<^sub>\<approx>x\<in>A. x \<in> A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1144
    using \<open>open A\<close> by (simp add: eventually_in_cosparse)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1145
  hence "\<forall>\<^sub>\<approx>x\<in>A. f x = c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1146
    using eventually_remove_sings_eq[OF assms(1)] by eventually_elim (use c in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1147
  thus "\<exists>c. \<forall>\<^sub>\<approx>x\<in>A. f x = c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1148
    by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1149
next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1150
  assume "\<exists>c. \<forall>\<^sub>\<approx>x\<in>A. f x = c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1151
  then obtain c where c: "\<forall>\<^sub>\<approx>x\<in>A. f x = c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1152
    by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1153
  have "\<forall>\<^sub>\<approx>x\<in>A. remove_sings f x = c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1154
    using eventually_remove_sings_eq[OF assms(1)] c by eventually_elim auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1155
  hence "remove_sings f z = c" if "z \<in> A" for z using that 
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1156
    by (meson assms(2) c eventually_cosparse_open_eq remove_sings_eqI tendsto_eventually)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1157
  thus "remove_sings f constant_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1158
    unfolding constant_on_def by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1159
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1160
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1161
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1162
text \<open>
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1163
  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
  1164
  or almost nowhere.
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1165
\<close>
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1166
lemma meromorphic_imp_constant_or_avoid:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1167
  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
  1168
  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
  1169
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1170
  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
  1171
  proof -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1172
  let ?f = "remove_sings f"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1173
    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
  1174
      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
  1175
    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
  1176
      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
  1177
    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
  1178
      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
  1179
    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
  1180
      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
  1181
    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
  1182
      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
  1183
    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
  1184
      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
  1185
    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
  1186
      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
  1187
  qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1188
  thus ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1189
    by (auto simp: frequently_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1190
qed
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1191
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1192
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
  1193
  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
  1194
  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
  1195
proof -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1196
  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
  1197
    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
  1198
       (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
  1199
  thus ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1200
  proof
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1201
    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
  1202
    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
  1203
    proof
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1204
      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
  1205
      have "not_essential f x"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1206
        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
  1207
      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
  1208
        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
  1209
      hence "\<not>is_pole f x"
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1210
        by auto
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1211
      ultimately have "f analytic_on {x}"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1212
        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
  1213
      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
  1214
        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
  1215
      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
  1216
        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
  1217
      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
  1218
      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
  1219
        by simp
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1220
      ultimately show "f x = c"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1221
        using LIM_unique by blast
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1222
    qed
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1223
    thus ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1224
      by blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1225
  qed blast
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1226
qed
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1227
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1228
lemma nicely_meromorphic_onE:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1229
  assumes "f nicely_meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1230
  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
  1231
    "f analytic_on A - pts"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1232
    "\<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
  1233
proof -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1234
  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
  1235
  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
  1236
    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
  1237
    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
  1238
  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
  1239
    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
  1240
  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
  1241
    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
  1242
        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
  1243
        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
  1244
        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
  1245
  ultimately show ?thesis using that by auto
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1246
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1247
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1248
lemma nicely_meromorphic_onI_open:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1249
  assumes "open A" and
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1250
    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
  1251
    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
  1252
    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
  1253
  shows "f nicely_meromorphic_on A"
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1254
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1255
  have "f meromorphic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1256
  proof (rule meromorphic_onI_open)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1257
    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
  1258
      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
  1259
    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
  1260
      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
  1261
            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
  1262
  qed fact+ 
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1263
  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
  1264
    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
  1265
        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
  1266
  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
  1267
    by auto
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1268
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1269
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1270
lemma nicely_meromorphic_without_singularities:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1271
  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
  1272
  shows "f analytic_on A"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1273
  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
  1274
        nicely_meromorphic_on_imp_analytic_at)
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1275
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1276
lemma meromorphic_on_cong':
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1277
  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
  1278
  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
  1279
  unfolding assms(2)[symmetric]
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1280
  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
  1281
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1282
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1283
subsection \<open>Meromorphic functions and zorder\<close>
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1284
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1285
lemma zorder_power_int:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1286
  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
  1287
  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
  1288
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1289
  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
  1290
    by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1291
  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
  1292
    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
  1293
          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
  1294
  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
  1295
    by (intro laurent_expansion_intros)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1296
  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
  1297
    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
  1298
  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
  1299
    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
  1300
  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
  1301
    by simp
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1302
  ultimately show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1303
    by simp
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1304
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1305
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1306
lemma zorder_power:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1307
  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
  1308
  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
  1309
  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
  1310
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1311
lemma zorder_add1:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1312
  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
  1313
  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
  1314
  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
  1315
  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
  1316
proof -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1317
  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
  1318
    by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1319
  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
  1320
    by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1321
  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
  1322
    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
  1323
          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
  1324
  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
  1325
    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
  1326
  from assms * have "F \<noteq> -G"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1327
    by auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1328
  hence [simp]: "F + G \<noteq> 0"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1329
    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
  1330
  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
  1331
    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
  1332
  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
  1333
    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
  1334
  ultimately show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1335
    by (simp add: *)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1336
qed
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1337
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1338
lemma zorder_add2:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1339
  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
  1340
  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
  1341
  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
  1342
  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
  1343
  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
  1344
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1345
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1346
lemma zorder_add_ge:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1347
  fixes f g :: "complex \<Rightarrow> complex"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1348
  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
  1349
  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
  1350
  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
  1351
  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
  1352
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1353
  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
  1354
    by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1355
  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
  1356
    by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1357
  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
  1358
    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
  1359
  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
  1360
    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
  1361
  have [simp]: "F + G \<noteq> 0"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1362
    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
  1363
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1364
  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
  1365
          "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
  1366
    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
  1367
  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
  1368
    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
  1369
  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
  1370
    by (intro fls_plus_subdegree) simp
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1371
  ultimately show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1372
    using assms(6,7) unfolding * by linarith
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1373
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1374
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1375
lemma zorder_diff_ge:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1376
  fixes f g :: "complex \<Rightarrow> complex"
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1377
  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
  1378
  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
  1379
  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
  1380
  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
  1381
proof  -
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1382
  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
  1383
    by (auto intro: meromorphic_intros assms)
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1384
  thus ?thesis
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1385
    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
  1386
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1387
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1388
lemma zorder_diff1:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1389
  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
  1390
  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
  1391
  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
  1392
  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
  1393
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1394
  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
  1395
    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
  1396
  thus ?thesis
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1397
    by simp
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1398
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1399
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1400
lemma zorder_diff2:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1401
  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
  1402
  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
  1403
  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
  1404
  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
  1405
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1406
  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
  1407
    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
  1408
  thus ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1409
    by simp
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1410
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1411
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1412
lemma zorder_mult:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1413
  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
  1414
  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
  1415
  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
  1416
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1417
  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
  1418
    by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1419
  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
  1420
    by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1421
  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
  1422
    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
  1423
          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
  1424
  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
  1425
    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
  1426
  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
  1427
    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
  1428
  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
  1429
    using assms by simp
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1430
  ultimately show ?thesis
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1431
    by (simp add: *)
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1432
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1433
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1434
lemma zorder_divide:
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1435
  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
  1436
  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
  1437
  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
  1438
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1439
  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
  1440
    by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1441
  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
  1442
    by (auto simp: meromorphic_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1443
  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
  1444
    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
  1445
          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
  1446
  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
  1447
    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
  1448
  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
  1449
    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
  1450
  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
  1451
    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
  1452
  ultimately show ?thesis
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1453
    by (simp add: *)
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1454
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1455
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1456
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
  1457
  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
  1458
  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
  1459
  shows   "f constant_on B"
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1460
proof -
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1461
  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
  1462
    by (auto simp: constant_on_def)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1463
  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
  1464
    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
  1465
  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
  1466
    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
  1467
  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
  1468
    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
  1469
  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
  1470
    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
  1471
79857
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1472
  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
  1473
  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
  1474
    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
  1475
      using z0 assms by auto
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1476
  qed (use assms that in auto)
819c28a7280f New material by Wenda Li and Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 78698
diff changeset
  1477
  thus "f constant_on B"
77277
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1478
    by (auto simp: constant_on_def)
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1479
qed
c6b50597abbc More of Eberl's contributions: memomorphic functions
paulson <lp15@cam.ac.uk>
parents:
diff changeset
  1480
82517
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1481
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1482
subsection \<open>More on poles and zeros\<close>
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1483
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1484
lemma zorder_prod:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1485
  assumes "\<And>x. x \<in> A \<Longrightarrow> f x meromorphic_on {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1486
  assumes "eventually (\<lambda>z. (\<Prod>x\<in>A. f x z) \<noteq> 0) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1487
  shows   "zorder (\<lambda>z. \<Prod>x\<in>A. f x z) z = (\<Sum>x\<in>A. zorder (f x) z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1488
  using assms
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1489
proof (induction A rule: infinite_finite_induct)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1490
  case (insert a A)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1491
  have "zorder (\<lambda>z. \<Prod>x\<in>insert a A. f x z) z = zorder (\<lambda>z. f a z * (\<Prod>x\<in>A. f x z)) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1492
    using insert.hyps by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1493
  also have "\<dots> = zorder (f a) z + zorder (\<lambda>z. \<Prod>x\<in>A. f x z) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1494
  proof (subst zorder_mult)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1495
    have "\<forall>\<^sub>F z in at z. f a z \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1496
      using insert.prems(2) by eventually_elim (use insert.hyps in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1497
    thus "\<exists>\<^sub>F z in at z. f a z \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1498
      using eventually_frequently at_neq_bot by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1499
  next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1500
    have "\<forall>\<^sub>F z in at z. (\<Prod>x\<in>A. f x z) \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1501
      using insert.prems(2) by eventually_elim (use insert.hyps in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1502
    thus "\<exists>\<^sub>F z in at z. (\<Prod>x\<in>A. f x z) \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1503
      using eventually_frequently at_neq_bot by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1504
  qed (use insert.prems in \<open>auto intro!: meromorphic_intros\<close>)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1505
  also have "zorder (\<lambda>z. \<Prod>x\<in>A. f x z) z = (\<Sum>x\<in>A. zorder (f x) z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1506
    by (intro insert.IH) (use insert.prems insert.hyps in \<open>auto elim!: eventually_mono\<close>)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1507
  also have "zorder (f a) z + \<dots> = (\<Sum>x\<in>insert a A. zorder (f x) z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1508
    using insert.hyps by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1509
  finally show ?case .
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1510
qed auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1511
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1512
lemma zorder_scale:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1513
  assumes "f meromorphic_on {a * z}" "a \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1514
  shows "zorder (\<lambda>w. f (a * w)) z = zorder f (a * z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1515
proof (cases "eventually (\<lambda>z. f z = 0) (at (a * z))")
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1516
  case True
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1517
  hence ev: "eventually (\<lambda>z. f (a * z) = 0) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1518
  proof (rule eventually_compose_filterlim)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1519
    show "filterlim ((*) a) (at (a * z)) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1520
    proof (rule filterlim_atI)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1521
      show "\<forall>\<^sub>F x in at z. a * x \<noteq> a * z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1522
        using eventually_neq_at_within[of z z] by eventually_elim (use \<open>a \<noteq> 0\<close> in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1523
    qed (auto intro!: tendsto_intros)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1524
  qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1525
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1526
  have "zorder (\<lambda>w. f (a * w)) z = zorder (\<lambda>_. 0) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1527
    by (rule zorder_cong) (use ev in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1528
  also have "\<dots> = zorder (\<lambda>_. 0) (a * z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1529
    by (simp add: zorder_shift')
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1530
  also have "\<dots> = zorder f (a * z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1531
    by (rule zorder_cong) (use True in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1532
  finally show ?thesis .
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1533
next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1534
  case False
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1535
  define G where "G = fps_const a * fps_X"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1536
  have "zorder (f \<circ> (\<lambda>z. a * z)) z = zorder f (a * z) * int (subdegree G)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1537
  proof (rule zorder_compose)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1538
    show "isolated_singularity_at f (a * z)" "not_essential f (a * z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1539
      using assms(1) by (auto simp: meromorphic_on_altdef)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1540
  next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1541
    have "(\<lambda>x. a * x) has_fps_expansion G"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1542
      unfolding G_def by (intro fps_expansion_intros)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1543
    thus "(\<lambda>x. a * (z + x) - a * z) has_fps_expansion G"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1544
      by (simp add: algebra_simps)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1545
  next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1546
    show "\<forall>\<^sub>F w in at (a * z). f w \<noteq> 0" using False 
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1547
      by (metis assms(1) has_laurent_expansion_isolated has_laurent_expansion_not_essential
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1548
             meromorphic_on_def non_zero_neighbour not_eventually singletonI)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1549
  qed (use \<open>a \<noteq> 0\<close> in \<open>auto simp: G_def\<close>)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1550
  also have "subdegree G = 1"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1551
    using \<open>a \<noteq> 0\<close> by (simp add: G_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1552
  finally show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1553
    by (simp add: o_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1554
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1555
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1556
lemma zorder_uminus:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1557
  assumes "f meromorphic_on {-z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1558
  shows "zorder (\<lambda>w. f (-w)) z = zorder f (-z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1559
  using assms zorder_scale[of f "-1" z] by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1560
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1561
lemma is_pole_deriv_iff:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1562
  assumes "f meromorphic_on {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1563
  shows   "is_pole (deriv f) z \<longleftrightarrow> is_pole f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1564
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1565
  from assms obtain F where F: "(\<lambda>w. f (z + w)) has_laurent_expansion F"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1566
    by (auto simp: meromorphic_on_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1567
  have "deriv (\<lambda>w. f (z + w)) has_laurent_expansion fls_deriv F"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1568
    using F by (rule has_laurent_expansion_deriv)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1569
  also have "deriv (\<lambda>w. f (z + w)) = (\<lambda>w. deriv f (z + w))"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1570
    by (simp add: deriv_shift_0' add_ac o_def fun_eq_iff)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1571
  finally have F': "(\<lambda>w. deriv f (z + w)) has_laurent_expansion fls_deriv F" .
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1572
  have "is_pole (deriv f) z \<longleftrightarrow> fls_subdegree (fls_deriv F) < 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1573
    using is_pole_fls_subdegree_iff[OF F'] by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1574
  also have "\<dots> \<longleftrightarrow> fls_subdegree F < 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1575
    using fls_deriv_subdegree0 fls_subdegree_deriv linorder_less_linear by fastforce
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1576
  also have "\<dots> \<longleftrightarrow> is_pole f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1577
    using F by (simp add: has_laurent_expansion_imp_is_pole_iff)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1578
  finally show ?thesis .
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1579
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1580
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1581
lemma isolated_zero_remove_sings_iff [simp]:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1582
  assumes "isolated_singularity_at f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1583
  shows   "isolated_zero (remove_sings f) z \<longleftrightarrow> isolated_zero f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1584
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1585
  have *: "(\<forall>\<^sub>F x in at z. remove_sings f x \<noteq> 0) \<longleftrightarrow> (\<forall>\<^sub>F x in at z. f x \<noteq> 0)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1586
  proof
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1587
    assume "(\<forall>\<^sub>F x in at z. f x \<noteq> 0)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1588
    thus "(\<forall>\<^sub>F x in at z. remove_sings f x \<noteq> 0)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1589
      using eventually_remove_sings_eq_at[OF assms]
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1590
      by eventually_elim auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1591
  next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1592
    assume "(\<forall>\<^sub>F x in at z. remove_sings f x \<noteq> 0)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1593
    thus "(\<forall>\<^sub>F x in at z. f x \<noteq> 0)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1594
      using eventually_remove_sings_eq_at[OF assms]
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1595
      by eventually_elim auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1596
  qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1597
  show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1598
    unfolding isolated_zero_def using assms * by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1599
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1600
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1601
lemma zorder_isolated_zero_pos:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1602
  assumes "isolated_zero f z" "f analytic_on {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1603
  shows   "zorder f z > 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1604
proof (subst zorder_pos_iff' [OF assms(2)])
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1605
  show "f z = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1606
    using assms by (simp add: zero_isolated_zero_analytic)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1607
next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1608
  have "\<forall>\<^sub>F z in at z. f z \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1609
    using assms by (auto simp: isolated_zero_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1610
  thus "\<exists>\<^sub>F z in at z. f z \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1611
    by (simp add: eventually_frequently)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1612
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1613
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1614
lemma zorder_isolated_zero_pos':
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1615
  assumes "isolated_zero f z" "isolated_singularity_at f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1616
  shows   "zorder f z > 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1617
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1618
  from assms(1) have "f \<midarrow>z\<rightarrow> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1619
    by (simp add: isolated_zero_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1620
  with assms(2) have "remove_sings f analytic_on {z}"
82653
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
  1621
    by (intro remove_sings_analytic_at)
82517
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1622
  hence "zorder (remove_sings f) z > 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1623
    using assms by (intro zorder_isolated_zero_pos) auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1624
  thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1625
    using assms by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1626
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1627
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1628
lemma zero_isolated_zero_nicely_meromorphic:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1629
  assumes "isolated_zero f z" "f nicely_meromorphic_on {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1630
  shows "f z = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1631
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1632
  have "\<not>is_pole f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1633
    using assms pole_is_not_zero by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1634
  with assms(2) have "f analytic_on {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1635
    by (simp add: nicely_meromorphic_on_imp_analytic_at)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1636
  with zero_isolated_zero_analytic assms(1) show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1637
    by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1638
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1639
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1640
lemma meromorphic_on_imp_not_zero_cosparse:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1641
  assumes "f meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1642
  shows   "eventually (\<lambda>z. \<not>isolated_zero f z) (cosparse A)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1643
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1644
  have "eventually (\<lambda>z. \<not>is_pole (\<lambda>z. inverse (f z)) z) (cosparse A)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1645
    by (intro meromorphic_on_imp_not_pole_cosparse meromorphic_intros assms)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1646
  thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1647
    by (simp add: is_pole_inverse_iff)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1648
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1649
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1650
lemma nicely_meromorphic_on_inverse [meromorphic_intros]:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1651
  assumes "f nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1652
  shows   "(\<lambda>x. inverse (f x)) nicely_meromorphic_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1653
  unfolding nicely_meromorphic_on_def
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1654
proof (intro conjI ballI)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1655
  fix z assume z: "z \<in> A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1656
  have "is_pole f z \<and> f z = 0 \<or> f \<midarrow>z\<rightarrow> f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1657
    using assms z by (auto simp: nicely_meromorphic_on_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1658
  thus "is_pole (\<lambda>x. inverse (f x)) z \<and> inverse (f z) = 0 \<or>
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1659
        (\<lambda>x. inverse (f x)) \<midarrow>z\<rightarrow> inverse (f z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1660
  proof
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1661
    assume "is_pole f z \<and> f z = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1662
    hence "isolated_zero (\<lambda>z. inverse (f z)) z \<and> inverse (f z) = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1663
      by (auto simp: isolated_zero_inverse_iff)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1664
    hence "(\<lambda>x. inverse (f x)) \<midarrow>z\<rightarrow> inverse (f z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1665
      by (simp add: isolated_zero_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1666
    thus ?thesis ..
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1667
  next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1668
    assume lim: "f \<midarrow>z\<rightarrow> f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1669
    hence ana: "f analytic_on {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1670
      using assms is_pole_def nicely_meromorphic_on_imp_analytic_at
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1671
            not_tendsto_and_filterlim_at_infinity trivial_limit_at z by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1672
    show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1673
    proof (cases "isolated_zero f z")
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1674
      case True
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1675
      with lim have "f z = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1676
        using continuous_within zero_isolated_zero by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1677
      with True have "is_pole (\<lambda>z. inverse (f z)) z \<and> inverse (f z) = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1678
        by (auto simp: is_pole_inverse_iff)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1679
      thus ?thesis ..
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1680
    next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1681
      case False
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1682
      hence "f z \<noteq> 0 \<or> (f z = 0 \<and> eventually (\<lambda>z. f z = 0) (at z))"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1683
        using non_isolated_zero_imp_eventually_zero[OF ana] by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1684
      thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1685
      proof (elim disjE conjE)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1686
        assume "f z \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1687
        hence "(\<lambda>z. inverse (f z)) \<midarrow>z\<rightarrow> inverse (f z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1688
          by (intro tendsto_intros lim)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1689
        thus ?thesis ..
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1690
      next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1691
        assume *: "f z = 0" "eventually (\<lambda>z. f z = 0) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1692
        have "eventually (\<lambda>z. inverse (f z) = 0) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1693
          using *(2) by eventually_elim auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1694
        hence "(\<lambda>z. inverse (f z)) \<midarrow>z\<rightarrow> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1695
          by (simp add: tendsto_eventually)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1696
        with *(1) show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1697
          by auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1698
      qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1699
    qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1700
  qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1701
qed (use assms in \<open>auto simp: nicely_meromorphic_on_def intro!: meromorphic_intros\<close>)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1702
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1703
lemma is_pole_zero_at_nicely_mero:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1704
  assumes "f nicely_meromorphic_on A" "is_pole f z" "z \<in> A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1705
  shows "f z = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1706
  by (meson assms at_neq_bot 
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1707
      is_pole_def nicely_meromorphic_on_def 
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1708
      not_tendsto_and_filterlim_at_infinity)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1709
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1710
lemma zero_or_pole:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1711
  assumes mero: "f nicely_meromorphic_on A" 
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1712
    and "z \<in> A" "f z = 0" and event: "\<forall>\<^sub>F x in at z. f x \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1713
  shows "isolated_zero f z \<or> is_pole f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1714
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1715
  from mero \<open>z\<in>A\<close>
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1716
  have "(is_pole f z \<and> f z=0) \<or> f \<midarrow>z\<rightarrow> f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1717
    unfolding nicely_meromorphic_on_def by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1718
  moreover have "isolated_zero f z" if "f \<midarrow>z\<rightarrow> f z" 
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1719
    unfolding isolated_zero_def
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1720
    using \<open>f z=0\<close> that event tendsto_nhds_iff by auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1721
  ultimately show ?thesis by auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1722
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1723
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1724
lemma isolated_zero_fls_subdegree_iff:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1725
  assumes "(\<lambda>x. f (z + x)) has_laurent_expansion F"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1726
  shows "isolated_zero f z \<longleftrightarrow> fls_subdegree F > 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1727
  using assms unfolding isolated_zero_def
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1728
  by (metis Lim_at_zero fls_zero_subdegree has_laurent_expansion_eventually_nonzero_iff not_le
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1729
        order.refl tendsto_0_subdegree_iff_0)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1730
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1731
lemma zorder_pos_imp_isolated_zero:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1732
  assumes "f meromorphic_on {z}" "eventually (\<lambda>z. f z \<noteq> 0) (at z)" "zorder f z > 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1733
  shows   "isolated_zero f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1734
  using assms isolated_zero_fls_subdegree_iff
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1735
  by (metis has_laurent_expansion_eventually_nonzero_iff
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1736
      has_laurent_expansion_zorder insertI1
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1737
      meromorphic_on_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1738
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1739
lemma zorder_neg_imp_is_pole:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1740
  assumes "f meromorphic_on {z}" "eventually (\<lambda>z. f z \<noteq> 0) (at z)" "zorder f z < 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1741
  shows   "is_pole f z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1742
  using assms is_pole_fls_subdegree_iff at_neq_bot eventually_frequently meromorphic_at_iff
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1743
        neg_zorder_imp_is_pole by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1744
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1745
lemma not_pole_not_isolated_zero_imp_zorder_eq_0:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1746
  assumes "f meromorphic_on {z}" "\<not>is_pole f z" "\<not>isolated_zero f z" "frequently (\<lambda>z. f z \<noteq> 0) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1747
  shows   "zorder f z = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1748
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1749
  have "remove_sings f analytic_on {z}"
82653
565545b7fe9d three lemmas for HOL-Complex_Analysis, HOL-Computational_Algebra
Manuel Eberl <eberlm@in.tum.de>
parents: 82517
diff changeset
  1750
    using assms meromorphic_at_iff not_essential_def remove_sings_analytic_at by blast
82517
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1751
  moreover from this and assms have "remove_sings f z \<noteq> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1752
    using isolated_zero_def meromorphic_at_iff non_zero_neighbour remove_sings_eq_0_iff by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1753
  moreover have "frequently (\<lambda>z. remove_sings f z \<noteq> 0) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1754
    using assms analytic_at_neq_imp_eventually_neq calculation(1,2)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1755
      eventually_frequently trivial_limit_at by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1756
  ultimately have "zorder (remove_sings f) z = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1757
    using zorder_eq_0_iff by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1758
  thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1759
    using assms(1) meromorphic_at_iff by auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1760
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1761
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1762
lemma not_essential_compose:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1763
  assumes "not_essential f (g z)" "g analytic_on {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1764
  shows   "not_essential (\<lambda>x. f (g x)) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1765
proof (cases "isolated_zero (\<lambda>w. g w - g z) z")
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1766
  case False
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1767
  hence "eventually (\<lambda>w. g w - g z = 0) (nhds z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1768
    by (intro non_isolated_zero_imp_eventually_zero' analytic_intros assms) auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1769
  hence "not_essential (\<lambda>x. f (g x)) z \<longleftrightarrow> not_essential (\<lambda>_. f (g z)) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1770
    by (intro not_essential_cong refl)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1771
       (auto elim!: eventually_mono simp: eventually_at_filter)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1772
  thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1773
    by (simp add: not_essential_const)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1774
next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1775
  case True
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1776
  hence ev: "eventually (\<lambda>w. g w \<noteq> g z) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1777
    by (auto simp: isolated_zero_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1778
  from assms consider c where "f \<midarrow>g z\<rightarrow> c" | "is_pole f (g z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1779
    by (auto simp: not_essential_def)  
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1780
  have "isCont g z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1781
    by (rule analytic_at_imp_isCont) fact
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1782
  hence lim: "g \<midarrow>z\<rightarrow> g z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1783
    using isContD by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1784
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1785
  from assms(1) consider c where "f \<midarrow>g z\<rightarrow> c" | "is_pole f (g z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1786
    unfolding not_essential_def by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1787
  thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1788
  proof cases
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1789
    fix c assume "f \<midarrow>g z\<rightarrow> c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1790
    hence "(\<lambda>x. f (g x)) \<midarrow>z\<rightarrow> c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1791
      by (rule filterlim_compose) (use lim ev in \<open>auto simp: filterlim_at\<close>)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1792
    thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1793
      by (auto simp: not_essential_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1794
  next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1795
    assume "is_pole f (g z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1796
    hence "is_pole (\<lambda>x. f (g x)) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1797
      by (rule is_pole_compose) fact+
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1798
    thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1799
      by (auto simp: not_essential_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1800
  qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1801
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1802
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1803
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1804
lemma isolated_singularity_at_compose:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1805
  assumes "isolated_singularity_at f (g z)" "g analytic_on {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1806
  shows   "isolated_singularity_at (\<lambda>x. f (g x)) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1807
proof (cases "isolated_zero (\<lambda>w. g w - g z) z")
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1808
  case False
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1809
  hence "eventually (\<lambda>w. g w - g z = 0) (nhds z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1810
    by (intro non_isolated_zero_imp_eventually_zero') (use assms in \<open>auto intro!: analytic_intros\<close>)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1811
  hence "isolated_singularity_at (\<lambda>x. f (g x)) z \<longleftrightarrow> isolated_singularity_at (\<lambda>_. f (g z)) z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1812
    by (intro isolated_singularity_at_cong refl)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1813
       (auto elim!: eventually_mono simp: eventually_at_filter)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1814
  thus ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1815
    by (simp add: isolated_singularity_at_const)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1816
next
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1817
  case True
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1818
  from assms(1) obtain r where r: "r > 0" "f analytic_on ball (g z) r - {g z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1819
    by (auto simp: isolated_singularity_at_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1820
  hence holo_f: "f holomorphic_on ball (g z) r - {g z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1821
    by (subst (asm) analytic_on_open) auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1822
  from assms(2) obtain r' where r': "r' > 0" "g holomorphic_on ball z r'"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1823
    by (auto simp: analytic_on_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1824
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1825
  have "continuous_on (ball z r') g"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1826
    using holomorphic_on_imp_continuous_on r' by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1827
  hence "isCont g z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1828
    using r' by (subst (asm) continuous_on_eq_continuous_at) auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1829
  hence "g \<midarrow>z\<rightarrow> g z"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1830
    using isContD by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1831
  hence "eventually (\<lambda>w. g w \<in> ball (g z) r) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1832
    using \<open>r > 0\<close> unfolding tendsto_def by force
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1833
  moreover have "eventually (\<lambda>w. g w \<noteq> g z) (at z)" using True
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1834
    by (auto simp: isolated_zero_def elim!: eventually_mono)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1835
  ultimately have "eventually (\<lambda>w. g w \<in> ball (g z) r - {g z}) (at z)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1836
    by eventually_elim auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1837
  then obtain r'' where r'': "r'' > 0" "\<forall>w\<in>ball z r''-{z}. g w \<in> ball (g z) r - {g z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1838
    unfolding eventually_at_filter eventually_nhds_metric ball_def
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1839
    by (auto simp: dist_commute)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1840
  have "f \<circ> g holomorphic_on ball z (min r' r'') - {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1841
  proof (rule holomorphic_on_compose_gen)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1842
    show "g holomorphic_on ball z (min r' r'') - {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1843
      by (rule holomorphic_on_subset[OF r'(2)]) auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1844
    show "f holomorphic_on ball (g z) r - {g z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1845
      by fact
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1846
    show "g ` (ball z (min r' r'') - {z}) \<subseteq> ball (g z) r - {g z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1847
      using r'' by force
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1848
  qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1849
  hence "f \<circ> g analytic_on ball z (min r' r'') - {z}"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1850
    by (subst analytic_on_open) auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1851
  thus ?thesis using \<open>r' > 0\<close> \<open>r'' > 0\<close>
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1852
    by (auto simp: isolated_singularity_at_def o_def intro!: exI[of _ "min r' r''"])
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1853
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1854
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1855
lemma is_pole_power_int_0:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1856
  assumes "f analytic_on {x}" "isolated_zero f x" "n < 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1857
  shows   "is_pole (\<lambda>x. f x powi n) x"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1858
proof -
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1859
  have "f \<midarrow>x\<rightarrow> f x"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1860
    using assms(1) by (simp add: analytic_at_imp_isCont isContD)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1861
  with assms show ?thesis
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1862
    unfolding is_pole_def
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1863
    by (intro filterlim_power_int_neg_at_infinity) (auto simp: isolated_zero_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1864
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1865
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1866
lemma isolated_zero_imp_not_constant_on:
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1867
  fixes f :: "'a :: perfect_space \<Rightarrow> 'b :: real_normed_div_algebra"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1868
  assumes "isolated_zero f x" "x \<in> A" "open A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1869
  shows   "\<not>f constant_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1870
proof
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1871
  assume "f constant_on A"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1872
  then obtain c where c: "\<And>x. x \<in> A \<Longrightarrow> f x = c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1873
    by (auto simp: constant_on_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1874
  have "eventually (\<lambda>z. z \<in> A - {x}) (at x)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1875
    by (intro eventually_at_in_open assms)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1876
  hence "eventually (\<lambda>z. f z = c) (at x)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1877
    by eventually_elim (use c in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1878
  hence "f \<midarrow>x\<rightarrow> c"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1879
    using tendsto_eventually by blast
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1880
  moreover from assms have "f \<midarrow>x\<rightarrow> 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1881
    by (simp add: isolated_zero_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1882
  ultimately have [simp]: "c = 0"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1883
    using tendsto_unique[of "at x" f c 0] by (simp add: at_neq_bot)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1884
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1885
  have "eventually (\<lambda>x. f x \<noteq> 0) (at x)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1886
    using assms by (auto simp: isolated_zero_def)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1887
  moreover have "eventually (\<lambda>x. x \<in> A) (at x)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1888
    using assms by (intro eventually_at_in_open') auto
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1889
  ultimately have "eventually (\<lambda>x. False) (at x)"
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1890
    by eventually_elim (use c in auto)
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1891
  thus False
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1892
    by simp
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1893
qed
111b1b2a2d13 new lemmas for HOL-Complex_Analysis; overhaul of isolated_zeros
Manuel Eberl <manuel@pruvisto.org>
parents: 82459
diff changeset
  1894
78698
1b9388e6eb75 A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77277
diff changeset
  1895
end