Documentation

Mathlib.Analysis.Analytic.IsolatedZeros

Principle of isolated zeros #

This file proves the fact that the zeros of a non-constant analytic function of one variable are isolated. It also introduces a little bit of API in the HasFPowerSeriesAt namespace that is useful in this setup.

Main results #

Applications #

theorem HasSum.hasSum_at_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (a : โ„• โ†’ E) :
HasSum (fun (n : โ„•) => 0 ^ n โ€ข a n) (a 0)
theorem HasSum.exists_hasSum_smul_of_apply_eq_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {s : E} {n : โ„•} {z : ๐•œ} {a : โ„• โ†’ E} (hs : HasSum (fun (m : โ„•) => z ^ m โ€ข a m) s) (ha : โˆ€ k < n, a k = 0) :
โˆƒ (t : E), z ^ n โ€ข t = s โˆง HasSum (fun (m : โ„•) => z ^ m โ€ข a (m + n)) t
theorem HasFPowerSeriesAt.has_fpower_series_dslope_fslope {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {p : FormalMultilinearSeries ๐•œ ๐•œ E} {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (hp : HasFPowerSeriesAt f p zโ‚€) :
HasFPowerSeriesAt (dslope f zโ‚€) p.fslope zโ‚€
theorem HasFPowerSeriesAt.has_fpower_series_iterate_dslope_fslope {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {p : FormalMultilinearSeries ๐•œ ๐•œ E} {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (n : โ„•) (hp : HasFPowerSeriesAt f p zโ‚€) :
theorem HasFPowerSeriesAt.iterate_dslope_fslope_ne_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {p : FormalMultilinearSeries ๐•œ ๐•œ E} {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (hp : HasFPowerSeriesAt f p zโ‚€) (h : p โ‰  0) :
(Function.swap dslope zโ‚€)^[p.order] f zโ‚€ โ‰  0
theorem HasFPowerSeriesAt.eq_pow_order_mul_iterate_dslope {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {p : FormalMultilinearSeries ๐•œ ๐•œ E} {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (hp : HasFPowerSeriesAt f p zโ‚€) :
โˆ€แถ  (z : ๐•œ) in nhds zโ‚€, f z = (z - zโ‚€) ^ p.order โ€ข (Function.swap dslope zโ‚€)^[p.order] f z
theorem HasFPowerSeriesAt.locally_ne_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {p : FormalMultilinearSeries ๐•œ ๐•œ E} {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (hp : HasFPowerSeriesAt f p zโ‚€) (h : p โ‰  0) :
โˆ€แถ  (z : ๐•œ) in nhdsWithin zโ‚€ {zโ‚€}แถœ, f z โ‰  0
theorem HasFPowerSeriesAt.locally_zero_iff {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {p : FormalMultilinearSeries ๐•œ ๐•œ E} {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (hp : HasFPowerSeriesAt f p zโ‚€) :
(โˆ€แถ  (z : ๐•œ) in nhds zโ‚€, f z = 0) โ†” p = 0
theorem AnalyticAt.eventually_eq_zero_or_eventually_ne_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (hf : AnalyticAt ๐•œ f zโ‚€) :
(โˆ€แถ  (z : ๐•œ) in nhds zโ‚€, f z = 0) โˆจ โˆ€แถ  (z : ๐•œ) in nhdsWithin zโ‚€ {zโ‚€}แถœ, f z โ‰  0

The principle of isolated zeros for an analytic function, local version: if a function is analytic at zโ‚€, then either it is identically zero in a neighborhood of zโ‚€, or it does not vanish in a punctured neighborhood of zโ‚€.

theorem AnalyticAt.eventually_eq_or_eventually_ne {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f g : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (hf : AnalyticAt ๐•œ f zโ‚€) (hg : AnalyticAt ๐•œ g zโ‚€) :
(โˆ€แถ  (z : ๐•œ) in nhds zโ‚€, f z = g z) โˆจ โˆ€แถ  (z : ๐•œ) in nhdsWithin zโ‚€ {zโ‚€}แถœ, f z โ‰  g z
theorem AnalyticAt.frequently_zero_iff_eventually_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {w : ๐•œ} (hf : AnalyticAt ๐•œ f w) :
(โˆƒแถ  (z : ๐•œ) in nhdsWithin w {w}แถœ, f z = 0) โ†” โˆ€แถ  (z : ๐•œ) in nhds w, f z = 0
theorem AnalyticAt.frequently_eq_iff_eventually_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f g : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (hf : AnalyticAt ๐•œ f zโ‚€) (hg : AnalyticAt ๐•œ g zโ‚€) :
(โˆƒแถ  (z : ๐•œ) in nhdsWithin zโ‚€ {zโ‚€}แถœ, f z = g z) โ†” โˆ€แถ  (z : ๐•œ) in nhds zโ‚€, f z = g z
theorem AnalyticAt.unique_eventuallyEq_zpow_smul_nonzero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} {m n : โ„ค} (hm : โˆƒ (g : ๐•œ โ†’ E), AnalyticAt ๐•œ g zโ‚€ โˆง g zโ‚€ โ‰  0 โˆง โˆ€แถ  (z : ๐•œ) in nhdsWithin zโ‚€ {zโ‚€}แถœ, f z = (z - zโ‚€) ^ m โ€ข g z) (hn : โˆƒ (g : ๐•œ โ†’ E), AnalyticAt ๐•œ g zโ‚€ โˆง g zโ‚€ โ‰  0 โˆง โˆ€แถ  (z : ๐•œ) in nhdsWithin zโ‚€ {zโ‚€}แถœ, f z = (z - zโ‚€) ^ n โ€ข g z) :
m = n

For a function f on ๐•œ, and zโ‚€ โˆˆ ๐•œ, there exists at most one n such that on a punctured neighbourhood of zโ‚€ we have f z = (z - zโ‚€) ^ n โ€ข g z, with g analytic and nonvanishing at zโ‚€. We formulate this with n : โ„ค, and deduce the case n : โ„• later, for applications to meromorphic functions.

theorem AnalyticAt.unique_eventuallyEq_pow_smul_nonzero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} {m n : โ„•} (hm : โˆƒ (g : ๐•œ โ†’ E), AnalyticAt ๐•œ g zโ‚€ โˆง g zโ‚€ โ‰  0 โˆง โˆ€แถ  (z : ๐•œ) in nhds zโ‚€, f z = (z - zโ‚€) ^ m โ€ข g z) (hn : โˆƒ (g : ๐•œ โ†’ E), AnalyticAt ๐•œ g zโ‚€ โˆง g zโ‚€ โ‰  0 โˆง โˆ€แถ  (z : ๐•œ) in nhds zโ‚€, f z = (z - zโ‚€) ^ n โ€ข g z) :
m = n

For a function f on ๐•œ, and zโ‚€ โˆˆ ๐•œ, there exists at most one n such that on a neighbourhood of zโ‚€ we have f z = (z - zโ‚€) ^ n โ€ข g z, with g analytic and nonvanishing at zโ‚€.

theorem AnalyticAt.exists_eventuallyEq_pow_smul_nonzero_iff {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} (hf : AnalyticAt ๐•œ f zโ‚€) :
(โˆƒ (n : โ„•) (g : ๐•œ โ†’ E), AnalyticAt ๐•œ g zโ‚€ โˆง g zโ‚€ โ‰  0 โˆง โˆ€แถ  (z : ๐•œ) in nhds zโ‚€, f z = (z - zโ‚€) ^ n โ€ข g z) โ†” ยฌโˆ€แถ  (z : ๐•œ) in nhds zโ‚€, f z = 0

If f is analytic at zโ‚€, then exactly one of the following two possibilities occurs: either f vanishes identically near zโ‚€, or locally around zโ‚€ it has the form z โ†ฆ (z - zโ‚€) ^ n โ€ข g z for some n and some g which is analytic and non-vanishing at zโ‚€.

theorem AnalyticOnNhd.eqOn_zero_of_preconnected_of_frequently_eq_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} {U : Set ๐•œ} (hf : AnalyticOnNhd ๐•œ f U) (hU : IsPreconnected U) (hโ‚€ : zโ‚€ โˆˆ U) (hfw : โˆƒแถ  (z : ๐•œ) in nhdsWithin zโ‚€ {zโ‚€}แถœ, f z = 0) :
Set.EqOn f 0 U

The principle of isolated zeros for an analytic function, global version: if a function is analytic on a connected set U and vanishes in arbitrary neighborhoods of a point zโ‚€ โˆˆ U, then it is identically zero in U. For higher-dimensional versions requiring that the function vanishes in a neighborhood of zโ‚€, see AnalyticOnNhd.eqOn_zero_of_preconnected_of_eventuallyEq_zero.

theorem AnalyticOnNhd.eqOn_zero_or_eventually_ne_zero_of_preconnected {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {U : Set ๐•œ} (hf : AnalyticOnNhd ๐•œ f U) (hU : IsPreconnected U) :
theorem AnalyticOnNhd.eqOn_zero_of_preconnected_of_mem_closure {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} {U : Set ๐•œ} (hf : AnalyticOnNhd ๐•œ f U) (hU : IsPreconnected U) (hโ‚€ : zโ‚€ โˆˆ U) (hfzโ‚€ : zโ‚€ โˆˆ closure ({z : ๐•œ | f z = 0} \ {zโ‚€})) :
Set.EqOn f 0 U
theorem AnalyticOnNhd.eqOn_of_preconnected_of_frequently_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f g : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} {U : Set ๐•œ} (hf : AnalyticOnNhd ๐•œ f U) (hg : AnalyticOnNhd ๐•œ g U) (hU : IsPreconnected U) (hโ‚€ : zโ‚€ โˆˆ U) (hfg : โˆƒแถ  (z : ๐•œ) in nhdsWithin zโ‚€ {zโ‚€}แถœ, f z = g z) :
Set.EqOn f g U

The identity principle for analytic functions, global version: if two functions are analytic on a connected set U and coincide at points which accumulate to a point zโ‚€ โˆˆ U, then they coincide globally in U. For higher-dimensional versions requiring that the functions coincide in a neighborhood of zโ‚€, see AnalyticOnNhd.eqOn_of_preconnected_of_eventuallyEq.

theorem AnalyticOnNhd.eqOn_or_eventually_ne_of_preconnected {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f g : ๐•œ โ†’ E} {U : Set ๐•œ} (hf : AnalyticOnNhd ๐•œ f U) (hg : AnalyticOnNhd ๐•œ g U) (hU : IsPreconnected U) :
theorem AnalyticOnNhd.eqOn_of_preconnected_of_mem_closure {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f g : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} {U : Set ๐•œ} (hf : AnalyticOnNhd ๐•œ f U) (hg : AnalyticOnNhd ๐•œ g U) (hU : IsPreconnected U) (hโ‚€ : zโ‚€ โˆˆ U) (hfg : zโ‚€ โˆˆ closure ({z : ๐•œ | f z = g z} \ {zโ‚€})) :
Set.EqOn f g U
theorem AnalyticOnNhd.eq_of_frequently_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f g : ๐•œ โ†’ E} {zโ‚€ : ๐•œ} [ConnectedSpace ๐•œ] (hf : AnalyticOnNhd ๐•œ f Set.univ) (hg : AnalyticOnNhd ๐•œ g Set.univ) (hfg : โˆƒแถ  (z : ๐•œ) in nhdsWithin zโ‚€ {zโ‚€}แถœ, f z = g z) :
f = g

The identity principle for analytic functions, global version: if two functions on a normed field ๐•œ are analytic everywhere and coincide at points which accumulate to a point zโ‚€, then they coincide globally. For higher-dimensional versions requiring that the functions coincide in a neighborhood of zโ‚€, see AnalyticOnNhd.eq_of_eventuallyEq.

### Vanishing of products of analytic functions

theorem AnalyticOnNhd.eq_zero_or_eq_zero_of_smul_eq_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {U : Set ๐•œ} {A : Type u_3} [NormedRing A] [NormedAlgebra ๐•œ A] {B : Type u_4} [NormedAddCommGroup B] [NormedSpace ๐•œ B] [Module A B] [NoZeroSMulDivisors A B] {f : ๐•œ โ†’ A} {g : ๐•œ โ†’ B} (hf : AnalyticOnNhd ๐•œ f U) (hg : AnalyticOnNhd ๐•œ g U) (hfg : โˆ€ z โˆˆ U, f z โ€ข g z = 0) (hU : IsPreconnected U) :
(โˆ€ z โˆˆ U, f z = 0) โˆจ โˆ€ z โˆˆ U, g z = 0

If f, g are analytic on a neighbourhood of the preconnected open set U, and f โ€ข g = 0 on U, then either f = 0 on U or g = 0 on U.

theorem AnalyticOnNhd.eq_zero_or_eq_zero_of_mul_eq_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {U : Set ๐•œ} {A : Type u_3} [NormedRing A] [NormedAlgebra ๐•œ A] [NoZeroDivisors A] {f g : ๐•œ โ†’ A} (hf : AnalyticOnNhd ๐•œ f U) (hg : AnalyticOnNhd ๐•œ g U) (hfg : โˆ€ z โˆˆ U, f z * g z = 0) (hU : IsPreconnected U) :
(โˆ€ z โˆˆ U, f z = 0) โˆจ โˆ€ z โˆˆ U, g z = 0

If f, g are analytic on a neighbourhood of the preconnected open set U, and f * g = 0 on U, then either f = 0 on U or g = 0 on U.

### Preimages of codiscrete sets

theorem AnalyticAt.preimage_of_nhdsNE {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {x : ๐•œ} {f : ๐•œ โ†’ E} {s : Set E} (hfx : AnalyticAt ๐•œ f x) (hโ‚‚f : ยฌFilter.EventuallyConst f (nhds x)) (hs : s โˆˆ nhdsWithin (f x) {f x}แถœ) :

Preimages of codiscrete sets, local version: if f is analytic at x and not locally constant, then the preimage of any punctured neighbourhood of f x is a punctured neighbourhood of x.

theorem AnalyticAt.map_nhdsNE {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {x : ๐•œ} {f : ๐•œ โ†’ E} (hfx : AnalyticAt ๐•œ f x) (hโ‚‚f : ยฌFilter.EventuallyConst f (nhds x)) :

Preimages of codiscrete sets, local filter version: if f is analytic at x and not locally constant, then the push-forward of the punctured neighbourhood filter ๐“[โ‰ ] x is less than or equal to the punctured neighbourhood filter ๐“[โ‰ ] f x.

theorem AnalyticOnNhd.preimage_mem_codiscreteWithin {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {U : Set ๐•œ} {s : Set E} {f : ๐•œ โ†’ E} (hfU : AnalyticOnNhd ๐•œ f U) (hโ‚‚f : โˆ€ x โˆˆ U, ยฌFilter.EventuallyConst f (nhds x)) (hs : s โˆˆ Filter.codiscreteWithin (f '' U)) :

Preimages of codiscrete sets: if f is analytic on a neighbourhood of U and not locally constant, then the preimage of any subset codiscrete within f '' U is codiscrete within U.

Applications might want to use the theorem Filter.codiscreteWithin.mono.

theorem AnalyticOnNhd.map_codiscreteWithin {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {U : Set ๐•œ} {f : ๐•œ โ†’ E} (hfU : AnalyticOnNhd ๐•œ f U) (hโ‚‚f : โˆ€ x โˆˆ U, ยฌFilter.EventuallyConst f (nhds x)) :

Preimages of codiscrete sets, filter version: if f is analytic on a neighbourhood of U and not locally constant, then the push-forward of the filter of sets codiscrete within U is less than or equal to the filter of sets codiscrete within f '' U.

Applications might want to use the theorem Filter.codiscreteWithin.mono.