-- Mathlib/Analysis/Calculus/ContDiff/Operations.lean
theorem ContDiffWithinAt.sum {ι : Type*} {f : ι → E → F} {s : Finset ι} {t : Set E} {x : E}
    (h : ∀ i ∈ s, ContDiffWithinAt 𝕜 n (fun x => f i x) t x) :
    ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ s, f i x) t x

Proof state:
case insert
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
n : WithTop ℕ∞
ι : Type u_3
f : ι → E → F
t : Set E
x : E
i : ι
s : Finset ι
is : i ∉ s
IH : (∀ i ∈ s, ContDiffWithinAt 𝕜 n (fun x => f i x) t x) → ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ s, f i x) t x
h : ∀ i_1 ∈ insert i s, ContDiffWithinAt 𝕜 n (fun x => f i_1 x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ insert i s, f i x) t x

Tactic:
simp only [is, Finset.sum_insert, not_false_iff]

Result:
case insert
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
n : WithTop ℕ∞
ι : Type u_3
f : ι → E → F
t : Set E
x : E
i : ι
s : Finset ι
is : i ∉ s
IH : (∀ i ∈ s, ContDiffWithinAt 𝕜 n (fun x => f i x) t x) → ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ s, f i x) t x
h : ∀ i_1 ∈ insert i s, ContDiffWithinAt 𝕜 n (fun x => f i_1 x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => f i x + ∑ i ∈ s, f i x) t x

Proof state:
case empty
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
n : WithTop ℕ∞
ι : Type u_3
f : ι → E → F
t : Set E
x : E
h : ∀ i ∈ ∅, ContDiffWithinAt 𝕜 n (fun x => f i x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ ∅, f i x) t x

Tactic:
simp [contDiffWithinAt_const]

Result:
no goals

Proof state:
case insert
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
n : WithTop ℕ∞
ι : Type u_3
f : ι → E → F
t : Set E
x : E
i : ι
s : Finset ι
is : i ∉ s
IH : (∀ i ∈ s, ContDiffWithinAt 𝕜 n (fun x => f i x) t x) → ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ s, f i x) t x
h : ∀ i_1 ∈ insert i s, ContDiffWithinAt 𝕜 n (fun x => f i_1 x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => f i x + ∑ i ∈ s, f i x) t x

Tactic:
exact (h _ (Finset.mem_insert_self i s)).add
  (IH fun j hj => h _ (Finset.mem_insert_of_mem hj))

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
n : WithTop ℕ∞
ι : Type u_3
f : ι → E → F
s : Finset ι
t : Set E
x : E
h : ∀ i ∈ s, ContDiffWithinAt 𝕜 n (fun x => f i x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ s, f i x) t x

Tactic:
induction' s using Finset.induction_on with i s is IH

Result:
case empty
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
n : WithTop ℕ∞
ι : Type u_3
f : ι → E → F
t : Set E
x : E
h : ∀ i ∈ ∅, ContDiffWithinAt 𝕜 n (fun x => f i x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ ∅, f i x) t x

case insert
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
n : WithTop ℕ∞
ι : Type u_3
f : ι → E → F
t : Set E
x : E
i : ι
s : Finset ι
is : i ∉ s
IH : (∀ i ∈ s, ContDiffWithinAt 𝕜 n (fun x => f i x) t x) → ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ s, f i x) t x
h : ∀ i_1 ∈ insert i s, ContDiffWithinAt 𝕜 n (fun x => f i_1 x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i ∈ insert i s, f i x) t x