Theorem: FormalMultilinearSeries.changeOrigin_eval
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: have radius_pos : 0 < p.radius := lt_of_le_of_lt (zero_le _) h
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: 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)
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: 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]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: 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
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: 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
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: 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 _ _ _ _ _ _
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: refine' hf.unique (changeOriginIndexEquiv.symm.hasSum_iff.1 _)
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: refine' HasSum.sigma_of_hasSum
  (p.hasSum x_add_y_mem_ball) (fun n => _) (changeOriginIndexEquiv.symm.summable_iff.2 hsf)
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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))

tactic: erw [(p n).map_add_univ (fun _ => x) fun _ => y]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: convert hasSum_fintype (fun c : Finset (Fin n) => f (changeOriginIndexEquiv.symm ⟨n, c⟩))
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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))

tactic: rename_i s _
state_before: case h.e'_6.a
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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✝ })

tactic: rw [ContinuousMultilinearMap.curryFinFinset_apply_const]
state_before: case h.e'_6.a
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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.cast
                                  (_ :
                                    { 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

tactic: have : ∀ (m) (hm : n = m), p n (s.piecewise (fun _ => x) fun _ => y) =
    p m ((s.map (Fin.cast hm).toEquiv.toEmbedding).piecewise (fun _ => x) fun _ => y) := by
  rintro m rfl
  simp [Finset.piecewise]
state_before: case h.e'_6.a
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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.cast
                (_ :
                  { 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)

tactic: apply this
state_before: case h.e'_6.a
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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.cast 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.cast
                (_ :
                  { 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)

tactic: refine' mem_emetric_ball_zero_iff.2 (lt_of_lt_of_le _ p.changeOrigin_radius)
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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))

tactic: rwa [lt_tsub_iff_right, add_comm]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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‖₊

tactic: refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ h)
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: exact_mod_cast nnnorm_add_le x y
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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‖₊

tactic: refine' summable_of_nnnorm_bounded _ (p.changeOriginSeries_summable_aux₁ h) _
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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

tactic: rintro ⟨k, l, s, hs⟩
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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

tactic: dsimp only [Subtype.coe_mk]
state_before: case mk.mk.mk
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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

tactic: exact p.nnnorm_changeOriginSeriesTerm_apply_le _ _ _ _ _ _
state_before: case mk.mk.mk
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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

tactic: refine' HasSum.sigma_of_hasSum ((p.changeOrigin x).summable y_mem_ball).hasSum (fun k => _) hsf
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: dsimp only
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: refine' ContinuousMultilinearMap.hasSum_eval _ _
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: have := (p.hasFPowerSeriesOnBall_changeOrigin k radius_pos).hasSum x_mem_ball
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: rw [zero_add] at this
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: refine' HasSum.sigma_of_hasSum this (fun l => _) _
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: simp only [changeOriginSeries, ContinuousMultilinearMap.sum_apply]
state_before: case refine'_1
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: apply hasSum_fintype
state_before: case refine'_1
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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)

tactic: refine' summable_of_nnnorm_bounded _
  (p.changeOriginSeries_summable_aux₂ (mem_emetric_ball_zero_iff.1 x_mem_ball) k) fun s => _
state_before: case refine'_2
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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

tactic: refine' (ContinuousMultilinearMap.le_op_nnnorm _ _).trans_eq _
state_before: case refine'_2
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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

tactic: simp
state_before: case refine'_2
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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

tactic: rintro m rfl
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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.cast hm).toEquiv) s) (fun x_1 => x) fun x => y)

tactic: simp [Finset.piecewise]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type ?u.2255633
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.cast (_ : n = n)).toEquiv) s) (fun x_1 => x) fun x => y)