-- Mathlib/Analysis/Analytic/ChangeOrigin.lean
theorem changeOrigin_eval (h : (‖x‖₊ + ‖y‖₊ : ℝ≥0∞) < p.radius) :
    (p.changeOrigin x).sum y = p.sum (x + y)

Proof state:
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
radius_pos : 0 < p.radius
x_mem_ball : x ∈ EMetric.ball 0 p.radius
y_mem_ball : y ∈ EMetric.ball 0 (p.changeOrigin x).radius
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 p.radius
f : (k : ℕ) × (l : ℕ) × { s // s.card = l } → F :=
  fun s => ((p.changeOriginSeriesTerm s.fst s.snd.fst ↑s.snd.snd ⋯) fun x_1 => x) fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => (p.changeOriginSeries k n) fun x_1 => x) (p.changeOrigin (0 + x) k)
⊢ HasSum (fun c => (p.changeOriginSeriesTerm k c.fst ↑c.snd ⋯) fun x_1 => x) (p.changeOrigin x k)

Tactic:
rw [zero_add] at this

Result:
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
radius_pos : 0 < p.radius
x_mem_ball : x ∈ EMetric.ball 0 p.radius
y_mem_ball : y ∈ EMetric.ball 0 (p.changeOrigin x).radius
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 p.radius
f : (k : ℕ) × (l : ℕ) × { s // s.card = l } → F :=
  fun s => ((p.changeOriginSeriesTerm s.fst s.snd.fst ↑s.snd.snd ⋯) fun x_1 => x) fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => (p.changeOriginSeries k n) fun x_1 => x) (p.changeOrigin x k)
⊢ HasSum (fun c => (p.changeOriginSeriesTerm k c.fst ↑c.snd ⋯) fun x_1 => x) (p.changeOrigin x k)

Proof state:
case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
radius_pos : 0 < p.radius
x_mem_ball : x ∈ EMetric.ball 0 p.radius
y_mem_ball : y ∈ EMetric.ball 0 (p.changeOrigin x).radius
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 p.radius
f : (k : ℕ) × (l : ℕ) × { s // s.card = l } → F :=
  fun s => ((p.changeOriginSeriesTerm s.fst s.snd.fst ↑s.snd.snd ⋯) fun x_1 => x) fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => (p.changeOriginSeries k n) fun x_1 => x) (p.changeOrigin x k)
s : (b : ℕ) × { s // s.card = b }
⊢ ‖(p.changeOriginSeriesTerm k s.fst ↑s.snd ⋯) fun x_1 => x‖₊ ≤ ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst

Tactic:
refine (ContinuousMultilinearMap.le_opNNNorm _ _).trans_eq ?_

Result:
case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
radius_pos : 0 < p.radius
x_mem_ball : x ∈ EMetric.ball 0 p.radius
y_mem_ball : y ∈ EMetric.ball 0 (p.changeOrigin x).radius
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 p.radius
f : (k : ℕ) × (l : ℕ) × { s // s.card = l } → F :=
  fun s => ((p.changeOriginSeriesTerm s.fst s.snd.fst ↑s.snd.snd ⋯) fun x_1 => x) fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => (p.changeOriginSeries k n) fun x_1 => x) (p.changeOrigin x k)
s : (b : ℕ) × { s // s.card = b }
⊢ ‖p.changeOriginSeriesTerm k s.fst ↑s.snd ⋯‖₊ * ∏ i : Fin s.fst, ‖x‖₊ = ‖p (k + s.fst)‖₊ * ‖x‖₊ ^ s.fst

Proof state:
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
radius_pos : 0 < p.radius
x_mem_ball : x ∈ EMetric.ball 0 p.radius
y_mem_ball : y ∈ EMetric.ball 0 (p.changeOrigin x).radius
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 p.radius
f : (k : ℕ) × (l : ℕ) × { s // s.card = l } → F :=
  fun s => ((p.changeOriginSeriesTerm s.fst s.snd.fst ↑s.snd.snd ⋯) fun x_1 => x) fun x => y
hsf : Summable f
k : ℕ
⊢ HasSum (fun c => (p.changeOriginSeriesTerm k c.fst ↑c.snd ⋯) fun x_1 => x) (p.changeOrigin x k)

Tactic:
have := (p.hasFPowerSeriesOnBall_changeOrigin k radius_pos).hasSum x_mem_ball

Result:
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
radius_pos : 0 < p.radius
x_mem_ball : x ∈ EMetric.ball 0 p.radius
y_mem_ball : y ∈ EMetric.ball 0 (p.changeOrigin x).radius
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 p.radius
f : (k : ℕ) × (l : ℕ) × { s // s.card = l } → F :=
  fun s => ((p.changeOriginSeriesTerm s.fst s.snd.fst ↑s.snd.snd ⋯) fun x_1 => x) fun x => y
hsf : Summable f
k : ℕ
this : HasSum (fun n => (p.changeOriginSeries k n) fun x_1 => x) (p.changeOrigin (0 + x) k)
⊢ HasSum (fun c => (p.changeOriginSeriesTerm k c.fst ↑c.snd ⋯) fun x_1 => x) (p.changeOrigin x k)

Proof state:
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
radius_pos : 0 < p.radius
x_mem_ball : x ∈ EMetric.ball 0 p.radius
y_mem_ball : y ∈ EMetric.ball 0 (p.changeOrigin x).radius
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 p.radius
f : (k : ℕ) × (l : ℕ) × { s // s.card = l } → F :=
  fun s => ((p.changeOriginSeriesTerm s.fst s.snd.fst ↑s.snd.snd ⋯) fun x_1 => x) fun x => y
hsf : Summable f
k : ℕ
⊢ HasSum (fun c => ((p.changeOriginSeriesTerm k c.fst ↑c.snd ⋯) fun x_1 => x) fun x => y)
    ((p.changeOrigin x k) fun x => y)

Tactic:
refine ContinuousMultilinearMap.hasSum_eval ?_ _

Result:
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
radius_pos : 0 < p.radius
x_mem_ball : x ∈ EMetric.ball 0 p.radius
y_mem_ball : y ∈ EMetric.ball 0 (p.changeOrigin x).radius
x_add_y_mem_ball : x + y ∈ EMetric.ball 0 p.radius
f : (k : ℕ) × (l : ℕ) × { s // s.card = l } → F :=
  fun s => ((p.changeOriginSeriesTerm s.fst s.snd.fst ↑s.snd.snd ⋯) fun x_1 => x) fun x => y
hsf : Summable f
k : ℕ
⊢ HasSum (fun c => (p.changeOriginSeriesTerm k c.fst ↑c.snd ⋯) fun x_1 => x) (p.changeOrigin x k)

Proof state:
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
⊢ (p.changeOrigin x).sum y = p.sum (x + y)

Tactic:
have radius_pos : 0 < p.radius := lt_of_le_of_lt (zero_le _) h

Result:
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
p : FormalMultilinearSeries 𝕜 E F
x y : E
h : ↑‖x‖₊ + ↑‖y‖₊ < p.radius
radius_pos : 0 < p.radius
⊢ (p.changeOrigin x).sum y = p.sum (x + y)