Theorem: hasFPowerSeriesAt_iff
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: refine' ⟨fun ⟨r, _, r_pos, h⟩ =>
  eventually_of_mem (EMetric.ball_mem_nhds 0 r_pos) fun _ => by simpa using h, _⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
⊢ HasFPowerSeriesAt f p z₀ ↔ ∀ᶠ (z : 𝕜) in 𝓝 0, HasSum (fun n => z ^ n • coeff p n) (f (z₀ + z))

tactic: simp only [Metric.eventually_nhds_iff]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
⊢ (∀ᶠ (z : 𝕜) in 𝓝 0, HasSum (fun n => z ^ n • coeff p n) (f (z₀ + z))) → HasFPowerSeriesAt f p z₀

tactic: rintro ⟨r, r_pos, h⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
⊢ (∃ ε, ε > 0 ∧ ∀ ⦃y : 𝕜⦄, dist y 0 < ε → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))) → HasFPowerSeriesAt f p z₀

tactic: refine' ⟨p.radius ⊓ r.toNNReal, by simp, _, _⟩
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
⊢ HasFPowerSeriesAt f p z₀

tactic: simpa using h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
x✝¹ : HasFPowerSeriesAt f p z₀
r : ℝ≥0∞
r_le✝ : r ≤ radius p
r_pos : 0 < r
h : ∀ {y : 𝕜}, y ∈ EMetric.ball 0 r → HasSum (fun n => ↑(p n) fun x => y) (f (z₀ + y))
x✝ : 𝕜
⊢ x✝ ∈ EMetric.ball 0 r → HasSum (fun n => x✝ ^ n • coeff p n) (f (z₀ + x✝))

tactic: simp
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
⊢ radius p ⊓ ↑(Real.toNNReal r) ≤ radius p

tactic: simp only [r_pos.lt, lt_inf_iff, ENNReal.coe_pos, Real.toNNReal_pos, and_true_iff]
state_before: case intro.intro.refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
⊢ 0 < radius p ⊓ ↑(Real.toNNReal r)

tactic: obtain ⟨z, z_pos, le_z⟩ := NormedField.exists_norm_lt 𝕜 r_pos.lt
state_before: case intro.intro.refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
⊢ 0 < radius p

tactic: have : (‖z‖₊ : ENNReal) ≤ p.radius := by
  simp only [dist_zero_right] at h
  apply FormalMultilinearSeries.le_radius_of_tendsto
  convert tendsto_norm.comp (h le_z).summable.tendsto_atTop_zero
  funext
  simp [norm_smul, mul_comm]
state_before: case intro.intro.refine'_1.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
⊢ 0 < radius p

tactic: refine' lt_of_lt_of_le _ this
state_before: case intro.intro.refine'_1.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
this : ↑‖z‖₊ ≤ radius p
⊢ 0 < radius p

tactic: simp only [ENNReal.coe_pos]
state_before: case intro.intro.refine'_1.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
this : ↑‖z‖₊ ≤ radius p
⊢ 0 < ↑‖z‖₊

tactic: exact zero_lt_iff.mpr (nnnorm_ne_zero_iff.mpr (norm_pos_iff.mp z_pos))
state_before: case intro.intro.refine'_1.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
this : ↑‖z‖₊ ≤ radius p
⊢ 0 < ‖z‖₊

tactic: simp only [dist_zero_right] at h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
⊢ ↑‖z‖₊ ≤ radius p

tactic: apply FormalMultilinearSeries.le_radius_of_tendsto
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
h : ∀ ⦃y : 𝕜⦄, ‖y‖ < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
⊢ ↑‖z‖₊ ≤ radius p

tactic: convert tendsto_norm.comp (h le_z).summable.tendsto_atTop_zero
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
h : ∀ ⦃y : 𝕜⦄, ‖y‖ < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
⊢ Tendsto (fun n => ‖p n‖ * ↑‖z‖₊ ^ n) atTop (𝓝 ?l)

case l
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
h : ∀ ⦃y : 𝕜⦄, ‖y‖ < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
⊢ ℝ

tactic: funext
state_before: case h.e'_3.h
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
h : ∀ ⦃y : 𝕜⦄, ‖y‖ < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
x✝ : ℕ
⊢ ‖p x✝‖ * ↑‖z‖₊ ^ x✝ = ((fun a => ‖a‖) ∘ fun n => z ^ n • coeff p n) x✝

tactic: simp [norm_smul, mul_comm]
state_before: case h.e'_3.h
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
z : 𝕜
z_pos : 0 < ‖z‖
le_z : ‖z‖ < r
h : ∀ ⦃y : 𝕜⦄, ‖y‖ < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
x✝ : ℕ
⊢ ‖p x✝‖ * ↑‖z‖₊ ^ x✝ = ((fun a => ‖a‖) ∘ fun n => z ^ n • coeff p n) x✝

tactic: simp only [EMetric.mem_ball, lt_inf_iff, edist_lt_coe, apply_eq_pow_smul_coeff, and_imp,
  dist_zero_right] at h⊢
state_before: case intro.intro.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, dist y 0 < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
⊢ ∀ {y : 𝕜}, y ∈ EMetric.ball 0 (radius p ⊓ ↑(Real.toNNReal r)) → HasSum (fun n => ↑(p n) fun x => y) (f (z₀ + y))

tactic: refine' fun {y} _ hyr => h _
state_before: case intro.intro.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, ‖y‖ < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
⊢ ∀ {y : 𝕜}, edist y 0 < radius p → nndist y 0 < Real.toNNReal r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))

tactic: simpa [nndist_eq_nnnorm, Real.lt_toNNReal_iff_coe_lt] using hyr
state_before: case intro.intro.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type ?u.2373770
G : Type ?u.2373773
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
z₀ : 𝕜
r : ℝ
r_pos : r > 0
h : ∀ ⦃y : 𝕜⦄, ‖y‖ < r → HasSum (fun n => y ^ n • coeff p n) (f (z₀ + y))
y : 𝕜
x✝ : edist y 0 < radius p
hyr : nndist y 0 < Real.toNNReal r
⊢ ‖y‖ < r