Theorem: ContinuousLinearMap.norm_iteratedFDerivWithin_le_of_bilinear_aux
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: induction' n with n IH generalizing Eu Fu Gu
state_before: 𝕜 : Type u_1
inst✝¹⁸ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁷ : NormedAddCommGroup D
inst✝¹⁶ : NormedSpace 𝕜 D
E : Type uE
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace 𝕜 E
F : Type uF
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type uG
inst✝¹¹ : NormedAddCommGroup G
inst✝¹⁰ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝⁹ : NormedAddCommGroup X
inst✝⁸ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu Fu Gu : Type u
inst✝⁷ : NormedAddCommGroup Du
inst✝⁶ : NormedSpace 𝕜 Du
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
n : ℕ
s : Set Du
x : Du
hf : ContDiffOn 𝕜 (↑n) f s
hg : ContDiffOn 𝕜 (↑n) g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖

tactic: simp only [Nat.zero_eq, norm_iteratedFDerivWithin_zero, zero_add, Finset.range_one,
  Finset.sum_singleton, Nat.choose_self, Nat.cast_one, one_mul, Nat.sub_zero, ← mul_assoc]
state_before: case zero
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑Nat.zero) f s
hg : ContDiffOn 𝕜 (↑Nat.zero) g s
⊢ ‖iteratedFDerivWithin 𝕜 Nat.zero (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.zero + 1),
        ↑(Nat.choose Nat.zero i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (Nat.zero - i) g s x‖

tactic: apply B.le_op_norm₂
state_before: case zero
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑Nat.zero) f s
hg : ContDiffOn 𝕜 (↑Nat.zero) g s
⊢ ‖↑(↑B (f x)) (g x)‖ ≤ ‖B‖ * ‖f x‖ * ‖g x‖

tactic: have In : (n : ℕ∞) + 1 ≤ n.succ := by simp only [Nat.cast_succ, le_refl]
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: let norm := @ContinuousLinearMap.hasOpNorm _ _ Eu ((Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) _ _ _ _ _ _
  (RingHom.id 𝕜)
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: have I1 :
    ‖iteratedFDerivWithin 𝕜 n (fun y : Du => B.precompR Du (f y) (fderivWithin 𝕜 g s y)) s x‖ ≤
      ‖B‖ * ∑ i : ℕ in Finset.range (n + 1), n.choose i * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
        ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖ := by
  calc
    ‖iteratedFDerivWithin 𝕜 n (fun y : Du => B.precompR Du (f y) (fderivWithin 𝕜 g s y)) s x‖ ≤
        ‖B.precompR Du‖ * ∑ i : ℕ in Finset.range (n + 1),
          n.choose i * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
            ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 g s) s x‖ :=
      IH _ (hf.of_le (Nat.cast_le.2 (Nat.le_succ n))) (hg.fderivWithin hs In)
    _ ≤ ‖B‖ * ∑ i : ℕ in Finset.range (n + 1), n.choose i * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 g s) s x‖ :=
      (mul_le_mul_of_nonneg_right (B.norm_precompR_le Du)
        (Finset.sum_nonneg' fun i => by positivity))
    _ = _ := by
      congr 1
      apply Finset.sum_congr rfl fun i hi => ?_
      rw [Nat.succ_sub (Nat.lt_succ_iff.1 (Finset.mem_range.1 hi)),
        ← norm_iteratedFDerivWithin_fderivWithin hs hx]
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: let norm := @ContinuousLinearMap.hasOpNorm _ _ (Du →L[𝕜] Eu) (Fu →L[𝕜] Du →L[𝕜] Gu) _ _ _ _ _ _
  (RingHom.id 𝕜)
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: have I2 :
    ‖iteratedFDerivWithin 𝕜 n (fun y : Du => B.precompL Du (fderivWithin 𝕜 f s y) (g y)) s x‖ ≤
    ‖B‖ * ∑ i : ℕ in Finset.range (n + 1), n.choose i * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ *
      ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖ :=
  calc
    ‖iteratedFDerivWithin 𝕜 n (fun y : Du => B.precompL Du (fderivWithin 𝕜 f s y) (g y)) s x‖ ≤
        ‖B.precompL Du‖ * ∑ i : ℕ in Finset.range (n + 1),
          n.choose i * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 f s) s x‖ *
            ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖ :=
      IH _ (hf.fderivWithin hs In) (hg.of_le (Nat.cast_le.2 (Nat.le_succ n)))
    _ ≤ ‖B‖ * ∑ i : ℕ in Finset.range (n + 1),
        n.choose i * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 f s) s x‖ *
          ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖ :=
      (mul_le_mul_of_nonneg_right (B.norm_precompL_le Du)
        (Finset.sum_nonneg' fun i => by positivity))
    _ = _ := by
      congr 1
      apply Finset.sum_congr rfl fun i _ => ?_
      rw [← norm_iteratedFDerivWithin_fderivWithin hs hx]
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: have J : iteratedFDerivWithin 𝕜 n
    (fun y : Du => fderivWithin 𝕜 (fun y : Du => B (f y) (g y)) s y) s x =
      iteratedFDerivWithin 𝕜 n (fun y => B.precompR Du (f y)
        (fderivWithin 𝕜 g s y) + B.precompL Du (fderivWithin 𝕜 f s y) (g y)) s x := by
  apply iteratedFDerivWithin_congr (fun y hy => ?_) hx
  have L : (1 : ℕ∞) ≤ n.succ := by
    simpa only [ENat.coe_one, Nat.one_le_cast] using Nat.succ_pos n
  exact B.fderivWithin_of_bilinear (hf.differentiableOn L y hy) (hg.differentiableOn L y hy)
    (hs y hy)
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: rw [← norm_iteratedFDerivWithin_fderivWithin hs hx, J]
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
J :
  iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: have A : ContDiffOn 𝕜 n (fun y => B.precompR Du (f y) (fderivWithin 𝕜 g s y)) s :=
  (B.precompR Du).isBoundedBilinearMap.contDiff.comp_contDiff_on₂
    (hf.of_le (Nat.cast_le.2 (Nat.le_succ n))) (hg.fderivWithin hs In)
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
J :
  iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x
⊢ ‖iteratedFDerivWithin 𝕜 n
        (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s
        x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: have A' : ContDiffOn 𝕜 n (fun y => B.precompL Du (fderivWithin 𝕜 f s y) (g y)) s :=
  (B.precompL Du).isBoundedBilinearMap.contDiff.comp_contDiff_on₂ (hf.fderivWithin hs In)
    (hg.of_le (Nat.cast_le.2 (Nat.le_succ n)))
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
J :
  iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x
A : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s
⊢ ‖iteratedFDerivWithin 𝕜 n
        (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s
        x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: rw [iteratedFDerivWithin_add_apply' A A' hs hx]
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
J :
  iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x
A : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s
A' : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s
⊢ ‖iteratedFDerivWithin 𝕜 n
        (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s
        x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: apply (norm_add_le _ _).trans ((add_le_add I1 I2).trans (le_of_eq ?_))
state_before: case succ
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
J :
  iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x
A : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s
A' : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x +
        iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: simp_rw [← mul_add, mul_assoc]
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
J :
  iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x
A : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s
A' : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s
⊢ ‖B‖ *
        ∑ i in Finset.range (n + 1),
          ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖ +
      ‖B‖ *
        ∑ i in Finset.range (n + 1),
          ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖ =
    ‖B‖ *
      ∑ i in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (Nat.succ n - i) g s x‖

tactic: congr 1
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
J :
  iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x
A : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s
A' : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s
⊢ ‖B‖ *
      (∑ x_1 in Finset.range (n + 1),
          ↑(Nat.choose n x_1) * (‖iteratedFDerivWithin 𝕜 x_1 f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - x_1) g s x‖) +
        ∑ x_1 in Finset.range (n + 1),
          ↑(Nat.choose n x_1) * (‖iteratedFDerivWithin 𝕜 (x_1 + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g s x‖)) =
    ‖B‖ *
      ∑ x_1 in Finset.range (Nat.succ n + 1),
        ↑(Nat.choose (Nat.succ n) x_1) *
          (‖iteratedFDerivWithin 𝕜 x_1 f s x‖ * ‖iteratedFDerivWithin 𝕜 (Nat.succ n - x_1) g s x‖)

tactic: exact (Finset.sum_choose_succ_mul
  (fun i j => ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 j g s x‖) n).symm
state_before: case e_a
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
J :
  iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x
A : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s
A' : ContDiffOn 𝕜 (↑n) (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s
⊢ ∑ x_1 in Finset.range (n + 1),
        ↑(Nat.choose n x_1) * (‖iteratedFDerivWithin 𝕜 x_1 f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - x_1) g s x‖) +
      ∑ x_1 in Finset.range (n + 1),
        ↑(Nat.choose n x_1) * (‖iteratedFDerivWithin 𝕜 (x_1 + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g s x‖) =
    ∑ x_1 in Finset.range (Nat.succ n + 1),
      ↑(Nat.choose (Nat.succ n) x_1) *
        (‖iteratedFDerivWithin 𝕜 x_1 f s x‖ * ‖iteratedFDerivWithin 𝕜 (Nat.succ n - x_1) g s x‖)

tactic: simp only [Nat.cast_succ, le_refl]
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
⊢ ↑n + 1 ≤ ↑(Nat.succ n)

tactic: calc
  ‖iteratedFDerivWithin 𝕜 n (fun y : Du => B.precompR Du (f y) (fderivWithin 𝕜 g s y)) s x‖ ≤
      ‖B.precompR Du‖ * ∑ i : ℕ in Finset.range (n + 1),
        n.choose i * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 g s) s x‖ :=
    IH _ (hf.of_le (Nat.cast_le.2 (Nat.le_succ n))) (hg.fderivWithin hs In)
  _ ≤ ‖B‖ * ∑ i : ℕ in Finset.range (n + 1), n.choose i * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
        ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 g s) s x‖ :=
    (mul_le_mul_of_nonneg_right (B.norm_precompR_le Du)
      (Finset.sum_nonneg' fun i => by positivity))
  _ = _ := by
    congr 1
    apply Finset.sum_congr rfl fun i hi => ?_
    rw [Nat.succ_sub (Nat.lt_succ_iff.1 (Finset.mem_range.1 hi)),
      ← norm_iteratedFDerivWithin_fderivWithin hs hx]
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖

tactic: positivity
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
i : ℕ
⊢ 0 ≤ ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 g s) s x‖

tactic: congr 1
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
⊢ ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ *
          ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 g s) s x‖ =
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖

tactic: apply Finset.sum_congr rfl fun i hi => ?_
state_before: case e_a
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
⊢ ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 g s) s x‖ =
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖

tactic: rw [Nat.succ_sub (Nat.lt_succ_iff.1 (Finset.mem_range.1 hi)),
  ← norm_iteratedFDerivWithin_fderivWithin hs hx]
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 g s) s x‖ =
    ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖

tactic: positivity
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
i : ℕ
⊢ 0 ≤ ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 f s) s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖

tactic: congr 1
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
⊢ ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 f s) s x‖ *
          ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖ =
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖

tactic: apply Finset.sum_congr rfl fun i _ => ?_
state_before: case e_a
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
⊢ ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 f s) s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖ =
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖

tactic: rw [← norm_iteratedFDerivWithin_fderivWithin hs hx]
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝¹ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
i : ℕ
x✝ : i ∈ Finset.range (n + 1)
⊢ ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 f s) s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖ =
    ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖

tactic: apply iteratedFDerivWithin_congr (fun y hy => ?_) hx
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
⊢ iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x

tactic: have L : (1 : ℕ∞) ≤ n.succ := by
  simpa only [ENat.coe_one, Nat.one_le_cast] using Nat.succ_pos n
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
y : Du
hy : y ∈ s
⊢ fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y =
    ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)

tactic: exact B.fderivWithin_of_bilinear (hf.differentiableOn L y hy) (hg.differentiableOn L y hy)
  (hs y hy)
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
y : Du
hy : y ∈ s
L : 1 ≤ ↑(Nat.succ n)
⊢ fderivWithin 𝕜 (fun y => ↑(↑B (f y)) (g y)) s y =
    ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y) + ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)

tactic: simpa only [ENat.coe_one, Nat.one_le_cast] using Nat.succ_pos n
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝²³ : NormedAddCommGroup D
inst✝²² : NormedSpace 𝕜 D
E : Type uE
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝¹⁷ : NormedAddCommGroup G
inst✝¹⁶ : NormedSpace 𝕜 G
X : Type ?u.3405591
inst✝¹⁵ : NormedAddCommGroup X
inst✝¹⁴ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝¹ f₁ : E → F
g✝¹ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝¹ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
Du Eu✝ Fu✝ Gu✝ : Type u
inst✝¹³ : NormedAddCommGroup Du
inst✝¹² : NormedSpace 𝕜 Du
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
B✝ : Eu✝ →L[𝕜] Fu✝ →L[𝕜] Gu✝
f✝ : Du → Eu✝
g✝ : Du → Fu✝
n✝ : ℕ
s : Set Du
x : Du
hf✝ : ContDiffOn 𝕜 (↑n✝) f✝ s
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
IH :
  ∀ {Eu Fu Gu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] [inst_2 : NormedAddCommGroup Fu]
    [inst_3 : NormedSpace 𝕜 Fu] [inst_4 : NormedAddCommGroup Gu] [inst_5 : NormedSpace 𝕜 Gu] (B : Eu →L[𝕜] Fu →L[𝕜] Gu)
    {f : Du → Eu} {g : Du → Fu},
    ContDiffOn 𝕜 (↑n) f s →
      ContDiffOn 𝕜 (↑n) g s →
        ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
          ‖B‖ *
            ∑ i in Finset.range (n + 1),
              ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Eu Fu Gu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
B : Eu →L[𝕜] Fu →L[𝕜] Gu
f : Du → Eu
g : Du → Fu
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g s
In : ↑n + 1 ≤ ↑(Nat.succ n)
norm✝ : Norm (Eu →L[𝕜] (Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I1 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompR Du B) (f y)) (fderivWithin 𝕜 g s y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n + 1 - i) g s x‖
norm : Norm ((Du →L[𝕜] Eu) →L[𝕜] Fu →L[𝕜] Du →L[𝕜] Gu) := hasOpNorm
I2 :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑(precompL Du B) (fderivWithin 𝕜 f s y)) (g y)) s x‖ ≤
    ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 (i + 1) f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
y : Du
hy : y ∈ s
⊢ 1 ≤ ↑(Nat.succ n)