-- Mathlib/Analysis/Analytic/Inverse.lean
lemma HasFPowerSeriesAt.tendsto_partialSum_prod_of_comp
    {f : E → G} {q : FormalMultilinearSeries 𝕜 F G}
    {p : FormalMultilinearSeries 𝕜 E F} {x : E}
    (hf : HasFPowerSeriesAt f (q.comp p) x) (hq : 0 < q.radius) (hp : 0 < p.radius) :
    ∀ᶠ y in 𝓝 0, Tendsto (fun (a : ℕ × ℕ) ↦ q.partialSum a.1 (p.partialSum a.2 y
      - p 0 (fun _ ↦ 0))) atTop (𝓝 (f (x + y)))

Proof state:
case h.mk.intro.e_x
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : E → G
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
x : E
hq : 0 < q.radius
hp : 0 < p.radius
r0 : ℝ≥0∞
h0 : HasFPowerSeriesOnBall f (q.comp p) x r0
r1 : NNReal
r1_pos : 0 < r1
hr1 : Summable fun i => ‖q.compAlongComposition p i.snd‖₊ * r1 ^ i.fst
r : ℝ≥0∞ := r0 ⊓ ↑r1
this : EMetric.ball 0 r ∈ 𝓝 0
y : E
hy : y ∈ EMetric.ball 0 r
hy0 : y ∈ EMetric.ball 0 r0
A : HasSum (fun i => (q.compAlongComposition p i.snd) fun _j => y) (f (x + y))
B :
  Tendsto (fun n => ∑ i ∈ compPartialSumTarget 0 n.1 n.2, (q.compAlongComposition p i.snd) fun _j => y) atTop
    (𝓝 (f (x + y)))
C : Tendsto (fun n => q.partialSum n.1 (∑ a ∈ Ico 1 n.2, (p a) fun _b => y)) atTop (𝓝 (f (x + y)))
fst✝ n : ℕ
hn : 1 ≤ n
⊢ (((p 0) fun x => 0) + ∑ a ∈ Ico 1 (fst✝, n).2, (p a) fun _b => y) =
    ((p 0) fun x => y) + ∑ k ∈ Ico (0 + 1) n, (p k) fun x => y

Tactic:
congr with i

Result:
case h.mk.intro.e_x.e_a.h.e_6.h.h
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : E → G
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
x : E
hq : 0 < q.radius
hp : 0 < p.radius
r0 : ℝ≥0∞
h0 : HasFPowerSeriesOnBall f (q.comp p) x r0
r1 : NNReal
r1_pos : 0 < r1
hr1 : Summable fun i => ‖q.compAlongComposition p i.snd‖₊ * r1 ^ i.fst
r : ℝ≥0∞ := r0 ⊓ ↑r1
this : EMetric.ball 0 r ∈ 𝓝 0
y : E
hy : y ∈ EMetric.ball 0 r
hy0 : y ∈ EMetric.ball 0 r0
A : HasSum (fun i => (q.compAlongComposition p i.snd) fun _j => y) (f (x + y))
B :
  Tendsto (fun n => ∑ i ∈ compPartialSumTarget 0 n.1 n.2, (q.compAlongComposition p i.snd) fun _j => y) atTop
    (𝓝 (f (x + y)))
C : Tendsto (fun n => q.partialSum n.1 (∑ a ∈ Ico 1 n.2, (p a) fun _b => y)) atTop (𝓝 (f (x + y)))
fst✝ n : ℕ
hn : 1 ≤ n
i : Fin 0
⊢ 0 = y

Proof state:
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : E → G
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
x : E
hq : 0 < q.radius
hp : 0 < p.radius
r0 : ℝ≥0∞
h0 : HasFPowerSeriesOnBall f (q.comp p) x r0
r1 : NNReal
r1_pos : 0 < r1
hr1 : Summable fun i => ‖q.compAlongComposition p i.snd‖₊ * r1 ^ i.fst
r : ℝ≥0∞ := r0 ⊓ ↑r1
this : EMetric.ball 0 r ∈ 𝓝 0
y : E
hy : y ∈ EMetric.ball 0 r
hy0 : y ∈ EMetric.ball 0 r0
cau : CauchySeq fun s => ∑ i ∈ s, (q.compAlongComposition p i.snd) fun _j => y
⊢ HasSum (fun i => (q.compAlongComposition p i.snd) fun _j => y) (f (x + y))

Tactic:
apply HasSum.of_sigma (fun b ↦ hasSum_fintype _) ?_ cau

Result:
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : E → G
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
x : E
hq : 0 < q.radius
hp : 0 < p.radius
r0 : ℝ≥0∞
h0 : HasFPowerSeriesOnBall f (q.comp p) x r0
r1 : NNReal
r1_pos : 0 < r1
hr1 : Summable fun i => ‖q.compAlongComposition p i.snd‖₊ * r1 ^ i.fst
r : ℝ≥0∞ := r0 ⊓ ↑r1
this : EMetric.ball 0 r ∈ 𝓝 0
y : E
hy : y ∈ EMetric.ball 0 r
hy0 : y ∈ EMetric.ball 0 r0
cau : CauchySeq fun s => ∑ i ∈ s, (q.compAlongComposition p i.snd) fun _j => y
⊢ HasSum (fun b => ∑ b_1 : Composition b, (q.compAlongComposition p ⟨b, b_1⟩.snd) fun _j => y) (f (x + y))

Proof state:
case h
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : E → G
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
x : E
hq : 0 < q.radius
hp : 0 < p.radius
r0 : ℝ≥0∞
h0 : HasFPowerSeriesOnBall f (q.comp p) x r0
r1 : NNReal
r1_pos : 0 < r1
hr1 : Summable fun i => ‖q.compAlongComposition p i.snd‖₊ * r1 ^ i.fst
r : ℝ≥0∞ := r0 ⊓ ↑r1
this : EMetric.ball 0 r ∈ 𝓝 0
y : E
hy : y ∈ EMetric.ball 0 r
hy0 : y ∈ EMetric.ball 0 r0
A : HasSum (fun i => (q.compAlongComposition p i.snd) fun _j => y) (f (x + y))
⊢ Tendsto (fun a => q.partialSum a.1 (p.partialSum a.2 y - (p 0) fun x => 0)) atTop (𝓝 (f (x + y)))

Tactic:
have B : Tendsto (fun (n : ℕ × ℕ) => ∑ i ∈ compPartialSumTarget 0 n.1 n.2,
    q.compAlongComposition p i.2 fun _j => y) atTop (𝓝 (f (x + y))) := by
  apply Tendsto.comp A compPartialSumTarget_tendsto_prod_atTop

Result:
case h
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : E → G
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
x : E
hq : 0 < q.radius
hp : 0 < p.radius
r0 : ℝ≥0∞
h0 : HasFPowerSeriesOnBall f (q.comp p) x r0
r1 : NNReal
r1_pos : 0 < r1
hr1 : Summable fun i => ‖q.compAlongComposition p i.snd‖₊ * r1 ^ i.fst
r : ℝ≥0∞ := r0 ⊓ ↑r1
this : EMetric.ball 0 r ∈ 𝓝 0
y : E
hy : y ∈ EMetric.ball 0 r
hy0 : y ∈ EMetric.ball 0 r0
A : HasSum (fun i => (q.compAlongComposition p i.snd) fun _j => y) (f (x + y))
B :
  Tendsto (fun n => ∑ i ∈ compPartialSumTarget 0 n.1 n.2, (q.compAlongComposition p i.snd) fun _j => y) atTop
    (𝓝 (f (x + y)))
⊢ Tendsto (fun a => q.partialSum a.1 (p.partialSum a.2 y - (p 0) fun x => 0)) atTop (𝓝 (f (x + y)))