@@ -6,7 +6,6 @@ Authors: Vincent Beffara, Stefan Kebekus
66module
77
88public import Mathlib.Analysis.Analytic.IsolatedZeros
9- public import Mathlib.Analysis.Calculus.Deriv.Mul
109public import Mathlib.Analysis.Calculus.Deriv.Pow
1110public import Mathlib.Analysis.Calculus.InverseFunctionTheorem.Analytic
1211public import Mathlib.Analysis.Calculus.IteratedDeriv.Lemmas
@@ -418,6 +417,60 @@ lemma AnalyticAt.exists_eq_sum_add_pow_mul [CharZero 𝕜] [CompleteSpace E]
418417 · contrapose hz
419418 exact (pow_eq_zero_iff'.mp hz).1 ▸ mem_of_mem_nhds hU0
420419
420+ variable [CharZero 𝕜] [CompleteSpace E] {z₀ : 𝕜} {f : 𝕜 → E}
421+ (hf : AnalyticAt 𝕜 f z₀) (hzero : f z₀ = 0 )
422+
423+ include hf hzero
424+
425+ /-- If an analytic function `f` vanishes at `z₀`, then the analytic order of its derivative
426+ at `z₀` is at least `n` if and only if the analytic order of `f` at `z₀` is at least `n + 1`. -/
427+ lemma analyticOrderAt_deriv_ge_iff {n : ℕ} :
428+ n ≤ analyticOrderAt (deriv f) z₀ ↔ n + 1 ≤ analyticOrderAt f z₀ := by
429+ rw [natCast_le_analyticOrderAt_iff_iteratedDeriv_eq_zero hf.deriv,
430+ ← Nat.cast_add_one, natCast_le_analyticOrderAt_iff_iteratedDeriv_eq_zero hf]
431+ simp only [← iteratedDeriv_succ']
432+ refine ⟨fun h k hk ↦ ?_, fun h k hk ↦ h (k + 1 ) <| by lia⟩
433+ cases k with
434+ | zero => simpa
435+ | succ k => exact h k <| by lia
436+
437+ /-- The derivative of an analytic function `f` has infinite analytic order at a zero `z₀` if and
438+ only if `f` has infinite analytic order at `z₀`. -/
439+ lemma analyticOrderAt_deriv_eq_top_iff_of_eq_zero :
440+ analyticOrderAt (deriv f) z₀ = ⊤ ↔ analyticOrderAt f z₀ = ⊤ := by
441+ simp_rw [ENat.eq_top_iff_forall_ge, analyticOrderAt_deriv_ge_iff hf hzero]
442+ exact ⟨fun h m ↦ le_self_add.trans (h m), fun h m ↦ h (m + 1 )⟩
443+
444+ /-- If an analytic function `f` vanishes at `z₀`, then its derivative has finite analytic order `n`
445+ at `z₀` if and only if `f` has analytic order `n + 1` at `z₀`. -/
446+ lemma analyticOrderAt_deriv_eq_iff {n : ℕ} :
447+ analyticOrderAt f z₀ = n + 1 ↔ analyticOrderAt (deriv f) z₀ = n := by
448+ have H {m : ℕ} {n : ℕ∞} : n = m ↔ m ≤ n ∧ ¬ m + 1 ≤ n := by
449+ cases n with | top => simp | coe _ => norm_cast; lia
450+ rw [← Nat.cast_add_one n, H, H, analyticOrderAt_deriv_ge_iff hf hzero, ← Nat.cast_add_one n,
451+ analyticOrderAt_deriv_ge_iff hf hzero]
452+
453+ omit hzero in
454+ /-- An analytic function `f` has finite analytic order `n` at `z₀` if and only if its first
455+ `n` iterated derivatives (including `f` itself) vanish at `z₀` and the `n`-th iterated derivative is
456+ non-zero. -/
457+ lemma analyticOrderAt_eq_nat_iff_iteratedDeriv_eq_zero {n : ℕ} :
458+ analyticOrderAt f z₀ = n ↔ (∀ k < n, iteratedDeriv k f z₀ = 0 ) ∧ iteratedDeriv n f z₀ ≠ 0 := by
459+ induction n generalizing f with
460+ | zero => simp [hf.analyticOrderAt_eq_zero]
461+ | succ n IH =>
462+ specialize IH hf.deriv
463+ simp_rw [← iteratedDeriv_succ'] at IH
464+ refine ⟨fun ho ↦ ?_, fun ⟨hz, hnz⟩ ↦ ?_⟩
465+ · have ⟨h_zero, h_nz⟩ := IH.mp (analyticOrderAt_deriv_of_pos hf ho)
466+ refine ⟨fun k hk ↦ ?_, h_nz⟩
467+ match k with
468+ | 0 => rw [iteratedDeriv_zero, ← hf.analyticOrderAt_ne_zero, ho, Nat.cast_add_one]
469+ exact Nat.cast_add_one_ne_zero _
470+ | k + 1 => exact h_zero k (by lia)
471+ · exact (analyticOrderAt_deriv_eq_iff hf <| by simpa using hz 0 (by lia)).mpr <|
472+ IH.mpr ⟨fun j _ ↦ hz (j + 1 ) (by lia), hnz⟩
473+
421474end NormedSpace
422475
423476/-!
0 commit comments