[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝¹⁰ : Ring 𝕜
inst✝⁹ : AddCommGroup E
inst✝⁸ : AddCommGroup F
inst✝⁷ : Module 𝕜 E
inst✝⁶ : Module 𝕜 F
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : TopologicalAddGroup E
inst✝² : TopologicalAddGroup F
inst✝¹ : ContinuousConstSMul 𝕜 E
inst✝ : ContinuousConstSMul 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
⊢ Continuous (partialSum p n)
[PROOFSTEP]
unfold partialSum
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝¹⁰ : Ring 𝕜
inst✝⁹ : AddCommGroup E
inst✝⁸ : AddCommGroup F
inst✝⁷ : Module 𝕜 E
inst✝⁶ : Module 𝕜 F
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : TopologicalAddGroup E
inst✝² : TopologicalAddGroup F
inst✝¹ : ContinuousConstSMul 𝕜 E
inst✝ : ContinuousConstSMul 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
⊢ Continuous fun x => ∑ k in Finset.range n, ↑(p k) fun x_1 => x
[PROOFSTEP]
continuity
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r✝ C r : ℝ≥0
h : ∀ (n : ℕ), ‖p n‖₊ * r ^ n ≤ C
n : ℕ
⊢ ‖p n‖ * ↑r ^ n ≤ ↑C
[PROOFSTEP]
exact_mod_cast h n
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
C : ℝ
h : ∀ᶠ (n : ℕ) in atTop, ‖p n‖ * ↑r ^ n ≤ C
n : ℕ
hn : ‖p n‖ * ↑r ^ n ≤ C
⊢ ‖‖p n‖ * ↑r ^ n‖ ≤ C * ‖1‖
[PROOFSTEP]
simpa
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : Summable fun n => ‖p n‖ * ↑r ^ n
⊢ Summable fun n => ‖p n‖₊ * r ^ n
[PROOFSTEP]
simp only [← coe_nnnorm] at h 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : Summable fun n => ↑‖p n‖₊ * ↑r ^ n
⊢ Summable fun n => ‖p n‖₊ * r ^ n
[PROOFSTEP]
exact_mod_cast h
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
h : ∀ᶠ (n : ℕ) in atTop, p n = 0
r : ℝ≥0
n : ℕ
hn : p n = 0
⊢ (fun _x => 0) n = (fun n => ‖p n‖ * ↑r ^ n) n
[PROOFSTEP]
simp [hn]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
v : F
⊢ ∀ (m : ℕ), constFormalMultilinearSeries 𝕜 E v (m + 1) = 0
[PROOFSTEP]
simp [constFormalMultilinearSeries]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
⊢ ∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x
[PROOFSTEP]
have := (TFAE_exists_lt_isLittleO_pow (fun n => ‖p n‖ * (r : ℝ) ^ n) 1).out 1 4
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
this :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
⊢ ∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x
[PROOFSTEP]
rw [this]
  -- Porting note: was
    -- rw [(TFAE_exists_lt_isLittleO_pow (fun n => ‖p n‖ * (r : ℝ) ^ n) 1).out 1 4]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
this :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
⊢ ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
[PROOFSTEP]
simp only [radius, lt_iSup_iff] at h 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
this :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
h : ∃ i i_1 i_2, ↑r < ↑i
⊢ ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
[PROOFSTEP]
rcases h with ⟨t, C, hC, rt⟩
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
this :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
t : ℝ≥0
C : ℝ
hC : ∀ (n : ℕ), ‖p n‖ * ↑t ^ n ≤ C
rt : ↑r < ↑t
⊢ ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
[PROOFSTEP]
rw [ENNReal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt 
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
this :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
t : ℝ≥0
C : ℝ
hC : ∀ (n : ℕ), ‖p n‖ * ↑t ^ n ≤ C
rt : ↑r < ↑t
⊢ ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
[PROOFSTEP]
have : 0 < (t : ℝ) := r.coe_nonneg.trans_lt rt
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
this✝ :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
t : ℝ≥0
C : ℝ
hC : ∀ (n : ℕ), ‖p n‖ * ↑t ^ n ≤ C
rt : ↑r < ↑t
this : 0 < ↑t
⊢ ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
[PROOFSTEP]
rw [← div_lt_one this] at rt 
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
this✝ :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
t : ℝ≥0
C : ℝ
hC : ∀ (n : ℕ), ‖p n‖ * ↑t ^ n ≤ C
rt : ↑r / ↑t < 1
this : 0 < ↑t
⊢ ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
[PROOFSTEP]
refine' ⟨_, rt, C, Or.inr zero_lt_one, fun n => _⟩
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
this✝ :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
t : ℝ≥0
C : ℝ
hC : ∀ (n : ℕ), ‖p n‖ * ↑t ^ n ≤ C
rt : ↑r / ↑t < 1
this : 0 < ↑t
n : ℕ
⊢ |‖p n‖ * ↑r ^ n| ≤ C * (↑r / ↑t) ^ n
[PROOFSTEP]
calc
  |‖p n‖ * (r : ℝ) ^ n| = ‖p n‖ * (t : ℝ) ^ n * (r / t : ℝ) ^ n := by field_simp [mul_right_comm, abs_mul, this.ne']
  _ ≤ C * (r / t : ℝ) ^ n := by gcongr; apply hC
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
this✝ :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
t : ℝ≥0
C : ℝ
hC : ∀ (n : ℕ), ‖p n‖ * ↑t ^ n ≤ C
rt : ↑r / ↑t < 1
this : 0 < ↑t
n : ℕ
⊢ |‖p n‖ * ↑r ^ n| = ‖p n‖ * ↑t ^ n * (↑r / ↑t) ^ n
[PROOFSTEP]
field_simp [mul_right_comm, abs_mul, this.ne']
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
this✝ :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
t : ℝ≥0
C : ℝ
hC : ∀ (n : ℕ), ‖p n‖ * ↑t ^ n ≤ C
rt : ↑r / ↑t < 1
this : 0 < ↑t
n : ℕ
⊢ ‖p n‖ * ↑t ^ n * (↑r / ↑t) ^ n ≤ C * (↑r / ↑t) ^ n
[PROOFSTEP]
gcongr
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
this✝ :
  (∃ a, a ∈ Ioo 0 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =o[atTop] fun x => a ^ x) ↔
    ∃ a, a < 1 ∧ ∃ C x, ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
t : ℝ≥0
C : ℝ
hC : ∀ (n : ℕ), ‖p n‖ * ↑t ^ n ≤ C
rt : ↑r / ↑t < 1
this : 0 < ↑t
n : ℕ
⊢ ‖p n‖ * ↑t ^ n ≤ C
[PROOFSTEP]
apply hC
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
⊢ ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), ‖p n‖ * ↑r ^ n ≤ C * a ^ n
[PROOFSTEP]
have := ((TFAE_exists_lt_isLittleO_pow (fun n => ‖p n‖ * (r : ℝ) ^ n) 1).out 1 5).mp (p.isLittleO_of_lt_radius h)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
this : ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
⊢ ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), ‖p n‖ * ↑r ^ n ≤ C * a ^ n
[PROOFSTEP]
rcases this with ⟨a, ha, C, hC, H⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
H : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
⊢ ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), ‖p n‖ * ↑r ^ n ≤ C * a ^ n
[PROOFSTEP]
exact ⟨a, ha, C, hC, fun n => (le_abs_self _).trans (H n)⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : r ≠ 0
a : ℝ
ha : a ∈ Ioo (-1) 1
hp : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x
⊢ ↑r < radius p
[PROOFSTEP]
have := ((TFAE_exists_lt_isLittleO_pow (fun n => ‖p n‖ * (r : ℝ) ^ n) 1).out 2 5)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : r ≠ 0
a : ℝ
ha : a ∈ Ioo (-1) 1
hp : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x
this :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
⊢ ↑r < radius p
[PROOFSTEP]
rcases this.mp ⟨a, ha, hp⟩ with ⟨a, ha, C, hC, hp⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : r ≠ 0
a✝ : ℝ
ha✝ : a✝ ∈ Ioo (-1) 1
hp✝ : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a✝ ^ x
this :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
⊢ ↑r < radius p
[PROOFSTEP]
rw [← pos_iff_ne_zero, ← NNReal.coe_pos] at h₀ 
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : 0 < ↑r
a✝ : ℝ
ha✝ : a✝ ∈ Ioo (-1) 1
hp✝ : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a✝ ^ x
this :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
⊢ ↑r < radius p
[PROOFSTEP]
lift a to ℝ≥0 using ha.1.le
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : 0 < ↑r
a✝ : ℝ
ha✝ : a✝ ∈ Ioo (-1) 1
hp✝ : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a✝ ^ x
this :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
C : ℝ
hC : C > 0
a : ℝ≥0
ha : ↑a ∈ Ioo 0 1
hp : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * ↑a ^ n
⊢ ↑r < radius p
[PROOFSTEP]
have : (r : ℝ) < r / a := by simpa only [div_one] using (div_lt_div_left h₀ zero_lt_one ha.1).2 ha.2
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : 0 < ↑r
a✝ : ℝ
ha✝ : a✝ ∈ Ioo (-1) 1
hp✝ : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a✝ ^ x
this :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
C : ℝ
hC : C > 0
a : ℝ≥0
ha : ↑a ∈ Ioo 0 1
hp : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * ↑a ^ n
⊢ ↑r < ↑r / ↑a
[PROOFSTEP]
simpa only [div_one] using (div_lt_div_left h₀ zero_lt_one ha.1).2 ha.2
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : 0 < ↑r
a✝ : ℝ
ha✝ : a✝ ∈ Ioo (-1) 1
hp✝ : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a✝ ^ x
this✝ :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
C : ℝ
hC : C > 0
a : ℝ≥0
ha : ↑a ∈ Ioo 0 1
hp : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * ↑a ^ n
this : ↑r < ↑r / ↑a
⊢ ↑r < radius p
[PROOFSTEP]
norm_cast at this 
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : 0 < ↑r
a✝ : ℝ
ha✝ : a✝ ∈ Ioo (-1) 1
hp✝ : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a✝ ^ x
this✝ :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
C : ℝ
hC : C > 0
a : ℝ≥0
ha : ↑a ∈ Ioo 0 1
hp : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * ↑a ^ n
this : r < r / a
⊢ ↑r < radius p
[PROOFSTEP]
rw [← ENNReal.coe_lt_coe] at this 
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : 0 < ↑r
a✝ : ℝ
ha✝ : a✝ ∈ Ioo (-1) 1
hp✝ : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a✝ ^ x
this✝ :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
C : ℝ
hC : C > 0
a : ℝ≥0
ha : ↑a ∈ Ioo 0 1
hp : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * ↑a ^ n
this : ↑r < ↑(r / a)
⊢ ↑r < radius p
[PROOFSTEP]
refine' this.trans_le (p.le_radius_of_bound C fun n => _)
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : 0 < ↑r
a✝ : ℝ
ha✝ : a✝ ∈ Ioo (-1) 1
hp✝ : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a✝ ^ x
this✝ :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
C : ℝ
hC : C > 0
a : ℝ≥0
ha : ↑a ∈ Ioo 0 1
hp : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * ↑a ^ n
this : ↑r < ↑(r / a)
n : ℕ
⊢ ‖p n‖ * ↑(r / a) ^ n ≤ C
[PROOFSTEP]
rw [NNReal.coe_div, div_pow, ← mul_div_assoc, div_le_iff (pow_pos ha.1 n)]
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h₀ : 0 < ↑r
a✝ : ℝ
ha✝ : a✝ ∈ Ioo (-1) 1
hp✝ : (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a✝ ^ x
this✝ :
  (∃ a, a ∈ Ioo (-1) 1 ∧ (fun n => ‖p n‖ * ↑r ^ n) =O[atTop] fun x => a ^ x) ↔
    ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * a ^ n
C : ℝ
hC : C > 0
a : ℝ≥0
ha : ↑a ∈ Ioo 0 1
hp : ∀ (n : ℕ), |‖p n‖ * ↑r ^ n| ≤ C * ↑a ^ n
this : ↑r < ↑(r / a)
n : ℕ
⊢ ‖p n‖ * ↑r ^ n ≤ C * ↑a ^ n
[PROOFSTEP]
exact (le_abs_self _).trans (hp n)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r ^ n ≤ C
⊢ ∀ (n : ℕ), ‖p n‖₊ * r ^ n ≤ { val := C, property := (_ : 0 ≤ C) }
[PROOFSTEP]
exact_mod_cast hp
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
⊢ Summable fun n => ‖p n‖ * ↑r ^ n
[PROOFSTEP]
obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, - : 0 < C, hp⟩ := p.norm_mul_pow_le_mul_pow_of_lt_radius h
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (n : ℕ), ‖p n‖ * ↑r ^ n ≤ C * a ^ n
⊢ Summable fun n => ‖p n‖ * ↑r ^ n
[PROOFSTEP]
exact
  summable_of_nonneg_of_le (fun n => mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg _)) hp
    ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
x : E
hx : x ∈ EMetric.ball 0 (radius p)
⊢ Summable fun n => ‖↑(p n) fun x_1 => x‖
[PROOFSTEP]
rw [mem_emetric_ball_zero_iff] at hx 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
x : E
hx : ↑‖x‖₊ < radius p
⊢ Summable fun n => ‖↑(p n) fun x_1 => x‖
[PROOFSTEP]
refine'
  summable_of_nonneg_of_le (fun _ => norm_nonneg _) (fun n => ((p n).le_op_norm _).trans_eq _)
    (p.summable_norm_mul_pow hx)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
x : E
hx : ↑‖x‖₊ < radius p
n : ℕ
⊢ ‖p n‖ * ∏ i : Fin n, ‖x‖ = ‖p n‖ * ↑‖x‖₊ ^ n
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
⊢ Summable fun n => ‖p n‖₊ * r ^ n
[PROOFSTEP]
rw [← NNReal.summable_coe]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
⊢ Summable fun a => ↑(‖p a‖₊ * r ^ a)
[PROOFSTEP]
push_cast
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
⊢ Summable fun a => ‖p a‖ * ↑r ^ a
[PROOFSTEP]
exact p.summable_norm_mul_pow h
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
⊢ radius p = ⊤ ↔ ∀ (r : ℝ≥0), Summable fun n => ‖p n‖ * ↑r ^ n
[PROOFSTEP]
constructor
[GOAL]
case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
⊢ radius p = ⊤ → ∀ (r : ℝ≥0), Summable fun n => ‖p n‖ * ↑r ^ n
[PROOFSTEP]
intro h r
[GOAL]
case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : radius p = ⊤
r : ℝ≥0
⊢ Summable fun n => ‖p n‖ * ↑r ^ n
[PROOFSTEP]
obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, - : 0 < C, hp⟩ :=
  p.norm_mul_pow_le_mul_pow_of_lt_radius (show (r : ℝ≥0∞) < p.radius from h.symm ▸ ENNReal.coe_lt_top)
[GOAL]
case mp.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : radius p = ⊤
r : ℝ≥0
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (n : ℕ), ‖p n‖ * ↑r ^ n ≤ C * a ^ n
⊢ Summable fun n => ‖p n‖ * ↑r ^ n
[PROOFSTEP]
refine'
  summable_of_norm_bounded (fun n => (C : ℝ) * a ^ n) ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _) fun n => _
[GOAL]
case mp.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : radius p = ⊤
r : ℝ≥0
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (n : ℕ), ‖p n‖ * ↑r ^ n ≤ C * a ^ n
n : ℕ
⊢ ‖‖p n‖ * ↑r ^ n‖ ≤ (fun n => C * a ^ n) n
[PROOFSTEP]
specialize hp n
[GOAL]
case mp.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : radius p = ⊤
r : ℝ≥0
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
n : ℕ
hp : ‖p n‖ * ↑r ^ n ≤ C * a ^ n
⊢ ‖‖p n‖ * ↑r ^ n‖ ≤ (fun n => C * a ^ n) n
[PROOFSTEP]
rwa [Real.norm_of_nonneg (mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg n))]
[GOAL]
case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
⊢ (∀ (r : ℝ≥0), Summable fun n => ‖p n‖ * ↑r ^ n) → radius p = ⊤
[PROOFSTEP]
exact p.radius_eq_top_of_summable_norm
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
⊢ ∃ C r hC hr, ∀ (n : ℕ), ‖p n‖ ≤ C * r ^ n
[PROOFSTEP]
rcases ENNReal.lt_iff_exists_nnreal_btwn.1 h with ⟨r, r0, rlt⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
r : ℝ≥0
r0 : 0 < ↑r
rlt : ↑r < radius p
⊢ ∃ C r hC hr, ∀ (n : ℕ), ‖p n‖ ≤ C * r ^ n
[PROOFSTEP]
have rpos : 0 < (r : ℝ) := by simp [ENNReal.coe_pos.1 r0]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
r : ℝ≥0
r0 : 0 < ↑r
rlt : ↑r < radius p
⊢ 0 < ↑r
[PROOFSTEP]
simp [ENNReal.coe_pos.1 r0]
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
r : ℝ≥0
r0 : 0 < ↑r
rlt : ↑r < radius p
rpos : 0 < ↑r
⊢ ∃ C r hC hr, ∀ (n : ℕ), ‖p n‖ ≤ C * r ^ n
[PROOFSTEP]
rcases norm_le_div_pow_of_pos_of_lt_radius p rpos rlt with ⟨C, Cpos, hCp⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
r : ℝ≥0
r0 : 0 < ↑r
rlt : ↑r < radius p
rpos : 0 < ↑r
C : ℝ
Cpos : C > 0
hCp : ∀ (n : ℕ), ‖p n‖ ≤ C / ↑r ^ n
⊢ ∃ C r hC hr, ∀ (n : ℕ), ‖p n‖ ≤ C * r ^ n
[PROOFSTEP]
refine'
  ⟨C, r⁻¹, Cpos, by simp only [inv_pos, rpos], fun n => _⟩
    -- Porting note: was `convert`
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
r : ℝ≥0
r0 : 0 < ↑r
rlt : ↑r < radius p
rpos : 0 < ↑r
C : ℝ
Cpos : C > 0
hCp : ∀ (n : ℕ), ‖p n‖ ≤ C / ↑r ^ n
⊢ 0 < (↑r)⁻¹
[PROOFSTEP]
simp only [inv_pos, rpos]
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
r : ℝ≥0
r0 : 0 < ↑r
rlt : ↑r < radius p
rpos : 0 < ↑r
C : ℝ
Cpos : C > 0
hCp : ∀ (n : ℕ), ‖p n‖ ≤ C / ↑r ^ n
n : ℕ
⊢ ‖p n‖ ≤ C * (↑r)⁻¹ ^ n
[PROOFSTEP]
rw [inv_pow, ← div_eq_mul_inv]
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
r : ℝ≥0
r0 : 0 < ↑r
rlt : ↑r < radius p
rpos : 0 < ↑r
C : ℝ
Cpos : C > 0
hCp : ∀ (n : ℕ), ‖p n‖ ≤ C / ↑r ^ n
n : ℕ
⊢ ‖p n‖ ≤ C / ↑r ^ n
[PROOFSTEP]
exact hCp n
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p q : FormalMultilinearSeries 𝕜 E F
⊢ min (radius p) (radius q) ≤ radius (p + q)
[PROOFSTEP]
refine' ENNReal.le_of_forall_nnreal_lt fun r hr => _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p q : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
hr : ↑r < min (radius p) (radius q)
⊢ ↑r ≤ radius (p + q)
[PROOFSTEP]
rw [lt_min_iff] at hr 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p q : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
hr : ↑r < radius p ∧ ↑r < radius q
⊢ ↑r ≤ radius (p + q)
[PROOFSTEP]
have := ((p.isLittleO_one_of_lt_radius hr.1).add (q.isLittleO_one_of_lt_radius hr.2)).isBigO
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p q : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
hr : ↑r < radius p ∧ ↑r < radius q
this : (fun x => ‖p x‖ * ↑r ^ x + ‖q x‖ * ↑r ^ x) =O[atTop] fun x => 1
⊢ ↑r ≤ radius (p + q)
[PROOFSTEP]
refine' (p + q).le_radius_of_isBigO ((isBigO_of_le _ fun n => _).trans this)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p q : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
hr : ↑r < radius p ∧ ↑r < radius q
this : (fun x => ‖p x‖ * ↑r ^ x + ‖q x‖ * ↑r ^ x) =O[atTop] fun x => 1
n : ℕ
⊢ ‖‖(p + q) n‖ * ↑r ^ n‖ ≤ ‖‖p n‖ * ↑r ^ n + ‖q n‖ * ↑r ^ n‖
[PROOFSTEP]
rw [← add_mul, norm_mul, norm_mul, norm_norm]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p q : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
hr : ↑r < radius p ∧ ↑r < radius q
this : (fun x => ‖p x‖ * ↑r ^ x + ‖q x‖ * ↑r ^ x) =O[atTop] fun x => 1
n : ℕ
⊢ ‖(p + q) n‖ * ‖↑r ^ n‖ ≤ ‖‖p n‖ + ‖q n‖‖ * ‖↑r ^ n‖
[PROOFSTEP]
exact mul_le_mul_of_nonneg_right ((norm_add_le _ _).trans (le_abs_self _)) (norm_nonneg _)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
⊢ radius (-p) = radius p
[PROOFSTEP]
simp only [radius, neg_apply, norm_neg]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
f : F →L[𝕜] G
⊢ radius p ≤ radius (ContinuousLinearMap.compFormalMultilinearSeries f p)
[PROOFSTEP]
refine' ENNReal.le_of_forall_nnreal_lt fun r hr => _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
f : F →L[𝕜] G
r : ℝ≥0
hr : ↑r < radius p
⊢ ↑r ≤ radius (ContinuousLinearMap.compFormalMultilinearSeries f p)
[PROOFSTEP]
apply le_radius_of_isBigO
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
f : F →L[𝕜] G
r : ℝ≥0
hr : ↑r < radius p
⊢ (fun n => ‖ContinuousLinearMap.compFormalMultilinearSeries f p n‖ * ↑r ^ n) =O[atTop] fun x => 1
[PROOFSTEP]
apply (IsBigO.trans_isLittleO _ (p.isLittleO_one_of_lt_radius hr)).isBigO
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
f : F →L[𝕜] G
r : ℝ≥0
hr : ↑r < radius p
⊢ (fun n => ‖ContinuousLinearMap.compFormalMultilinearSeries f p n‖ * ↑r ^ n) =O[atTop] fun n => ‖p n‖ * ↑r ^ n
[PROOFSTEP]
refine' IsBigO.mul (@IsBigOWith.isBigO _ _ _ _ _ ‖f‖ _ _ _ _) (isBigO_refl _ _)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
f : F →L[𝕜] G
r : ℝ≥0
hr : ↑r < radius p
⊢ IsBigOWith ‖f‖ atTop (fun n => ‖ContinuousLinearMap.compFormalMultilinearSeries f p n‖) fun n => ‖p n‖
[PROOFSTEP]
refine IsBigOWith.of_bound (eventually_of_forall fun n => ?_)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
f : F →L[𝕜] G
r : ℝ≥0
hr : ↑r < radius p
n : ℕ
⊢ ‖‖ContinuousLinearMap.compFormalMultilinearSeries f p n‖‖ ≤ ‖f‖ * ‖‖p n‖‖
[PROOFSTEP]
simpa only [norm_norm] using f.norm_compContinuousMultilinearMap_le (p n)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
hg : EqOn f g (EMetric.ball x r)
y : E
hy : y ∈ EMetric.ball 0 r
⊢ HasSum (fun n => ↑(p n) fun x => y) (g (x + y))
[PROOFSTEP]
convert hf.hasSum hy using 1
[GOAL]
case h.e'_6
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
hg : EqOn f g (EMetric.ball x r)
y : E
hy : y ∈ EMetric.ball 0 r
⊢ g (x + y) = f (x + y)
[PROOFSTEP]
apply hg.symm
[GOAL]
case h.e'_6.a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
hg : EqOn f g (EMetric.ball x r)
y : E
hy : y ∈ EMetric.ball 0 r
⊢ x + y ∈ EMetric.ball x r
[PROOFSTEP]
simpa [edist_eq_coe_nnnorm_sub] using hy
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
y z : E
hz : z ∈ EMetric.ball 0 r
⊢ HasSum (fun n => ↑(p n) fun x => z) (f (x + y + z - y))
[PROOFSTEP]
convert hf.hasSum hz using 2
[GOAL]
case h.e'_6.h.e'_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
y z : E
hz : z ∈ EMetric.ball 0 r
⊢ x + y + z - y = x + z
[PROOFSTEP]
abel
[GOAL]
case h.e'_6.h.e'_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
y z : E
hz : z ∈ EMetric.ball 0 r
⊢ x + y + z - y = x + z
[PROOFSTEP]
abel
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
y : E
hy : y ∈ EMetric.ball x r
⊢ HasSum (fun n => ↑(p n) fun x_1 => y - x) (f y)
[PROOFSTEP]
have : y - x ∈ EMetric.ball (0 : E) r := by simpa [edist_eq_coe_nnnorm_sub] using hy
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
y : E
hy : y ∈ EMetric.ball x r
⊢ y - x ∈ EMetric.ball 0 r
[PROOFSTEP]
simpa [edist_eq_coe_nnnorm_sub] using hy
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
y : E
hy : y ∈ EMetric.ball x r
this : y - x ∈ EMetric.ball 0 r
⊢ HasSum (fun n => ↑(p n) fun x_1 => y - x) (f y)
[PROOFSTEP]
simpa only [add_sub_cancel'_right] using hf.hasSum this
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesAt f p x
hg : f =ᶠ[𝓝 x] g
⊢ HasFPowerSeriesAt g p x
[PROOFSTEP]
rcases hf with ⟨r₁, h₁⟩
[GOAL]
case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hg : f =ᶠ[𝓝 x] g
r₁ : ℝ≥0∞
h₁ : HasFPowerSeriesOnBall f p x r₁
⊢ HasFPowerSeriesAt g p x
[PROOFSTEP]
rcases EMetric.mem_nhds_iff.mp hg with ⟨r₂, h₂pos, h₂⟩
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hg : f =ᶠ[𝓝 x] g
r₁ : ℝ≥0∞
h₁ : HasFPowerSeriesOnBall f p x r₁
r₂ : ℝ≥0∞
h₂pos : r₂ > 0
h₂ : EMetric.ball x r₂ ⊆ {x | (fun x => f x = g x) x}
⊢ HasFPowerSeriesAt g p x
[PROOFSTEP]
exact
  ⟨min r₁ r₂,
    (h₁.mono (lt_min h₁.r_pos h₂pos) inf_le_left).congr fun y hy => h₂ (EMetric.ball_subset_ball inf_le_right hy)⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
⊢ ∀ᶠ (y : E) in 𝓝 0, HasSum (fun n => ↑(p n) fun x => y) (f (x + y))
[PROOFSTEP]
filter_upwards [EMetric.ball_mem_nhds (0 : E) hf.r_pos] using fun _ => hf.hasSum
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
⊢ ∀ᶠ (y : E) in 𝓝 x, HasSum (fun n => ↑(p n) fun x_1 => y - x) (f y)
[PROOFSTEP]
filter_upwards [EMetric.ball_mem_nhds x hf.r_pos] with y using hf.hasSum_sub
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f 0 x r
⊢ ∀ᶠ (z : E) in 𝓝 x, f z = 0
[PROOFSTEP]
filter_upwards [hf.eventually_hasSum_sub] with z hz using hz.unique hasSum_zero
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
c : F
e : E
⊢ HasFPowerSeriesOnBall (fun x => c) (constFormalMultilinearSeries 𝕜 E c) e ⊤
[PROOFSTEP]
refine' ⟨by simp, WithTop.zero_lt_top, fun _ => hasSum_single 0 fun n hn => _⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
c : F
e : E
⊢ ⊤ ≤ FormalMultilinearSeries.radius (constFormalMultilinearSeries 𝕜 E c)
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
c : F
e y✝ : E
x✝ : y✝ ∈ EMetric.ball 0 ⊤
n : ℕ
hn : n ≠ 0
⊢ (↑(constFormalMultilinearSeries 𝕜 E c n) fun x => y✝) = 0
[PROOFSTEP]
simp [constFormalMultilinearSeries_apply hn]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesAt f pf x
hg : HasFPowerSeriesAt g pg x
⊢ HasFPowerSeriesAt (f + g) (pf + pg) x
[PROOFSTEP]
rcases(hf.eventually.and hg.eventually).exists with ⟨r, hr⟩
[GOAL]
case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r' : ℝ≥0∞
hf : HasFPowerSeriesAt f pf x
hg : HasFPowerSeriesAt g pg x
r : ℝ≥0∞
hr : HasFPowerSeriesOnBall f pf x r ∧ HasFPowerSeriesOnBall g pg x r
⊢ HasFPowerSeriesAt (f + g) (pf + pg) x
[PROOFSTEP]
exact ⟨r, hr.1.add hr.2⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
⊢ r ≤ FormalMultilinearSeries.radius (-pf)
[PROOFSTEP]
rw [pf.radius_neg]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
⊢ r ≤ FormalMultilinearSeries.radius pf
[PROOFSTEP]
exact hf.r_le
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
hg : HasFPowerSeriesOnBall g pg x r
⊢ HasFPowerSeriesOnBall (f - g) (pf - pg) x r
[PROOFSTEP]
simpa only [sub_eq_add_neg] using hf.add hg.neg
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesAt f pf x
hg : HasFPowerSeriesAt g pg x
⊢ HasFPowerSeriesAt (f - g) (pf - pg) x
[PROOFSTEP]
simpa only [sub_eq_add_neg] using hf.add hg.neg
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : AnalyticAt 𝕜 f x
hg : AnalyticAt 𝕜 g x
⊢ AnalyticAt 𝕜 (f - g) x
[PROOFSTEP]
simpa only [sub_eq_add_neg] using hf.add hg.neg
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
v : Fin 0 → E
⊢ ↑(pf 0) v = f x
[PROOFSTEP]
have v_eq : v = fun i => 0 := Subsingleton.elim _ _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
v : Fin 0 → E
v_eq : v = fun i => 0
⊢ ↑(pf 0) v = f x
[PROOFSTEP]
have zero_mem : (0 : E) ∈ EMetric.ball (0 : E) r := by simp [hf.r_pos]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
v : Fin 0 → E
v_eq : v = fun i => 0
⊢ 0 ∈ EMetric.ball 0 r
[PROOFSTEP]
simp [hf.r_pos]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
v : Fin 0 → E
v_eq : v = fun i => 0
zero_mem : 0 ∈ EMetric.ball 0 r
⊢ ↑(pf 0) v = f x
[PROOFSTEP]
have : ∀ (i) (_ : i ≠ 0), (pf i fun j => 0) = 0 := by
  intro i hi
  have : 0 < i := pos_iff_ne_zero.2 hi
  exact ContinuousMultilinearMap.map_coord_zero _ (⟨0, this⟩ : Fin i) rfl
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
v : Fin 0 → E
v_eq : v = fun i => 0
zero_mem : 0 ∈ EMetric.ball 0 r
⊢ ∀ (i : ℕ), i ≠ 0 → (↑(pf i) fun j => 0) = 0
[PROOFSTEP]
intro i hi
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
v : Fin 0 → E
v_eq : v = fun i => 0
zero_mem : 0 ∈ EMetric.ball 0 r
i : ℕ
hi : i ≠ 0
⊢ (↑(pf i) fun j => 0) = 0
[PROOFSTEP]
have : 0 < i := pos_iff_ne_zero.2 hi
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
v : Fin 0 → E
v_eq : v = fun i => 0
zero_mem : 0 ∈ EMetric.ball 0 r
i : ℕ
hi : i ≠ 0
this : 0 < i
⊢ (↑(pf i) fun j => 0) = 0
[PROOFSTEP]
exact ContinuousMultilinearMap.map_coord_zero _ (⟨0, this⟩ : Fin i) rfl
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
v : Fin 0 → E
v_eq : v = fun i => 0
zero_mem : 0 ∈ EMetric.ball 0 r
this : ∀ (i : ℕ), i ≠ 0 → (↑(pf i) fun j => 0) = 0
⊢ ↑(pf 0) v = f x
[PROOFSTEP]
have A := (hf.hasSum zero_mem).unique (hasSum_single _ this)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
v : Fin 0 → E
v_eq : v = fun i => 0
zero_mem : 0 ∈ EMetric.ball 0 r
this : ∀ (i : ℕ), i ≠ 0 → (↑(pf i) fun j => 0) = 0
A : f (x + 0) = ↑(pf 0) fun x => 0
⊢ ↑(pf 0) v = f x
[PROOFSTEP]
simpa [v_eq] using A.symm
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
g : F →L[𝕜] G
h : HasFPowerSeriesOnBall f p x r
y✝ : E
hy : y✝ ∈ EMetric.ball 0 r
⊢ HasSum (fun n => ↑(compFormalMultilinearSeries g p n) fun x => y✝) ((↑g ∘ f) (x + y✝))
[PROOFSTEP]
simpa only [ContinuousLinearMap.compFormalMultilinearSeries_apply, ContinuousLinearMap.compContinuousMultilinearMap_coe,
  Function.comp_apply] using g.hasSum (h.hasSum hy)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
s : Set E
g : F →L[𝕜] G
h : AnalyticOn 𝕜 f s
⊢ AnalyticOn 𝕜 (↑g ∘ f) s
[PROOFSTEP]
rintro x hx
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r r' : ℝ≥0∞
s : Set E
g : F →L[𝕜] G
h : AnalyticOn 𝕜 f s
x : E
hx : x ∈ s
⊢ AnalyticAt 𝕜 (↑g ∘ f) x
[PROOFSTEP]
rcases h x hx with ⟨p, r, hp⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → F
p✝ pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r✝ r' : ℝ≥0∞
s : Set E
g : F →L[𝕜] G
h : AnalyticOn 𝕜 f s
x : E
hx : x ∈ s
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
hp : HasFPowerSeriesOnBall f p x r
⊢ AnalyticAt 𝕜 (↑g ∘ f) x
[PROOFSTEP]
exact ⟨g.compFormalMultilinearSeries p, r, g.comp_hasFPowerSeriesOnBall hp⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
⊢ ∃ a,
    a ∈ Ioo 0 1 ∧
      ∃ C,
        C > 0 ∧
          ∀ (y : E),
            y ∈ Metric.ball 0 ↑r' →
              ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
[PROOFSTEP]
obtain ⟨a, ha, C, hC, hp⟩ : ∃ a ∈ Ioo (0 : ℝ) 1, ∃ C > 0, ∀ n, ‖p n‖ * (r' : ℝ) ^ n ≤ C * a ^ n :=
  p.norm_mul_pow_le_mul_pow_of_lt_radius (h.trans_le hf.r_le)
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
⊢ ∃ a,
    a ∈ Ioo 0 1 ∧
      ∃ C,
        C > 0 ∧
          ∀ (y : E),
            y ∈ Metric.ball 0 ↑r' →
              ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
[PROOFSTEP]
refine' ⟨a, ha, C / (1 - a), div_pos hC (sub_pos.2 ha.2), fun y hy n => _⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
⊢ ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C / (1 - a) * (a * (‖y‖ / ↑r')) ^ n
[PROOFSTEP]
have yr' : ‖y‖ < r' := by
  rw [ball_zero_eq] at hy 
  exact hy
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
⊢ ‖y‖ < ↑r'
[PROOFSTEP]
rw [ball_zero_eq] at hy 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ {x | ‖x‖ < ↑r'}
n : ℕ
⊢ ‖y‖ < ↑r'
[PROOFSTEP]
exact hy
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
⊢ ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C / (1 - a) * (a * (‖y‖ / ↑r')) ^ n
[PROOFSTEP]
have hr'0 : 0 < (r' : ℝ) := (norm_nonneg _).trans_lt yr'
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
⊢ ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C / (1 - a) * (a * (‖y‖ / ↑r')) ^ n
[PROOFSTEP]
have : y ∈ EMetric.ball (0 : E) r :=
  by
  refine' mem_emetric_ball_zero_iff.2 (lt_trans _ h)
  exact_mod_cast yr'
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
⊢ y ∈ EMetric.ball 0 r
[PROOFSTEP]
refine' mem_emetric_ball_zero_iff.2 (lt_trans _ h)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
⊢ ↑‖y‖₊ < ↑r'
[PROOFSTEP]
exact_mod_cast yr'
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
⊢ ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C / (1 - a) * (a * (‖y‖ / ↑r')) ^ n
[PROOFSTEP]
rw [norm_sub_rev, ← mul_div_right_comm]
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
⊢ ‖FormalMultilinearSeries.partialSum p n y - f (x + y)‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a)
[PROOFSTEP]
have ya : a * (‖y‖ / ↑r') ≤ a := mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
⊢ ‖FormalMultilinearSeries.partialSum p n y - f (x + y)‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a)
[PROOFSTEP]
suffices ‖p.partialSum n y - f (x + y)‖ ≤ C * (a * (‖y‖ / r')) ^ n / (1 - a * (‖y‖ / r'))
  by
  refine' this.trans _
  have : 0 < a := ha.1
  gcongr
  apply_rules [sub_pos.2, ha.2]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this✝ : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
this : ‖FormalMultilinearSeries.partialSum p n y - f (x + y)‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a * (‖y‖ / ↑r'))
⊢ ‖FormalMultilinearSeries.partialSum p n y - f (x + y)‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a)
[PROOFSTEP]
refine' this.trans _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this✝ : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
this : ‖FormalMultilinearSeries.partialSum p n y - f (x + y)‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a * (‖y‖ / ↑r'))
⊢ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a * (‖y‖ / ↑r')) ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a)
[PROOFSTEP]
have : 0 < a := ha.1
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this✝¹ : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
this✝ : ‖FormalMultilinearSeries.partialSum p n y - f (x + y)‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a * (‖y‖ / ↑r'))
this : 0 < a
⊢ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a * (‖y‖ / ↑r')) ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a)
[PROOFSTEP]
gcongr
[GOAL]
case hc
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this✝¹ : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
this✝ : ‖FormalMultilinearSeries.partialSum p n y - f (x + y)‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a * (‖y‖ / ↑r'))
this : 0 < a
⊢ 0 < 1 - a
[PROOFSTEP]
apply_rules [sub_pos.2, ha.2]
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
⊢ ‖FormalMultilinearSeries.partialSum p n y - f (x + y)‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n / (1 - a * (‖y‖ / ↑r'))
[PROOFSTEP]
apply norm_sub_le_of_geometric_bound_of_hasSum (ya.trans_lt ha.2) _ (hf.hasSum this)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
⊢ ∀ (n : ℕ), ‖↑(p n) fun x => y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
[PROOFSTEP]
intro n
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n✝ : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
n : ℕ
⊢ ‖↑(p n) fun x => y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
[PROOFSTEP]
calc
  ‖(p n) fun _ : Fin n => y‖
  _ ≤ ‖p n‖ * ∏ _i : Fin n, ‖y‖ := (ContinuousMultilinearMap.le_op_norm _ _)
  _ = ‖p n‖ * (r' : ℝ) ^ n * (‖y‖ / r') ^ n := by field_simp [hr'0.ne', mul_right_comm]
  _ ≤ C * a ^ n * (‖y‖ / r') ^ n := by gcongr ?_ * _; apply hp
  _ ≤ C * (a * (‖y‖ / r')) ^ n := by rw [mul_pow, mul_assoc]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n✝ : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
n : ℕ
⊢ ‖p n‖ * ∏ _i : Fin n, ‖y‖ = ‖p n‖ * ↑r' ^ n * (‖y‖ / ↑r') ^ n
[PROOFSTEP]
field_simp [hr'0.ne', mul_right_comm]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n✝ : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
n : ℕ
⊢ ‖p n‖ * ↑r' ^ n * (‖y‖ / ↑r') ^ n ≤ C * a ^ n * (‖y‖ / ↑r') ^ n
[PROOFSTEP]
gcongr ?_ * _
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n✝ : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
n : ℕ
⊢ ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
[PROOFSTEP]
apply hp
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n✝ : ℕ
yr' : ‖y‖ < ↑r'
hr'0 : 0 < ↑r'
this : y ∈ EMetric.ball 0 r
ya : a * (‖y‖ / ↑r') ≤ a
n : ℕ
⊢ C * a ^ n * (‖y‖ / ↑r') ^ n ≤ C * (a * (‖y‖ / ↑r')) ^ n
[PROOFSTEP]
rw [mul_pow, mul_assoc]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
⊢ ∃ a,
    a ∈ Ioo 0 1 ∧
      ∃ C,
        C > 0 ∧
          ∀ (y : E),
            y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
[PROOFSTEP]
obtain ⟨a, ha, C, hC, hp⟩ :
  ∃ a ∈ Ioo (0 : ℝ) 1,
    ∃ C > 0, ∀ y ∈ Metric.ball (0 : E) r', ∀ n, ‖f (x + y) - p.partialSum n y‖ ≤ C * (a * (‖y‖ / r')) ^ n :=
  hf.uniform_geometric_approx' h
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
⊢ ∃ a,
    a ∈ Ioo 0 1 ∧
      ∃ C,
        C > 0 ∧
          ∀ (y : E),
            y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
[PROOFSTEP]
refine' ⟨a, ha, C, hC, fun y hy n => (hp y hy n).trans _⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
⊢ C * (a * (‖y‖ / ↑r')) ^ n ≤ C * a ^ n
[PROOFSTEP]
have yr' : ‖y‖ < r' := by rwa [ball_zero_eq] at hy 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
⊢ ‖y‖ < ↑r'
[PROOFSTEP]
rwa [ball_zero_eq] at hy 
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
⊢ C * (a * (‖y‖ / ↑r')) ^ n ≤ C * a ^ n
[PROOFSTEP]
gcongr
[GOAL]
case intro.intro.intro.intro.h.ha
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
⊢ 0 ≤ a * (‖y‖ / ↑r')
case intro.intro.intro.intro.h.hab
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : C > 0
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
y : E
hy : y ∈ Metric.ball 0 ↑r'
n : ℕ
yr' : ‖y‖ < ↑r'
⊢ a * (‖y‖ / ↑r') ≤ a
[PROOFSTEP]
exacts [mul_nonneg ha.1.le (div_nonneg (norm_nonneg y) r'.coe_nonneg),
  mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesAt f p x
n : ℕ
⊢ (fun y => f (x + y) - FormalMultilinearSeries.partialSum p n y) =O[𝓝 0] fun y => ‖y‖ ^ n
[PROOFSTEP]
rcases hf with ⟨r, hf⟩
[GOAL]
case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r' : ℝ≥0∞
n : ℕ
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
⊢ (fun y => f (x + y) - FormalMultilinearSeries.partialSum p n y) =O[𝓝 0] fun y => ‖y‖ ^ n
[PROOFSTEP]
rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hf.r_pos with ⟨r', r'0, h⟩
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r'✝ : ℝ≥0∞
n : ℕ
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
r'0 : 0 < ↑r'
h : ↑r' < r
⊢ (fun y => f (x + y) - FormalMultilinearSeries.partialSum p n y) =O[𝓝 0] fun y => ‖y‖ ^ n
[PROOFSTEP]
obtain ⟨a, -, C, -, hp⟩ :
  ∃ a ∈ Ioo (0 : ℝ) 1,
    ∃ C > 0, ∀ y ∈ Metric.ball (0 : E) r', ∀ n, ‖f (x + y) - p.partialSum n y‖ ≤ C * (a * (‖y‖ / r')) ^ n :=
  hf.uniform_geometric_approx' h
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r'✝ : ℝ≥0∞
n : ℕ
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
r'0 : 0 < ↑r'
h : ↑r' < r
a C : ℝ
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
⊢ (fun y => f (x + y) - FormalMultilinearSeries.partialSum p n y) =O[𝓝 0] fun y => ‖y‖ ^ n
[PROOFSTEP]
refine' isBigO_iff.2 ⟨C * (a / r') ^ n, _⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r'✝ : ℝ≥0∞
n : ℕ
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
r'0 : 0 < ↑r'
h : ↑r' < r
a C : ℝ
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
⊢ ∀ᶠ (x_1 : E) in 𝓝 0, ‖f (x + x_1) - FormalMultilinearSeries.partialSum p n x_1‖ ≤ C * (a / ↑r') ^ n * ‖‖x_1‖ ^ n‖
[PROOFSTEP]
replace r'0 : 0 < (r' : ℝ)
[GOAL]
case r'0
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r'✝ : ℝ≥0∞
n : ℕ
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
r'0 : 0 < ↑r'
h : ↑r' < r
a C : ℝ
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
⊢ 0 < ↑r'
[PROOFSTEP]
exact_mod_cast r'0
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r'✝ : ℝ≥0∞
n : ℕ
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
h : ↑r' < r
a C : ℝ
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
r'0 : 0 < ↑r'
⊢ ∀ᶠ (x_1 : E) in 𝓝 0, ‖f (x + x_1) - FormalMultilinearSeries.partialSum p n x_1‖ ≤ C * (a / ↑r') ^ n * ‖‖x_1‖ ^ n‖
[PROOFSTEP]
filter_upwards [Metric.ball_mem_nhds (0 : E) r'0] with y hy
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r'✝ : ℝ≥0∞
n : ℕ
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
h : ↑r' < r
a C : ℝ
hp :
  ∀ (y : E),
    y ∈ Metric.ball 0 ↑r' →
      ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a * (‖y‖ / ↑r')) ^ n
r'0 : 0 < ↑r'
y : E
hy : y ∈ Metric.ball 0 ↑r'
⊢ ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * (a / ↑r') ^ n * ‖‖y‖ ^ n‖
[PROOFSTEP]
simpa [mul_pow, mul_div_assoc, mul_assoc, div_mul_eq_mul_div] using hp y hy n
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
hr : r' < r
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) r')] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
lift r' to ℝ≥0 using ne_top_of_lt hr
[GOAL]
case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
rcases(zero_le r').eq_or_lt with (rfl | hr'0)
[GOAL]
case intro.inl
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
hr : ↑0 < r
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) ↑0)] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
simp only [isBigO_bot, EMetric.ball_zero, principal_empty, ENNReal.coe_zero]
[GOAL]
case intro.inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
obtain ⟨a, ha, C, hC : 0 < C, hp⟩ : ∃ a ∈ Ioo (0 : ℝ) 1, ∃ C > 0, ∀ n : ℕ, ‖p n‖ * (r' : ℝ) ^ n ≤ C * a ^ n
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
⊢ ∃ a, a ∈ Ioo 0 1 ∧ ∃ C, C > 0 ∧ ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
case intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
exact p.norm_mul_pow_le_mul_pow_of_lt_radius (hr.trans_le hf.r_le)
[GOAL]
case intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ * ↑r' ^ n ≤ C * a ^ n
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
simp only [← le_div_iff (pow_pos (NNReal.coe_pos.2 hr'0) _)] at hp 
[GOAL]
case intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
set L : E × E → ℝ := fun y => C * (a / r') ^ 2 * (‖y - (x, x)‖ * ‖y.1 - y.2‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
[GOAL]
case intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
have hL : ∀ y ∈ EMetric.ball (x, x) r', ‖f y.1 - f y.2 - p 1 fun _ => y.1 - y.2‖ ≤ L y :=
  by
  intro y hy'
  have hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r :=
    by
    rw [EMetric.ball_prod_same]
    exact EMetric.ball_subset_ball hr.le hy'
  set A : ℕ → F := fun n => (p n fun _ => y.1 - x) - p n fun _ => y.2 - x
  have hA : HasSum (fun n => A (n + 2)) (f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) :=
    by
    convert (hasSum_nat_add_iff' 2).2 ((hf.hasSum_sub hy.1).sub (hf.hasSum_sub hy.2)) using 1
    rw [Finset.sum_range_succ, Finset.sum_range_one, hf.coeff_zero, hf.coeff_zero, sub_self, zero_add, ←
      Subsingleton.pi_single_eq (0 : Fin 1) (y.1 - x), Pi.single, ← Subsingleton.pi_single_eq (0 : Fin 1) (y.2 - x),
      Pi.single, ← (p 1).map_sub, ← Pi.single, Subsingleton.pi_single_eq, sub_sub_sub_cancel_right]
  rw [EMetric.mem_ball, edist_eq_coe_nnnorm_sub, ENNReal.coe_lt_coe] at hy' 
  set B : ℕ → ℝ := fun n => C * (a / r') ^ 2 * (‖y - (x, x)‖ * ‖y.1 - y.2‖) * ((n + 2) * a ^ n)
  have hAB : ∀ n, ‖A (n + 2)‖ ≤ B n := fun n =>
    calc
      ‖A (n + 2)‖ ≤ ‖p (n + 2)‖ * ↑(n + 2) * ‖y - (x, x)‖ ^ (n + 1) * ‖y.1 - y.2‖ := by
        -- porting note: `pi_norm_const` was `pi_norm_const (_ : E)`simpa only [Fintype.card_fin, pi_norm_const,
          Prod.norm_def, Pi.sub_def, Prod.fst_sub, Prod.snd_sub, sub_sub_sub_cancel_right] using
          (p <| n + 2).norm_image_sub_le (fun _ => y.1 - x) fun _ => y.2 - x
      _ = ‖p (n + 2)‖ * ‖y - (x, x)‖ ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.1 - y.2‖) :=
        by
        rw [pow_succ ‖y - (x, x)‖]
        ring
          -- porting note: the two `↑` in `↑r'` are new, without them, Lean fails to synthesize
                  -- instances `HDiv ℝ ℝ≥0 ?m` or `HMul ℝ ℝ≥0 ?m`
      _ ≤ C * a ^ (n + 2) / ↑r' ^ (n + 2) * ↑r' ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.1 - y.2‖) :=
        by
        have : 0 < a := ha.1
        gcongr
        · apply hp
        · apply hy'.le
      _ = B n := by
        -- porting note: in the original, `B` was in the `field_simp`, but now Lean does not
                  -- accept it. The current proof works in Lean 4, but does not in Lean 3.
        field_simp [pow_succ, hr'0.ne']
        simp only [mul_assoc, mul_comm, mul_left_comm]
  have hBL : HasSum B (L y) := by
    apply HasSum.mul_left
    simp only [add_mul]
    have : ‖a‖ < 1 := by simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
    rw [div_eq_mul_inv, div_eq_mul_inv]
    exact (hasSum_coe_mul_geometric_of_norm_lt_1 this).add ((hasSum_geometric_of_norm_lt_1 this).mul_left 2)
  exact hA.norm_le_of_bounded hBL hAB
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
⊢ ∀ (y : E × E), y ∈ EMetric.ball (x, x) ↑r' → ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
[PROOFSTEP]
intro y hy'
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : y ∈ EMetric.ball (x, x) ↑r'
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
[PROOFSTEP]
have hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r :=
  by
  rw [EMetric.ball_prod_same]
  exact EMetric.ball_subset_ball hr.le hy'
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : y ∈ EMetric.ball (x, x) ↑r'
⊢ y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
[PROOFSTEP]
rw [EMetric.ball_prod_same]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : y ∈ EMetric.ball (x, x) ↑r'
⊢ y ∈ EMetric.ball (x, x) r
[PROOFSTEP]
exact EMetric.ball_subset_ball hr.le hy'
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : y ∈ EMetric.ball (x, x) ↑r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
[PROOFSTEP]
set A : ℕ → F := fun n => (p n fun _ => y.1 - x) - p n fun _ => y.2 - x
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : y ∈ EMetric.ball (x, x) ↑r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
[PROOFSTEP]
have hA : HasSum (fun n => A (n + 2)) (f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) :=
  by
  convert (hasSum_nat_add_iff' 2).2 ((hf.hasSum_sub hy.1).sub (hf.hasSum_sub hy.2)) using 1
  rw [Finset.sum_range_succ, Finset.sum_range_one, hf.coeff_zero, hf.coeff_zero, sub_self, zero_add, ←
    Subsingleton.pi_single_eq (0 : Fin 1) (y.1 - x), Pi.single, ← Subsingleton.pi_single_eq (0 : Fin 1) (y.2 - x),
    Pi.single, ← (p 1).map_sub, ← Pi.single, Subsingleton.pi_single_eq, sub_sub_sub_cancel_right]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : y ∈ EMetric.ball (x, x) ↑r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
⊢ HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
[PROOFSTEP]
convert (hasSum_nat_add_iff' 2).2 ((hf.hasSum_sub hy.1).sub (hf.hasSum_sub hy.2)) using 1
[GOAL]
case h.e'_6
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : y ∈ EMetric.ball (x, x) ↑r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
⊢ (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =
    f y.fst - f y.snd - ∑ i in Finset.range 2, ((↑(p i) fun x_1 => y.fst - x) - ↑(p i) fun x_1 => y.snd - x)
[PROOFSTEP]
rw [Finset.sum_range_succ, Finset.sum_range_one, hf.coeff_zero, hf.coeff_zero, sub_self, zero_add, ←
  Subsingleton.pi_single_eq (0 : Fin 1) (y.1 - x), Pi.single, ← Subsingleton.pi_single_eq (0 : Fin 1) (y.2 - x),
  Pi.single, ← (p 1).map_sub, ← Pi.single, Subsingleton.pi_single_eq, sub_sub_sub_cancel_right]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : y ∈ EMetric.ball (x, x) ↑r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
[PROOFSTEP]
rw [EMetric.mem_ball, edist_eq_coe_nnnorm_sub, ENNReal.coe_lt_coe] at hy' 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
[PROOFSTEP]
set B : ℕ → ℝ := fun n => C * (a / r') ^ 2 * (‖y - (x, x)‖ * ‖y.1 - y.2‖) * ((n + 2) * a ^ n)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
[PROOFSTEP]
have hAB : ∀ n, ‖A (n + 2)‖ ≤ B n := fun n =>
  calc
    ‖A (n + 2)‖ ≤ ‖p (n + 2)‖ * ↑(n + 2) * ‖y - (x, x)‖ ^ (n + 1) * ‖y.1 - y.2‖ := by
      -- porting note: `pi_norm_const` was `pi_norm_const (_ : E)`simpa only [Fintype.card_fin, pi_norm_const,
        Prod.norm_def, Pi.sub_def, Prod.fst_sub, Prod.snd_sub, sub_sub_sub_cancel_right] using
        (p <| n + 2).norm_image_sub_le (fun _ => y.1 - x) fun _ => y.2 - x
    _ = ‖p (n + 2)‖ * ‖y - (x, x)‖ ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.1 - y.2‖) :=
      by
      rw [pow_succ ‖y - (x, x)‖]
      ring
        -- porting note: the two `↑` in `↑r'` are new, without them, Lean fails to synthesize
                -- instances `HDiv ℝ ℝ≥0 ?m` or `HMul ℝ ℝ≥0 ?m`
    _ ≤ C * a ^ (n + 2) / ↑r' ^ (n + 2) * ↑r' ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.1 - y.2‖) :=
      by
      have : 0 < a := ha.1
      gcongr
      · apply hp
      · apply hy'.le
    _ = B n := by
      -- porting note: in the original, `B` was in the `field_simp`, but now Lean does not
                -- accept it. The current proof works in Lean 4, but does not in Lean 3.
      field_simp [pow_succ, hr'0.ne']
      simp only [mul_assoc, mul_comm, mul_left_comm]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
n : ℕ
⊢ ‖A (n + 2)‖ ≤ ‖p (n + 2)‖ * ↑(n + 2) * ‖y - (x, x)‖ ^ (n + 1) * ‖y.fst - y.snd‖
[PROOFSTEP]
simpa only [Fintype.card_fin, pi_norm_const, Prod.norm_def, Pi.sub_def, Prod.fst_sub, Prod.snd_sub,
  sub_sub_sub_cancel_right] using (p <| n + 2).norm_image_sub_le (fun _ => y.1 - x) fun _ => y.2 - x
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
n : ℕ
⊢ ‖p (n + 2)‖ * ↑(n + 2) * ‖y - (x, x)‖ ^ (n + 1) * ‖y.fst - y.snd‖ =
    ‖p (n + 2)‖ * ‖y - (x, x)‖ ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.fst - y.snd‖)
[PROOFSTEP]
rw [pow_succ ‖y - (x, x)‖]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
n : ℕ
⊢ ‖p (n + 2)‖ * ↑(n + 2) * (‖y - (x, x)‖ * ‖y - (x, x)‖ ^ n) * ‖y.fst - y.snd‖ =
    ‖p (n + 2)‖ * ‖y - (x, x)‖ ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.fst - y.snd‖)
[PROOFSTEP]
ring
  -- porting note: the two `↑` in `↑r'` are new, without them, Lean fails to synthesize
          -- instances `HDiv ℝ ℝ≥0 ?m` or `HMul ℝ ℝ≥0 ?m`
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
n : ℕ
⊢ ‖p (n + 2)‖ * ‖y - (x, x)‖ ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.fst - y.snd‖) ≤
    C * a ^ (n + 2) / ↑r' ^ (n + 2) * ↑r' ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.fst - y.snd‖)
[PROOFSTEP]
have : 0 < a := ha.1
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
n : ℕ
this : 0 < a
⊢ ‖p (n + 2)‖ * ‖y - (x, x)‖ ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.fst - y.snd‖) ≤
    C * a ^ (n + 2) / ↑r' ^ (n + 2) * ↑r' ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.fst - y.snd‖)
[PROOFSTEP]
gcongr
[GOAL]
case h.h₁
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
n : ℕ
this : 0 < a
⊢ ‖p (n + 2)‖ ≤ C * a ^ (n + 2) / ↑r' ^ (n + 2)
[PROOFSTEP]
apply hp
[GOAL]
case h.h₂.hab
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
n : ℕ
this : 0 < a
⊢ ‖y - (x, x)‖ ≤ ↑r'
[PROOFSTEP]
apply hy'.le
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
n : ℕ
⊢ C * a ^ (n + 2) / ↑r' ^ (n + 2) * ↑r' ^ n * (↑(n + 2) * ‖y - (x, x)‖ * ‖y.fst - y.snd‖) = B n
[PROOFSTEP]
field_simp [pow_succ, hr'0.ne']
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
n : ℕ
⊢ C * (a * (a * a ^ n)) * ↑r' ^ n * ((↑n + 2) * ‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (↑r' * ↑r') =
    C * (a * a) * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n) * (↑r' * (↑r' * ↑r' ^ n))
[PROOFSTEP]
simp only [mul_assoc, mul_comm, mul_left_comm]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
hAB : ∀ (n : ℕ), ‖A (n + 2)‖ ≤ B n
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
[PROOFSTEP]
have hBL : HasSum B (L y) := by
  apply HasSum.mul_left
  simp only [add_mul]
  have : ‖a‖ < 1 := by simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
  rw [div_eq_mul_inv, div_eq_mul_inv]
  exact (hasSum_coe_mul_geometric_of_norm_lt_1 this).add ((hasSum_geometric_of_norm_lt_1 this).mul_left 2)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
hAB : ∀ (n : ℕ), ‖A (n + 2)‖ ≤ B n
⊢ HasSum B (L y)
[PROOFSTEP]
apply HasSum.mul_left
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
hAB : ∀ (n : ℕ), ‖A (n + 2)‖ ≤ B n
⊢ HasSum (fun i => (↑i + 2) * a ^ i) (a / (1 - a) ^ 2 + 2 / (1 - a))
[PROOFSTEP]
simp only [add_mul]
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
hAB : ∀ (n : ℕ), ‖A (n + 2)‖ ≤ B n
⊢ HasSum (fun i => ↑i * a ^ i + 2 * a ^ i) (a / (1 - a) ^ 2 + 2 / (1 - a))
[PROOFSTEP]
have : ‖a‖ < 1 := by simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
hAB : ∀ (n : ℕ), ‖A (n + 2)‖ ≤ B n
⊢ ‖a‖ < 1
[PROOFSTEP]
simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
hAB : ∀ (n : ℕ), ‖A (n + 2)‖ ≤ B n
this : ‖a‖ < 1
⊢ HasSum (fun i => ↑i * a ^ i + 2 * a ^ i) (a / (1 - a) ^ 2 + 2 / (1 - a))
[PROOFSTEP]
rw [div_eq_mul_inv, div_eq_mul_inv]
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
hAB : ∀ (n : ℕ), ‖A (n + 2)‖ ≤ B n
this : ‖a‖ < 1
⊢ HasSum (fun i => ↑i * a ^ i + 2 * a ^ i) (a * ((1 - a) ^ 2)⁻¹ + 2 * (1 - a)⁻¹)
[PROOFSTEP]
exact (hasSum_coe_mul_geometric_of_norm_lt_1 this).add ((hasSum_geometric_of_norm_lt_1 this).mul_left 2)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
y : E × E
hy' : ‖y - (x, x)‖₊ < r'
hy : y ∈ EMetric.ball x r ×ˢ EMetric.ball x r
A : ℕ → F := fun n => (↑(p n) fun x_1 => y.fst - x) - ↑(p n) fun x_1 => y.snd - x
hA : HasSum (fun n => A (n + 2)) (f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd)
B : ℕ → ℝ := fun n => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * ((↑n + 2) * a ^ n)
hAB : ∀ (n : ℕ), ‖A (n + 2)‖ ≤ B n
hBL : HasSum B (L y)
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
[PROOFSTEP]
exact hA.norm_le_of_bounded hBL hAB
[GOAL]
case intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
hL : ∀ (y : E × E), y ∈ EMetric.ball (x, x) ↑r' → ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
suffices L =O[𝓟 (EMetric.ball (x, x) r')] fun y => ‖y - (x, x)‖ * ‖y.1 - y.2‖
  by
  refine' (IsBigO.of_bound 1 (eventually_principal.2 fun y hy => _)).trans this
  rw [one_mul]
  exact (hL y hy).trans (le_abs_self _)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
hL : ∀ (y : E × E), y ∈ EMetric.ball (x, x) ↑r' → ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
this : L =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y => ‖y - (x, x)‖ * ‖y.fst - y.snd‖
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y =>
    ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
refine' (IsBigO.of_bound 1 (eventually_principal.2 fun y hy => _)).trans this
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
hL : ∀ (y : E × E), y ∈ EMetric.ball (x, x) ↑r' → ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
this : L =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y => ‖y - (x, x)‖ * ‖y.fst - y.snd‖
y : E × E
hy : y ∈ EMetric.ball (x, x) ↑r'
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ 1 * ‖L y‖
[PROOFSTEP]
rw [one_mul]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
hL : ∀ (y : E × E), y ∈ EMetric.ball (x, x) ↑r' → ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
this : L =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y => ‖y - (x, x)‖ * ‖y.fst - y.snd‖
y : E × E
hy : y ∈ EMetric.ball (x, x) ↑r'
⊢ ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ ‖L y‖
[PROOFSTEP]
exact (hL y hy).trans (le_abs_self _)
[GOAL]
case intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
hL : ∀ (y : E × E), y ∈ EMetric.ball (x, x) ↑r' → ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
⊢ L =O[𝓟 (EMetric.ball (x, x) ↑r')] fun y => ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
simp_rw [mul_right_comm _ (_ * _)]
  -- porting note: there was an `L` inside the `simp_rw`.
[GOAL]
case intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
hr : ↑r' < r
hr'0 : 0 < r'
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hC : 0 < C
hp : ∀ (n : ℕ), ‖p n‖ ≤ C * a ^ n / ↑r' ^ n
L : E × E → ℝ := fun y => C * (a / ↑r') ^ 2 * (‖y - (x, x)‖ * ‖y.fst - y.snd‖) * (a / (1 - a) ^ 2 + 2 / (1 - a))
hL : ∀ (y : E × E), y ∈ EMetric.ball (x, x) ↑r' → ‖f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd‖ ≤ L y
⊢ (fun y =>
      C * (a / ↑r') ^ 2 * (a / (1 - a) ^ 2 + 2 / (1 - a)) *
        (‖y - (x, x)‖ * ‖y.fst - y.snd‖)) =O[𝓟 (EMetric.ball (x, x) ↑r')]
    fun y => ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
exact (isBigO_refl _ _).const_mul_left _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
hr : r' < r
⊢ ∃ C,
    ∀ (y : E),
      y ∈ EMetric.ball x r' →
        ∀ (z : E), z ∈ EMetric.ball x r' → ‖f y - f z - ↑(p 1) fun x => y - z‖ ≤ C * max ‖y - x‖ ‖z - x‖ * ‖y - z‖
[PROOFSTEP]
simpa only [isBigO_principal, mul_assoc, norm_mul, norm_norm, Prod.forall, EMetric.mem_ball, Prod.edist_eq, max_lt_iff,
  and_imp, @forall_swap (_ < _) E] using hf.isBigO_image_sub_image_sub_deriv_principal hr
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesAt f p x
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓝 (x, x)] fun y => ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
rcases hf with ⟨r, hf⟩
[GOAL]
case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r' r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓝 (x, x)] fun y => ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hf.r_pos with ⟨r', r'0, h⟩
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r'✝ r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
r'0 : 0 < ↑r'
h : ↑r' < r
⊢ (fun y => f y.fst - f y.snd - ↑(p 1) fun x => y.fst - y.snd) =O[𝓝 (x, x)] fun y => ‖y - (x, x)‖ * ‖y.fst - y.snd‖
[PROOFSTEP]
refine' (hf.isBigO_image_sub_image_sub_deriv_principal h).mono _
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r'✝ r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
r' : ℝ≥0
r'0 : 0 < ↑r'
h : ↑r' < r
⊢ 𝓝 (x, x) ≤ 𝓟 (EMetric.ball (x, x) ↑r')
[PROOFSTEP]
exact le_principal_iff.2 (EMetric.ball_mem_nhds _ r'0)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
⊢ TendstoUniformlyOn (fun n y => FormalMultilinearSeries.partialSum p n y) (fun y => f (x + y)) atTop
    (Metric.ball 0 ↑r')
[PROOFSTEP]
obtain ⟨a, ha, C, -, hp⟩ :
  ∃ a ∈ Ioo (0 : ℝ) 1, ∃ C > 0, ∀ y ∈ Metric.ball (0 : E) r', ∀ n, ‖f (x + y) - p.partialSum n y‖ ≤ C * a ^ n
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
⊢ ∃ a,
    a ∈ Ioo 0 1 ∧
      ∃ C,
        C > 0 ∧
          ∀ (y : E),
            y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (y : E), y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
⊢ TendstoUniformlyOn (fun n y => FormalMultilinearSeries.partialSum p n y) (fun y => f (x + y)) atTop
    (Metric.ball 0 ↑r')
[PROOFSTEP]
exact hf.uniform_geometric_approx h
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (y : E), y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
⊢ TendstoUniformlyOn (fun n y => FormalMultilinearSeries.partialSum p n y) (fun y => f (x + y)) atTop
    (Metric.ball 0 ↑r')
[PROOFSTEP]
refine' Metric.tendstoUniformlyOn_iff.2 fun ε εpos => _
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (y : E), y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
ε : ℝ
εpos : ε > 0
⊢ ∀ᶠ (n : ℕ) in atTop,
    ∀ (x_1 : E), x_1 ∈ Metric.ball 0 ↑r' → dist (f (x + x_1)) (FormalMultilinearSeries.partialSum p n x_1) < ε
[PROOFSTEP]
have L : Tendsto (fun n => (C : ℝ) * a ^ n) atTop (𝓝 ((C : ℝ) * 0)) :=
  tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_0_of_lt_1 ha.1.le ha.2)
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (y : E), y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
ε : ℝ
εpos : ε > 0
L : Tendsto (fun n => C * a ^ n) atTop (𝓝 (C * 0))
⊢ ∀ᶠ (n : ℕ) in atTop,
    ∀ (x_1 : E), x_1 ∈ Metric.ball 0 ↑r' → dist (f (x + x_1)) (FormalMultilinearSeries.partialSum p n x_1) < ε
[PROOFSTEP]
rw [mul_zero] at L 
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (y : E), y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
ε : ℝ
εpos : ε > 0
L : Tendsto (fun n => C * a ^ n) atTop (𝓝 0)
⊢ ∀ᶠ (n : ℕ) in atTop,
    ∀ (x_1 : E), x_1 ∈ Metric.ball 0 ↑r' → dist (f (x + x_1)) (FormalMultilinearSeries.partialSum p n x_1) < ε
[PROOFSTEP]
refine' (L.eventually (gt_mem_nhds εpos)).mono fun n hn y hy => _
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (y : E), y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
ε : ℝ
εpos : ε > 0
L : Tendsto (fun n => C * a ^ n) atTop (𝓝 0)
n : ℕ
hn : C * a ^ n < ε
y : E
hy : y ∈ Metric.ball 0 ↑r'
⊢ dist (f (x + y)) (FormalMultilinearSeries.partialSum p n y) < ε
[PROOFSTEP]
rw [dist_eq_norm]
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
a : ℝ
ha : a ∈ Ioo 0 1
C : ℝ
hp : ∀ (y : E), y ∈ Metric.ball 0 ↑r' → ∀ (n : ℕ), ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ ≤ C * a ^ n
ε : ℝ
εpos : ε > 0
L : Tendsto (fun n => C * a ^ n) atTop (𝓝 0)
n : ℕ
hn : C * a ^ n < ε
y : E
hy : y ∈ Metric.ball 0 ↑r'
⊢ ‖f (x + y) - FormalMultilinearSeries.partialSum p n y‖ < ε
[PROOFSTEP]
exact (hp y hy n).trans_lt hn
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
⊢ TendstoLocallyUniformlyOn (fun n y => FormalMultilinearSeries.partialSum p n y) (fun y => f (x + y)) atTop
    (EMetric.ball 0 r)
[PROOFSTEP]
intro u hu x hx
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x✝ r
u : Set (F × F)
hu : u ∈ uniformity F
x : E
hx : x ∈ EMetric.ball 0 r
⊢ ∃ t,
    t ∈ 𝓝[EMetric.ball 0 r] x ∧
      ∀ᶠ (n : ℕ) in atTop,
        ∀ (y : E), y ∈ t → ((fun y => f (x✝ + y)) y, (fun n y => FormalMultilinearSeries.partialSum p n y) n y) ∈ u
[PROOFSTEP]
rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hx with ⟨r', xr', hr'⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r r'✝ : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x✝ r
u : Set (F × F)
hu : u ∈ uniformity F
x : E
hx : x ∈ EMetric.ball 0 r
r' : ℝ≥0
xr' : edist x 0 < ↑r'
hr' : ↑r' < r
⊢ ∃ t,
    t ∈ 𝓝[EMetric.ball 0 r] x ∧
      ∀ᶠ (n : ℕ) in atTop,
        ∀ (y : E), y ∈ t → ((fun y => f (x✝ + y)) y, (fun n y => FormalMultilinearSeries.partialSum p n y) n y) ∈ u
[PROOFSTEP]
have : EMetric.ball (0 : E) r' ∈ 𝓝 x := IsOpen.mem_nhds EMetric.isOpen_ball xr'
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r r'✝ : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x✝ r
u : Set (F × F)
hu : u ∈ uniformity F
x : E
hx : x ∈ EMetric.ball 0 r
r' : ℝ≥0
xr' : edist x 0 < ↑r'
hr' : ↑r' < r
this : EMetric.ball 0 ↑r' ∈ 𝓝 x
⊢ ∃ t,
    t ∈ 𝓝[EMetric.ball 0 r] x ∧
      ∀ᶠ (n : ℕ) in atTop,
        ∀ (y : E), y ∈ t → ((fun y => f (x✝ + y)) y, (fun n y => FormalMultilinearSeries.partialSum p n y) n y) ∈ u
[PROOFSTEP]
refine' ⟨EMetric.ball (0 : E) r', mem_nhdsWithin_of_mem_nhds this, _⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r r'✝ : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x✝ r
u : Set (F × F)
hu : u ∈ uniformity F
x : E
hx : x ∈ EMetric.ball 0 r
r' : ℝ≥0
xr' : edist x 0 < ↑r'
hr' : ↑r' < r
this : EMetric.ball 0 ↑r' ∈ 𝓝 x
⊢ ∀ᶠ (n : ℕ) in atTop,
    ∀ (y : E),
      y ∈ EMetric.ball 0 ↑r' → ((fun y => f (x✝ + y)) y, (fun n y => FormalMultilinearSeries.partialSum p n y) n y) ∈ u
[PROOFSTEP]
simpa [Metric.emetric_ball_nnreal] using hf.tendstoUniformlyOn hr' u hu
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
⊢ TendstoUniformlyOn (fun n y => FormalMultilinearSeries.partialSum p n (y - x)) f atTop (Metric.ball x ↑r')
[PROOFSTEP]
convert (hf.tendstoUniformlyOn h).comp fun y => y - x using 1
[GOAL]
case h.e'_6
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
⊢ f = (fun y => f (x + y)) ∘ fun y => y - x
[PROOFSTEP]
simp [(· ∘ ·)]
[GOAL]
case h.e'_8
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
⊢ Metric.ball x ↑r' = (fun y => y - x) ⁻¹' Metric.ball 0 ↑r'
[PROOFSTEP]
ext z
[GOAL]
case h.e'_8.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r'✝ : ℝ≥0∞
r' : ℝ≥0
hf : HasFPowerSeriesOnBall f p x r
h : ↑r' < r
z : E
⊢ z ∈ Metric.ball x ↑r' ↔ z ∈ (fun y => y - x) ⁻¹' Metric.ball 0 ↑r'
[PROOFSTEP]
simp [dist_eq_norm]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
⊢ TendstoLocallyUniformlyOn (fun n y => FormalMultilinearSeries.partialSum p n (y - x)) f atTop (EMetric.ball x r)
[PROOFSTEP]
have A : ContinuousOn (fun y : E => y - x) (EMetric.ball (x : E) r) := (continuous_id.sub continuous_const).continuousOn
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
A : ContinuousOn (fun y => y - x) (EMetric.ball x r)
⊢ TendstoLocallyUniformlyOn (fun n y => FormalMultilinearSeries.partialSum p n (y - x)) f atTop (EMetric.ball x r)
[PROOFSTEP]
convert hf.tendstoLocallyUniformlyOn.comp (fun y : E => y - x) _ A using 1
[GOAL]
case h.e'_7
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
A : ContinuousOn (fun y => y - x) (EMetric.ball x r)
⊢ f = (fun y => f (x + y)) ∘ fun y => y - x
[PROOFSTEP]
ext z
[GOAL]
case h.e'_7.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
A : ContinuousOn (fun y => y - x) (EMetric.ball x r)
z : E
⊢ f z = ((fun y => f (x + y)) ∘ fun y => y - x) z
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
A : ContinuousOn (fun y => y - x) (EMetric.ball x r)
⊢ MapsTo (fun y => y - x) (EMetric.ball x r) (EMetric.ball 0 r)
[PROOFSTEP]
intro z
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
A : ContinuousOn (fun y => y - x) (EMetric.ball x r)
z : E
⊢ z ∈ EMetric.ball x r → (fun y => y - x) z ∈ EMetric.ball 0 r
[PROOFSTEP]
simp [edist_eq_coe_nnnorm, edist_eq_coe_nnnorm_sub]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
f g : E → F
p✝ pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
y✝ : E
hy : y✝ ∈ EMetric.ball 0 (radius p)
⊢ HasSum (fun n => ↑(p n) fun x => y✝) (FormalMultilinearSeries.sum p (0 + y✝))
[PROOFSTEP]
rw [zero_add]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
f g : E → F
p✝ pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
h : 0 < radius p
y✝ : E
hy : y✝ ∈ EMetric.ball 0 (radius p)
⊢ HasSum (fun n => ↑(p n) fun x => y✝) (FormalMultilinearSeries.sum p y✝)
[PROOFSTEP]
exact p.hasSum hy
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
inst✝ : CompleteSpace F
⊢ ContinuousOn (FormalMultilinearSeries.sum p) (EMetric.ball 0 (radius p))
[PROOFSTEP]
cases' (zero_le p.radius).eq_or_lt with h h
[GOAL]
case inl
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
inst✝ : CompleteSpace F
h : 0 = radius p
⊢ ContinuousOn (FormalMultilinearSeries.sum p) (EMetric.ball 0 (radius p))
[PROOFSTEP]
simp [← h, continuousOn_empty]
[GOAL]
case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
inst✝ : CompleteSpace F
h : 0 < radius p
⊢ ContinuousOn (FormalMultilinearSeries.sum p) (EMetric.ball 0 (radius p))
[PROOFSTEP]
exact (p.hasFPowerSeriesOnBall h).continuousOn
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
h : (fun y => ↑p fun x => y) =O[𝓝 0] fun y => ‖y‖ ^ (n + 1)
y : E
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
obtain ⟨c, c_pos, hc⟩ := h.exists_pos
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
h : (fun y => ↑p fun x => y) =O[𝓝 0] fun y => ‖y‖ ^ (n + 1)
y : E
c : ℝ
c_pos : 0 < c
hc : IsBigOWith c (𝓝 0) (fun y => ↑p fun x => y) fun y => ‖y‖ ^ (n + 1)
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
obtain ⟨t, ht, t_open, z_mem⟩ := eventually_nhds_iff.mp (isBigOWith_iff.mp hc)
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
h : (fun y => ↑p fun x => y) =O[𝓝 0] fun y => ‖y‖ ^ (n + 1)
y : E
c : ℝ
c_pos : 0 < c
hc : IsBigOWith c (𝓝 0) (fun y => ↑p fun x => y) fun y => ‖y‖ ^ (n + 1)
t : Set E
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (n + 1)‖
t_open : IsOpen t
z_mem : 0 ∈ t
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
obtain ⟨δ, δ_pos, δε⟩ := (Metric.isOpen_iff.mp t_open) 0 z_mem
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
h : (fun y => ↑p fun x => y) =O[𝓝 0] fun y => ‖y‖ ^ (n + 1)
y : E
c : ℝ
c_pos : 0 < c
hc : IsBigOWith c (𝓝 0) (fun y => ↑p fun x => y) fun y => ‖y‖ ^ (n + 1)
t : Set E
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (n + 1)‖
t_open : IsOpen t
z_mem : 0 ∈ t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
clear h hc z_mem
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
y : E
c : ℝ
c_pos : 0 < c
t : Set E
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (n + 1)‖
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
cases' n with n
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.zero
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.zero + 1)‖
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
exact
  norm_eq_zero.mp
    (by
      -- porting note: the symmetric difference of the `simpa only` sets:
            -- added `Nat.zero_eq, zero_add, pow_one`
            -- removed `zero_pow', Ne.def, Nat.one_ne_zero, not_false_iff`simpa only [Nat.zero_eq, fin0_apply_norm,
        norm_eq_zero, norm_zero, zero_add, pow_one, mul_zero, norm_le_zero_iff] using
        ht 0 (δε (Metric.mem_ball_self δ_pos)))
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.zero + 1)‖
⊢ ‖↑p fun x => y‖ = 0
[PROOFSTEP]
simpa only [Nat.zero_eq, fin0_apply_norm, norm_eq_zero, norm_zero, zero_add, pow_one, mul_zero, norm_le_zero_iff] using
  ht 0 (δε (Metric.mem_ball_self δ_pos))
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.succ
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
refine' Or.elim (Classical.em (y = 0)) (fun hy => by simpa only [hy] using p.map_zero) fun hy => _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : y = 0
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
simpa only [hy] using p.map_zero
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.succ
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : ¬y = 0
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
replace hy := norm_pos_iff.mpr hy
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.succ
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
⊢ (↑p fun x => y) = 0
[PROOFSTEP]
refine' norm_eq_zero.mp (le_antisymm (le_of_forall_pos_le_add fun ε ε_pos => _) (norm_nonneg _))
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.succ
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
⊢ ‖↑p fun x => y‖ ≤ 0 + ε
[PROOFSTEP]
have h₀ := _root_.mul_pos c_pos (pow_pos hy (n.succ + 1))
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.succ
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
⊢ ‖↑p fun x => y‖ ≤ 0 + ε
[PROOFSTEP]
obtain ⟨k, k_pos, k_norm⟩ :=
  NormedField.exists_norm_lt 𝕜 (lt_min (mul_pos δ_pos (inv_pos.mpr hy)) (mul_pos ε_pos (inv_pos.mpr h₀)))
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.succ.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
⊢ ‖↑p fun x => y‖ ≤ 0 + ε
[PROOFSTEP]
have h₁ : ‖k • y‖ < δ := by
  rw [norm_smul]
  exact inv_mul_cancel_right₀ hy.ne.symm δ ▸ mul_lt_mul_of_pos_right (lt_of_lt_of_le k_norm (min_le_left _ _)) hy
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
⊢ ‖k • y‖ < δ
[PROOFSTEP]
rw [norm_smul]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
⊢ ‖k‖ * ‖y‖ < δ
[PROOFSTEP]
exact inv_mul_cancel_right₀ hy.ne.symm δ ▸ mul_lt_mul_of_pos_right (lt_of_lt_of_le k_norm (min_le_left _ _)) hy
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.succ.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
⊢ ‖↑p fun x => y‖ ≤ 0 + ε
[PROOFSTEP]
have h₂ :=
  calc
    ‖p fun _ => k • y‖ ≤ c * ‖k • y‖ ^ (n.succ + 1) := by
      -- porting note: now Lean wants `_root_.`simpa only [norm_pow, _root_.norm_norm] using
        ht (k • y)
          (δε (mem_ball_zero_iff.mpr h₁))
            --simpa only [norm_pow, norm_norm] using ht (k • y) (δε (mem_ball_zero_iff.mpr h₁))
    _ = ‖k‖ ^ n.succ * (‖k‖ * (c * ‖y‖ ^ (n.succ + 1))) := by
      -- porting note: added `Nat.succ_eq_add_one` since otherwise `ring` does not conclude.
      simp only [norm_smul, mul_pow, Nat.succ_eq_add_one]
        -- porting note: removed `rw [pow_succ]`, since it now becomes superfluous.
      ring
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
⊢ ‖↑p fun x => k • y‖ ≤ c * ‖k • y‖ ^ (Nat.succ n + 1)
[PROOFSTEP]
simpa only [norm_pow, _root_.norm_norm] using
  ht (k • y)
    (δε (mem_ball_zero_iff.mpr h₁))
      --simpa only [norm_pow, norm_norm] using ht (k • y) (δε (mem_ball_zero_iff.mpr h₁))
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
⊢ c * ‖k • y‖ ^ (Nat.succ n + 1) = ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
[PROOFSTEP]
simp only [norm_smul, mul_pow, Nat.succ_eq_add_one]
  -- porting note: removed `rw [pow_succ]`, since it now becomes superfluous.
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
⊢ c * (‖k‖ ^ (n + 1 + 1) * ‖y‖ ^ (n + 1 + 1)) = ‖k‖ ^ (n + 1) * (‖k‖ * (c * ‖y‖ ^ (n + 1 + 1)))
[PROOFSTEP]
ring
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.succ.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
h₂ : ‖↑p fun x => k • y‖ ≤ ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
⊢ ‖↑p fun x => y‖ ≤ 0 + ε
[PROOFSTEP]
have h₃ : ‖k‖ * (c * ‖y‖ ^ (n.succ + 1)) < ε :=
  inv_mul_cancel_right₀ h₀.ne.symm ε ▸ mul_lt_mul_of_pos_right (lt_of_lt_of_le k_norm (min_le_right _ _)) h₀
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.succ.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
h₂ : ‖↑p fun x => k • y‖ ≤ ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
h₃ : ‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)) < ε
⊢ ‖↑p fun x => y‖ ≤ 0 + ε
[PROOFSTEP]
calc
  ‖p fun _ => y‖ = ‖k⁻¹ ^ n.succ‖ * ‖p fun _ => k • y‖ := by
    simpa only [inv_smul_smul₀ (norm_pos_iff.mp k_pos), norm_smul, Finset.prod_const, Finset.card_fin] using
      congr_arg norm (p.map_smul_univ (fun _ : Fin n.succ => k⁻¹) fun _ : Fin n.succ => k • y)
  _ ≤ ‖k⁻¹ ^ n.succ‖ * (‖k‖ ^ n.succ * (‖k‖ * (c * ‖y‖ ^ (n.succ + 1)))) := by gcongr
  _ = ‖(k⁻¹ * k) ^ n.succ‖ * (‖k‖ * (c * ‖y‖ ^ (n.succ + 1))) :=
    by
    rw [← mul_assoc]
    simp [norm_mul, mul_pow]
  _ ≤ 0 + ε := by
    rw [inv_mul_cancel (norm_pos_iff.mp k_pos)]
    simpa using h₃.le
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
h₂ : ‖↑p fun x => k • y‖ ≤ ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
h₃ : ‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)) < ε
⊢ ‖↑p fun x => y‖ = ‖k⁻¹ ^ Nat.succ n‖ * ‖↑p fun x => k • y‖
[PROOFSTEP]
simpa only [inv_smul_smul₀ (norm_pos_iff.mp k_pos), norm_smul, Finset.prod_const, Finset.card_fin] using
  congr_arg norm (p.map_smul_univ (fun _ : Fin n.succ => k⁻¹) fun _ : Fin n.succ => k • y)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
h₂ : ‖↑p fun x => k • y‖ ≤ ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
h₃ : ‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)) < ε
⊢ ‖k⁻¹ ^ Nat.succ n‖ * ‖↑p fun x => k • y‖ ≤
    ‖k⁻¹ ^ Nat.succ n‖ * (‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1))))
[PROOFSTEP]
gcongr
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
h₂ : ‖↑p fun x => k • y‖ ≤ ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
h₃ : ‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)) < ε
⊢ ‖k⁻¹ ^ Nat.succ n‖ * (‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))) =
    ‖(k⁻¹ * k) ^ Nat.succ n‖ * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
[PROOFSTEP]
rw [← mul_assoc]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
h₂ : ‖↑p fun x => k • y‖ ≤ ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
h₃ : ‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)) < ε
⊢ ‖k⁻¹ ^ Nat.succ n‖ * ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1))) =
    ‖(k⁻¹ * k) ^ Nat.succ n‖ * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
[PROOFSTEP]
simp [norm_mul, mul_pow]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
h₂ : ‖↑p fun x => k • y‖ ≤ ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
h₃ : ‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)) < ε
⊢ ‖(k⁻¹ * k) ^ Nat.succ n‖ * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1))) ≤ 0 + ε
[PROOFSTEP]
rw [inv_mul_cancel (norm_pos_iff.mp k_pos)]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
y : E
c : ℝ
c_pos : 0 < c
t : Set E
t_open : IsOpen t
δ : ℝ
δ_pos : δ > 0
δε : Metric.ball 0 δ ⊆ t
n : ℕ
p : ContinuousMultilinearMap 𝕜 (fun i => E) F
ht : ∀ (x : E), x ∈ t → ‖↑p fun x_1 => x‖ ≤ c * ‖‖x‖ ^ (Nat.succ n + 1)‖
hy : 0 < ‖y‖
ε : ℝ
ε_pos : 0 < ε
h₀ : 0 < c * ‖y‖ ^ (Nat.succ n + 1)
k : 𝕜
k_pos : 0 < ‖k‖
k_norm : ‖k‖ < min (δ * ‖y‖⁻¹) (ε * (c * ‖y‖ ^ (Nat.succ n + 1))⁻¹)
h₁ : ‖k • y‖ < δ
h₂ : ‖↑p fun x => k • y‖ ≤ ‖k‖ ^ Nat.succ n * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)))
h₃ : ‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1)) < ε
⊢ ‖1 ^ Nat.succ n‖ * (‖k‖ * (c * ‖y‖ ^ (Nat.succ n + 1))) ≤ 0 + ε
[PROOFSTEP]
simpa using h₃.le
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
h : HasFPowerSeriesAt 0 p x
n : ℕ
⊢ ∀ (y : E), (↑(p n) fun x => y) = 0
[PROOFSTEP]
refine' Nat.strong_induction_on n fun k hk => _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
h : HasFPowerSeriesAt 0 p x
n k : ℕ
hk : ∀ (m : ℕ), m < k → ∀ (y : E), (↑(p m) fun x => y) = 0
⊢ ∀ (y : E), (↑(p k) fun x => y) = 0
[PROOFSTEP]
have psum_eq : p.partialSum (k + 1) = fun y => p k fun _ => y :=
  by
  funext z
  refine' Finset.sum_eq_single _ (fun b hb hnb => _) fun hn => _
  · have := Finset.mem_range_succ_iff.mp hb
    simp only [hk b (this.lt_of_ne hnb), Pi.zero_apply]
  · exact False.elim (hn (Finset.mem_range.mpr (lt_add_one k)))
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
h : HasFPowerSeriesAt 0 p x
n k : ℕ
hk : ∀ (m : ℕ), m < k → ∀ (y : E), (↑(p m) fun x => y) = 0
⊢ FormalMultilinearSeries.partialSum p (k + 1) = fun y => ↑(p k) fun x => y
[PROOFSTEP]
funext z
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
h : HasFPowerSeriesAt 0 p x
n k : ℕ
hk : ∀ (m : ℕ), m < k → ∀ (y : E), (↑(p m) fun x => y) = 0
z : E
⊢ FormalMultilinearSeries.partialSum p (k + 1) z = ↑(p k) fun x => z
[PROOFSTEP]
refine' Finset.sum_eq_single _ (fun b hb hnb => _) fun hn => _
[GOAL]
case h.refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
h : HasFPowerSeriesAt 0 p x
n k : ℕ
hk : ∀ (m : ℕ), m < k → ∀ (y : E), (↑(p m) fun x => y) = 0
z : E
b : ℕ
hb : b ∈ Finset.range (k + 1)
hnb : b ≠ k
⊢ (↑(p b) fun x => z) = 0
[PROOFSTEP]
have := Finset.mem_range_succ_iff.mp hb
[GOAL]
case h.refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
h : HasFPowerSeriesAt 0 p x
n k : ℕ
hk : ∀ (m : ℕ), m < k → ∀ (y : E), (↑(p m) fun x => y) = 0
z : E
b : ℕ
hb : b ∈ Finset.range (k + 1)
hnb : b ≠ k
this : b ≤ k
⊢ (↑(p b) fun x => z) = 0
[PROOFSTEP]
simp only [hk b (this.lt_of_ne hnb), Pi.zero_apply]
[GOAL]
case h.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
h : HasFPowerSeriesAt 0 p x
n k : ℕ
hk : ∀ (m : ℕ), m < k → ∀ (y : E), (↑(p m) fun x => y) = 0
z : E
hn : ¬k ∈ Finset.range (k + 1)
⊢ (↑(p k) fun x => z) = 0
[PROOFSTEP]
exact False.elim (hn (Finset.mem_range.mpr (lt_add_one k)))
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
h : HasFPowerSeriesAt 0 p x
n k : ℕ
hk : ∀ (m : ℕ), m < k → ∀ (y : E), (↑(p m) fun x => y) = 0
psum_eq : FormalMultilinearSeries.partialSum p (k + 1) = fun y => ↑(p k) fun x => y
⊢ ∀ (y : E), (↑(p k) fun x => y) = 0
[PROOFSTEP]
replace h := h.isBigO_sub_partialSum_pow k.succ
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
n k : ℕ
hk : ∀ (m : ℕ), m < k → ∀ (y : E), (↑(p m) fun x => y) = 0
psum_eq : FormalMultilinearSeries.partialSum p (k + 1) = fun y => ↑(p k) fun x => y
h :
  (fun y => OfNat.ofNat 0 (x + y) - FormalMultilinearSeries.partialSum p (Nat.succ k) y) =O[𝓝 0] fun y =>
    ‖y‖ ^ Nat.succ k
⊢ ∀ (y : E), (↑(p k) fun x => y) = 0
[PROOFSTEP]
simp only [psum_eq, zero_sub, Pi.zero_apply, Asymptotics.isBigO_neg_left] at h 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x : E
n k : ℕ
hk : ∀ (m : ℕ), m < k → ∀ (y : E), (↑(p m) fun x => y) = 0
psum_eq : FormalMultilinearSeries.partialSum p (k + 1) = fun y => ↑(p k) fun x => y
h : (fun x => ↑(p k) fun x_1 => x) =O[𝓝 0] fun y => ‖y‖ ^ Nat.succ k
⊢ ∀ (y : E), (↑(p k) fun x => y) = 0
[PROOFSTEP]
exact h.continuousMultilinearMap_apply_eq_zero
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
x : 𝕜
h : HasFPowerSeriesAt 0 p x
⊢ p = 0
[PROOFSTEP]
funext n
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
x : 𝕜
h : HasFPowerSeriesAt 0 p x
n : ℕ
⊢ p n = OfNat.ofNat 0 n
[PROOFSTEP]
ext x
[GOAL]
case h.H
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
x✝ : 𝕜
h : HasFPowerSeriesAt 0 p x✝
n : ℕ
x : Fin n → 𝕜
⊢ ↑(p n) x = ↑(OfNat.ofNat 0 n) x
[PROOFSTEP]
rw [← mkPiField_apply_one_eq_self (p n)]
  -- porting note: nasty hack, was `simp [h.apply_eq_zero n 1]`
[GOAL]
case h.H
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
x✝ : 𝕜
h : HasFPowerSeriesAt 0 p x✝
n : ℕ
x : Fin n → 𝕜
⊢ ↑(ContinuousMultilinearMap.mkPiField 𝕜 (Fin n) (↑(p n) fun x => 1)) x = ↑(OfNat.ofNat 0 n) x
[PROOFSTEP]
have := Or.intro_right ?_ (h.apply_eq_zero n 1)
[GOAL]
case h.H.refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
x✝ : 𝕜
h : HasFPowerSeriesAt 0 p x✝
n : ℕ
x : Fin n → 𝕜
this : ?h.H.refine_1 ∨ (↑(p n) fun x => 1) = 0
⊢ ↑(ContinuousMultilinearMap.mkPiField 𝕜 (Fin n) (↑(p n) fun x => 1)) x = ↑(OfNat.ofNat 0 n) x
case h.H.refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 𝕜 E
x✝ : 𝕜
h : HasFPowerSeriesAt 0 p x✝
n : ℕ
x : Fin n → 𝕜
⊢ Prop
[PROOFSTEP]
simpa using this
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p₁ p₂ : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
x : 𝕜
h₁ : HasFPowerSeriesAt f p₁ x
h₂ : HasFPowerSeriesAt f p₂ x
⊢ HasFPowerSeriesAt 0 (p₁ - p₂) (?m.1079515 h₁ h₂)
[PROOFSTEP]
simpa only [sub_self] using h₁.sub h₂
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
⊢ ContinuousMultilinearMap 𝕜 (fun i => E) (ContinuousMultilinearMap 𝕜 (fun i => E) F)
[PROOFSTEP]
let a :=
  ContinuousMultilinearMap.curryFinFinset 𝕜 E F hs
    (by erw [Finset.card_compl, Fintype.card_fin, hs, add_tsub_cancel_right])
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
⊢ Finset.card sᶜ = ?m.1109107
[PROOFSTEP]
erw [Finset.card_compl, Fintype.card_fin, hs, add_tsub_cancel_right]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
a : ContinuousMultilinearMap 𝕜 (fun i => E) F ≃ₗᵢ[𝕜]
  ContinuousMultilinearMap 𝕜 (fun i => E) (ContinuousMultilinearMap 𝕜 (fun i => E) F) :=
  ContinuousMultilinearMap.curryFinFinset 𝕜 E F hs (_ : Finset.card sᶜ = k)
⊢ ContinuousMultilinearMap 𝕜 (fun i => E) (ContinuousMultilinearMap 𝕜 (fun i => E) F)
[PROOFSTEP]
exact a (p (k + l))
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
⊢ ‖changeOriginSeriesTerm p k l s hs‖ = ‖p (k + l)‖
[PROOFSTEP]
simp only [changeOriginSeriesTerm, LinearIsometryEquiv.norm_map]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
⊢ ‖changeOriginSeriesTerm p k l s hs‖₊ = ‖p (k + l)‖₊
[PROOFSTEP]
simp only [changeOriginSeriesTerm, LinearIsometryEquiv.nnnorm_map]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x✝ y✝ : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
x y : E
⊢ ‖↑(↑(changeOriginSeriesTerm p k l s hs) fun x_1 => x) fun x => y‖₊ ≤ ‖p (k + l)‖₊ * ‖x‖₊ ^ l * ‖y‖₊ ^ k
[PROOFSTEP]
rw [← p.nnnorm_changeOriginSeriesTerm k l s hs, ← Fin.prod_const, ← Fin.prod_const]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x✝ y✝ : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
x y : E
⊢ ‖↑(↑(changeOriginSeriesTerm p k l s hs) fun x_1 => x) fun x => y‖₊ ≤
    (‖changeOriginSeriesTerm p k l s hs‖₊ * ∏ _i : Fin l, ‖x‖₊) * ∏ _i : Fin k, ‖y‖₊
[PROOFSTEP]
apply ContinuousMultilinearMap.le_of_op_nnnorm_le
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x✝ y✝ : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
x y : E
⊢ ‖↑(changeOriginSeriesTerm p k l s hs) fun x_1 => x‖₊ ≤ ‖changeOriginSeriesTerm p k l s hs‖₊ * ∏ _i : Fin l, ‖x‖₊
[PROOFSTEP]
apply ContinuousMultilinearMap.le_op_nnnorm
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
⊢ ∑ a : { s // Finset.card s = l }, ‖changeOriginSeriesTerm p k l ↑a (_ : Finset.card ↑a = l)‖₊ =
    ∑' (x : { s // Finset.card s = l }), ‖p (k + l)‖₊
[PROOFSTEP]
simp_rw [tsum_fintype, nnnorm_changeOriginSeriesTerm (p := p) (k := k) (l := l)]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x✝ y : E
r R : ℝ≥0
k l : ℕ
x : E
⊢ ‖↑(changeOriginSeries p k l) fun x_1 => x‖₊ ≤ ∑' (x_1 : { s // Finset.card s = l }), ‖p (k + l)‖₊ * ‖x‖₊ ^ l
[PROOFSTEP]
rw [NNReal.tsum_mul_right, ← Fin.prod_const]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x✝ y : E
r R : ℝ≥0
k l : ℕ
x : E
⊢ ‖↑(changeOriginSeries p k l) fun x_1 => x‖₊ ≤ (∑' (x : { s // Finset.card s = l }), ‖p (k + l)‖₊) * ∏ _i : Fin l, ‖x‖₊
[PROOFSTEP]
exact (p.changeOriginSeries k l).le_of_op_nnnorm_le _ (p.nnnorm_changeOriginSeries_le_tsum _ _)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
⊢ Function.LeftInverse
    (fun s =>
      { fst := s.fst - Finset.card s.snd,
        snd :=
          { fst := Finset.card s.snd,
            snd :=
              {
                val :=
                  Finset.map
                    (Equiv.toEmbedding
                      (Fin.castIso (_ : s.fst = s.fst - Finset.card s.snd + Finset.card s.snd)).toEquiv)
                    s.snd,
                property :=
                  (_ :
                    Finset.card
                        (Finset.map
                          (Equiv.toEmbedding
                            (Fin.castIso (_ : s.fst = s.fst - Finset.card s.snd + Finset.card s.snd)).toEquiv)
                          s.snd) =
                      Finset.card s.snd) } } })
    fun s => { fst := s.fst + s.snd.fst, snd := ↑s.snd.snd }
[PROOFSTEP]
rintro ⟨k, l, ⟨s : Finset (Fin <| k + l), hs : s.card = l⟩⟩
[GOAL]
case mk.mk.mk
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
⊢ (fun s =>
        { fst := s.fst - Finset.card s.snd,
          snd :=
            { fst := Finset.card s.snd,
              snd :=
                {
                  val :=
                    Finset.map
                      (Equiv.toEmbedding
                        (Fin.castIso (_ : s.fst = s.fst - Finset.card s.snd + Finset.card s.snd)).toEquiv)
                      s.snd,
                  property :=
                    (_ :
                      Finset.card
                          (Finset.map
                            (Equiv.toEmbedding
                              (Fin.castIso (_ : s.fst = s.fst - Finset.card s.snd + Finset.card s.snd)).toEquiv)
                            s.snd) =
                        Finset.card s.snd) } } })
      ((fun s => { fst := s.fst + s.snd.fst, snd := ↑s.snd.snd })
        { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }) =
    { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }
[PROOFSTEP]
dsimp only [Subtype.coe_mk]
  -- Lean can't automatically generalize `k' = k + l - s.card`, `l' = s.card`, so we explicitly
      -- formulate the generalized goal
[GOAL]
case mk.mk.mk
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
⊢ { fst := k + l - Finset.card s,
      snd :=
        { fst := Finset.card s,
          snd :=
            {
              val :=
                Finset.map (Equiv.toEmbedding (Fin.castIso (_ : k + l = k + l - Finset.card s + Finset.card s)).toEquiv)
                  s,
              property :=
                (_ :
                  Finset.card
                      (Finset.map
                        (Equiv.toEmbedding (Fin.castIso (_ : k + l = k + l - Finset.card s + Finset.card s)).toEquiv)
                        s) =
                    Finset.card s) } } } =
    { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }
[PROOFSTEP]
suffices
  ∀ k' l',
    k' = k →
      l' = l →
        ∀ (hkl : k + l = k' + l') (hs'),
          (⟨k', l', ⟨Finset.map (Fin.castIso hkl).toEquiv.toEmbedding s, hs'⟩⟩ :
              Σ k l : ℕ, { s : Finset (Fin (k + l)) // s.card = l }) =
            ⟨k, l, ⟨s, hs⟩⟩
  by apply this <;> simp only [hs, add_tsub_cancel_right]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
this :
  ∀ (k' l' : ℕ),
    k' = k →
      l' = l →
        ∀ (hkl : k + l = k' + l') (hs' : Finset.card (Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s) = l'),
          { fst := k',
              snd :=
                { fst := l',
                  snd := { val := Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s, property := hs' } } } =
            { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }
⊢ { fst := k + l - Finset.card s,
      snd :=
        { fst := Finset.card s,
          snd :=
            {
              val :=
                Finset.map (Equiv.toEmbedding (Fin.castIso (_ : k + l = k + l - Finset.card s + Finset.card s)).toEquiv)
                  s,
              property :=
                (_ :
                  Finset.card
                      (Finset.map
                        (Equiv.toEmbedding (Fin.castIso (_ : k + l = k + l - Finset.card s + Finset.card s)).toEquiv)
                        s) =
                    Finset.card s) } } } =
    { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }
[PROOFSTEP]
apply this
[GOAL]
case a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
this :
  ∀ (k' l' : ℕ),
    k' = k →
      l' = l →
        ∀ (hkl : k + l = k' + l') (hs' : Finset.card (Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s) = l'),
          { fst := k',
              snd :=
                { fst := l',
                  snd := { val := Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s, property := hs' } } } =
            { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }
⊢ k + l - Finset.card s = k
[PROOFSTEP]
simp only [hs, add_tsub_cancel_right]
[GOAL]
case a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
this :
  ∀ (k' l' : ℕ),
    k' = k →
      l' = l →
        ∀ (hkl : k + l = k' + l') (hs' : Finset.card (Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s) = l'),
          { fst := k',
              snd :=
                { fst := l',
                  snd := { val := Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s, property := hs' } } } =
            { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }
⊢ Finset.card s = l
[PROOFSTEP]
simp only [hs, add_tsub_cancel_right]
[GOAL]
case mk.mk.mk
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
⊢ ∀ (k' l' : ℕ),
    k' = k →
      l' = l →
        ∀ (hkl : k + l = k' + l') (hs' : Finset.card (Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s) = l'),
          { fst := k',
              snd :=
                { fst := l',
                  snd := { val := Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s, property := hs' } } } =
            { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }
[PROOFSTEP]
rintro _ _ rfl rfl hkl hs'
[GOAL]
case mk.mk.mk
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k'✝ l'✝ : ℕ
s : Finset (Fin (k'✝ + l'✝))
hs : Finset.card s = l'✝
hkl : k'✝ + l'✝ = k'✝ + l'✝
hs' : Finset.card (Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s) = l'✝
⊢ { fst := k'✝,
      snd :=
        { fst := l'✝,
          snd := { val := Finset.map (Equiv.toEmbedding (Fin.castIso hkl).toEquiv) s, property := hs' } } } =
    { fst := k'✝, snd := { fst := l'✝, snd := { val := s, property := hs } } }
[PROOFSTEP]
simp only [Equiv.refl_toEmbedding, Fin.castIso_refl, Finset.map_refl, eq_self_iff_true, OrderIso.refl_toEquiv,
  and_self_iff, heq_iff_eq]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
⊢ Function.RightInverse
    (fun s =>
      { fst := s.fst - Finset.card s.snd,
        snd :=
          { fst := Finset.card s.snd,
            snd :=
              {
                val :=
                  Finset.map
                    (Equiv.toEmbedding
                      (Fin.castIso (_ : s.fst = s.fst - Finset.card s.snd + Finset.card s.snd)).toEquiv)
                    s.snd,
                property :=
                  (_ :
                    Finset.card
                        (Finset.map
                          (Equiv.toEmbedding
                            (Fin.castIso (_ : s.fst = s.fst - Finset.card s.snd + Finset.card s.snd)).toEquiv)
                          s.snd) =
                      Finset.card s.snd) } } })
    fun s => { fst := s.fst + s.snd.fst, snd := ↑s.snd.snd }
[PROOFSTEP]
rintro ⟨n, s⟩
[GOAL]
case mk
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
n : ℕ
s : Finset (Fin n)
⊢ (fun s => { fst := s.fst + s.snd.fst, snd := ↑s.snd.snd })
      ((fun s =>
          { fst := s.fst - Finset.card s.snd,
            snd :=
              { fst := Finset.card s.snd,
                snd :=
                  {
                    val :=
                      Finset.map
                        (Equiv.toEmbedding
                          (Fin.castIso (_ : s.fst = s.fst - Finset.card s.snd + Finset.card s.snd)).toEquiv)
                        s.snd,
                    property :=
                      (_ :
                        Finset.card
                            (Finset.map
                              (Equiv.toEmbedding
                                (Fin.castIso (_ : s.fst = s.fst - Finset.card s.snd + Finset.card s.snd)).toEquiv)
                              s.snd) =
                          Finset.card s.snd) } } })
        { fst := n, snd := s }) =
    { fst := n, snd := s }
[PROOFSTEP]
simp [tsub_add_cancel_of_le (card_finset_fin_le s), Fin.castIso_to_equiv]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
⊢ Summable fun s => ‖p (s.fst + s.snd.fst)‖₊ * r ^ s.snd.fst * r' ^ s.fst
[PROOFSTEP]
rw [← changeOriginIndexEquiv.symm.summable_iff]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
⊢ Summable ((fun s => ‖p (s.fst + s.snd.fst)‖₊ * r ^ s.snd.fst * r' ^ s.fst) ∘ ↑changeOriginIndexEquiv.symm)
[PROOFSTEP]
dsimp only [(· ∘ ·), changeOriginIndexEquiv_symm_apply_fst, changeOriginIndexEquiv_symm_apply_snd_fst]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
⊢ Summable fun x =>
    ‖p (x.fst - Finset.card x.snd + Finset.card x.snd)‖₊ * r ^ Finset.card x.snd * r' ^ (x.fst - Finset.card x.snd)
[PROOFSTEP]
have :
  ∀ n : ℕ,
    HasSum (fun s : Finset (Fin n) => ‖p (n - s.card + s.card)‖₊ * r ^ s.card * r' ^ (n - s.card))
      (‖p n‖₊ * (r + r') ^ n) :=
  by
  intro n
  convert_to HasSum (fun s : Finset (Fin n) => ‖p n‖₊ * (r ^ s.card * r' ^ (n - s.card))) _
  · ext1 s
    rw [tsub_add_cancel_of_le (card_finset_fin_le _), mul_assoc]
  rw [← Fin.sum_pow_mul_eq_add_pow]
  exact (hasSum_fintype _).mul_left _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
⊢ ∀ (n : ℕ),
    HasSum (fun s => ‖p (n - Finset.card s + Finset.card s)‖₊ * r ^ Finset.card s * r' ^ (n - Finset.card s))
      (‖p n‖₊ * (r + r') ^ n)
[PROOFSTEP]
intro n
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
n : ℕ
⊢ HasSum (fun s => ‖p (n - Finset.card s + Finset.card s)‖₊ * r ^ Finset.card s * r' ^ (n - Finset.card s))
    (‖p n‖₊ * (r + r') ^ n)
[PROOFSTEP]
convert_to HasSum (fun s : Finset (Fin n) => ‖p n‖₊ * (r ^ s.card * r' ^ (n - s.card))) _
[GOAL]
case h.e'_5
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
n : ℕ
⊢ (fun s => ‖p (n - Finset.card s + Finset.card s)‖₊ * r ^ Finset.card s * r' ^ (n - Finset.card s)) = fun s =>
    ‖p n‖₊ * (r ^ Finset.card s * r' ^ (n - Finset.card s))
[PROOFSTEP]
ext1 s
[GOAL]
case h.e'_5.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
n : ℕ
s : Finset (Fin n)
⊢ ‖p (n - Finset.card s + Finset.card s)‖₊ * r ^ Finset.card s * r' ^ (n - Finset.card s) =
    ‖p n‖₊ * (r ^ Finset.card s * r' ^ (n - Finset.card s))
[PROOFSTEP]
rw [tsub_add_cancel_of_le (card_finset_fin_le _), mul_assoc]
[GOAL]
case convert_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
n : ℕ
⊢ HasSum (fun s => ‖p n‖₊ * (r ^ Finset.card s * r' ^ (n - Finset.card s))) (‖p n‖₊ * (r + r') ^ n)
[PROOFSTEP]
rw [← Fin.sum_pow_mul_eq_add_pow]
[GOAL]
case convert_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
n : ℕ
⊢ HasSum (fun s => ‖p n‖₊ * (r ^ Finset.card s * r' ^ (n - Finset.card s)))
    (‖p n‖₊ * ∑ s : Finset (Fin n), r ^ Finset.card s * r' ^ (n - Finset.card s))
[PROOFSTEP]
exact (hasSum_fintype _).mul_left _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
this :
  ∀ (n : ℕ),
    HasSum (fun s => ‖p (n - Finset.card s + Finset.card s)‖₊ * r ^ Finset.card s * r' ^ (n - Finset.card s))
      (‖p n‖₊ * (r + r') ^ n)
⊢ Summable fun x =>
    ‖p (x.fst - Finset.card x.snd + Finset.card x.snd)‖₊ * r ^ Finset.card x.snd * r' ^ (x.fst - Finset.card x.snd)
[PROOFSTEP]
refine' NNReal.summable_sigma.2 ⟨fun n => (this n).summable, _⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
this :
  ∀ (n : ℕ),
    HasSum (fun s => ‖p (n - Finset.card s + Finset.card s)‖₊ * r ^ Finset.card s * r' ^ (n - Finset.card s))
      (‖p n‖₊ * (r + r') ^ n)
⊢ Summable fun x =>
    ∑' (y : Finset (Fin x)),
      ‖p
              ({ fst := x, snd := y }.fst - Finset.card { fst := x, snd := y }.snd +
                Finset.card { fst := x, snd := y }.snd)‖₊ *
          r ^ Finset.card { fst := x, snd := y }.snd *
        r' ^ ({ fst := x, snd := y }.fst - Finset.card { fst := x, snd := y }.snd)
[PROOFSTEP]
simp only [(this _).tsum_eq]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r r' : ℝ≥0
hr : ↑r + ↑r' < radius p
this :
  ∀ (n : ℕ),
    HasSum (fun s => ‖p (n - Finset.card s + Finset.card s)‖₊ * r ^ Finset.card s * r' ^ (n - Finset.card s))
      (‖p n‖₊ * (r + r') ^ n)
⊢ Summable fun x => ‖p x‖₊ * (r + r') ^ x
[PROOFSTEP]
exact p.summable_nnnorm_mul_pow hr
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
hr : ↑r < radius p
k : ℕ
⊢ Summable fun s => ‖p (k + s.fst)‖₊ * r ^ s.fst
[PROOFSTEP]
rcases ENNReal.lt_iff_exists_add_pos_lt.1 hr with ⟨r', h0, hr'⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
hr : ↑r < radius p
k : ℕ
r' : ℝ≥0
h0 : 0 < r'
hr' : ↑r + ↑r' < radius p
⊢ Summable fun s => ‖p (k + s.fst)‖₊ * r ^ s.fst
[PROOFSTEP]
simpa only [mul_inv_cancel_right₀ (pow_pos h0 _).ne'] using
  ((NNReal.summable_sigma.1 (p.changeOriginSeries_summable_aux₁ hr')).1 k).mul_right (r' ^ k)⁻¹
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
hr : ↑r < radius p
k : ℕ
⊢ Summable fun l => ‖changeOriginSeries p k l‖₊ * r ^ l
[PROOFSTEP]
refine' NNReal.summable_of_le (fun n => _) (NNReal.summable_sigma.1 <| p.changeOriginSeries_summable_aux₂ hr k).2
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
hr : ↑r < radius p
k n : ℕ
⊢ ‖changeOriginSeries p k n‖₊ * r ^ n ≤
    ∑' (y : { s // Finset.card s = n }), ‖p (k + { fst := n, snd := y }.fst)‖₊ * r ^ { fst := n, snd := y }.fst
[PROOFSTEP]
simp only [NNReal.tsum_mul_right]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
hr : ↑r < radius p
k n : ℕ
⊢ ‖changeOriginSeries p k n‖₊ * r ^ n ≤ (∑' (x : { s // Finset.card s = n }), ‖p (k + n)‖₊) * r ^ n
[PROOFSTEP]
exact mul_le_mul' (p.nnnorm_changeOriginSeries_le_tsum _ _) le_rfl
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k : ℕ
h : ↑‖x‖₊ < radius p
⊢ ‖changeOrigin p x k‖₊ ≤ ∑' (s : (l : ℕ) × { s // Finset.card s = l }), ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst
[PROOFSTEP]
refine' tsum_of_nnnorm_bounded _ fun l => p.nnnorm_changeOriginSeries_apply_le_tsum k l x
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k : ℕ
h : ↑‖x‖₊ < radius p
⊢ HasSum (fun l => ∑' (x_1 : { s // Finset.card s = l }), ‖p (k + l)‖₊ * ‖x‖₊ ^ l)
    (∑' (s : (l : ℕ) × { s // Finset.card s = l }), ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst)
[PROOFSTEP]
have := p.changeOriginSeries_summable_aux₂ h k
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k : ℕ
h : ↑‖x‖₊ < radius p
this : Summable fun s => ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst
⊢ HasSum (fun l => ∑' (x_1 : { s // Finset.card s = l }), ‖p (k + l)‖₊ * ‖x‖₊ ^ l)
    (∑' (s : (l : ℕ) × { s // Finset.card s = l }), ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst)
[PROOFSTEP]
refine' HasSum.sigma this.hasSum fun l => _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k : ℕ
h : ↑‖x‖₊ < radius p
this : Summable fun s => ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst
l : ℕ
⊢ HasSum (fun c => ‖p (k + { fst := l, snd := c }.fst)‖₊ * ‖x‖₊ ^ { fst := l, snd := c }.fst)
    (∑' (x_1 : { s // Finset.card s = l }), ‖p (k + l)‖₊ * ‖x‖₊ ^ l)
[PROOFSTEP]
exact ((NNReal.summable_sigma.1 this).1 l).hasSum
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
⊢ radius p - ↑‖x‖₊ ≤ radius (changeOrigin p x)
[PROOFSTEP]
refine' ENNReal.le_of_forall_pos_nnreal_lt fun r _h0 hr => _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
_h0 : 0 < r
hr : ↑r < radius p - ↑‖x‖₊
⊢ ↑r ≤ radius (changeOrigin p x)
[PROOFSTEP]
rw [lt_tsub_iff_right, add_comm] at hr 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
_h0 : 0 < r
hr✝ : ↑r < radius p - ↑‖x‖₊
hr : ↑‖x‖₊ + ↑r < radius p
⊢ ↑r ≤ radius (changeOrigin p x)
[PROOFSTEP]
have hr' : (‖x‖₊ : ℝ≥0∞) < p.radius := (le_add_right le_rfl).trans_lt hr
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
_h0 : 0 < r
hr✝ : ↑r < radius p - ↑‖x‖₊
hr : ↑‖x‖₊ + ↑r < radius p
hr' : ↑‖x‖₊ < radius p
⊢ ↑r ≤ radius (changeOrigin p x)
[PROOFSTEP]
apply le_radius_of_summable_nnnorm
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
_h0 : 0 < r
hr✝ : ↑r < radius p - ↑‖x‖₊
hr : ↑‖x‖₊ + ↑r < radius p
hr' : ↑‖x‖₊ < radius p
⊢ Summable fun n => ‖changeOrigin p x n‖₊ * r ^ n
[PROOFSTEP]
have :
  ∀ k : ℕ,
    ‖p.changeOrigin x k‖₊ * r ^ k ≤
      (∑' s : Σ l : ℕ, { s : Finset (Fin (k + l)) // s.card = l }, ‖p (k + s.1)‖₊ * ‖x‖₊ ^ s.1) * r ^ k :=
  fun k => mul_le_mul_right' (p.nnnorm_changeOrigin_le k hr') (r ^ k)
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
_h0 : 0 < r
hr✝ : ↑r < radius p - ↑‖x‖₊
hr : ↑‖x‖₊ + ↑r < radius p
hr' : ↑‖x‖₊ < radius p
this :
  ∀ (k : ℕ),
    ‖changeOrigin p x k‖₊ * r ^ k ≤
      (∑' (s : (l : ℕ) × { s // Finset.card s = l }), ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst) * r ^ k
⊢ Summable fun n => ‖changeOrigin p x n‖₊ * r ^ n
[PROOFSTEP]
refine' NNReal.summable_of_le this _
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
_h0 : 0 < r
hr✝ : ↑r < radius p - ↑‖x‖₊
hr : ↑‖x‖₊ + ↑r < radius p
hr' : ↑‖x‖₊ < radius p
this :
  ∀ (k : ℕ),
    ‖changeOrigin p x k‖₊ * r ^ k ≤
      (∑' (s : (l : ℕ) × { s // Finset.card s = l }), ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst) * r ^ k
⊢ Summable fun b => (∑' (s : (l : ℕ) × { s // Finset.card s = l }), ‖p (b + s.fst)‖₊ * ‖x‖₊ ^ s.fst) * r ^ b
[PROOFSTEP]
simpa only [← NNReal.tsum_mul_right] using (NNReal.summable_sigma.1 (p.changeOriginSeries_summable_aux₁ hr)).2
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
⊢ FormalMultilinearSeries.sum (changeOrigin p x) y = FormalMultilinearSeries.sum p (x + y)
[PROOFSTEP]
have radius_pos : 0 < p.radius := lt_of_le_of_lt (zero_le _) h
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
⊢ FormalMultilinearSeries.sum (changeOrigin p x) y = FormalMultilinearSeries.sum p (x + y)
[PROOFSTEP]
have x_mem_ball : x ∈ EMetric.ball (0 : E) p.radius := mem_emetric_ball_zero_iff.2 ((le_add_right le_rfl).trans_lt h)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
⊢ FormalMultilinearSeries.sum (changeOrigin p x) y = FormalMultilinearSeries.sum p (x + y)
[PROOFSTEP]
have y_mem_ball : y ∈ EMetric.ball (0 : E) (p.changeOrigin x).radius :=
  by
  refine' mem_emetric_ball_zero_iff.2 (lt_of_lt_of_le _ p.changeOrigin_radius)
  rwa [lt_tsub_iff_right, add_comm]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
⊢ y ∈ EMetric.ball 0 (radius (changeOrigin p x))
[PROOFSTEP]
refine' mem_emetric_ball_zero_iff.2 (lt_of_lt_of_le _ p.changeOrigin_radius)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
⊢ ↑‖y‖₊ < radius p - ↑‖x‖₊
[PROOFSTEP]
rwa [lt_tsub_iff_right, add_comm]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
⊢ FormalMultilinearSeries.sum (changeOrigin p x) y = FormalMultilinearSeries.sum p (x + y)
[PROOFSTEP]
have x_add_y_mem_ball : x + y ∈ EMetric.ball (0 : E) p.radius :=
  by
  refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ h)
  exact_mod_cast nnnorm_add_le x y
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
⊢ x + y ∈ EMetric.ball 0 (radius p)
[PROOFSTEP]
refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ h)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
⊢ ↑‖x + y‖₊ ≤ ↑‖x‖₊ + ↑‖y‖₊
[PROOFSTEP]
exact_mod_cast nnnorm_add_le x y
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
⊢ FormalMultilinearSeries.sum (changeOrigin p x) y = FormalMultilinearSeries.sum p (x + y)
[PROOFSTEP]
set f : (Σ k l : ℕ, { s : Finset (Fin (k + l)) // s.card = l }) → F := fun s =>
  p.changeOriginSeriesTerm s.1 s.2.1 s.2.2 s.2.2.2 (fun _ => x) fun _ => y
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
⊢ FormalMultilinearSeries.sum (changeOrigin p x) y = FormalMultilinearSeries.sum p (x + y)
[PROOFSTEP]
have hsf : Summable f :=
  by
  refine' summable_of_nnnorm_bounded _ (p.changeOriginSeries_summable_aux₁ h) _
  rintro ⟨k, l, s, hs⟩
  dsimp only [Subtype.coe_mk]
  exact p.nnnorm_changeOriginSeriesTerm_apply_le _ _ _ _ _ _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
⊢ Summable f
[PROOFSTEP]
refine' summable_of_nnnorm_bounded _ (p.changeOriginSeries_summable_aux₁ h) _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
⊢ ∀ (i : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l }),
    ‖f i‖₊ ≤ ‖p (i.fst + i.snd.fst)‖₊ * ‖x‖₊ ^ i.snd.fst * ‖y‖₊ ^ i.fst
[PROOFSTEP]
rintro ⟨k, l, s, hs⟩
[GOAL]
case mk.mk.mk
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
⊢ ‖f { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }‖₊ ≤
    ‖p
            ({ fst := k, snd := { fst := l, snd := { val := s, property := hs } } }.fst +
              { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }.snd.fst)‖₊ *
        ‖x‖₊ ^ { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }.snd.fst *
      ‖y‖₊ ^ { fst := k, snd := { fst := l, snd := { val := s, property := hs } } }.fst
[PROOFSTEP]
dsimp only [Subtype.coe_mk]
[GOAL]
case mk.mk.mk
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
k l : ℕ
s : Finset (Fin (k + l))
hs : Finset.card s = l
⊢ ‖↑(↑(changeOriginSeriesTerm p k l s hs) fun x_1 => x) fun x => y‖₊ ≤ ‖p (k + l)‖₊ * ‖x‖₊ ^ l * ‖y‖₊ ^ k
[PROOFSTEP]
exact p.nnnorm_changeOriginSeriesTerm_apply_le _ _ _ _ _ _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
⊢ FormalMultilinearSeries.sum (changeOrigin p x) y = FormalMultilinearSeries.sum p (x + y)
[PROOFSTEP]
have hf : HasSum f ((p.changeOrigin x).sum y) :=
  by
  refine' HasSum.sigma_of_hasSum ((p.changeOrigin x).summable y_mem_ball).hasSum (fun k => _) hsf
  · dsimp only
    refine' ContinuousMultilinearMap.hasSum_eval _ _
    have := (p.hasFPowerSeriesOnBall_changeOrigin k radius_pos).hasSum x_mem_ball
    rw [zero_add] at this 
    refine' HasSum.sigma_of_hasSum this (fun l => _) _
    · simp only [changeOriginSeries, ContinuousMultilinearMap.sum_apply]
      apply hasSum_fintype
    · refine'
        summable_of_nnnorm_bounded _ (p.changeOriginSeries_summable_aux₂ (mem_emetric_ball_zero_iff.1 x_mem_ball) k)
          fun s => _
      refine' (ContinuousMultilinearMap.le_op_nnnorm _ _).trans_eq _
      simp
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
⊢ HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
[PROOFSTEP]
refine' HasSum.sigma_of_hasSum ((p.changeOrigin x).summable y_mem_ball).hasSum (fun k => _) hsf
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
⊢ HasSum (fun c => f { fst := k, snd := c }) (↑(changeOrigin p x k) fun x => y)
[PROOFSTEP]
dsimp only
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
⊢ HasSum
    (fun c => ↑(↑(changeOriginSeriesTerm p k c.fst ↑c.snd (_ : Finset.card ↑c.snd = c.fst)) fun x_1 => x) fun x => y)
    (↑(changeOrigin p x k) fun x => y)
[PROOFSTEP]
refine' ContinuousMultilinearMap.hasSum_eval _ _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
⊢ HasSum (fun c => ↑(changeOriginSeriesTerm p k c.fst ↑c.snd (_ : Finset.card ↑c.snd = c.fst)) fun x_1 => x)
    (changeOrigin p x k)
[PROOFSTEP]
have := (p.hasFPowerSeriesOnBall_changeOrigin k radius_pos).hasSum x_mem_ball
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => ↑(changeOriginSeries p k n) fun x_1 => x) (changeOrigin p (0 + x) k)
⊢ HasSum (fun c => ↑(changeOriginSeriesTerm p k c.fst ↑c.snd (_ : Finset.card ↑c.snd = c.fst)) fun x_1 => x)
    (changeOrigin p x k)
[PROOFSTEP]
rw [zero_add] at this 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => ↑(changeOriginSeries p k n) fun x_1 => x) (changeOrigin p x k)
⊢ HasSum (fun c => ↑(changeOriginSeriesTerm p k c.fst ↑c.snd (_ : Finset.card ↑c.snd = c.fst)) fun x_1 => x)
    (changeOrigin p x k)
[PROOFSTEP]
refine' HasSum.sigma_of_hasSum this (fun l => _) _
[GOAL]
case refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => ↑(changeOriginSeries p k n) fun x_1 => x) (changeOrigin p x k)
l : ℕ
⊢ HasSum
    (fun c =>
      ↑(changeOriginSeriesTerm p k { fst := l, snd := c }.fst ↑{ fst := l, snd := c }.snd
            (_ : Finset.card ↑{ fst := l, snd := c }.snd = { fst := l, snd := c }.fst))
        fun x_1 => x)
    (↑(changeOriginSeries p k l) fun x_1 => x)
[PROOFSTEP]
simp only [changeOriginSeries, ContinuousMultilinearMap.sum_apply]
[GOAL]
case refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => ↑(changeOriginSeries p k n) fun x_1 => x) (changeOrigin p x k)
l : ℕ
⊢ HasSum
    (fun c =>
      ↑(changeOriginSeriesTerm p k { fst := l, snd := c }.fst ↑c
            (_ : Finset.card ↑{ fst := l, snd := c }.snd = { fst := l, snd := c }.fst))
        fun x_1 => x)
    (∑ x_1 : { s // Finset.card s = l }, ↑(changeOriginSeriesTerm p k l ↑x_1 (_ : Finset.card ↑x_1 = l)) fun x_2 => x)
[PROOFSTEP]
apply hasSum_fintype
[GOAL]
case refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => ↑(changeOriginSeries p k n) fun x_1 => x) (changeOrigin p x k)
⊢ Summable fun c => ↑(changeOriginSeriesTerm p k c.fst ↑c.snd (_ : Finset.card ↑c.snd = c.fst)) fun x_1 => x
[PROOFSTEP]
refine'
  summable_of_nnnorm_bounded _ (p.changeOriginSeries_summable_aux₂ (mem_emetric_ball_zero_iff.1 x_mem_ball) k) fun s =>
    _
[GOAL]
case refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => ↑(changeOriginSeries p k n) fun x_1 => x) (changeOrigin p x k)
s : (b : ℕ) × { s // Finset.card s = b }
⊢ ‖↑(changeOriginSeriesTerm p k s.fst ↑s.snd (_ : Finset.card ↑s.snd = s.fst)) fun x_1 => x‖₊ ≤
    ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst
[PROOFSTEP]
refine' (ContinuousMultilinearMap.le_op_nnnorm _ _).trans_eq _
[GOAL]
case refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => ↑(changeOriginSeries p k n) fun x_1 => x) (changeOrigin p x k)
s : (b : ℕ) × { s // Finset.card s = b }
⊢ ‖changeOriginSeriesTerm p k s.fst ↑s.snd (_ : Finset.card ↑s.snd = s.fst)‖₊ * ∏ i : Fin s.fst, ‖x‖₊ =
    ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
⊢ FormalMultilinearSeries.sum (changeOrigin p x) y = FormalMultilinearSeries.sum p (x + y)
[PROOFSTEP]
refine' hf.unique (changeOriginIndexEquiv.symm.hasSum_iff.1 _)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
⊢ HasSum (f ∘ ↑changeOriginIndexEquiv.symm) (FormalMultilinearSeries.sum p (x + y))
[PROOFSTEP]
refine' HasSum.sigma_of_hasSum (p.hasSum x_add_y_mem_ball) (fun n => _) (changeOriginIndexEquiv.symm.summable_iff.2 hsf)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
n : ℕ
⊢ HasSum (fun c => (f ∘ ↑changeOriginIndexEquiv.symm) { fst := n, snd := c }) (↑(p n) fun x_1 => x + y)
[PROOFSTEP]
erw [(p n).map_add_univ (fun _ => x) fun _ => y]
  -- porting note: added explicit function
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
n : ℕ
⊢ HasSum (fun c => (f ∘ ↑changeOriginIndexEquiv.symm) { fst := n, snd := c })
    (∑ s : Finset (Fin n), ↑(p n) (Finset.piecewise s (fun x_1 => x) fun x => y))
[PROOFSTEP]
convert hasSum_fintype (fun c : Finset (Fin n) => f (changeOriginIndexEquiv.symm ⟨n, c⟩))
[GOAL]
case h.e'_6.a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
n : ℕ
x✝ : Finset (Fin n)
a✝ : x✝ ∈ Finset.univ
⊢ ↑(p n) (Finset.piecewise x✝ (fun x_1 => x) fun x => y) = f (↑changeOriginIndexEquiv.symm { fst := n, snd := x✝ })
[PROOFSTEP]
rename_i s _
[GOAL]
case h.e'_6.a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
n : ℕ
s : Finset (Fin n)
a✝ : s ∈ Finset.univ
⊢ ↑(p n) (Finset.piecewise s (fun x_1 => x) fun x => y) = f (↑changeOriginIndexEquiv.symm { fst := n, snd := s })
[PROOFSTEP]
dsimp only [changeOriginSeriesTerm, (· ∘ ·), changeOriginIndexEquiv_symm_apply_fst,
  changeOriginIndexEquiv_symm_apply_snd_fst, changeOriginIndexEquiv_symm_apply_snd_snd_coe]
[GOAL]
case h.e'_6.a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
n : ℕ
s : Finset (Fin n)
a✝ : s ∈ Finset.univ
⊢ ↑(p n) (Finset.piecewise s (fun x_1 => x) fun x => y) =
    ↑(↑(↑(ContinuousMultilinearMap.curryFinFinset 𝕜 E F
                  (_ : Finset.card ↑(↑changeOriginIndexEquiv.symm { fst := n, snd := s }).snd.snd = Finset.card s)
                  (_ :
                    Finset.card
                        (Finset.map
                            (Equiv.toEmbedding
                              (Fin.castIso
                                  (_ :
                                    { fst := n, snd := s }.fst =
                                      { fst := n, snd := s }.fst - Finset.card { fst := n, snd := s }.snd +
                                        Finset.card { fst := n, snd := s }.snd)).toEquiv)
                            s)ᶜ =
                      n - Finset.card s))
              (p (n - Finset.card s + Finset.card s)))
          fun x_1 => x)
      fun x => y
[PROOFSTEP]
rw [ContinuousMultilinearMap.curryFinFinset_apply_const]
[GOAL]
case h.e'_6.a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
n : ℕ
s : Finset (Fin n)
a✝ : s ∈ Finset.univ
⊢ ↑(p n) (Finset.piecewise s (fun x_1 => x) fun x => y) =
    ↑(p (n - Finset.card s + Finset.card s))
      (Finset.piecewise
        (Finset.map
          (Equiv.toEmbedding
            (Fin.castIso
                (_ :
                  { fst := n, snd := s }.fst =
                    { fst := n, snd := s }.fst - Finset.card { fst := n, snd := s }.snd +
                      Finset.card { fst := n, snd := s }.snd)).toEquiv)
          s)
        (fun x_1 => x) fun x => y)
[PROOFSTEP]
have :
  ∀ (m) (hm : n = m),
    p n (s.piecewise (fun _ => x) fun _ => y) =
      p m ((s.map (Fin.castIso hm).toEquiv.toEmbedding).piecewise (fun _ => x) fun _ => y) :=
  by
  rintro m rfl
  simp [Finset.piecewise]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
n : ℕ
s : Finset (Fin n)
a✝ : s ∈ Finset.univ
⊢ ∀ (m : ℕ) (hm : n = m),
    ↑(p n) (Finset.piecewise s (fun x_1 => x) fun x => y) =
      ↑(p m) (Finset.piecewise (Finset.map (Equiv.toEmbedding (Fin.castIso hm).toEquiv) s) (fun x_1 => x) fun x => y)
[PROOFSTEP]
rintro m rfl
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
n : ℕ
s : Finset (Fin n)
a✝ : s ∈ Finset.univ
⊢ ↑(p n) (Finset.piecewise s (fun x_1 => x) fun x => y) =
    ↑(p n)
      (Finset.piecewise (Finset.map (Equiv.toEmbedding (Fin.castIso (_ : n = n)).toEquiv) s) (fun x_1 => x) fun x => y)
[PROOFSTEP]
simp [Finset.piecewise]
[GOAL]
case h.e'_6.a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
h : ↑‖x‖₊ + ↑‖y‖₊ < radius p
radius_pos : 0 < radius p
x_mem_ball : x ∈ EMetric.ball 0 (radius p)
y_mem_ball : y ∈ EMetric.ball 0 (radius (changeOrigin p x))
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 (radius p)
f : (k : ℕ) × (l : ℕ) × { s // Finset.card s = l } → F :=
  fun s =>
    ↑(↑(changeOriginSeriesTerm p s.fst s.snd.fst ↑s.snd.snd (_ : Finset.card ↑s.snd.snd = s.snd.fst)) fun x_1 => x)
      fun x => y
hsf : Summable f
hf : HasSum f (FormalMultilinearSeries.sum (changeOrigin p x) y)
n : ℕ
s : Finset (Fin n)
a✝ : s ∈ Finset.univ
this :
  ∀ (m : ℕ) (hm : n = m),
    ↑(p n) (Finset.piecewise s (fun x_1 => x) fun x => y) =
      ↑(p m) (Finset.piecewise (Finset.map (Equiv.toEmbedding (Fin.castIso hm).toEquiv) s) (fun x_1 => x) fun x => y)
⊢ ↑(p n) (Finset.piecewise s (fun x_1 => x) fun x => y) =
    ↑(p (n - Finset.card s + Finset.card s))
      (Finset.piecewise
        (Finset.map
          (Equiv.toEmbedding
            (Fin.castIso
                (_ :
                  { fst := n, snd := s }.fst =
                    { fst := n, snd := s }.fst - Finset.card { fst := n, snd := s }.snd +
                      Finset.card { fst := n, snd := s }.snd)).toEquiv)
          s)
        (fun x_1 => x) fun x => y)
[PROOFSTEP]
apply this
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
⊢ r - ↑‖y‖₊ ≤ FormalMultilinearSeries.radius (FormalMultilinearSeries.changeOrigin p y)
[PROOFSTEP]
apply le_trans _ p.changeOrigin_radius
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
⊢ r - ↑‖y‖₊ ≤ FormalMultilinearSeries.radius p - ↑‖y‖₊
[PROOFSTEP]
exact tsub_le_tsub hf.r_le le_rfl
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
⊢ 0 < r - ↑‖y‖₊
[PROOFSTEP]
simp [h]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
z : E
hz : z ∈ EMetric.ball 0 (r - ↑‖y‖₊)
⊢ HasSum (fun n => ↑(FormalMultilinearSeries.changeOrigin p y n) fun x => z) (f (x + y + z))
[PROOFSTEP]
have : f (x + y + z) = FormalMultilinearSeries.sum (FormalMultilinearSeries.changeOrigin p y) z :=
  by
  rw [mem_emetric_ball_zero_iff, lt_tsub_iff_right, add_comm] at hz 
  rw [p.changeOrigin_eval (hz.trans_le hf.r_le), add_assoc, hf.sum]
  refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ hz)
  exact_mod_cast nnnorm_add_le y z
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
z : E
hz : z ∈ EMetric.ball 0 (r - ↑‖y‖₊)
⊢ f (x + y + z) = FormalMultilinearSeries.sum (FormalMultilinearSeries.changeOrigin p y) z
[PROOFSTEP]
rw [mem_emetric_ball_zero_iff, lt_tsub_iff_right, add_comm] at hz 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
z : E
hz✝ : ↑‖z‖₊ < r - ↑‖y‖₊
hz : ↑‖y‖₊ + ↑‖z‖₊ < r
⊢ f (x + y + z) = FormalMultilinearSeries.sum (FormalMultilinearSeries.changeOrigin p y) z
[PROOFSTEP]
rw [p.changeOrigin_eval (hz.trans_le hf.r_le), add_assoc, hf.sum]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
z : E
hz✝ : ↑‖z‖₊ < r - ↑‖y‖₊
hz : ↑‖y‖₊ + ↑‖z‖₊ < r
⊢ y + z ∈ EMetric.ball 0 r
[PROOFSTEP]
refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ hz)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
z : E
hz✝ : ↑‖z‖₊ < r - ↑‖y‖₊
hz : ↑‖y‖₊ + ↑‖z‖₊ < r
⊢ ↑‖y + z‖₊ ≤ ↑‖y‖₊ + ↑‖z‖₊
[PROOFSTEP]
exact_mod_cast nnnorm_add_le y z
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
z : E
hz : z ∈ EMetric.ball 0 (r - ↑‖y‖₊)
this : f (x + y + z) = FormalMultilinearSeries.sum (FormalMultilinearSeries.changeOrigin p y) z
⊢ HasSum (fun n => ↑(FormalMultilinearSeries.changeOrigin p y n) fun x => z) (f (x + y + z))
[PROOFSTEP]
rw [this]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
z : E
hz : z ∈ EMetric.ball 0 (r - ↑‖y‖₊)
this : f (x + y + z) = FormalMultilinearSeries.sum (FormalMultilinearSeries.changeOrigin p y) z
⊢ HasSum (fun n => ↑(FormalMultilinearSeries.changeOrigin p y n) fun x => z)
    (FormalMultilinearSeries.sum (FormalMultilinearSeries.changeOrigin p y) z)
[PROOFSTEP]
apply (p.changeOrigin y).hasSum
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
z : E
hz : z ∈ EMetric.ball 0 (r - ↑‖y‖₊)
this : f (x + y + z) = FormalMultilinearSeries.sum (FormalMultilinearSeries.changeOrigin p y) z
⊢ z ∈ EMetric.ball 0 (FormalMultilinearSeries.radius (FormalMultilinearSeries.changeOrigin p y))
[PROOFSTEP]
refine' EMetric.ball_subset_ball (le_trans _ p.changeOrigin_radius) hz
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : ↑‖y‖₊ < r
z : E
hz : z ∈ EMetric.ball 0 (r - ↑‖y‖₊)
this : f (x + y + z) = FormalMultilinearSeries.sum (FormalMultilinearSeries.changeOrigin p y) z
⊢ r - ↑‖y‖₊ ≤ FormalMultilinearSeries.radius p - ↑‖y‖₊
[PROOFSTEP]
exact tsub_le_tsub hf.r_le le_rfl
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
⊢ AnalyticAt 𝕜 f y
[PROOFSTEP]
have : (‖y - x‖₊ : ℝ≥0∞) < r := by simpa [edist_eq_coe_nnnorm_sub] using h
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
⊢ ↑‖y - x‖₊ < r
[PROOFSTEP]
simpa [edist_eq_coe_nnnorm_sub] using h
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
this : ↑‖y - x‖₊ < r
⊢ AnalyticAt 𝕜 f y
[PROOFSTEP]
have := hf.changeOrigin this
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
this✝ : ↑‖y - x‖₊ < r
this : HasFPowerSeriesOnBall f (FormalMultilinearSeries.changeOrigin p (y - x)) (x + (y - x)) (r - ↑‖y - x‖₊)
⊢ AnalyticAt 𝕜 f y
[PROOFSTEP]
rw [add_sub_cancel'_right] at this 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
this✝ : ↑‖y - x‖₊ < r
this : HasFPowerSeriesOnBall f (FormalMultilinearSeries.changeOrigin p (y - x)) y (r - ↑‖y - x‖₊)
⊢ AnalyticAt 𝕜 f y
[PROOFSTEP]
exact this.analyticAt
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
⊢ IsOpen {x | AnalyticAt 𝕜 f x}
[PROOFSTEP]
rw [isOpen_iff_mem_nhds]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
⊢ ∀ (a : E), a ∈ {x | AnalyticAt 𝕜 f x} → {x | AnalyticAt 𝕜 f x} ∈ 𝓝 a
[PROOFSTEP]
rintro x ⟨p, r, hr⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p✝ : FormalMultilinearSeries 𝕜 E F
x✝ y : E
r✝ : ℝ≥0∞
x : E
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
hr : HasFPowerSeriesOnBall f p x r
⊢ {x | AnalyticAt 𝕜 f x} ∈ 𝓝 x
[PROOFSTEP]
exact mem_of_superset (EMetric.ball_mem_nhds _ hr.r_pos) fun y hy => hr.analyticAt_of_mem hy
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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))
[PROOFSTEP]
refine' ⟨fun ⟨r, _, r_pos, h⟩ => eventually_of_mem (EMetric.ball_mem_nhds 0 r_pos) fun _ => by simpa using h, _⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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✝))
[PROOFSTEP]
simpa using h
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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₀
[PROOFSTEP]
simp only [Metric.eventually_nhds_iff]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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₀
[PROOFSTEP]
rintro ⟨r, r_pos, h⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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₀
[PROOFSTEP]
refine' ⟨p.radius ⊓ r.toNNReal, by simp, _, _⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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
[PROOFSTEP]
simp
[GOAL]
case intro.intro.refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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)
[PROOFSTEP]
simp only [r_pos.lt, lt_inf_iff, ENNReal.coe_pos, Real.toNNReal_pos, and_true_iff]
[GOAL]
case intro.intro.refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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
[PROOFSTEP]
obtain ⟨z, z_pos, le_z⟩ := NormedField.exists_norm_lt 𝕜 r_pos.lt
[GOAL]
case intro.intro.refine'_1.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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
[PROOFSTEP]
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]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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
[PROOFSTEP]
simp only [dist_zero_right] at h 
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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
[PROOFSTEP]
apply FormalMultilinearSeries.le_radius_of_tendsto
[GOAL]
case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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_3
G : Type u_4
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))
⊢ ℝ
[PROOFSTEP]
convert tendsto_norm.comp (h le_z).summable.tendsto_atTop_zero
[GOAL]
case h.e'_3.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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✝
[PROOFSTEP]
funext
[GOAL]
case h.e'_3.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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✝
[PROOFSTEP]
simp [norm_smul, mul_comm]
[GOAL]
case intro.intro.refine'_1.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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
[PROOFSTEP]
refine' lt_of_lt_of_le _ this
[GOAL]
case intro.intro.refine'_1.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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‖₊
[PROOFSTEP]
simp only [ENNReal.coe_pos]
[GOAL]
case intro.intro.refine'_1.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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‖₊
[PROOFSTEP]
exact zero_lt_iff.mpr (nnnorm_ne_zero_iff.mpr (norm_pos_iff.mp z_pos))
[GOAL]
case intro.intro.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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))
[PROOFSTEP]
simp only [EMetric.mem_ball, lt_inf_iff, edist_lt_coe, apply_eq_pow_smul_coeff, and_imp, dist_zero_right] at h ⊢
[GOAL]
case intro.intro.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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))
[PROOFSTEP]
refine' fun {y} _ hyr => h _
[GOAL]
case intro.intro.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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
[PROOFSTEP]
simpa [nndist_eq_nnnorm, Real.lt_toNNReal_iff_coe_lt] using hyr
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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 𝓝 z₀, HasSum (fun n => (z - z₀) ^ n • coeff p n) (f z)
[PROOFSTEP]
rw [← map_add_left_nhds_zero, eventually_map, hasFPowerSeriesAt_iff]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
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))) ↔
    ∀ᶠ (a : 𝕜) in 𝓝 0,
      HasSum (fun n => ((fun x x_1 => x + x_1) z₀ a - z₀) ^ n • coeff p n) (f ((fun x x_1 => x + x_1) z₀ a))
[PROOFSTEP]
simp_rw [add_sub_cancel']
