[GOAL]
𝕜 : 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_2
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
n : ℕ
⊢ (iteratedFDeriv 𝕜 n fun x => 0) = 0
[PROOFSTEP]
induction' n with n IH
[GOAL]
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_2
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
⊢ (iteratedFDeriv 𝕜 Nat.zero fun x => 0) = 0
[PROOFSTEP]
ext m
[GOAL]
case zero.h.H
𝕜 : 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_2
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
m : E
x✝ : Fin Nat.zero → E
⊢ ↑(iteratedFDeriv 𝕜 Nat.zero (fun x => 0) m) x✝ = ↑(OfNat.ofNat 0 m) x✝
[PROOFSTEP]
simp
[GOAL]
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_2
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
n : ℕ
IH : (iteratedFDeriv 𝕜 n fun x => 0) = 0
⊢ (iteratedFDeriv 𝕜 (Nat.succ n) fun x => 0) = 0
[PROOFSTEP]
ext x m
[GOAL]
case succ.h.H
𝕜 : 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_2
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
n : ℕ
IH : (iteratedFDeriv 𝕜 n fun x => 0) = 0
x : E
m : Fin (Nat.succ n) → E
⊢ ↑(iteratedFDeriv 𝕜 (Nat.succ n) (fun x => 0) x) m = ↑(OfNat.ofNat 0 x) m
[PROOFSTEP]
rw [iteratedFDeriv_succ_apply_left, IH]
[GOAL]
case succ.h.H
𝕜 : 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_2
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
n : ℕ
IH : (iteratedFDeriv 𝕜 n fun x => 0) = 0
x : E
m : Fin (Nat.succ n) → E
⊢ ↑(↑(fderiv 𝕜 0 x) (m 0)) (tail m) = ↑(OfNat.ofNat 0 x) m
[PROOFSTEP]
change (fderiv 𝕜 (fun _ : E => (0 : E[×n]→L[𝕜] F)) x : E → E[×n]→L[𝕜] F) (m 0) (tail m) = _
[GOAL]
case succ.h.H
𝕜 : 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_2
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
n : ℕ
IH : (iteratedFDeriv 𝕜 n fun x => 0) = 0
x : E
m : Fin (Nat.succ n) → E
⊢ ↑(↑(fderiv 𝕜 (fun x => 0) x) (m 0)) (tail m) = ↑(OfNat.ofNat 0 x) m
[PROOFSTEP]
rw [fderiv_const]
[GOAL]
case succ.h.H
𝕜 : 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_2
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
n : ℕ
IH : (iteratedFDeriv 𝕜 n fun x => 0) = 0
x : E
m : Fin (Nat.succ n) → E
⊢ ↑(↑(OfNat.ofNat 0 x) (m 0)) (tail m) = ↑(OfNat.ofNat 0 x) m
[PROOFSTEP]
rfl
[GOAL]
𝕜 : 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_2
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
m : ℕ
x✝ : ↑m ≤ n
⊢ Differentiable 𝕜 (iteratedFDeriv 𝕜 m fun x => 0)
[PROOFSTEP]
rw [iteratedFDeriv_zero_fun]
[GOAL]
𝕜 : 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_2
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
m : ℕ
x✝ : ↑m ≤ n
⊢ Differentiable 𝕜 0
[PROOFSTEP]
exact differentiable_const (0 : E[×m]→L[𝕜] F)
[GOAL]
𝕜 : 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_2
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
c : F
⊢ ContDiff 𝕜 n fun x => c
[PROOFSTEP]
suffices h : ContDiff 𝕜 ∞ fun _ : E => c
[GOAL]
𝕜 : 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_2
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
c : F
h : ContDiff 𝕜 ⊤ fun x => c
⊢ ContDiff 𝕜 n fun x => c
[PROOFSTEP]
exact h.of_le le_top
[GOAL]
case h
𝕜 : 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_2
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
c : F
⊢ ContDiff 𝕜 ⊤ fun x => c
[PROOFSTEP]
rw [contDiff_top_iff_fderiv]
[GOAL]
case h
𝕜 : 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_2
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
c : F
⊢ (Differentiable 𝕜 fun x => c) ∧ ContDiff 𝕜 ⊤ fun y => fderiv 𝕜 (fun x => c) y
[PROOFSTEP]
refine' ⟨differentiable_const c, _⟩
[GOAL]
case h
𝕜 : 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_2
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
c : F
⊢ ContDiff 𝕜 ⊤ fun y => fderiv 𝕜 (fun x => c) y
[PROOFSTEP]
rw [fderiv_const]
[GOAL]
case h
𝕜 : 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_2
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
c : F
⊢ ContDiff 𝕜 ⊤ fun y => OfNat.ofNat 0 y
[PROOFSTEP]
exact contDiff_zero_fun
[GOAL]
𝕜 : 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_2
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
inst✝ : Subsingleton F
⊢ ContDiff 𝕜 n f
[PROOFSTEP]
rw [Subsingleton.elim f fun _ => 0]
[GOAL]
𝕜 : 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_2
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
inst✝ : Subsingleton F
⊢ ContDiff 𝕜 n fun x => 0
[PROOFSTEP]
exact contDiff_const
[GOAL]
𝕜 : 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_2
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
inst✝ : Subsingleton F
⊢ ContDiffAt 𝕜 n f x
[PROOFSTEP]
rw [Subsingleton.elim f fun _ => 0]
[GOAL]
𝕜 : 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_2
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
inst✝ : Subsingleton F
⊢ ContDiffAt 𝕜 n (fun x => 0) x
[PROOFSTEP]
exact contDiffAt_const
[GOAL]
𝕜 : 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_2
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
inst✝ : Subsingleton F
⊢ ContDiffWithinAt 𝕜 n f s x
[PROOFSTEP]
rw [Subsingleton.elim f fun _ => 0]
[GOAL]
𝕜 : 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_2
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
inst✝ : Subsingleton F
⊢ ContDiffWithinAt 𝕜 n (fun x => 0) s x
[PROOFSTEP]
exact contDiffWithinAt_const
[GOAL]
𝕜 : 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_2
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
inst✝ : Subsingleton F
⊢ ContDiffOn 𝕜 n f s
[PROOFSTEP]
rw [Subsingleton.elim f fun _ => 0]
[GOAL]
𝕜 : 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_2
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
inst✝ : Subsingleton F
⊢ ContDiffOn 𝕜 n (fun x => 0) s
[PROOFSTEP]
exact contDiffOn_const
[GOAL]
𝕜 : 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_2
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
n : ℕ
c : F
⊢ (iteratedFDeriv 𝕜 (n + 1) fun x => c) = 0
[PROOFSTEP]
ext x
[GOAL]
case h.H
𝕜 : 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_2
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
n : ℕ
c : F
x : E
x✝ : Fin (n + 1) → E
⊢ ↑(iteratedFDeriv 𝕜 (n + 1) (fun x => c) x) x✝ = ↑(OfNat.ofNat 0 x) x✝
[PROOFSTEP]
simp only [iteratedFDeriv_succ_eq_comp_right, fderiv_const, Pi.zero_apply, iteratedFDeriv_zero_fun, comp_apply,
  LinearIsometryEquiv.map_zero]
[GOAL]
𝕜 : 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_2
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
n : ℕ
hn : n ≠ 0
c : F
⊢ (iteratedFDeriv 𝕜 n fun x => c) = 0
[PROOFSTEP]
cases' Nat.exists_eq_succ_of_ne_zero hn with k hk
[GOAL]
case intro
𝕜 : 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_2
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
n : ℕ
hn : n ≠ 0
c : F
k : ℕ
hk : n = Nat.succ k
⊢ (iteratedFDeriv 𝕜 n fun x => c) = 0
[PROOFSTEP]
rw [hk, iteratedFDeriv_succ_const]
[GOAL]
𝕜 : 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_2
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
hf : IsBoundedLinearMap 𝕜 f
⊢ ContDiff 𝕜 n f
[PROOFSTEP]
suffices h : ContDiff 𝕜 ∞ f
[GOAL]
𝕜 : 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_2
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
hf : IsBoundedLinearMap 𝕜 f
h : ContDiff 𝕜 ⊤ f
⊢ ContDiff 𝕜 n f
[PROOFSTEP]
exact h.of_le le_top
[GOAL]
case h
𝕜 : 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_2
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
hf : IsBoundedLinearMap 𝕜 f
⊢ ContDiff 𝕜 ⊤ f
[PROOFSTEP]
rw [contDiff_top_iff_fderiv]
[GOAL]
case h
𝕜 : 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_2
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
hf : IsBoundedLinearMap 𝕜 f
⊢ Differentiable 𝕜 f ∧ ContDiff 𝕜 ⊤ fun y => _root_.fderiv 𝕜 f y
[PROOFSTEP]
refine' ⟨hf.differentiable, _⟩
[GOAL]
case h
𝕜 : 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_2
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
hf : IsBoundedLinearMap 𝕜 f
⊢ ContDiff 𝕜 ⊤ fun y => _root_.fderiv 𝕜 f y
[PROOFSTEP]
simp_rw [hf.fderiv]
[GOAL]
case h
𝕜 : 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_2
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
hf : IsBoundedLinearMap 𝕜 f
⊢ ContDiff 𝕜 ⊤ fun y => toContinuousLinearMap hf
[PROOFSTEP]
exact contDiff_const
[GOAL]
𝕜 : 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_2
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
hb : IsBoundedBilinearMap 𝕜 b
⊢ ContDiff 𝕜 n b
[PROOFSTEP]
suffices h : ContDiff 𝕜 ∞ b
[GOAL]
𝕜 : 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_2
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
hb : IsBoundedBilinearMap 𝕜 b
h : ContDiff 𝕜 ⊤ b
⊢ ContDiff 𝕜 n b
[PROOFSTEP]
exact h.of_le le_top
[GOAL]
case h
𝕜 : 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_2
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
hb : IsBoundedBilinearMap 𝕜 b
⊢ ContDiff 𝕜 ⊤ b
[PROOFSTEP]
rw [contDiff_top_iff_fderiv]
[GOAL]
case h
𝕜 : 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_2
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
hb : IsBoundedBilinearMap 𝕜 b
⊢ Differentiable 𝕜 b ∧ ContDiff 𝕜 ⊤ fun y => fderiv 𝕜 b y
[PROOFSTEP]
refine' ⟨hb.differentiable, _⟩
[GOAL]
case h
𝕜 : 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_2
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
hb : IsBoundedBilinearMap 𝕜 b
⊢ ContDiff 𝕜 ⊤ fun y => fderiv 𝕜 b y
[PROOFSTEP]
simp only [hb.fderiv]
[GOAL]
case h
𝕜 : 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_2
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
hb : IsBoundedBilinearMap 𝕜 b
⊢ ContDiff 𝕜 ⊤ fun y => deriv hb y
[PROOFSTEP]
exact hb.isBoundedLinearMap_deriv.contDiff
[GOAL]
𝕜 : 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_2
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
g : F →L[𝕜] G
hf : ContDiffWithinAt 𝕜 n f s x
m : ℕ
hm : ↑m ≤ n
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (↑g ∘ f) p u
[PROOFSTEP]
rcases hf m hm with ⟨u, hu, p, hp⟩
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
g : F →L[𝕜] G
hf : ContDiffWithinAt 𝕜 n f s x
m : ℕ
hm : ↑m ≤ n
u : Set E
hu : u ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries 𝕜 E F
hp : HasFTaylorSeriesUpToOn (↑m) f p u
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (↑g ∘ f) p u
[PROOFSTEP]
exact ⟨u, hu, _, hp.continuousLinearMap_comp g⟩
[GOAL]
𝕜 : 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_2
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
f : E → F
g : F →L[𝕜] G
hf : ContDiff 𝕜 n f
x : E
i : ℕ
hi : ↑i ≤ n
⊢ iteratedFDeriv 𝕜 i (↑g ∘ f) x = compContinuousMultilinearMap g (iteratedFDeriv 𝕜 i f x)
[PROOFSTEP]
simp only [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
f : E → F
g : F →L[𝕜] G
hf : ContDiff 𝕜 n f
x : E
i : ℕ
hi : ↑i ≤ n
⊢ iteratedFDerivWithin 𝕜 i (↑g ∘ f) univ x = compContinuousMultilinearMap g (iteratedFDerivWithin 𝕜 i f univ x)
[PROOFSTEP]
exact g.iteratedFDerivWithin_comp_left hf.contDiffOn uniqueDiffOn_univ (mem_univ x) hi
[GOAL]
𝕜 : 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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
i : ℕ
⊢ iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
    ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 i f s x)
[PROOFSTEP]
induction' i with i IH generalizing x
[GOAL]
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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
x : E
hx : x ∈ s
⊢ iteratedFDerivWithin 𝕜 Nat.zero (↑g ∘ f) s x =
    ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 Nat.zero f s x)
[PROOFSTEP]
ext1 m
[GOAL]
case zero.H
𝕜 : 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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
x : E
hx : x ∈ s
m : Fin Nat.zero → E
⊢ ↑(iteratedFDerivWithin 𝕜 Nat.zero (↑g ∘ f) s x) m =
    ↑(ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 Nat.zero f s x)) m
[PROOFSTEP]
simp only [Nat.zero_eq, iteratedFDerivWithin_zero_apply, comp_apply,
  ContinuousLinearMap.compContinuousMultilinearMap_coe, coe_coe]
[GOAL]
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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
IH :
  ∀ {x : E},
    x ∈ s →
      iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
        ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 i f s x)
x : E
hx : x ∈ s
⊢ iteratedFDerivWithin 𝕜 (Nat.succ i) (↑g ∘ f) s x =
    ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 (Nat.succ i) f s x)
[PROOFSTEP]
ext1 m
[GOAL]
case succ.H
𝕜 : 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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
IH :
  ∀ {x : E},
    x ∈ s →
      iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
        ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 i f s x)
x : E
hx : x ∈ s
m : Fin (Nat.succ i) → E
⊢ ↑(iteratedFDerivWithin 𝕜 (Nat.succ i) (↑g ∘ f) s x) m =
    ↑(ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 (Nat.succ i) f s x)) m
[PROOFSTEP]
rw [iteratedFDerivWithin_succ_apply_left]
[GOAL]
case succ.H
𝕜 : 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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
IH :
  ∀ {x : E},
    x ∈ s →
      iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
        ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 i f s x)
x : E
hx : x ∈ s
m : Fin (Nat.succ i) → E
⊢ ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (↑g ∘ f) s) s x) (m 0)) (tail m) =
    ↑(ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 (Nat.succ i) f s x)) m
[PROOFSTEP]
have Z :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (g ∘ f) s) s x =
    fderivWithin 𝕜 (g.compContinuousMultilinearMapL (fun _ : Fin i => E) ∘ iteratedFDerivWithin 𝕜 i f s) s x :=
  fderivWithin_congr' (@IH) hx
[GOAL]
case succ.H
𝕜 : 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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
IH :
  ∀ {x : E},
    x ∈ s →
      iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
        ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 i f s x)
x : E
hx : x ∈ s
m : Fin (Nat.succ i) → E
Z :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (↑g ∘ f) s) s x =
    fderivWithin 𝕜 (↑(compContinuousMultilinearMapL (fun x => E) g) ∘ iteratedFDerivWithin 𝕜 i f s) s x
⊢ ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (↑g ∘ f) s) s x) (m 0)) (tail m) =
    ↑(ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 (Nat.succ i) f s x)) m
[PROOFSTEP]
simp_rw [Z]
[GOAL]
case succ.H
𝕜 : 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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
IH :
  ∀ {x : E},
    x ∈ s →
      iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
        ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 i f s x)
x : E
hx : x ∈ s
m : Fin (Nat.succ i) → E
Z :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (↑g ∘ f) s) s x =
    fderivWithin 𝕜 (↑(compContinuousMultilinearMapL (fun x => E) g) ∘ iteratedFDerivWithin 𝕜 i f s) s x
⊢ ↑(↑(fderivWithin 𝕜 (↑(compContinuousMultilinearMapL (fun x => E) g) ∘ iteratedFDerivWithin 𝕜 i f s) s x) (m 0))
      (tail m) =
    ↑(ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 (Nat.succ i) f s x)) m
[PROOFSTEP]
rw [(g.compContinuousMultilinearMapL fun _ : Fin i => E).comp_fderivWithin (hs x hx)]
[GOAL]
case succ.H
𝕜 : 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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
IH :
  ∀ {x : E},
    x ∈ s →
      iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
        ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 i f s x)
x : E
hx : x ∈ s
m : Fin (Nat.succ i) → E
Z :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (↑g ∘ f) s) s x =
    fderivWithin 𝕜 (↑(compContinuousMultilinearMapL (fun x => E) g) ∘ iteratedFDerivWithin 𝕜 i f s) s x
⊢ ↑(↑(ContinuousLinearMap.comp (↑(compContinuousMultilinearMapL (fun x => E) g))
              (fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s x))
          (m 0))
      (tail m) =
    ↑(ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 (Nat.succ i) f s x)) m
[PROOFSTEP]
simp only [ContinuousLinearMap.coe_comp', ContinuousLinearEquiv.coe_coe, comp_apply,
  ContinuousLinearEquiv.compContinuousMultilinearMapL_apply, ContinuousLinearMap.compContinuousMultilinearMap_coe,
  EmbeddingLike.apply_eq_iff_eq]
[GOAL]
case succ.H
𝕜 : 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_2
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
g : F ≃L[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
IH :
  ∀ {x : E},
    x ∈ s →
      iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
        ContinuousLinearMap.compContinuousMultilinearMap (↑g) (iteratedFDerivWithin 𝕜 i f s x)
x : E
hx : x ∈ s
m : Fin (Nat.succ i) → E
Z :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (↑g ∘ f) s) s x =
    fderivWithin 𝕜 (↑(compContinuousMultilinearMapL (fun x => E) g) ∘ iteratedFDerivWithin 𝕜 i f s) s x
⊢ ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s x) (m 0)) (tail m) =
    ↑(iteratedFDerivWithin 𝕜 (Nat.succ i) f s x) m
[PROOFSTEP]
rw [iteratedFDerivWithin_succ_apply_left]
[GOAL]
𝕜 : 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_2
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
f : E → F
g : F →ₗᵢ[𝕜] G
hf : ContDiffOn 𝕜 n f s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
i : ℕ
hi : ↑i ≤ n
⊢ ‖iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
have :
  iteratedFDerivWithin 𝕜 i (g ∘ f) s x =
    g.toContinuousLinearMap.compContinuousMultilinearMap (iteratedFDerivWithin 𝕜 i f s x) :=
  g.toContinuousLinearMap.iteratedFDerivWithin_comp_left hf hs hx hi
[GOAL]
𝕜 : 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_2
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
f : E → F
g : F →ₗᵢ[𝕜] G
hf : ContDiffOn 𝕜 n f s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
i : ℕ
hi : ↑i ≤ n
this :
  iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
    ContinuousLinearMap.compContinuousMultilinearMap (toContinuousLinearMap g) (iteratedFDerivWithin 𝕜 i f s x)
⊢ ‖iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
rw [this]
[GOAL]
𝕜 : 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_2
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
f : E → F
g : F →ₗᵢ[𝕜] G
hf : ContDiffOn 𝕜 n f s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
i : ℕ
hi : ↑i ≤ n
this :
  iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
    ContinuousLinearMap.compContinuousMultilinearMap (toContinuousLinearMap g) (iteratedFDerivWithin 𝕜 i f s x)
⊢ ‖ContinuousLinearMap.compContinuousMultilinearMap (toContinuousLinearMap g) (iteratedFDerivWithin 𝕜 i f s x)‖ =
    ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
apply LinearIsometry.norm_compContinuousMultilinearMap
[GOAL]
𝕜 : 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_2
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
f : E → F
g : F →ₗᵢ[𝕜] G
hf : ContDiff 𝕜 n f
x : E
i : ℕ
hi : ↑i ≤ n
⊢ ‖iteratedFDeriv 𝕜 i (↑g ∘ f) x‖ = ‖iteratedFDeriv 𝕜 i f x‖
[PROOFSTEP]
simp only [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
f : E → F
g : F →ₗᵢ[𝕜] G
hf : ContDiff 𝕜 n f
x : E
i : ℕ
hi : ↑i ≤ n
⊢ ‖iteratedFDerivWithin 𝕜 i (↑g ∘ f) univ x‖ = ‖iteratedFDerivWithin 𝕜 i f univ x‖
[PROOFSTEP]
exact g.norm_iteratedFDerivWithin_comp_left hf.contDiffOn uniqueDiffOn_univ (mem_univ x) hi
[GOAL]
𝕜 : 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_2
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
g : F ≃ₗᵢ[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
have :
  iteratedFDerivWithin 𝕜 i (g ∘ f) s x =
    (g : F →L[𝕜] G).compContinuousMultilinearMap (iteratedFDerivWithin 𝕜 i f s x) :=
  g.toContinuousLinearEquiv.iteratedFDerivWithin_comp_left f hs hx i
[GOAL]
𝕜 : 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_2
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
g : F ≃ₗᵢ[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
i : ℕ
this :
  iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
    ContinuousLinearMap.compContinuousMultilinearMap (↑(ContinuousLinearEquiv.mk g.toLinearEquiv))
      (iteratedFDerivWithin 𝕜 i f s x)
⊢ ‖iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
rw [this]
[GOAL]
𝕜 : 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_2
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
g : F ≃ₗᵢ[𝕜] G
f : E → F
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
i : ℕ
this :
  iteratedFDerivWithin 𝕜 i (↑g ∘ f) s x =
    ContinuousLinearMap.compContinuousMultilinearMap (↑(ContinuousLinearEquiv.mk g.toLinearEquiv))
      (iteratedFDerivWithin 𝕜 i f s x)
⊢ ‖ContinuousLinearMap.compContinuousMultilinearMap (↑(ContinuousLinearEquiv.mk g.toLinearEquiv))
        (iteratedFDerivWithin 𝕜 i f s x)‖ =
    ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
apply LinearIsometry.norm_compContinuousMultilinearMap g.toLinearIsometry
[GOAL]
𝕜 : 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_2
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
g : F ≃ₗᵢ[𝕜] G
f : E → F
x : E
i : ℕ
⊢ ‖iteratedFDeriv 𝕜 i (↑g ∘ f) x‖ = ‖iteratedFDeriv 𝕜 i f x‖
[PROOFSTEP]
rw [← iteratedFDerivWithin_univ, ← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
g : F ≃ₗᵢ[𝕜] G
f : E → F
x : E
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i (↑g ∘ f) univ x‖ = ‖iteratedFDerivWithin 𝕜 i f univ x‖
[PROOFSTEP]
apply g.norm_iteratedFDerivWithin_comp_left f uniqueDiffOn_univ (mem_univ x) i
[GOAL]
𝕜 : 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_2
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
e : F ≃L[𝕜] G
H : ContDiffWithinAt 𝕜 n (↑e ∘ f) s x
⊢ ContDiffWithinAt 𝕜 n f s x
[PROOFSTEP]
simpa only [(· ∘ ·), e.symm.coe_coe, e.symm_apply_apply] using H.continuousLinearMap_comp (e.symm : G →L[𝕜] F)
[GOAL]
𝕜 : 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_2
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
e : F ≃L[𝕜] G
⊢ ContDiffAt 𝕜 n (↑e ∘ f) x ↔ ContDiffAt 𝕜 n f x
[PROOFSTEP]
simp only [← contDiffWithinAt_univ, e.comp_contDiffWithinAt_iff]
[GOAL]
𝕜 : 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_2
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
e : F ≃L[𝕜] G
⊢ ContDiffOn 𝕜 n (↑e ∘ f) s ↔ ContDiffOn 𝕜 n f s
[PROOFSTEP]
simp [ContDiffOn, e.comp_contDiffWithinAt_iff]
[GOAL]
𝕜 : 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_2
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
e : F ≃L[𝕜] G
⊢ ContDiff 𝕜 n (↑e ∘ f) ↔ ContDiff 𝕜 n f
[PROOFSTEP]
simp only [← contDiffOn_univ, e.comp_contDiffOn_iff]
[GOAL]
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
⊢ HasFTaylorSeriesUpToOn n (f ∘ ↑g)
    (fun x k => ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) k) fun x => g) (↑g ⁻¹' s)
[PROOFSTEP]
let A : ∀ m : ℕ, (E[×m]→L[𝕜] F) → G[×m]→L[𝕜] F := fun m h => h.compContinuousLinearMap fun _ => g
[GOAL]
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
⊢ HasFTaylorSeriesUpToOn n (f ∘ ↑g)
    (fun x k => ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) k) fun x => g) (↑g ⁻¹' s)
[PROOFSTEP]
have hA : ∀ m, IsBoundedLinearMap 𝕜 (A m) := fun m => isBoundedLinearMap_continuousMultilinearMap_comp_linear g
[GOAL]
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
⊢ HasFTaylorSeriesUpToOn n (f ∘ ↑g)
    (fun x k => ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) k) fun x => g) (↑g ⁻¹' s)
[PROOFSTEP]
constructor
[GOAL]
case zero_eq
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
⊢ ∀ (x : G),
    x ∈ ↑g ⁻¹' s →
      ContinuousMultilinearMap.uncurry0 (ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) 0) fun x => g) =
        (f ∘ ↑g) x
[PROOFSTEP]
intro x hx
[GOAL]
case zero_eq
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
x : G
hx : x ∈ ↑g ⁻¹' s
⊢ ContinuousMultilinearMap.uncurry0 (ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) 0) fun x => g) =
    (f ∘ ↑g) x
[PROOFSTEP]
simp only [(hf.zero_eq (g x) hx).symm, Function.comp_apply]
[GOAL]
case zero_eq
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
x : G
hx : x ∈ ↑g ⁻¹' s
⊢ ContinuousMultilinearMap.uncurry0 (ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) 0) fun x => g) =
    ContinuousMultilinearMap.uncurry0 (p (↑g x) 0)
[PROOFSTEP]
change (p (g x) 0 fun _ : Fin 0 => g 0) = p (g x) 0 0
[GOAL]
case zero_eq
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
x : G
hx : x ∈ ↑g ⁻¹' s
⊢ (↑(p (↑g x) 0) fun x => ↑g 0) = ↑(p (↑g x) 0) 0
[PROOFSTEP]
rw [ContinuousLinearMap.map_zero]
[GOAL]
case zero_eq
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
x : G
hx : x ∈ ↑g ⁻¹' s
⊢ (↑(p (↑g x) 0) fun x => 0) = ↑(p (↑g x) 0) 0
[PROOFSTEP]
rfl
[GOAL]
case fderivWithin
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
⊢ ∀ (m : ℕ),
    ↑m < n →
      ∀ (x : G),
        x ∈ ↑g ⁻¹' s →
          HasFDerivWithinAt (fun x => ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) m) fun x => g)
            (ContinuousMultilinearMap.curryLeft
              (ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) (Nat.succ m)) fun x => g))
            (↑g ⁻¹' s) x
[PROOFSTEP]
intro m hm x hx
[GOAL]
case fderivWithin
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
m : ℕ
hm : ↑m < n
x : G
hx : x ∈ ↑g ⁻¹' s
⊢ HasFDerivWithinAt (fun x => ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) m) fun x => g)
    (ContinuousMultilinearMap.curryLeft
      (ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) (Nat.succ m)) fun x => g))
    (↑g ⁻¹' s) x
[PROOFSTEP]
convert
  (hA m).hasFDerivAt.comp_hasFDerivWithinAt x
    ((hf.fderivWithin m hm (g x) hx).comp x g.hasFDerivWithinAt (Subset.refl _))
[GOAL]
case h.e'_10.h.h
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
m : ℕ
hm : ↑m < n
x : G
hx : x ∈ ↑g ⁻¹' s
e_7✝ : ContinuousMultilinearMap.normedAddCommGroup = ContinuousMultilinearMap.normedAddCommGroup'
he✝ : ContinuousMultilinearMap.normedSpace' = ContinuousMultilinearMap.normedSpace'
⊢ ContinuousMultilinearMap.curryLeft
      (ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) (Nat.succ m)) fun x => g) =
    ContinuousLinearMap.comp (IsBoundedLinearMap.toContinuousLinearMap (_ : IsBoundedLinearMap 𝕜 (A m)))
      (ContinuousLinearMap.comp (ContinuousMultilinearMap.curryLeft (p (↑g x) (Nat.succ m))) g)
[PROOFSTEP]
ext y v
[GOAL]
case h.e'_10.h.h.h.H
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
m : ℕ
hm : ↑m < n
x : G
hx : x ∈ ↑g ⁻¹' s
e_7✝ : ContinuousMultilinearMap.normedAddCommGroup = ContinuousMultilinearMap.normedAddCommGroup'
he✝ : ContinuousMultilinearMap.normedSpace' = ContinuousMultilinearMap.normedSpace'
y : G
v : Fin m → G
⊢ ↑(↑(ContinuousMultilinearMap.curryLeft
              (ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) (Nat.succ m)) fun x => g))
          y)
      v =
    ↑(↑(ContinuousLinearMap.comp (IsBoundedLinearMap.toContinuousLinearMap (_ : IsBoundedLinearMap 𝕜 (A m)))
              (ContinuousLinearMap.comp (ContinuousMultilinearMap.curryLeft (p (↑g x) (Nat.succ m))) g))
          y)
      v
[PROOFSTEP]
change p (g x) (Nat.succ m) (g ∘ cons y v) = p (g x) m.succ (cons (g y) (g ∘ v))
[GOAL]
case h.e'_10.h.h.h.H
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
m : ℕ
hm : ↑m < n
x : G
hx : x ∈ ↑g ⁻¹' s
e_7✝ : ContinuousMultilinearMap.normedAddCommGroup = ContinuousMultilinearMap.normedAddCommGroup'
he✝ : ContinuousMultilinearMap.normedSpace' = ContinuousMultilinearMap.normedSpace'
y : G
v : Fin m → G
⊢ ↑(p (↑g x) (Nat.succ m)) (↑g ∘ cons y v) = ↑(p (↑g x) (Nat.succ m)) (cons (↑g y) (↑g ∘ v))
[PROOFSTEP]
rw [comp_cons]
[GOAL]
case cont
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
⊢ ∀ (m : ℕ),
    ↑m ≤ n → ContinuousOn (fun x => ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) m) fun x => g) (↑g ⁻¹' s)
[PROOFSTEP]
intro m hm
[GOAL]
case cont
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : G →L[𝕜] E
A : (m : ℕ) → ContinuousMultilinearMap 𝕜 (fun i => E) F → ContinuousMultilinearMap 𝕜 (fun i => G) F :=
  fun m h => ContinuousMultilinearMap.compContinuousLinearMap h fun x => g
hA : ∀ (m : ℕ), IsBoundedLinearMap 𝕜 (A m)
m : ℕ
hm : ↑m ≤ n
⊢ ContinuousOn (fun x => ContinuousMultilinearMap.compContinuousLinearMap (p (↑g x) m) fun x => g) (↑g ⁻¹' s)
[PROOFSTEP]
exact (hA m).continuous.comp_continuousOn <| (hf.cont m hm).comp g.continuous.continuousOn <| Subset.refl _
[GOAL]
𝕜 : 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_2
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
x : G
g : G →L[𝕜] E
hf : ContDiffWithinAt 𝕜 n f s (↑g x)
⊢ ContDiffWithinAt 𝕜 n (f ∘ ↑g) (↑g ⁻¹' s) x
[PROOFSTEP]
intro m hm
[GOAL]
𝕜 : 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_2
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
x : G
g : G →L[𝕜] E
hf : ContDiffWithinAt 𝕜 n f s (↑g x)
m : ℕ
hm : ↑m ≤ n
⊢ ∃ u, u ∈ 𝓝[insert x (↑g ⁻¹' s)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (f ∘ ↑g) p u
[PROOFSTEP]
rcases hf m hm with ⟨u, hu, p, hp⟩
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
x : G
g : G →L[𝕜] E
hf : ContDiffWithinAt 𝕜 n f s (↑g x)
m : ℕ
hm : ↑m ≤ n
u : Set E
hu : u ∈ 𝓝[insert (↑g x) s] ↑g x
p : E → FormalMultilinearSeries 𝕜 E F
hp : HasFTaylorSeriesUpToOn (↑m) f p u
⊢ ∃ u, u ∈ 𝓝[insert x (↑g ⁻¹' s)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (f ∘ ↑g) p u
[PROOFSTEP]
refine ⟨g ⁻¹' u, ?_, _, hp.compContinuousLinearMap g⟩
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
x : G
g : G →L[𝕜] E
hf : ContDiffWithinAt 𝕜 n f s (↑g x)
m : ℕ
hm : ↑m ≤ n
u : Set E
hu : u ∈ 𝓝[insert (↑g x) s] ↑g x
p : E → FormalMultilinearSeries 𝕜 E F
hp : HasFTaylorSeriesUpToOn (↑m) f p u
⊢ ↑g ⁻¹' u ∈ 𝓝[insert x (↑g ⁻¹' s)] x
[PROOFSTEP]
refine g.continuous.continuousWithinAt.tendsto_nhdsWithin ?_ hu
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
x : G
g : G →L[𝕜] E
hf : ContDiffWithinAt 𝕜 n f s (↑g x)
m : ℕ
hm : ↑m ≤ n
u : Set E
hu : u ∈ 𝓝[insert (↑g x) s] ↑g x
p : E → FormalMultilinearSeries 𝕜 E F
hp : HasFTaylorSeriesUpToOn (↑m) f p u
⊢ MapsTo (↑g) (insert x (↑g ⁻¹' s)) (insert (↑g x) s)
[PROOFSTEP]
exact (mapsTo_singleton.2 <| mem_singleton _).union_union (mapsTo_preimage _ _)
[GOAL]
𝕜 : 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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x : G
hx : ↑g x ∈ s
i : ℕ
⊢ iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x =
    ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f s (↑g x)) fun x => ↑g
[PROOFSTEP]
induction' i with i IH generalizing x
[GOAL]
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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x✝ : G
hx✝ : ↑g x✝ ∈ s
x : G
hx : ↑g x ∈ s
⊢ iteratedFDerivWithin 𝕜 Nat.zero (f ∘ ↑g) (↑g ⁻¹' s) x =
    ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 Nat.zero f s (↑g x)) fun x => ↑g
[PROOFSTEP]
ext1
[GOAL]
case zero.H
𝕜 : 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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x✝¹ : G
hx✝ : ↑g x✝¹ ∈ s
x : G
hx : ↑g x ∈ s
x✝ : Fin Nat.zero → G
⊢ ↑(iteratedFDerivWithin 𝕜 Nat.zero (f ∘ ↑g) (↑g ⁻¹' s) x) x✝ =
    ↑(ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 Nat.zero f s (↑g x)) fun x => ↑g) x✝
[PROOFSTEP]
simp only [Nat.zero_eq, iteratedFDerivWithin_zero_apply, comp_apply,
  ContinuousMultilinearMap.compContinuousLinearMap_apply]
[GOAL]
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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x✝ : G
hx✝ : ↑g x✝ ∈ s
i : ℕ
IH :
  ∀ {x : G},
    ↑g x ∈ s →
      iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x =
        ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f s (↑g x)) fun x => ↑g
x : G
hx : ↑g x ∈ s
⊢ iteratedFDerivWithin 𝕜 (Nat.succ i) (f ∘ ↑g) (↑g ⁻¹' s) x =
    ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 (Nat.succ i) f s (↑g x)) fun x => ↑g
[PROOFSTEP]
ext1 m
[GOAL]
case succ.H
𝕜 : 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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x✝ : G
hx✝ : ↑g x✝ ∈ s
i : ℕ
IH :
  ∀ {x : G},
    ↑g x ∈ s →
      iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x =
        ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f s (↑g x)) fun x => ↑g
x : G
hx : ↑g x ∈ s
m : Fin (Nat.succ i) → G
⊢ ↑(iteratedFDerivWithin 𝕜 (Nat.succ i) (f ∘ ↑g) (↑g ⁻¹' s) x) m =
    ↑(ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 (Nat.succ i) f s (↑g x)) fun x => ↑g) m
[PROOFSTEP]
simp only [ContinuousMultilinearMap.compContinuousLinearMap_apply, ContinuousLinearEquiv.coe_coe,
  iteratedFDerivWithin_succ_apply_left]
[GOAL]
case succ.H
𝕜 : 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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x✝ : G
hx✝ : ↑g x✝ ∈ s
i : ℕ
IH :
  ∀ {x : G},
    ↑g x ∈ s →
      iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x =
        ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f s (↑g x)) fun x => ↑g
x : G
hx : ↑g x ∈ s
m : Fin (Nat.succ i) → G
⊢ ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s)) (↑g ⁻¹' s) x) (m 0)) (tail m) =
    ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s (↑g x)) (↑g (m 0))) (tail fun i => ↑g (m i))
[PROOFSTEP]
have :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (f ∘ g) (g ⁻¹' s)) (g ⁻¹' s) x =
    fderivWithin 𝕜
      (ContinuousMultilinearMap.compContinuousLinearMapEquivL _ (fun _x : Fin i => g) ∘
        (iteratedFDerivWithin 𝕜 i f s ∘ g))
      (g ⁻¹' s) x :=
  fderivWithin_congr' (@IH) hx
[GOAL]
case succ.H
𝕜 : 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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x✝ : G
hx✝ : ↑g x✝ ∈ s
i : ℕ
IH :
  ∀ {x : G},
    ↑g x ∈ s →
      iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x =
        ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f s (↑g x)) fun x => ↑g
x : G
hx : ↑g x ∈ s
m : Fin (Nat.succ i) → G
this :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s)) (↑g ⁻¹' s) x =
    fderivWithin 𝕜
      (↑(ContinuousMultilinearMap.compContinuousLinearMapEquivL F fun _x => g) ∘ iteratedFDerivWithin 𝕜 i f s ∘ ↑g)
      (↑g ⁻¹' s) x
⊢ ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s)) (↑g ⁻¹' s) x) (m 0)) (tail m) =
    ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s (↑g x)) (↑g (m 0))) (tail fun i => ↑g (m i))
[PROOFSTEP]
rw [this, ContinuousLinearEquiv.comp_fderivWithin _ (g.uniqueDiffOn_preimage_iff.2 hs x hx)]
[GOAL]
case succ.H
𝕜 : 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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x✝ : G
hx✝ : ↑g x✝ ∈ s
i : ℕ
IH :
  ∀ {x : G},
    ↑g x ∈ s →
      iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x =
        ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f s (↑g x)) fun x => ↑g
x : G
hx : ↑g x ∈ s
m : Fin (Nat.succ i) → G
this :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s)) (↑g ⁻¹' s) x =
    fderivWithin 𝕜
      (↑(ContinuousMultilinearMap.compContinuousLinearMapEquivL F fun _x => g) ∘ iteratedFDerivWithin 𝕜 i f s ∘ ↑g)
      (↑g ⁻¹' s) x
⊢ ↑(↑(ContinuousLinearMap.comp (↑(ContinuousMultilinearMap.compContinuousLinearMapEquivL F fun _x => g))
              (fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s ∘ ↑g) (↑g ⁻¹' s) x))
          (m 0))
      (tail m) =
    ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s (↑g x)) (↑g (m 0))) (tail fun i => ↑g (m i))
[PROOFSTEP]
simp only [ContinuousLinearMap.coe_comp', ContinuousLinearEquiv.coe_coe, comp_apply,
  ContinuousMultilinearMap.compContinuousLinearMapEquivL_apply, ContinuousMultilinearMap.compContinuousLinearMap_apply]
[GOAL]
case succ.H
𝕜 : 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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x✝ : G
hx✝ : ↑g x✝ ∈ s
i : ℕ
IH :
  ∀ {x : G},
    ↑g x ∈ s →
      iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x =
        ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f s (↑g x)) fun x => ↑g
x : G
hx : ↑g x ∈ s
m : Fin (Nat.succ i) → G
this :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s)) (↑g ⁻¹' s) x =
    fderivWithin 𝕜
      (↑(ContinuousMultilinearMap.compContinuousLinearMapEquivL F fun _x => g) ∘ iteratedFDerivWithin 𝕜 i f s ∘ ↑g)
      (↑g ⁻¹' s) x
⊢ (↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s ∘ ↑g) (↑g ⁻¹' s) x) (m 0)) fun i_1 => ↑g (tail m i_1)) =
    ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s (↑g x)) (↑g (m 0))) (tail fun i => ↑g (m i))
[PROOFSTEP]
rw [ContinuousLinearEquiv.comp_right_fderivWithin _ (g.uniqueDiffOn_preimage_iff.2 hs x hx)]
[GOAL]
case succ.H
𝕜 : 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_2
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
g : G ≃L[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x✝ : G
hx✝ : ↑g x✝ ∈ s
i : ℕ
IH :
  ∀ {x : G},
    ↑g x ∈ s →
      iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x =
        ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f s (↑g x)) fun x => ↑g
x : G
hx : ↑g x ∈ s
m : Fin (Nat.succ i) → G
this :
  fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s)) (↑g ⁻¹' s) x =
    fderivWithin 𝕜
      (↑(ContinuousMultilinearMap.compContinuousLinearMapEquivL F fun _x => g) ∘ iteratedFDerivWithin 𝕜 i f s ∘ ↑g)
      (↑g ⁻¹' s) x
⊢ (↑(↑(ContinuousLinearMap.comp (fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s (↑g x)) ↑g) (m 0)) fun i_1 =>
      ↑g (tail m i_1)) =
    ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s (↑g x)) (↑g (m 0))) (tail fun i => ↑g (m i))
[PROOFSTEP]
rfl
[GOAL]
𝕜 : 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_2
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
g : G →L[𝕜] E
f : E → F
hf : ContDiff 𝕜 n f
x : G
i : ℕ
hi : ↑i ≤ n
⊢ iteratedFDeriv 𝕜 i (f ∘ ↑g) x =
    ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDeriv 𝕜 i f (↑g x)) fun x => g
[PROOFSTEP]
simp only [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
g : G →L[𝕜] E
f : E → F
hf : ContDiff 𝕜 n f
x : G
i : ℕ
hi : ↑i ≤ n
⊢ iteratedFDerivWithin 𝕜 i (f ∘ ↑g) univ x =
    ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f univ (↑g x)) fun x => g
[PROOFSTEP]
exact g.iteratedFDerivWithin_comp_right hf.contDiffOn uniqueDiffOn_univ uniqueDiffOn_univ (mem_univ _) hi
[GOAL]
𝕜 : 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_2
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
g : G ≃ₗᵢ[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x : G
hx : ↑g x ∈ s
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x‖ = ‖iteratedFDerivWithin 𝕜 i f s (↑g x)‖
[PROOFSTEP]
have :
  iteratedFDerivWithin 𝕜 i (f ∘ g) (g ⁻¹' s) x =
    (iteratedFDerivWithin 𝕜 i f s (g x)).compContinuousLinearMap fun _ => g :=
  g.toContinuousLinearEquiv.iteratedFDerivWithin_comp_right f hs hx i
[GOAL]
𝕜 : 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_2
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
g : G ≃ₗᵢ[𝕜] E
f : E → F
hs : UniqueDiffOn 𝕜 s
x : G
hx : ↑g x ∈ s
i : ℕ
this :
  iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x =
    ContinuousMultilinearMap.compContinuousLinearMap (iteratedFDerivWithin 𝕜 i f s (↑g x)) fun x =>
      ↑(ContinuousLinearEquiv.mk g.toLinearEquiv)
⊢ ‖iteratedFDerivWithin 𝕜 i (f ∘ ↑g) (↑g ⁻¹' s) x‖ = ‖iteratedFDerivWithin 𝕜 i f s (↑g x)‖
[PROOFSTEP]
rw [this, ContinuousMultilinearMap.norm_compContinuous_linearIsometryEquiv]
[GOAL]
𝕜 : 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_2
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
g : G ≃ₗᵢ[𝕜] E
f : E → F
x : G
i : ℕ
⊢ ‖iteratedFDeriv 𝕜 i (f ∘ ↑g) x‖ = ‖iteratedFDeriv 𝕜 i f (↑g x)‖
[PROOFSTEP]
simp only [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
g : G ≃ₗᵢ[𝕜] E
f : E → F
x : G
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i (f ∘ ↑g) univ x‖ = ‖iteratedFDerivWithin 𝕜 i f univ (↑g x)‖
[PROOFSTEP]
apply g.norm_iteratedFDerivWithin_comp_right f uniqueDiffOn_univ (mem_univ (g x)) i
[GOAL]
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ ContDiffWithinAt 𝕜 n (f ∘ ↑e) (↑e ⁻¹' s) (↑(ContinuousLinearEquiv.symm e) x) ↔ ContDiffWithinAt 𝕜 n f s x
[PROOFSTEP]
constructor
[GOAL]
case mp
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ ContDiffWithinAt 𝕜 n (f ∘ ↑e) (↑e ⁻¹' s) (↑(ContinuousLinearEquiv.symm e) x) → ContDiffWithinAt 𝕜 n f s x
[PROOFSTEP]
intro H
[GOAL]
case mp
𝕜 : 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_2
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
e : G ≃L[𝕜] E
H : ContDiffWithinAt 𝕜 n (f ∘ ↑e) (↑e ⁻¹' s) (↑(ContinuousLinearEquiv.symm e) x)
⊢ ContDiffWithinAt 𝕜 n f s x
[PROOFSTEP]
simpa [← preimage_comp, (· ∘ ·)] using H.comp_continuousLinearMap (e.symm : E →L[𝕜] G)
[GOAL]
case mpr
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ ContDiffWithinAt 𝕜 n f s x → ContDiffWithinAt 𝕜 n (f ∘ ↑e) (↑e ⁻¹' s) (↑(ContinuousLinearEquiv.symm e) x)
[PROOFSTEP]
intro H
[GOAL]
case mpr
𝕜 : 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_2
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
e : G ≃L[𝕜] E
H : ContDiffWithinAt 𝕜 n f s x
⊢ ContDiffWithinAt 𝕜 n (f ∘ ↑e) (↑e ⁻¹' s) (↑(ContinuousLinearEquiv.symm e) x)
[PROOFSTEP]
rw [← e.apply_symm_apply x, ← e.coe_coe] at H
[GOAL]
case mpr
𝕜 : 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_2
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
e : G ≃L[𝕜] E
H : ContDiffWithinAt 𝕜 n f s (↑↑e (↑(ContinuousLinearEquiv.symm e) x))
⊢ ContDiffWithinAt 𝕜 n (f ∘ ↑e) (↑e ⁻¹' s) (↑(ContinuousLinearEquiv.symm e) x)
[PROOFSTEP]
exact H.comp_continuousLinearMap _
[GOAL]
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ ContDiffAt 𝕜 n (f ∘ ↑e) (↑(ContinuousLinearEquiv.symm e) x) ↔ ContDiffAt 𝕜 n f x
[PROOFSTEP]
rw [← contDiffWithinAt_univ, ← contDiffWithinAt_univ, ← preimage_univ]
[GOAL]
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ ContDiffWithinAt 𝕜 n (f ∘ ↑e) (?m.505075 ⁻¹' univ) (↑(ContinuousLinearEquiv.symm e) x) ↔ ContDiffWithinAt 𝕜 n f univ x
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ Type ?u.505072
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ G → ?m.505074
[PROOFSTEP]
exact e.contDiffWithinAt_comp_iff
[GOAL]
𝕜 : 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_2
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
e : G ≃L[𝕜] E
H : ContDiffOn 𝕜 n (f ∘ ↑e) (↑e ⁻¹' s)
⊢ ContDiffOn 𝕜 n f s
[PROOFSTEP]
simpa [(· ∘ ·)] using H.comp_continuousLinearMap (e.symm : E →L[𝕜] G)
[GOAL]
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ ContDiff 𝕜 n (f ∘ ↑e) ↔ ContDiff 𝕜 n f
[PROOFSTEP]
rw [← contDiffOn_univ, ← contDiffOn_univ, ← preimage_univ]
[GOAL]
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ ContDiffOn 𝕜 n (f ∘ ↑e) (?m.518842 ⁻¹' univ) ↔ ContDiffOn 𝕜 n f univ
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ Type ?u.518839
𝕜 : 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_2
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
e : G ≃L[𝕜] E
⊢ G → ?m.518841
[PROOFSTEP]
exact e.contDiffOn_comp_iff
[GOAL]
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : E → G
q : E → FormalMultilinearSeries 𝕜 E G
hg : HasFTaylorSeriesUpToOn n g q s
⊢ HasFTaylorSeriesUpToOn n (fun y => (f y, g y)) (fun y k => ContinuousMultilinearMap.prod (p y k) (q y k)) s
[PROOFSTEP]
set L := fun m => ContinuousMultilinearMap.prodL 𝕜 (fun _ : Fin m => E) F G
[GOAL]
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : E → G
q : E → FormalMultilinearSeries 𝕜 E G
hg : HasFTaylorSeriesUpToOn n g q s
L : (m : ℕ) →
  ContinuousMultilinearMap 𝕜 (fun x => E) F × ContinuousMultilinearMap 𝕜 (fun x => E) G ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun x => E) (F × G) :=
  fun m => ContinuousMultilinearMap.prodL 𝕜 (fun x => E) F G
⊢ HasFTaylorSeriesUpToOn n (fun y => (f y, g y)) (fun y k => ContinuousMultilinearMap.prod (p y k) (q y k)) s
[PROOFSTEP]
constructor
[GOAL]
case zero_eq
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : E → G
q : E → FormalMultilinearSeries 𝕜 E G
hg : HasFTaylorSeriesUpToOn n g q s
L : (m : ℕ) →
  ContinuousMultilinearMap 𝕜 (fun x => E) F × ContinuousMultilinearMap 𝕜 (fun x => E) G ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun x => E) (F × G) :=
  fun m => ContinuousMultilinearMap.prodL 𝕜 (fun x => E) F G
⊢ ∀ (x : E), x ∈ s → ContinuousMultilinearMap.uncurry0 (ContinuousMultilinearMap.prod (p x 0) (q x 0)) = (f x, g x)
[PROOFSTEP]
intro x hx
[GOAL]
case zero_eq
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : E → G
q : E → FormalMultilinearSeries 𝕜 E G
hg : HasFTaylorSeriesUpToOn n g q s
L : (m : ℕ) →
  ContinuousMultilinearMap 𝕜 (fun x => E) F × ContinuousMultilinearMap 𝕜 (fun x => E) G ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun x => E) (F × G) :=
  fun m => ContinuousMultilinearMap.prodL 𝕜 (fun x => E) F G
x : E
hx : x ∈ s
⊢ ContinuousMultilinearMap.uncurry0 (ContinuousMultilinearMap.prod (p x 0) (q x 0)) = (f x, g x)
[PROOFSTEP]
rw [← hf.zero_eq x hx, ← hg.zero_eq x hx]
[GOAL]
case zero_eq
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : E → G
q : E → FormalMultilinearSeries 𝕜 E G
hg : HasFTaylorSeriesUpToOn n g q s
L : (m : ℕ) →
  ContinuousMultilinearMap 𝕜 (fun x => E) F × ContinuousMultilinearMap 𝕜 (fun x => E) G ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun x => E) (F × G) :=
  fun m => ContinuousMultilinearMap.prodL 𝕜 (fun x => E) F G
x : E
hx : x ∈ s
⊢ ContinuousMultilinearMap.uncurry0 (ContinuousMultilinearMap.prod (p x 0) (q x 0)) =
    (ContinuousMultilinearMap.uncurry0 (p x 0), ContinuousMultilinearMap.uncurry0 (q x 0))
[PROOFSTEP]
rfl
[GOAL]
case fderivWithin
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : E → G
q : E → FormalMultilinearSeries 𝕜 E G
hg : HasFTaylorSeriesUpToOn n g q s
L : (m : ℕ) →
  ContinuousMultilinearMap 𝕜 (fun x => E) F × ContinuousMultilinearMap 𝕜 (fun x => E) G ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun x => E) (F × G) :=
  fun m => ContinuousMultilinearMap.prodL 𝕜 (fun x => E) F G
⊢ ∀ (m : ℕ),
    ↑m < n →
      ∀ (x : E),
        x ∈ s →
          HasFDerivWithinAt (fun x => ContinuousMultilinearMap.prod (p x m) (q x m))
            (ContinuousMultilinearMap.curryLeft (ContinuousMultilinearMap.prod (p x (Nat.succ m)) (q x (Nat.succ m)))) s
            x
[PROOFSTEP]
intro m hm x hx
[GOAL]
case fderivWithin
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : E → G
q : E → FormalMultilinearSeries 𝕜 E G
hg : HasFTaylorSeriesUpToOn n g q s
L : (m : ℕ) →
  ContinuousMultilinearMap 𝕜 (fun x => E) F × ContinuousMultilinearMap 𝕜 (fun x => E) G ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun x => E) (F × G) :=
  fun m => ContinuousMultilinearMap.prodL 𝕜 (fun x => E) F G
m : ℕ
hm : ↑m < n
x : E
hx : x ∈ s
⊢ HasFDerivWithinAt (fun x => ContinuousMultilinearMap.prod (p x m) (q x m))
    (ContinuousMultilinearMap.curryLeft (ContinuousMultilinearMap.prod (p x (Nat.succ m)) (q x (Nat.succ m)))) s x
[PROOFSTEP]
convert (L m).hasFDerivAt.comp_hasFDerivWithinAt x ((hf.fderivWithin m hm x hx).prod (hg.fderivWithin m hm x hx))
[GOAL]
case cont
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : E → G
q : E → FormalMultilinearSeries 𝕜 E G
hg : HasFTaylorSeriesUpToOn n g q s
L : (m : ℕ) →
  ContinuousMultilinearMap 𝕜 (fun x => E) F × ContinuousMultilinearMap 𝕜 (fun x => E) G ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun x => E) (F × G) :=
  fun m => ContinuousMultilinearMap.prodL 𝕜 (fun x => E) F G
⊢ ∀ (m : ℕ), ↑m ≤ n → ContinuousOn (fun x => ContinuousMultilinearMap.prod (p x m) (q x m)) s
[PROOFSTEP]
intro m hm
[GOAL]
case cont
𝕜 : 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_2
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
hf : HasFTaylorSeriesUpToOn n f p s
g : E → G
q : E → FormalMultilinearSeries 𝕜 E G
hg : HasFTaylorSeriesUpToOn n g q s
L : (m : ℕ) →
  ContinuousMultilinearMap 𝕜 (fun x => E) F × ContinuousMultilinearMap 𝕜 (fun x => E) G ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun x => E) (F × G) :=
  fun m => ContinuousMultilinearMap.prodL 𝕜 (fun x => E) F G
m : ℕ
hm : ↑m ≤ n
⊢ ContinuousOn (fun x => ContinuousMultilinearMap.prod (p x m) (q x m)) s
[PROOFSTEP]
exact (L m).continuous.comp_continuousOn ((hf.cont m hm).prod (hg.cont m hm))
[GOAL]
𝕜 : 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_2
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
s : Set E
f : E → F
g : E → G
hf : ContDiffWithinAt 𝕜 n f s x
hg : ContDiffWithinAt 𝕜 n g s x
⊢ ContDiffWithinAt 𝕜 n (fun x => (f x, g x)) s x
[PROOFSTEP]
intro m hm
[GOAL]
𝕜 : 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_2
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
s : Set E
f : E → F
g : E → G
hf : ContDiffWithinAt 𝕜 n f s x
hg : ContDiffWithinAt 𝕜 n g s x
m : ℕ
hm : ↑m ≤ n
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (fun x => (f x, g x)) p u
[PROOFSTEP]
rcases hf m hm with ⟨u, hu, p, hp⟩
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
s : Set E
f : E → F
g : E → G
hf : ContDiffWithinAt 𝕜 n f s x
hg : ContDiffWithinAt 𝕜 n g s x
m : ℕ
hm : ↑m ≤ n
u : Set E
hu : u ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries 𝕜 E F
hp : HasFTaylorSeriesUpToOn (↑m) f p u
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (fun x => (f x, g x)) p u
[PROOFSTEP]
rcases hg m hm with ⟨v, hv, q, hq⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
s : Set E
f : E → F
g : E → G
hf : ContDiffWithinAt 𝕜 n f s x
hg : ContDiffWithinAt 𝕜 n g s x
m : ℕ
hm : ↑m ≤ n
u : Set E
hu : u ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries 𝕜 E F
hp : HasFTaylorSeriesUpToOn (↑m) f p u
v : Set E
hv : v ∈ 𝓝[insert x s] x
q : E → FormalMultilinearSeries 𝕜 E G
hq : HasFTaylorSeriesUpToOn (↑m) g q v
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (fun x => (f x, g x)) p u
[PROOFSTEP]
exact ⟨u ∩ v, Filter.inter_mem hu hv, _, (hp.mono (inter_subset_left u v)).prod (hq.mono (inter_subset_right u v))⟩
[GOAL]
𝕜 : 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_2
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
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
induction' n using ENat.nat_induction with n IH Itop generalizing Eu Fu Gu
[GOAL]
case h0
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n g✝ t✝
hf✝ : ContDiffOn 𝕜 n f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg : ContDiffOn 𝕜 0 g t
hf : ContDiffOn 𝕜 0 f s
st : s ⊆ f ⁻¹' t
⊢ ContDiffOn 𝕜 0 (g ∘ f) s
[PROOFSTEP]
rw [contDiffOn_zero] at hf hg ⊢
[GOAL]
case h0
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n g✝ t✝
hf✝ : ContDiffOn 𝕜 n f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg : ContinuousOn g t
hf : ContinuousOn f s
st : s ⊆ f ⁻¹' t
⊢ ContinuousOn (g ∘ f) s
[PROOFSTEP]
exact ContinuousOn.comp hg hf st
[GOAL]
case hsuc
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
⊢ ContDiffOn 𝕜 (↑(Nat.succ n)) (g ∘ f) s
[PROOFSTEP]
rw [contDiffOn_succ_iff_hasFDerivWithinAt] at hg ⊢
[GOAL]
case hsuc
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
⊢ ∀ (x : Eu),
    x ∈ s →
      ∃ u,
        u ∈ 𝓝[insert x s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
intro x hx
[GOAL]
case hsuc
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
rcases(contDiffOn_succ_iff_hasFDerivWithinAt.1 hf) x hx with ⟨u, hu, f', hf', f'_diff⟩
[GOAL]
case hsuc.intro.intro.intro.intro
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[insert x s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
rcases hg (f x) (st hx) with ⟨v, hv, g', hg', g'_diff⟩
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[insert x s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
rw [insert_eq_of_mem hx] at hu ⊢
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
⊢ ∃ u, u ∈ 𝓝[s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
have xu : x ∈ u := mem_of_mem_nhdsWithin hx hu
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
⊢ ∃ u, u ∈ 𝓝[s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
let w := s ∩ (u ∩ f ⁻¹' v)
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
⊢ ∃ u, u ∈ 𝓝[s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
have wv : w ⊆ f ⁻¹' v := fun y hy => hy.2.2
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
⊢ ∃ u, u ∈ 𝓝[s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
have wu : w ⊆ u := fun y hy => hy.2.1
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
⊢ ∃ u, u ∈ 𝓝[s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
have ws : w ⊆ s := fun y hy => hy.1
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ∃ u, u ∈ 𝓝[s] x ∧ ∃ f', (∀ (x : Eu), x ∈ u → HasFDerivWithinAt (g ∘ f) (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
[PROOFSTEP]
refine' ⟨w, _, fun y => (g' (f y)).comp (f' y), _, _⟩
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ w ∈ 𝓝[s] x
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ∀ (x : Eu), x ∈ w → HasFDerivWithinAt (g ∘ f) ((fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) x) w x
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ContDiffOn 𝕜 (↑n) (fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) w
[PROOFSTEP]
show w ∈ 𝓝[s] x
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ w ∈ 𝓝[s] x
[PROOFSTEP]
apply Filter.inter_mem self_mem_nhdsWithin
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ u ∩ f ⁻¹' v ∈ 𝓝[s] x
[PROOFSTEP]
apply Filter.inter_mem hu
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ f ⁻¹' v ∈ 𝓝[s] x
[PROOFSTEP]
apply ContinuousWithinAt.preimage_mem_nhdsWithin'
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.h
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ContinuousWithinAt f s x
[PROOFSTEP]
rw [← continuousWithinAt_inter' hu]
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.h
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ContinuousWithinAt f (s ∩ u) x
[PROOFSTEP]
exact (hf' x xu).differentiableWithinAt.continuousWithinAt.mono (inter_subset_right _ _)
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.ht
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ v ∈ 𝓝[f '' s] f x
[PROOFSTEP]
apply nhdsWithin_mono _ _ hv
[GOAL]
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ f '' s ⊆ insert (f x) t
[PROOFSTEP]
exact Subset.trans (image_subset_iff.mpr st) (subset_insert (f x) t)
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ∀ (x : Eu), x ∈ w → HasFDerivWithinAt (g ∘ f) ((fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) x) w x
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ContDiffOn 𝕜 (↑n) (fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) w
[PROOFSTEP]
show ∀ y ∈ w, HasFDerivWithinAt (g ∘ f) ((g' (f y)).comp (f' y)) w y
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ∀ (y : Eu), y ∈ w → HasFDerivWithinAt (g ∘ f) (ContinuousLinearMap.comp (g' (f y)) (f' y)) w y
[PROOFSTEP]
rintro y ⟨-, yu, yv⟩
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.intro.intro
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
y : Eu
yu : y ∈ u
yv : y ∈ f ⁻¹' v
⊢ HasFDerivWithinAt (g ∘ f) (ContinuousLinearMap.comp (g' (f y)) (f' y)) w y
[PROOFSTEP]
exact (hg' (f y) yv).comp y ((hf' y yu).mono wu) wv
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ContDiffOn 𝕜 (↑n) (fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) w
[PROOFSTEP]
show ContDiffOn 𝕜 n (fun y => (g' (f y)).comp (f' y)) w
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
⊢ ContDiffOn 𝕜 (↑n) (fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) w
[PROOFSTEP]
have A : ContDiffOn 𝕜 n (fun y => g' (f y)) w :=
  IH g'_diff ((hf.of_le (WithTop.coe_le_coe.2 (Nat.le_succ n))).mono ws) wv
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
A : ContDiffOn 𝕜 (↑n) (fun y => g' (f y)) w
⊢ ContDiffOn 𝕜 (↑n) (fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) w
[PROOFSTEP]
have B : ContDiffOn 𝕜 n f' w := f'_diff.mono wu
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
A : ContDiffOn 𝕜 (↑n) (fun y => g' (f y)) w
B : ContDiffOn 𝕜 (↑n) f' w
⊢ ContDiffOn 𝕜 (↑n) (fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) w
[PROOFSTEP]
have C : ContDiffOn 𝕜 n (fun y => (g' (f y), f' y)) w := A.prod B
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
A : ContDiffOn 𝕜 (↑n) (fun y => g' (f y)) w
B : ContDiffOn 𝕜 (↑n) f' w
C : ContDiffOn 𝕜 (↑n) (fun y => (g' (f y), f' y)) w
⊢ ContDiffOn 𝕜 (↑n) (fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) w
[PROOFSTEP]
have D : ContDiffOn 𝕜 n (fun p : (Fu →L[𝕜] Gu) × (Eu →L[𝕜] Fu) => p.1.comp p.2) univ :=
  isBoundedBilinearMap_comp.contDiff.contDiffOn
[GOAL]
case hsuc.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n✝ g✝ t✝
hf✝ : ContDiffOn 𝕜 n✝ f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
n : ℕ
IH :
  ∀ {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg :
  ∀ (x : Fu),
    x ∈ t →
      ∃ u, u ∈ 𝓝[insert x t] x ∧ ∃ f', (∀ (x : Fu), x ∈ u → HasFDerivWithinAt g (f' x) u x) ∧ ContDiffOn 𝕜 (↑n) f' u
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
st : s ⊆ f ⁻¹' t
x : Eu
hx : x ∈ s
u : Set Eu
hu : u ∈ 𝓝[s] x
f' : Eu → Eu →L[𝕜] Fu
hf' : ∀ (x : Eu), x ∈ u → HasFDerivWithinAt f (f' x) u x
f'_diff : ContDiffOn 𝕜 (↑n) f' u
v : Set Fu
hv : v ∈ 𝓝[insert (f x) t] f x
g' : Fu → Fu →L[𝕜] Gu
hg' : ∀ (x : Fu), x ∈ v → HasFDerivWithinAt g (g' x) v x
g'_diff : ContDiffOn 𝕜 (↑n) g' v
xu : x ∈ u
w : Set Eu := s ∩ (u ∩ f ⁻¹' v)
wv : w ⊆ f ⁻¹' v
wu : w ⊆ u
ws : w ⊆ s
A : ContDiffOn 𝕜 (↑n) (fun y => g' (f y)) w
B : ContDiffOn 𝕜 (↑n) f' w
C : ContDiffOn 𝕜 (↑n) (fun y => (g' (f y), f' y)) w
D : ContDiffOn 𝕜 (↑n) (fun p => ContinuousLinearMap.comp p.fst p.snd) univ
⊢ ContDiffOn 𝕜 (↑n) (fun y => ContinuousLinearMap.comp (g' (f y)) (f' y)) w
[PROOFSTEP]
exact IH D C (subset_univ _)
[GOAL]
case htop
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n g✝ t✝
hf✝ : ContDiffOn 𝕜 n f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
Itop :
  ∀ (n : ℕ) {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg : ContDiffOn 𝕜 ⊤ g t
hf : ContDiffOn 𝕜 ⊤ f s
st : s ⊆ f ⁻¹' t
⊢ ContDiffOn 𝕜 ⊤ (g ∘ f) s
[PROOFSTEP]
rw [contDiffOn_top] at hf hg ⊢
[GOAL]
case htop
𝕜 : 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_2
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
Eu✝ : Type u
inst✝¹¹ : NormedAddCommGroup Eu✝
inst✝¹⁰ : NormedSpace 𝕜 Eu✝
Fu✝ : Type u
inst✝⁹ : NormedAddCommGroup Fu✝
inst✝⁸ : NormedSpace 𝕜 Fu✝
Gu✝ : Type u
inst✝⁷ : NormedAddCommGroup Gu✝
inst✝⁶ : NormedSpace 𝕜 Gu✝
s✝ : Set Eu✝
t✝ : Set Fu✝
g✝ : Fu✝ → Gu✝
f✝ : Eu✝ → Fu✝
hg✝ : ContDiffOn 𝕜 n g✝ t✝
hf✝ : ContDiffOn 𝕜 n f✝ s✝
st✝ : s✝ ⊆ f✝ ⁻¹' t✝
Itop :
  ∀ (n : ℕ) {Eu : Type u} [inst : NormedAddCommGroup Eu] [inst_1 : NormedSpace 𝕜 Eu] {Fu : Type u}
    [inst_2 : NormedAddCommGroup Fu] [inst_3 : NormedSpace 𝕜 Fu] {Gu : Type u} [inst_4 : NormedAddCommGroup Gu]
    [inst_5 : NormedSpace 𝕜 Gu] {s : Set Eu} {t : Set Fu} {g : Fu → Gu} {f : Eu → Fu},
    ContDiffOn 𝕜 (↑n) g t → ContDiffOn 𝕜 (↑n) f s → s ⊆ f ⁻¹' t → ContDiffOn 𝕜 (↑n) (g ∘ f) s
Eu : Type u
inst✝⁵ : NormedAddCommGroup Eu
inst✝⁴ : NormedSpace 𝕜 Eu
Fu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
s : Set Eu
t : Set Fu
g : Fu → Gu
f : Eu → Fu
hg : ∀ (n : ℕ), ContDiffOn 𝕜 (↑n) g t
hf : ∀ (n : ℕ), ContDiffOn 𝕜 (↑n) f s
st : s ⊆ f ⁻¹' t
⊢ ∀ (n : ℕ), ContDiffOn 𝕜 (↑n) (g ∘ f) s
[PROOFSTEP]
exact fun n => Itop n (hg n) (hf n) st
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
let Eu : Type max uE uF uG := ULift.{max uF uG} E
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
let Fu : Type max uE uF uG := ULift.{max uE uG} F
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
let Gu : Type max uE uF uG := ULift.{max uE uF} G
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
have isoE : Eu ≃L[𝕜] E := ContinuousLinearEquiv.ulift
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
have isoF : Fu ≃L[𝕜] F := ContinuousLinearEquiv.ulift
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
have isoG : Gu ≃L[𝕜] G := ContinuousLinearEquiv.ulift
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
let fu : Eu → Fu := (isoF.symm ∘ f) ∘ isoE
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
have fu_diff : ContDiffOn 𝕜 n fu (isoE ⁻¹' s) := by rwa [isoE.contDiffOn_comp_iff, isoF.symm.comp_contDiffOn_iff]
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
⊢ ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
[PROOFSTEP]
rwa [isoE.contDiffOn_comp_iff, isoF.symm.comp_contDiffOn_iff]
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
let gu : Fu → Gu := (isoG.symm ∘ g) ∘ isoF
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
have gu_diff : ContDiffOn 𝕜 n gu (isoF ⁻¹' t) := by rwa [isoF.contDiffOn_comp_iff, isoG.symm.comp_contDiffOn_iff]
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
⊢ ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
[PROOFSTEP]
rwa [isoF.contDiffOn_comp_iff, isoG.symm.comp_contDiffOn_iff]
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
have main : ContDiffOn 𝕜 n (gu ∘ fu) (isoE ⁻¹' s) :=
  by
  apply ContDiffOn.comp_same_univ gu_diff fu_diff
  intro y hy
  simp only [ContinuousLinearEquiv.coe_apply, Function.comp_apply, mem_preimage]
  rw [isoF.apply_symm_apply (f (isoE y))]
  exact st hy
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
⊢ ContDiffOn 𝕜 n (gu ∘ fu) (↑isoE ⁻¹' s)
[PROOFSTEP]
apply ContDiffOn.comp_same_univ gu_diff fu_diff
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
⊢ ↑isoE ⁻¹' s ⊆ fu ⁻¹' (↑isoF ⁻¹' t)
[PROOFSTEP]
intro y hy
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
y : Eu
hy : y ∈ ↑isoE ⁻¹' s
⊢ y ∈ fu ⁻¹' (↑isoF ⁻¹' t)
[PROOFSTEP]
simp only [ContinuousLinearEquiv.coe_apply, Function.comp_apply, mem_preimage]
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
y : Eu
hy : y ∈ ↑isoE ⁻¹' s
⊢ ↑isoF (↑(ContinuousLinearEquiv.symm isoF) (f (↑isoE y))) ∈ t
[PROOFSTEP]
rw [isoF.apply_symm_apply (f (isoE y))]
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
y : Eu
hy : y ∈ ↑isoE ⁻¹' s
⊢ f (↑isoE y) ∈ t
[PROOFSTEP]
exact st hy
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
main : ContDiffOn 𝕜 n (gu ∘ fu) (↑isoE ⁻¹' s)
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
have : gu ∘ fu = (isoG.symm ∘ g ∘ f) ∘ isoE := by
  ext y
  simp only [Function.comp_apply]
  rw [isoF.apply_symm_apply (f (isoE y))]
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
main : ContDiffOn 𝕜 n (gu ∘ fu) (↑isoE ⁻¹' s)
⊢ gu ∘ fu = (↑(ContinuousLinearEquiv.symm isoG) ∘ g ∘ f) ∘ ↑isoE
[PROOFSTEP]
ext y
[GOAL]
case h.h
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
main : ContDiffOn 𝕜 n (gu ∘ fu) (↑isoE ⁻¹' s)
y : Eu
⊢ ((gu ∘ fu) y).down = (((↑(ContinuousLinearEquiv.symm isoG) ∘ g ∘ f) ∘ ↑isoE) y).down
[PROOFSTEP]
simp only [Function.comp_apply]
[GOAL]
case h.h
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
main : ContDiffOn 𝕜 n (gu ∘ fu) (↑isoE ⁻¹' s)
y : Eu
⊢ (↑(ContinuousLinearEquiv.symm isoG) (g (↑isoF (↑(ContinuousLinearEquiv.symm isoF) (f (↑isoE y)))))).down =
    (↑(ContinuousLinearEquiv.symm isoG) (g (f (↑isoE y)))).down
[PROOFSTEP]
rw [isoF.apply_symm_apply (f (isoE y))]
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
hg : ContDiffOn 𝕜 n g t
hf : ContDiffOn 𝕜 n f s
st : s ⊆ f ⁻¹' t
Eu : Type (max uE uF uG) := ULift E
Fu : Type (max uE uF uG) := ULift F
Gu : Type (max uE uF uG) := ULift G
isoE : Eu ≃L[𝕜] E
isoF : Fu ≃L[𝕜] F
isoG : Gu ≃L[𝕜] G
fu : Eu → Fu := (↑(ContinuousLinearEquiv.symm isoF) ∘ f) ∘ ↑isoE
fu_diff : ContDiffOn 𝕜 n fu (↑isoE ⁻¹' s)
gu : Fu → Gu := (↑(ContinuousLinearEquiv.symm isoG) ∘ g) ∘ ↑isoF
gu_diff : ContDiffOn 𝕜 n gu (↑isoF ⁻¹' t)
main : ContDiffOn 𝕜 n (gu ∘ fu) (↑isoE ⁻¹' s)
this : gu ∘ fu = (↑(ContinuousLinearEquiv.symm isoG) ∘ g ∘ f) ∘ ↑isoE
⊢ ContDiffOn 𝕜 n (g ∘ f) s
[PROOFSTEP]
rwa [this, isoE.contDiffOn_comp_iff, isoG.symm.comp_contDiffOn_iff] at main
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
⊢ ContDiffWithinAt 𝕜 n (g ∘ f) s x
[PROOFSTEP]
intro m hm
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u
[PROOFSTEP]
rcases hg.contDiffOn hm with ⟨u, u_nhd, _, hu⟩
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u
[PROOFSTEP]
rcases hf.contDiffOn hm with ⟨v, v_nhd, vs, hv⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u
[PROOFSTEP]
have xmem : x ∈ f ⁻¹' u ∩ v :=
  ⟨(mem_of_mem_nhdsWithin (mem_insert (f x) _) u_nhd : _), mem_of_mem_nhdsWithin (mem_insert x s) v_nhd⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u
[PROOFSTEP]
have : f ⁻¹' u ∈ 𝓝[insert x s] x :=
  by
  apply hf.continuousWithinAt.insert_self.preimage_mem_nhdsWithin'
  apply nhdsWithin_mono _ _ u_nhd
  rw [image_insert_eq]
  exact insert_subset_insert (image_subset_iff.mpr st)
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
⊢ f ⁻¹' u ∈ 𝓝[insert x s] x
[PROOFSTEP]
apply hf.continuousWithinAt.insert_self.preimage_mem_nhdsWithin'
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
⊢ u ∈ 𝓝[f '' insert x s] f x
[PROOFSTEP]
apply nhdsWithin_mono _ _ u_nhd
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
⊢ f '' insert x s ⊆ insert (f x) t
[PROOFSTEP]
rw [image_insert_eq]
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
⊢ insert (f x) (f '' s) ⊆ insert (f x) t
[PROOFSTEP]
exact insert_subset_insert (image_subset_iff.mpr st)
[GOAL]
case intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
this : f ⁻¹' u ∈ 𝓝[insert x s] x
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u
[PROOFSTEP]
have Z := (hu.comp (hv.mono (inter_subset_right (f ⁻¹' u) v)) (inter_subset_left _ _)).contDiffWithinAt xmem m le_rfl
[GOAL]
case intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
this : f ⁻¹' u ∈ 𝓝[insert x s] x
Z : ∃ u_1, u_1 ∈ 𝓝[insert x (f ⁻¹' u ∩ v)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u_1
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u
[PROOFSTEP]
have : 𝓝[f ⁻¹' u ∩ v] x = 𝓝[insert x s] x :=
  by
  have A : f ⁻¹' u ∩ v = insert x s ∩ (f ⁻¹' u ∩ v) :=
    by
    apply Subset.antisymm _ (inter_subset_right _ _)
    rintro y ⟨hy1, hy2⟩
    simpa only [mem_inter_iff, mem_preimage, hy2, and_true, true_and, vs hy2] using hy1
  rw [A, ← nhdsWithin_restrict'']
  exact Filter.inter_mem this v_nhd
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
this : f ⁻¹' u ∈ 𝓝[insert x s] x
Z : ∃ u_1, u_1 ∈ 𝓝[insert x (f ⁻¹' u ∩ v)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u_1
⊢ 𝓝[f ⁻¹' u ∩ v] x = 𝓝[insert x s] x
[PROOFSTEP]
have A : f ⁻¹' u ∩ v = insert x s ∩ (f ⁻¹' u ∩ v) :=
  by
  apply Subset.antisymm _ (inter_subset_right _ _)
  rintro y ⟨hy1, hy2⟩
  simpa only [mem_inter_iff, mem_preimage, hy2, and_true, true_and, vs hy2] using hy1
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
this : f ⁻¹' u ∈ 𝓝[insert x s] x
Z : ∃ u_1, u_1 ∈ 𝓝[insert x (f ⁻¹' u ∩ v)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u_1
⊢ f ⁻¹' u ∩ v = insert x s ∩ (f ⁻¹' u ∩ v)
[PROOFSTEP]
apply Subset.antisymm _ (inter_subset_right _ _)
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
this : f ⁻¹' u ∈ 𝓝[insert x s] x
Z : ∃ u_1, u_1 ∈ 𝓝[insert x (f ⁻¹' u ∩ v)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u_1
⊢ f ⁻¹' u ∩ v ⊆ insert x s ∩ (f ⁻¹' u ∩ v)
[PROOFSTEP]
rintro y ⟨hy1, hy2⟩
[GOAL]
case intro
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
this : f ⁻¹' u ∈ 𝓝[insert x s] x
Z : ∃ u_1, u_1 ∈ 𝓝[insert x (f ⁻¹' u ∩ v)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u_1
y : E
hy1 : y ∈ f ⁻¹' u
hy2 : y ∈ v
⊢ y ∈ insert x s ∩ (f ⁻¹' u ∩ v)
[PROOFSTEP]
simpa only [mem_inter_iff, mem_preimage, hy2, and_true, true_and, vs hy2] using hy1
[GOAL]
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
this : f ⁻¹' u ∈ 𝓝[insert x s] x
Z : ∃ u_1, u_1 ∈ 𝓝[insert x (f ⁻¹' u ∩ v)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u_1
A : f ⁻¹' u ∩ v = insert x s ∩ (f ⁻¹' u ∩ v)
⊢ 𝓝[f ⁻¹' u ∩ v] x = 𝓝[insert x s] x
[PROOFSTEP]
rw [A, ← nhdsWithin_restrict'']
[GOAL]
case h
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
this : f ⁻¹' u ∈ 𝓝[insert x s] x
Z : ∃ u_1, u_1 ∈ 𝓝[insert x (f ⁻¹' u ∩ v)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u_1
A : f ⁻¹' u ∩ v = insert x s ∩ (f ⁻¹' u ∩ v)
⊢ f ⁻¹' u ∩ v ∈ 𝓝[insert x s] x
[PROOFSTEP]
exact Filter.inter_mem this v_nhd
[GOAL]
case intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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
s : Set E
t : Set F
g : F → G
f : E → F
x : E
hg : ContDiffWithinAt 𝕜 n g t (f x)
hf : ContDiffWithinAt 𝕜 n f s x
st : s ⊆ f ⁻¹' t
m : ℕ
hm : ↑m ≤ n
u : Set F
u_nhd : u ∈ 𝓝[insert (f x) t] f x
left✝ : u ⊆ insert (f x) t
hu : ContDiffOn 𝕜 (↑m) g u
v : Set E
v_nhd : v ∈ 𝓝[insert x s] x
vs : v ⊆ insert x s
hv : ContDiffOn 𝕜 (↑m) f v
xmem : x ∈ f ⁻¹' u ∩ v
this✝ : f ⁻¹' u ∈ 𝓝[insert x s] x
Z : ∃ u_1, u_1 ∈ 𝓝[insert x (f ⁻¹' u ∩ v)] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u_1
this : 𝓝[f ⁻¹' u ∩ v] x = 𝓝[insert x s] x
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) (g ∘ f) p u
[PROOFSTEP]
rwa [insert_eq_of_mem xmem, this] at Z
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
⊢ ∃ v,
    v ∈ 𝓝[insert x₀ s] x₀ ∧
      v ⊆ insert x₀ s ∧
        ∃ f', (∀ (x : E), x ∈ v → HasFDerivWithinAt (f x) (f' x) t (g x)) ∧ ContDiffWithinAt 𝕜 (↑n) (fun x => f' x) s x₀
[PROOFSTEP]
have hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀) :=
  by
  refine' nhdsWithin_mono _ _ (nhdsWithin_prod self_mem_nhdsWithin hgt)
  simp_rw [image_subset_iff, mk_preimage_prod, preimage_id', subset_inter_iff, subset_insert, true_and_iff,
    subset_preimage_image]
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
⊢ insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
[PROOFSTEP]
refine' nhdsWithin_mono _ _ (nhdsWithin_prod self_mem_nhdsWithin hgt)
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
⊢ (fun x => (x, g x)) '' s ⊆ insert x₀ s ×ˢ (g '' s)
[PROOFSTEP]
simp_rw [image_subset_iff, mk_preimage_prod, preimage_id', subset_inter_iff, subset_insert, true_and_iff,
  subset_preimage_image]
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
⊢ ∃ v,
    v ∈ 𝓝[insert x₀ s] x₀ ∧
      v ⊆ insert x₀ s ∧
        ∃ f', (∀ (x : E), x ∈ v → HasFDerivWithinAt (f x) (f' x) t (g x)) ∧ ContDiffWithinAt 𝕜 (↑n) (fun x => f' x) s x₀
[PROOFSTEP]
obtain ⟨v, hv, hvs, f', hvf', hf'⟩ := contDiffWithinAt_succ_iff_hasFDerivWithinAt'.mp hf
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
⊢ ∃ v,
    v ∈ 𝓝[insert x₀ s] x₀ ∧
      v ⊆ insert x₀ s ∧
        ∃ f', (∀ (x : E), x ∈ v → HasFDerivWithinAt (f x) (f' x) t (g x)) ∧ ContDiffWithinAt 𝕜 (↑n) (fun x => f' x) s x₀
[PROOFSTEP]
refine'
  ⟨(fun z => (z, g z)) ⁻¹' v ∩ insert x₀ s, _, inter_subset_right _ _, fun z =>
    (f' (z, g z)).comp (ContinuousLinearMap.inr 𝕜 E F), _, _⟩
[GOAL]
case intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
⊢ (fun z => (z, g z)) ⁻¹' v ∩ insert x₀ s ∈ 𝓝[insert x₀ s] x₀
[PROOFSTEP]
refine' inter_mem _ self_mem_nhdsWithin
[GOAL]
case intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
⊢ (fun z => (z, g z)) ⁻¹' v ∈ 𝓝[insert x₀ s] x₀
[PROOFSTEP]
have := mem_of_mem_nhdsWithin (mem_insert _ _) hv
[GOAL]
case intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
this : (x₀, g x₀) ∈ v
⊢ (fun z => (z, g z)) ⁻¹' v ∈ 𝓝[insert x₀ s] x₀
[PROOFSTEP]
refine' mem_nhdsWithin_insert.mpr ⟨this, _⟩
[GOAL]
case intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
this : (x₀, g x₀) ∈ v
⊢ (fun z => (z, g z)) ⁻¹' v ∈ 𝓝[s] x₀
[PROOFSTEP]
refine' (continuousWithinAt_id.prod hg.continuousWithinAt).preimage_mem_nhdsWithin' _
[GOAL]
case intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
this : (x₀, g x₀) ∈ v
⊢ v ∈ 𝓝[(fun x => (id x, g x)) '' s] (id x₀, g x₀)
[PROOFSTEP]
rw [← nhdsWithin_le_iff] at hst hv ⊢
[GOAL]
case intro.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀) ≤ 𝓝[insert x₀ s ×ˢ t] (x₀, g x₀)
v : Set (E × F)
hv : 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀) ≤ 𝓝[v] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
this : (x₀, g x₀) ∈ v
⊢ 𝓝[(fun x => (id x, g x)) '' s] (id x₀, g x₀) ≤ 𝓝[v] (id x₀, g x₀)
[PROOFSTEP]
refine' (hst.trans <| nhdsWithin_mono _ <| subset_insert _ _).trans hv
[GOAL]
case intro.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
⊢ ∀ (x : E),
    x ∈ (fun z => (z, g z)) ⁻¹' v ∩ insert x₀ s →
      HasFDerivWithinAt (f x) ((fun z => ContinuousLinearMap.comp (f' (z, g z)) (ContinuousLinearMap.inr 𝕜 E F)) x) t
        (g x)
[PROOFSTEP]
intro z hz
[GOAL]
case intro.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
z : E
hz : z ∈ (fun z => (z, g z)) ⁻¹' v ∩ insert x₀ s
⊢ HasFDerivWithinAt (f z) ((fun z => ContinuousLinearMap.comp (f' (z, g z)) (ContinuousLinearMap.inr 𝕜 E F)) z) t (g z)
[PROOFSTEP]
have := hvf' (z, g z) hz.1
[GOAL]
case intro.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
z : E
hz : z ∈ (fun z => (z, g z)) ⁻¹' v ∩ insert x₀ s
this : HasFDerivWithinAt (uncurry f) (f' (z, g z)) (insert x₀ s ×ˢ t) (z, g z)
⊢ HasFDerivWithinAt (f z) ((fun z => ContinuousLinearMap.comp (f' (z, g z)) (ContinuousLinearMap.inr 𝕜 E F)) z) t (g z)
[PROOFSTEP]
refine' this.comp _ (hasFDerivAt_prod_mk_right _ _).hasFDerivWithinAt _
[GOAL]
case intro.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
z : E
hz : z ∈ (fun z => (z, g z)) ⁻¹' v ∩ insert x₀ s
this : HasFDerivWithinAt (uncurry f) (f' (z, g z)) (insert x₀ s ×ˢ t) (z, g z)
⊢ MapsTo (Prod.mk z) t (insert x₀ s ×ˢ t)
[PROOFSTEP]
exact mapsTo'.mpr (image_prod_mk_subset_prod_right hz.2)
[GOAL]
case intro.intro.intro.intro.intro.refine'_3
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ
x₀ : E
hf : ContDiffWithinAt 𝕜 (↑n + 1) (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 (↑n) g s x₀
hgt : t ∈ 𝓝[g '' s] g x₀
hst : insert x₀ s ×ˢ t ∈ 𝓝[(fun x => (x, g x)) '' s] (x₀, g x₀)
v : Set (E × F)
hv : v ∈ 𝓝[insert (x₀, g x₀) (insert x₀ s ×ˢ t)] (x₀, g x₀)
hvs : v ⊆ insert (x₀, g x₀) (insert x₀ s ×ˢ t)
f' : E × F → E × F →L[𝕜] G
hvf' : ∀ (x : E × F), x ∈ v → HasFDerivWithinAt (uncurry f) (f' x) (insert x₀ s ×ˢ t) x
hf' : ContDiffWithinAt 𝕜 (↑↑n) f' (insert x₀ s ×ˢ t) (x₀, g x₀)
⊢ ContDiffWithinAt 𝕜 (↑n) (fun x => (fun z => ContinuousLinearMap.comp (f' (z, g z)) (ContinuousLinearMap.inr 𝕜 E F)) x)
    s x₀
[PROOFSTEP]
exact
  (hf'.continuousLinearMap_comp <|
        (ContinuousLinearMap.compL 𝕜 F (E × F) G).flip (ContinuousLinearMap.inr 𝕜 E F)).comp_of_mem
    x₀ (contDiffWithinAt_id.prod hg) hst
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hmn : m + 1 ≤ n
hgt : t ∈ 𝓝[g '' s] g x₀
⊢ ContDiffWithinAt 𝕜 m (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
have : ∀ k : ℕ, (k : ℕ∞) ≤ m → ContDiffWithinAt 𝕜 k (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀ := fun k hkm ↦
  by
  obtain ⟨v, hv, -, f', hvf', hf'⟩ :=
    (hf.of_le <| (add_le_add_right hkm 1).trans hmn).hasFDerivWithinAt_nhds (hg.of_le hkm) hgt
  refine hf'.congr_of_eventuallyEq_insert ?_
  filter_upwards [hv, ht]
  exact fun y hy h2y => (hvf' y hy).fderivWithin h2y
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hmn : m + 1 ≤ n
hgt : t ∈ 𝓝[g '' s] g x₀
k : ℕ
hkm : ↑k ≤ m
⊢ ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
obtain ⟨v, hv, -, f', hvf', hf'⟩ :=
  (hf.of_le <| (add_le_add_right hkm 1).trans hmn).hasFDerivWithinAt_nhds (hg.of_le hkm) hgt
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hmn : m + 1 ≤ n
hgt : t ∈ 𝓝[g '' s] g x₀
k : ℕ
hkm : ↑k ≤ m
v : Set E
hv : v ∈ 𝓝[insert x₀ s] x₀
f' : E → F →L[𝕜] G
hvf' : ∀ (x : E), x ∈ v → HasFDerivWithinAt (f x) (f' x) t (g x)
hf' : ContDiffWithinAt 𝕜 (↑k) (fun x => f' x) s x₀
⊢ ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
refine hf'.congr_of_eventuallyEq_insert ?_
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hmn : m + 1 ≤ n
hgt : t ∈ 𝓝[g '' s] g x₀
k : ℕ
hkm : ↑k ≤ m
v : Set E
hv : v ∈ 𝓝[insert x₀ s] x₀
f' : E → F →L[𝕜] G
hvf' : ∀ (x : E), x ∈ v → HasFDerivWithinAt (f x) (f' x) t (g x)
hf' : ContDiffWithinAt 𝕜 (↑k) (fun x => f' x) s x₀
⊢ (fun x => fderivWithin 𝕜 (f x) t (g x)) =ᶠ[𝓝[insert x₀ s] x₀] fun x => f' x
[PROOFSTEP]
filter_upwards [hv, ht]
[GOAL]
case h
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hmn : m + 1 ≤ n
hgt : t ∈ 𝓝[g '' s] g x₀
k : ℕ
hkm : ↑k ≤ m
v : Set E
hv : v ∈ 𝓝[insert x₀ s] x₀
f' : E → F →L[𝕜] G
hvf' : ∀ (x : E), x ∈ v → HasFDerivWithinAt (f x) (f' x) t (g x)
hf' : ContDiffWithinAt 𝕜 (↑k) (fun x => f' x) s x₀
⊢ ∀ (a : E), a ∈ v → UniqueDiffWithinAt 𝕜 t (g a) → fderivWithin 𝕜 (f a) t (g a) = f' a
[PROOFSTEP]
exact fun y hy h2y => (hvf' y hy).fderivWithin h2y
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hmn : m + 1 ≤ n
hgt : t ∈ 𝓝[g '' s] g x₀
this : ∀ (k : ℕ), ↑k ≤ m → ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
⊢ ContDiffWithinAt 𝕜 m (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
induction' m using WithTop.recTopCoe with m
[GOAL]
case top
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg✝ : ContDiffWithinAt 𝕜 m g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hmn✝ : m + 1 ≤ n
hgt : t ∈ 𝓝[g '' s] g x₀
this✝ : ∀ (k : ℕ), ↑k ≤ m → ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
hg : ContDiffWithinAt 𝕜 ⊤ g s x₀
hmn : ⊤ + 1 ≤ n
this : ∀ (k : ℕ), ↑k ≤ ⊤ → ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
⊢ ContDiffWithinAt 𝕜 ⊤ (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
obtain rfl := eq_top_iff.mpr hmn
[GOAL]
case top
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
hg✝ : ContDiffWithinAt 𝕜 m g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hgt : t ∈ 𝓝[g '' s] g x₀
this✝ : ∀ (k : ℕ), ↑k ≤ m → ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
hg : ContDiffWithinAt 𝕜 ⊤ g s x₀
this : ∀ (k : ℕ), ↑k ≤ ⊤ → ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
hf : ContDiffWithinAt 𝕜 ⊤ (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hmn✝ : m + 1 ≤ ⊤
hmn : ⊤ + 1 ≤ ⊤
⊢ ContDiffWithinAt 𝕜 ⊤ (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
rw [contDiffWithinAt_top]
[GOAL]
case top
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
hg✝ : ContDiffWithinAt 𝕜 m g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hgt : t ∈ 𝓝[g '' s] g x₀
this✝ : ∀ (k : ℕ), ↑k ≤ m → ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
hg : ContDiffWithinAt 𝕜 ⊤ g s x₀
this : ∀ (k : ℕ), ↑k ≤ ⊤ → ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
hf : ContDiffWithinAt 𝕜 ⊤ (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hmn✝ : m + 1 ≤ ⊤
hmn : ⊤ + 1 ≤ ⊤
⊢ ∀ (n : ℕ), ContDiffWithinAt 𝕜 (↑n) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
exact fun m => this m le_top
[GOAL]
case coe
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg✝ : ContDiffWithinAt 𝕜 m✝ g s x₀
ht : ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
hmn✝ : m✝ + 1 ≤ n
hgt : t ∈ 𝓝[g '' s] g x₀
this✝ : ∀ (k : ℕ), ↑k ≤ m✝ → ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
m : ℕ
hg : ContDiffWithinAt 𝕜 (↑m) g s x₀
hmn : ↑m + 1 ≤ n
this : ∀ (k : ℕ), ↑k ≤ ↑m → ContDiffWithinAt 𝕜 (↑k) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
⊢ ContDiffWithinAt 𝕜 (↑m) (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
exact this _ le_rfl
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : UniqueDiffOn 𝕜 t
hmn : m + 1 ≤ n
hx₀ : x₀ ∈ s
hst : s ⊆ g ⁻¹' t
⊢ ContDiffWithinAt 𝕜 m (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
rw [← insert_eq_self.mpr hx₀] at hf
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : UniqueDiffOn 𝕜 t
hmn : m + 1 ≤ n
hx₀ : x₀ ∈ s
hst : s ⊆ g ⁻¹' t
⊢ ContDiffWithinAt 𝕜 m (fun x => fderivWithin 𝕜 (f x) t (g x)) s x₀
[PROOFSTEP]
refine' hf.fderivWithin' hg _ hmn hst
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : UniqueDiffOn 𝕜 t
hmn : m + 1 ≤ n
hx₀ : x₀ ∈ s
hst : s ⊆ g ⁻¹' t
⊢ ∀ᶠ (x : E) in 𝓝[insert x₀ s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
[PROOFSTEP]
rw [insert_eq_self.mpr hx₀]
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
t : Set F
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n (uncurry f) (insert x₀ s ×ˢ t) (x₀, g x₀)
hg : ContDiffWithinAt 𝕜 m g s x₀
ht : UniqueDiffOn 𝕜 t
hmn : m + 1 ≤ n
hx₀ : x₀ ∈ s
hst : s ⊆ g ⁻¹' t
⊢ ∀ᶠ (x : E) in 𝓝[s] x₀, UniqueDiffWithinAt 𝕜 t (g x)
[PROOFSTEP]
exact eventually_of_mem self_mem_nhdsWithin fun x hx => ht _ (hst hx)
[GOAL]
𝕜 : 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_2
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
hf : ContDiffWithinAt 𝕜 n f s x₀
hs : UniqueDiffOn 𝕜 s
hmn : m + 1 ≤ n
hx₀s : x₀ ∈ s
⊢ s ⊆ (fun x => x) ⁻¹' s
[PROOFSTEP]
rw [preimage_id']
[GOAL]
𝕜 : 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_2
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
i : ℕ
hf : ContDiffWithinAt 𝕜 n f s x₀
hs : UniqueDiffOn 𝕜 s
hmn : m + ↑i ≤ n
hx₀s : x₀ ∈ s
⊢ ContDiffWithinAt 𝕜 m (iteratedFDerivWithin 𝕜 i f s) s x₀
[PROOFSTEP]
induction' i with i hi generalizing m
[GOAL]
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_2
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
i : ℕ
hf : ContDiffWithinAt 𝕜 n f s x₀
hs : UniqueDiffOn 𝕜 s
hmn✝ : m✝ + ↑i ≤ n
hx₀s : x₀ ∈ s
m : ℕ∞
hmn : m + ↑Nat.zero ≤ n
⊢ ContDiffWithinAt 𝕜 m (iteratedFDerivWithin 𝕜 Nat.zero f s) s x₀
[PROOFSTEP]
rw [Nat.zero_eq, ENat.coe_zero, add_zero] at hmn
[GOAL]
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_2
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
i : ℕ
hf : ContDiffWithinAt 𝕜 n f s x₀
hs : UniqueDiffOn 𝕜 s
hmn✝ : m✝ + ↑i ≤ n
hx₀s : x₀ ∈ s
m : ℕ∞
hmn : m ≤ n
⊢ ContDiffWithinAt 𝕜 m (iteratedFDerivWithin 𝕜 Nat.zero f s) s x₀
[PROOFSTEP]
exact (hf.of_le hmn).continuousLinearMap_comp ((continuousMultilinearCurryFin0 𝕜 E F).symm : _ →L[𝕜] E[×0]→L[𝕜] F)
[GOAL]
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_2
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
i✝ : ℕ
hf : ContDiffWithinAt 𝕜 n f s x₀
hs : UniqueDiffOn 𝕜 s
hmn✝ : m✝ + ↑i✝ ≤ n
hx₀s : x₀ ∈ s
i : ℕ
hi : ∀ {m : ℕ∞}, m + ↑i ≤ n → ContDiffWithinAt 𝕜 m (iteratedFDerivWithin 𝕜 i f s) s x₀
m : ℕ∞
hmn : m + ↑(Nat.succ i) ≤ n
⊢ ContDiffWithinAt 𝕜 m (iteratedFDerivWithin 𝕜 (Nat.succ i) f s) s x₀
[PROOFSTEP]
rw [Nat.cast_succ, add_comm _ 1, ← add_assoc] at hmn
[GOAL]
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_2
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
i✝ : ℕ
hf : ContDiffWithinAt 𝕜 n f s x₀
hs : UniqueDiffOn 𝕜 s
hmn✝ : m✝ + ↑i✝ ≤ n
hx₀s : x₀ ∈ s
i : ℕ
hi : ∀ {m : ℕ∞}, m + ↑i ≤ n → ContDiffWithinAt 𝕜 m (iteratedFDerivWithin 𝕜 i f s) s x₀
m : ℕ∞
hmn : m + 1 + ↑i ≤ n
⊢ ContDiffWithinAt 𝕜 m (iteratedFDerivWithin 𝕜 (Nat.succ i) f s) s x₀
[PROOFSTEP]
exact
  ((hi hmn).fderivWithin_right hs le_rfl hx₀s).continuousLinearMap_comp
    (continuousMultilinearCurryLeftEquiv 𝕜 (fun _ : Fin (i + 1) ↦ E) F : _ →L[𝕜] E[×(i + 1)]→L[𝕜] F)
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
n : ℕ∞
hf : ContDiffAt 𝕜 n (uncurry f) (x₀, g x₀)
hg : ContDiffAt 𝕜 m g x₀
hmn : m + 1 ≤ n
⊢ ContDiffAt 𝕜 m (fun x => fderiv 𝕜 (f x) (g x)) x₀
[PROOFSTEP]
simp_rw [← fderivWithin_univ]
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
n : ℕ∞
hf : ContDiffAt 𝕜 n (uncurry f) (x₀, g x₀)
hg : ContDiffAt 𝕜 m g x₀
hmn : m + 1 ≤ n
⊢ ContDiffAt 𝕜 m (fun x => fderivWithin 𝕜 (f x) univ (g x)) x₀
[PROOFSTEP]
refine
  (ContDiffWithinAt.fderivWithin hf.contDiffWithinAt hg.contDiffWithinAt uniqueDiffOn_univ hmn (mem_univ x₀)
        ?_).contDiffAt
    univ_mem
[GOAL]
𝕜 : 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_2
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
f : E → F → G
g : E → F
n : ℕ∞
hf : ContDiffAt 𝕜 n (uncurry f) (x₀, g x₀)
hg : ContDiffAt 𝕜 m g x₀
hmn : m + 1 ≤ n
⊢ univ ⊆ g ⁻¹' univ
[PROOFSTEP]
rw [preimage_univ]
[GOAL]
𝕜 : 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_2
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
i : ℕ
hf : ContDiffAt 𝕜 n f x₀
hmn : m + ↑i ≤ n
⊢ ContDiffAt 𝕜 m (iteratedFDeriv 𝕜 i f) x₀
[PROOFSTEP]
rw [← iteratedFDerivWithin_univ, ← contDiffWithinAt_univ] at *
[GOAL]
𝕜 : 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_2
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
i : ℕ
hf : ContDiffWithinAt 𝕜 n f univ x₀
hmn : m + ↑i ≤ n
⊢ ContDiffWithinAt 𝕜 m (iteratedFDerivWithin 𝕜 i f univ) univ x₀
[PROOFSTEP]
exact hf.iteratedFderivWithin_right uniqueDiffOn_univ hmn trivial
[GOAL]
𝕜 : 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_2
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
hf : ContDiffOn 𝕜 n f s
hs : UniqueDiffOn 𝕜 s
hn : 1 ≤ n
⊢ ?m.1105459 hf hs hn + 1 ≤ n
[PROOFSTEP]
rwa [zero_add]
[GOAL]
𝕜 : 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_2
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
f : E → F
hf : ContDiff 𝕜 n f
hmn : m + 1 ≤ n
⊢ ContDiff 𝕜 m fun p => ↑(fderiv 𝕜 f p.fst) p.snd
[PROOFSTEP]
rw [← contDiffOn_univ] at hf ⊢
[GOAL]
𝕜 : 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_2
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
f : E → F
hf : ContDiffOn 𝕜 n f univ
hmn : m + 1 ≤ n
⊢ ContDiffOn 𝕜 m (fun p => ↑(fderiv 𝕜 f p.fst) p.snd) univ
[PROOFSTEP]
rw [← fderivWithin_univ, ← univ_prod_univ]
[GOAL]
𝕜 : 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_2
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
f : E → F
hf : ContDiffOn 𝕜 n f univ
hmn : m + 1 ≤ n
⊢ ContDiffOn 𝕜 m (fun p => ↑(fderivWithin 𝕜 f univ p.fst) p.snd) (univ ×ˢ univ)
[PROOFSTEP]
exact contDiffOn_fderivWithin_apply hf uniqueDiffOn_univ hmn
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
⊢ HasFTaylorSeriesUpToOn n (fun x i => φ i x) (fun x m => ContinuousMultilinearMap.pi fun i => p' i x m) s ↔
    ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
[PROOFSTEP]
set pr := @ContinuousLinearMap.proj 𝕜 _ ι F' _ _ _
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
⊢ HasFTaylorSeriesUpToOn n (fun x i => φ i x) (fun x m => ContinuousMultilinearMap.pi fun i => p' i x m) s ↔
    ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
[PROOFSTEP]
letI : ∀ (m : ℕ) (i : ι), NormedSpace 𝕜 (E[×m]→L[𝕜] F' i) := fun m i => inferInstance
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
⊢ HasFTaylorSeriesUpToOn n (fun x i => φ i x) (fun x m => ContinuousMultilinearMap.pi fun i => p' i x m) s ↔
    ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
[PROOFSTEP]
set L : ∀ m : ℕ, (∀ i, E[×m]→L[𝕜] F' i) ≃ₗᵢ[𝕜] E[×m]→L[𝕜] ∀ i, F' i := fun m => ContinuousMultilinearMap.piₗᵢ _ _
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
⊢ HasFTaylorSeriesUpToOn n (fun x i => φ i x) (fun x m => ContinuousMultilinearMap.pi fun i => p' i x m) s ↔
    ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
[PROOFSTEP]
refine' ⟨fun h i => _, fun h => ⟨fun x hx => _, _, _⟩⟩
[GOAL]
case refine'_1
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
h : HasFTaylorSeriesUpToOn n (fun x i => φ i x) (fun x m => ContinuousMultilinearMap.pi fun i => p' i x m) s
i : ι
⊢ HasFTaylorSeriesUpToOn n (φ i) (p' i) s
[PROOFSTEP]
convert h.continuousLinearMap_comp (pr i)
[GOAL]
case refine'_2
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
h : ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
x : E
hx : x ∈ s
⊢ ContinuousMultilinearMap.uncurry0 (ContinuousMultilinearMap.pi fun i => p' i x 0) = fun i => φ i x
[PROOFSTEP]
ext1 i
[GOAL]
case refine'_2.h
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
h : ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
x : E
hx : x ∈ s
i : ι
⊢ ContinuousMultilinearMap.uncurry0 (ContinuousMultilinearMap.pi fun i => p' i x 0) i = φ i x
[PROOFSTEP]
exact (h i).zero_eq x hx
[GOAL]
case refine'_3
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
h : ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
⊢ ∀ (m : ℕ),
    ↑m < n →
      ∀ (x : E),
        x ∈ s →
          HasFDerivWithinAt (fun x => ContinuousMultilinearMap.pi fun i => p' i x m)
            (ContinuousMultilinearMap.curryLeft (ContinuousMultilinearMap.pi fun i => p' i x (Nat.succ m))) s x
[PROOFSTEP]
intro m hm x hx
[GOAL]
case refine'_3
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
h : ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
m : ℕ
hm : ↑m < n
x : E
hx : x ∈ s
⊢ HasFDerivWithinAt (fun x => ContinuousMultilinearMap.pi fun i => p' i x m)
    (ContinuousMultilinearMap.curryLeft (ContinuousMultilinearMap.pi fun i => p' i x (Nat.succ m))) s x
[PROOFSTEP]
have := hasFDerivWithinAt_pi.2 fun i => (h i).fderivWithin m hm x hx
[GOAL]
case refine'_3
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this✝ : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
h : ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
m : ℕ
hm : ↑m < n
x : E
hx : x ∈ s
this :
  HasFDerivWithinAt (fun x i => p' i x m)
    (ContinuousLinearMap.pi fun i => ContinuousMultilinearMap.curryLeft (p' i x (Nat.succ m))) s x
⊢ HasFDerivWithinAt (fun x => ContinuousMultilinearMap.pi fun i => p' i x m)
    (ContinuousMultilinearMap.curryLeft (ContinuousMultilinearMap.pi fun i => p' i x (Nat.succ m))) s x
[PROOFSTEP]
convert (L m).hasFDerivAt.comp_hasFDerivWithinAt x this
[GOAL]
case refine'_4
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
h : ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
⊢ ∀ (m : ℕ), ↑m ≤ n → ContinuousOn (fun x => ContinuousMultilinearMap.pi fun i => p' i x m) s
[PROOFSTEP]
intro m hm
[GOAL]
case refine'_4
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
h : ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
m : ℕ
hm : ↑m ≤ n
⊢ ContinuousOn (fun x => ContinuousMultilinearMap.pi fun i => p' i x m) s
[PROOFSTEP]
have := continuousOn_pi.2 fun i => (h i).cont m hm
[GOAL]
case refine'_4
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
this✝ : (m : ℕ) → (i : ι) → NormedSpace 𝕜 (ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) := fun m i => inferInstance
L : (m : ℕ) →
  ((i : ι) → ContinuousMultilinearMap 𝕜 (fun i => E) (F' i)) ≃ₗᵢ[𝕜]
    ContinuousMultilinearMap 𝕜 (fun i => E) ((i : ι) → F' i) :=
  fun m => ContinuousMultilinearMap.piₗᵢ 𝕜 fun i => E
h : ∀ (i : ι), HasFTaylorSeriesUpToOn n (φ i) (p' i) s
m : ℕ
hm : ↑m ≤ n
this : ContinuousOn (fun y i => p' i y m) s
⊢ ContinuousOn (fun x => ContinuousMultilinearMap.pi fun i => p' i x m) s
[PROOFSTEP]
convert (L m).continuous.comp_continuousOn this
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
⊢ HasFTaylorSeriesUpToOn n Φ P' s ↔
    ∀ (i : ι),
      HasFTaylorSeriesUpToOn n (fun x => Φ x i)
        (fun x m => ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.proj i) (P' x m)) s
[PROOFSTEP]
convert hasFTaylorSeriesUpToOn_pi (𝕜 := 𝕜) (φ := fun i x ↦ Φ x i)
[GOAL]
case h.e'_1.h.e'_11.h.h
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
x✝¹ : E
x✝ : ℕ
⊢ P' x✝¹ x✝ =
    ContinuousMultilinearMap.pi fun i =>
      ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.proj i) (P' x✝¹ x✝)
[PROOFSTEP]
ext
[GOAL]
case h.e'_1.h.e'_11.h.h.H.h
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
x✝³ : E
x✝² : ℕ
x✝¹ : Fin x✝² → E
x✝ : ι
⊢ ↑(P' x✝³ x✝²) x✝¹ x✝ =
    ↑(ContinuousMultilinearMap.pi fun i =>
          ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.proj i) (P' x✝³ x✝²))
      x✝¹ x✝
[PROOFSTEP]
rfl
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
⊢ ContDiffWithinAt 𝕜 n Φ s x ↔ ∀ (i : ι), ContDiffWithinAt 𝕜 n (fun x => Φ x i) s x
[PROOFSTEP]
set pr := @ContinuousLinearMap.proj 𝕜 _ ι F' _ _ _
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
⊢ ContDiffWithinAt 𝕜 n Φ s x ↔ ∀ (i : ι), ContDiffWithinAt 𝕜 n (fun x => Φ x i) s x
[PROOFSTEP]
refine' ⟨fun h i => h.continuousLinearMap_comp (pr i), fun h m hm => _⟩
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
h : ∀ (i : ι), ContDiffWithinAt 𝕜 n (fun x => Φ x i) s x
m : ℕ
hm : ↑m ≤ n
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) Φ p u
[PROOFSTEP]
choose u hux p hp using fun i => h i m hm
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
pr : (i : ι) → ((i : ι) → F' i) →L[𝕜] F' i := ContinuousLinearMap.proj
h : ∀ (i : ι), ContDiffWithinAt 𝕜 n (fun x => Φ x i) s x
m : ℕ
hm : ↑m ≤ n
u : ι → Set E
hux : ∀ (i : ι), u i ∈ 𝓝[insert x s] x
p : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
hp : ∀ (i : ι), HasFTaylorSeriesUpToOn (↑m) (fun x => Φ x i) (p i) (u i)
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) Φ p u
[PROOFSTEP]
exact ⟨⋂ i, u i, Filter.iInter_mem.2 hux, _, hasFTaylorSeriesUpToOn_pi.2 fun i => (hp i).mono <| iInter_subset _ _⟩
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
⊢ ContDiff 𝕜 n Φ ↔ ∀ (i : ι), ContDiff 𝕜 n fun x => Φ x i
[PROOFSTEP]
simp only [← contDiffOn_univ, contDiffOn_pi]
[GOAL]
𝕜 : 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_2
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
q : E → FormalMultilinearSeries 𝕜 E F
g : E → F
hf : HasFTaylorSeriesUpToOn n f p s
hg : HasFTaylorSeriesUpToOn n g q s
⊢ HasFTaylorSeriesUpToOn n (f + g) (p + q) s
[PROOFSTEP]
convert
  HasFTaylorSeriesUpToOn.continuousLinearMap_comp (ContinuousLinearMap.fst 𝕜 F F + .snd 𝕜 F F)
    (hf.prod hg)
      -- The sum is smooth.
[GOAL]
𝕜 : 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_2
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
f g : E → F
hf : ContDiffAt 𝕜 n f x
hg : ContDiffAt 𝕜 n g x
⊢ ContDiffAt 𝕜 n (fun x => f x + g x) x
[PROOFSTEP]
rw [← contDiffWithinAt_univ] at *
[GOAL]
𝕜 : 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_2
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
f g : E → F
hf : ContDiffWithinAt 𝕜 n f univ x
hg : ContDiffWithinAt 𝕜 n g univ x
⊢ ContDiffWithinAt 𝕜 n (fun x => f x + g x) univ x
[PROOFSTEP]
exact hf.add hg
[GOAL]
𝕜 : 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_2
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
i✝ i : ℕ
f g : E → F
hf : ContDiff 𝕜 (↑i) f
hg : ContDiff 𝕜 (↑i) g
⊢ iteratedFDeriv 𝕜 i (f + g) x = iteratedFDeriv 𝕜 i f x + iteratedFDeriv 𝕜 i g x
[PROOFSTEP]
simp_rw [← contDiffOn_univ, ← iteratedFDerivWithin_univ] at hf hg ⊢
[GOAL]
𝕜 : 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_2
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
i✝ i : ℕ
f g : E → F
hf : ContDiffOn 𝕜 (↑i) f univ
hg : ContDiffOn 𝕜 (↑i) g univ
⊢ iteratedFDerivWithin 𝕜 i (f + g) univ x = iteratedFDerivWithin 𝕜 i f univ x + iteratedFDerivWithin 𝕜 i g univ x
[PROOFSTEP]
exact iteratedFDerivWithin_add_apply hf hg uniqueDiffOn_univ (Set.mem_univ _)
[GOAL]
𝕜 : 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_2
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
f : E → F
hf : ContDiffAt 𝕜 n f x
⊢ ContDiffAt 𝕜 n (fun x => -f x) x
[PROOFSTEP]
rw [← contDiffWithinAt_univ] at *
[GOAL]
𝕜 : 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_2
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
f : E → F
hf : ContDiffWithinAt 𝕜 n f univ x
⊢ ContDiffWithinAt 𝕜 n (fun x => -f x) univ x
[PROOFSTEP]
exact hf.neg
[GOAL]
𝕜 : 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_2
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
i : ℕ
f : E → F
hu : UniqueDiffOn 𝕜 s
hx : x ∈ s
⊢ iteratedFDerivWithin 𝕜 i (-f) s x = -iteratedFDerivWithin 𝕜 i f s x
[PROOFSTEP]
induction' i with i hi generalizing x
[GOAL]
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_2
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
i : ℕ
f : E → F
hu : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
x : E
hx : x ∈ s
⊢ iteratedFDerivWithin 𝕜 Nat.zero (-f) s x = -iteratedFDerivWithin 𝕜 Nat.zero f s x
[PROOFSTEP]
ext
[GOAL]
case zero.H
𝕜 : 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_2
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
i : ℕ
f : E → F
hu : UniqueDiffOn 𝕜 s
hx✝ : x✝¹ ∈ s
x : E
hx : x ∈ s
x✝ : Fin Nat.zero → E
⊢ ↑(iteratedFDerivWithin 𝕜 Nat.zero (-f) s x) x✝ = ↑(-iteratedFDerivWithin 𝕜 Nat.zero f s x) x✝
[PROOFSTEP]
simp
[GOAL]
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_2
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
i✝ : ℕ
f : E → F
hu : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
hi : ∀ {x : E}, x ∈ s → iteratedFDerivWithin 𝕜 i (-f) s x = -iteratedFDerivWithin 𝕜 i f s x
x : E
hx : x ∈ s
⊢ iteratedFDerivWithin 𝕜 (Nat.succ i) (-f) s x = -iteratedFDerivWithin 𝕜 (Nat.succ i) f s x
[PROOFSTEP]
ext h
[GOAL]
case succ.H
𝕜 : 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_2
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
i✝ : ℕ
f : E → F
hu : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
hi : ∀ {x : E}, x ∈ s → iteratedFDerivWithin 𝕜 i (-f) s x = -iteratedFDerivWithin 𝕜 i f s x
x : E
hx : x ∈ s
h : Fin (Nat.succ i) → E
⊢ ↑(iteratedFDerivWithin 𝕜 (Nat.succ i) (-f) s x) h = ↑(-iteratedFDerivWithin 𝕜 (Nat.succ i) f s x) h
[PROOFSTEP]
calc
  iteratedFDerivWithin 𝕜 (i + 1) (-f) s x h = fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (-f) s) s x (h 0) (Fin.tail h) :=
    rfl
  _ = fderivWithin 𝕜 (-iteratedFDerivWithin 𝕜 i f s) s x (h 0) (Fin.tail h) := by rw [fderivWithin_congr' (@hi) hx]; rfl
  _ = -(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s) x (h 0) (Fin.tail h) := by
    rw [Pi.neg_def, fderivWithin_neg (hu x hx)]; rfl
  _ = -(iteratedFDerivWithin 𝕜 (i + 1) f s) x h := rfl
[GOAL]
𝕜 : 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_2
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
i✝ : ℕ
f : E → F
hu : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
hi : ∀ {x : E}, x ∈ s → iteratedFDerivWithin 𝕜 i (-f) s x = -iteratedFDerivWithin 𝕜 i f s x
x : E
hx : x ∈ s
h : Fin (Nat.succ i) → E
⊢ ↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i (-f) s) s x) (h 0)) (tail h) =
    ↑(↑(fderivWithin 𝕜 (-iteratedFDerivWithin 𝕜 i f s) s x) (h 0)) (tail h)
[PROOFSTEP]
rw [fderivWithin_congr' (@hi) hx]
[GOAL]
𝕜 : 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_2
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
i✝ : ℕ
f : E → F
hu : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
hi : ∀ {x : E}, x ∈ s → iteratedFDerivWithin 𝕜 i (-f) s x = -iteratedFDerivWithin 𝕜 i f s x
x : E
hx : x ∈ s
h : Fin (Nat.succ i) → E
⊢ ↑(↑(fderivWithin 𝕜 (fun x => -iteratedFDerivWithin 𝕜 i f s x) s x) (h 0)) (tail h) =
    ↑(↑(fderivWithin 𝕜 (-iteratedFDerivWithin 𝕜 i f s) s x) (h 0)) (tail h)
[PROOFSTEP]
rfl
[GOAL]
𝕜 : 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_2
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
i✝ : ℕ
f : E → F
hu : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
hi : ∀ {x : E}, x ∈ s → iteratedFDerivWithin 𝕜 i (-f) s x = -iteratedFDerivWithin 𝕜 i f s x
x : E
hx : x ∈ s
h : Fin (Nat.succ i) → E
⊢ ↑(↑(fderivWithin 𝕜 (-iteratedFDerivWithin 𝕜 i f s) s x) (h 0)) (tail h) =
    -↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s x) (h 0)) (tail h)
[PROOFSTEP]
rw [Pi.neg_def, fderivWithin_neg (hu x hx)]
[GOAL]
𝕜 : 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_2
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
i✝ : ℕ
f : E → F
hu : UniqueDiffOn 𝕜 s
hx✝ : x✝ ∈ s
i : ℕ
hi : ∀ {x : E}, x ∈ s → iteratedFDerivWithin 𝕜 i (-f) s x = -iteratedFDerivWithin 𝕜 i f s x
x : E
hx : x ∈ s
h : Fin (Nat.succ i) → E
⊢ ↑(↑(-fderivWithin 𝕜 (fun i_1 => iteratedFDerivWithin 𝕜 i f s i_1) s x) (h 0)) (tail h) =
    -↑(↑(fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 i f s) s x) (h 0)) (tail h)
[PROOFSTEP]
rfl
[GOAL]
𝕜 : 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_2
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
i✝ i : ℕ
f : E → F
⊢ iteratedFDeriv 𝕜 i (-f) x = -iteratedFDeriv 𝕜 i f x
[PROOFSTEP]
simp_rw [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
i✝ i : ℕ
f : E → F
⊢ iteratedFDerivWithin 𝕜 i (-f) univ x = -iteratedFDerivWithin 𝕜 i f univ x
[PROOFSTEP]
exact iteratedFDerivWithin_neg_apply uniqueDiffOn_univ (Set.mem_univ _)
[GOAL]
𝕜 : 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_2
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
s : Set E
f g : E → F
hf : ContDiffWithinAt 𝕜 n f s x
hg : ContDiffWithinAt 𝕜 n g s x
⊢ ContDiffWithinAt 𝕜 n (fun x => f x - g x) s x
[PROOFSTEP]
simpa only [sub_eq_add_neg] using hf.add hg.neg
[GOAL]
𝕜 : 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_2
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
f g : E → F
hf : ContDiffAt 𝕜 n f x
hg : ContDiffAt 𝕜 n g x
⊢ ContDiffAt 𝕜 n (fun x => f x - g x) x
[PROOFSTEP]
simpa only [sub_eq_add_neg] using hf.add hg.neg
[GOAL]
𝕜 : 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_2
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
s : Set E
f g : E → F
hf : ContDiffOn 𝕜 n f s
hg : ContDiffOn 𝕜 n g s
⊢ ContDiffOn 𝕜 n (fun x => f x - g x) s
[PROOFSTEP]
simpa only [sub_eq_add_neg] using hf.add hg.neg
[GOAL]
𝕜 : 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_2
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
f g : E → F
hf : ContDiff 𝕜 n f
hg : ContDiff 𝕜 n g
⊢ ContDiff 𝕜 n fun x => f x - g x
[PROOFSTEP]
simpa only [sub_eq_add_neg] using hf.add hg.neg
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
f : ι → E → F
s : Finset ι
t : Set E
x : E
h : ∀ (i : ι), i ∈ s → ContDiffWithinAt 𝕜 n (fun x => f i x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i in s, f i x) t x
[PROOFSTEP]
classical
induction' s using Finset.induction_on with i s is IH
· simp [contDiffWithinAt_const]
· simp only [is, Finset.sum_insert, not_false_iff]
  exact (h _ (Finset.mem_insert_self i s)).add (IH fun j hj => h _ (Finset.mem_insert_of_mem hj))
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
f : ι → E → F
s : Finset ι
t : Set E
x : E
h : ∀ (i : ι), i ∈ s → ContDiffWithinAt 𝕜 n (fun x => f i x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i in s, f i x) t x
[PROOFSTEP]
induction' s using Finset.induction_on with i s is IH
[GOAL]
case empty
𝕜 : 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_2
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
ι : Type u_3
f : ι → E → F
s : Finset ι
t : Set E
x : E
h✝ : ∀ (i : ι), i ∈ s → ContDiffWithinAt 𝕜 n (fun x => f i x) t x
h : ∀ (i : ι), i ∈ ∅ → ContDiffWithinAt 𝕜 n (fun x => f i x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i in ∅, f i x) t x
[PROOFSTEP]
simp [contDiffWithinAt_const]
[GOAL]
case insert
𝕜 : 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_2
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
ι : Type u_3
f : ι → E → F
s✝ : Finset ι
t : Set E
x : E
h✝ : ∀ (i : ι), i ∈ s✝ → ContDiffWithinAt 𝕜 n (fun x => f i x) t x
i : ι
s : Finset ι
is : ¬i ∈ s
IH :
  (∀ (i : ι), i ∈ s → ContDiffWithinAt 𝕜 n (fun x => f i x) t x) → ContDiffWithinAt 𝕜 n (fun x => ∑ i in s, f i x) t x
h : ∀ (i_1 : ι), i_1 ∈ insert i s → ContDiffWithinAt 𝕜 n (fun x => f i_1 x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i in insert i s, f i x) t x
[PROOFSTEP]
simp only [is, Finset.sum_insert, not_false_iff]
[GOAL]
case insert
𝕜 : 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_2
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
ι : Type u_3
f : ι → E → F
s✝ : Finset ι
t : Set E
x : E
h✝ : ∀ (i : ι), i ∈ s✝ → ContDiffWithinAt 𝕜 n (fun x => f i x) t x
i : ι
s : Finset ι
is : ¬i ∈ s
IH :
  (∀ (i : ι), i ∈ s → ContDiffWithinAt 𝕜 n (fun x => f i x) t x) → ContDiffWithinAt 𝕜 n (fun x => ∑ i in s, f i x) t x
h : ∀ (i_1 : ι), i_1 ∈ insert i s → ContDiffWithinAt 𝕜 n (fun x => f i_1 x) t x
⊢ ContDiffWithinAt 𝕜 n (fun x => f i x + ∑ i in s, f i x) t x
[PROOFSTEP]
exact (h _ (Finset.mem_insert_self i s)).add (IH fun j hj => h _ (Finset.mem_insert_of_mem hj))
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
f : ι → E → F
s : Finset ι
x : E
h : ∀ (i : ι), i ∈ s → ContDiffAt 𝕜 n (fun x => f i x) x
⊢ ContDiffAt 𝕜 n (fun x => ∑ i in s, f i x) x
[PROOFSTEP]
rw [← contDiffWithinAt_univ] at *
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
f : ι → E → F
s : Finset ι
x : E
h : ∀ (i : ι), i ∈ s → ContDiffAt 𝕜 n (fun x => f i x) x
⊢ ContDiffWithinAt 𝕜 n (fun x => ∑ i in s, f i x) univ x
[PROOFSTEP]
exact ContDiffWithinAt.sum h
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
f : ι → E → F
s : Finset ι
h : ∀ (i : ι), i ∈ s → ContDiff 𝕜 n fun x => f i x
⊢ ContDiff 𝕜 n fun x => ∑ i in s, f i x
[PROOFSTEP]
simp only [← contDiffOn_univ] at *
[GOAL]
𝕜 : 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_2
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
ι : Type u_3
f : ι → E → F
s : Finset ι
h : ∀ (i : ι), i ∈ s → ContDiffOn 𝕜 n (fun x => f i x) univ
⊢ ContDiffOn 𝕜 n (fun x => ∑ i in s, f i x) univ
[PROOFSTEP]
exact ContDiffOn.sum h
[GOAL]
𝕜 : 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_2
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
𝔸 : Type u_3
𝔸' : Type u_4
ι : Type u_5
𝕜' : Type u_6
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
t : Finset ι
f : ι → E → 𝔸'
h : ∀ (i : ι), i ∈ t → ContDiffWithinAt 𝕜 n (f i) s x
⊢ ContDiffWithinAt 𝕜 n (fun y => ∏ i in t, f i y) s x
[PROOFSTEP]
simpa only [← Finset.prod_apply] using contDiffWithinAt_prod' h
[GOAL]
𝕜 : 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_2
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
𝔸 : Type u_3
𝔸' : Type u_4
ι : Type u_5
𝕜' : Type u_6
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
f : E → 𝔸
hf : ContDiff 𝕜 n f
⊢ ContDiff 𝕜 n fun x => f x ^ 0
[PROOFSTEP]
simpa using contDiff_const
[GOAL]
𝕜 : 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_2
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
𝔸 : Type u_3
𝔸' : Type u_4
ι : Type u_5
𝕜' : Type u_6
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
f : E → 𝔸
hf : ContDiff 𝕜 n f
m : ℕ
⊢ ContDiff 𝕜 n fun x => f x ^ (m + 1)
[PROOFSTEP]
simpa [pow_succ] using hf.mul (hf.pow m)
[GOAL]
𝕜 : 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_2
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
𝔸 : Type u_3
𝔸' : Type u_4
ι : Type u_5
𝕜' : Type u_6
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
f : E → 𝕜'
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n f s x
c : 𝕜'
⊢ ContDiffWithinAt 𝕜 n (fun x => f x / c) s x
[PROOFSTEP]
simpa only [div_eq_mul_inv] using hf.mul contDiffWithinAt_const
[GOAL]
𝕜 : 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_2
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
𝔸 : Type u_3
𝔸' : Type u_4
ι : Type u_5
𝕜' : Type u_6
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
f : E → 𝕜'
n : ℕ∞
hf : ContDiff 𝕜 n f
c : 𝕜'
⊢ ContDiff 𝕜 n fun x => f x / c
[PROOFSTEP]
simpa only [div_eq_mul_inv] using hf.mul contDiff_const
[GOAL]
𝕜 : 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_2
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
f : E → 𝕜
g : E → F
hf : ContDiffAt 𝕜 n f x
hg : ContDiffAt 𝕜 n g x
⊢ ContDiffAt 𝕜 n (fun x => f x • g x) x
[PROOFSTEP]
rw [← contDiffWithinAt_univ] at *
[GOAL]
𝕜 : 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_2
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
f : E → 𝕜
g : E → F
hf : ContDiffWithinAt 𝕜 n f univ x
hg : ContDiffWithinAt 𝕜 n g univ x
⊢ ContDiffWithinAt 𝕜 n (fun x => f x • g x) univ x
[PROOFSTEP]
exact hf.smul hg
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
f : E → F
x : E
c : R
hf : ContDiffAt 𝕜 n f x
⊢ ContDiffAt 𝕜 n (fun y => c • f y) x
[PROOFSTEP]
rw [← contDiffWithinAt_univ] at *
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
f : E → F
x : E
c : R
hf : ContDiffWithinAt 𝕜 n f univ x
⊢ ContDiffWithinAt 𝕜 n (fun y => c • f y) univ x
[PROOFSTEP]
exact hf.const_smul c
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
i : ℕ
a : R
x : E
hf : ContDiff 𝕜 (↑i) f
⊢ iteratedFDeriv 𝕜 i (a • f) x = a • iteratedFDeriv 𝕜 i f x
[PROOFSTEP]
simp_rw [← contDiffOn_univ, ← iteratedFDerivWithin_univ] at *
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
i : ℕ
a : R
x : E
hf : ContDiffOn 𝕜 (↑i) f univ
⊢ iteratedFDerivWithin 𝕜 i (a • f) univ x = a • iteratedFDerivWithin 𝕜 i f univ x
[PROOFSTEP]
refine' iteratedFDerivWithin_const_smul_apply hf uniqueDiffOn_univ (Set.mem_univ _)
[GOAL]
𝕜 : 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_2
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
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
x : E
y : E'
hf : ContDiffAt 𝕜 n f x
hg : ContDiffAt 𝕜 n g y
⊢ ContDiffAt 𝕜 n (Prod.map f g) (x, y)
[PROOFSTEP]
rw [ContDiffAt] at *
[GOAL]
𝕜 : 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_2
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
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
x : E
y : E'
hf : ContDiffWithinAt 𝕜 n f univ x
hg : ContDiffWithinAt 𝕜 n g univ y
⊢ ContDiffWithinAt 𝕜 n (Prod.map f g) univ (x, y)
[PROOFSTEP]
convert hf.prod_map hg
[GOAL]
case h.e'_11
𝕜 : 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_2
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
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
x : E
y : E'
hf : ContDiffWithinAt 𝕜 n f univ x
hg : ContDiffWithinAt 𝕜 n g univ y
⊢ univ = univ ×ˢ univ
[PROOFSTEP]
simp only [univ_prod_univ]
[GOAL]
𝕜 : 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_2
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
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
p : E × E'
hf : ContDiffAt 𝕜 n f p.fst
hg : ContDiffAt 𝕜 n g p.snd
⊢ ContDiffAt 𝕜 n (Prod.map f g) p
[PROOFSTEP]
rcases p with ⟨⟩
[GOAL]
case mk
𝕜 : 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_2
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
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
fst✝ : E
snd✝ : E'
hf : ContDiffAt 𝕜 n f (fst✝, snd✝).fst
hg : ContDiffAt 𝕜 n g (fst✝, snd✝).snd
⊢ ContDiffAt 𝕜 n (Prod.map f g) (fst✝, snd✝)
[PROOFSTEP]
exact ContDiffAt.prod_map hf hg
[GOAL]
𝕜 : 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_2
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
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
hf : ContDiff 𝕜 n f
hg : ContDiff 𝕜 n g
⊢ ContDiff 𝕜 n (Prod.map f g)
[PROOFSTEP]
rw [contDiff_iff_contDiffAt] at *
[GOAL]
𝕜 : 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_2
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
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
hf : ∀ (x : E), ContDiffAt 𝕜 n f x
hg : ∀ (x : E'), ContDiffAt 𝕜 n g x
⊢ ∀ (x : E × E'), ContDiffAt 𝕜 n (Prod.map f g) x
[PROOFSTEP]
exact fun ⟨x, y⟩ => (hf x).prod_map (hg y)
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
⊢ ContDiffAt 𝕜 n Ring.inverse ↑x
[PROOFSTEP]
induction' n using ENat.nat_induction with n IH Itop
[GOAL]
case h0
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
⊢ ContDiffAt 𝕜 0 Ring.inverse ↑x
[PROOFSTEP]
intro m hm
[GOAL]
case h0
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
m : ℕ
hm : ↑m ≤ 0
⊢ ∃ u, u ∈ 𝓝[insert (↑x) univ] ↑x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) Ring.inverse p u
[PROOFSTEP]
refine' ⟨{y : R | IsUnit y}, _, _⟩
[GOAL]
case h0.refine'_1
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
m : ℕ
hm : ↑m ≤ 0
⊢ {y | IsUnit y} ∈ 𝓝[insert (↑x) univ] ↑x
[PROOFSTEP]
simp [nhdsWithin_univ]
[GOAL]
case h0.refine'_1
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
m : ℕ
hm : ↑m ≤ 0
⊢ {y | IsUnit y} ∈ 𝓝 ↑x
[PROOFSTEP]
exact x.nhds
[GOAL]
case h0.refine'_2
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
m : ℕ
hm : ↑m ≤ 0
⊢ ∃ p, HasFTaylorSeriesUpToOn (↑m) Ring.inverse p {y | IsUnit y}
[PROOFSTEP]
use ftaylorSeriesWithin 𝕜 inverse univ
[GOAL]
case h
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
m : ℕ
hm : ↑m ≤ 0
⊢ HasFTaylorSeriesUpToOn (↑m) Ring.inverse (ftaylorSeriesWithin 𝕜 Ring.inverse univ) {y | IsUnit y}
[PROOFSTEP]
rw [le_antisymm hm bot_le, hasFTaylorSeriesUpToOn_zero_iff]
[GOAL]
case h
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
m : ℕ
hm : ↑m ≤ 0
⊢ ContinuousOn Ring.inverse {y | IsUnit y} ∧
    ∀ (x : R),
      x ∈ {y | IsUnit y} →
        ContinuousMultilinearMap.uncurry0 (ftaylorSeriesWithin 𝕜 Ring.inverse univ x 0) = Ring.inverse x
[PROOFSTEP]
constructor
[GOAL]
case h.left
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
m : ℕ
hm : ↑m ≤ 0
⊢ ContinuousOn Ring.inverse {y | IsUnit y}
[PROOFSTEP]
rintro _ ⟨x', rfl⟩
[GOAL]
case h.left.intro
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
m : ℕ
hm : ↑m ≤ 0
x' : Rˣ
⊢ ContinuousWithinAt Ring.inverse {y | IsUnit y} ↑x'
[PROOFSTEP]
exact (inverse_continuousAt x').continuousWithinAt
[GOAL]
case h.right
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
m : ℕ
hm : ↑m ≤ 0
⊢ ∀ (x : R),
    x ∈ {y | IsUnit y} →
      ContinuousMultilinearMap.uncurry0 (ftaylorSeriesWithin 𝕜 Ring.inverse univ x 0) = Ring.inverse x
[PROOFSTEP]
simp [ftaylorSeriesWithin]
[GOAL]
case hsuc
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
n : ℕ
IH : ContDiffAt 𝕜 (↑n) Ring.inverse ↑x
⊢ ContDiffAt 𝕜 (↑(Nat.succ n)) Ring.inverse ↑x
[PROOFSTEP]
apply contDiffAt_succ_iff_hasFDerivAt.mpr
[GOAL]
case hsuc
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
n : ℕ
IH : ContDiffAt 𝕜 (↑n) Ring.inverse ↑x
⊢ ∃ f', (∃ u, u ∈ 𝓝 ↑x ∧ ∀ (x : R), x ∈ u → HasFDerivAt Ring.inverse (f' x) x) ∧ ContDiffAt 𝕜 (↑n) f' ↑x
[PROOFSTEP]
refine' ⟨fun x : R => -mulLeftRight 𝕜 R (inverse x) (inverse x), _, _⟩
[GOAL]
case hsuc.refine'_1
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
n : ℕ
IH : ContDiffAt 𝕜 (↑n) Ring.inverse ↑x
⊢ ∃ u,
    u ∈ 𝓝 ↑x ∧
      ∀ (x : R),
        x ∈ u → HasFDerivAt Ring.inverse ((fun x => -↑(↑(mulLeftRight 𝕜 R) (Ring.inverse x)) (Ring.inverse x)) x) x
[PROOFSTEP]
refine' ⟨{y : R | IsUnit y}, x.nhds, _⟩
[GOAL]
case hsuc.refine'_1
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
n : ℕ
IH : ContDiffAt 𝕜 (↑n) Ring.inverse ↑x
⊢ ∀ (x : R),
    x ∈ {y | IsUnit y} →
      HasFDerivAt Ring.inverse ((fun x => -↑(↑(mulLeftRight 𝕜 R) (Ring.inverse x)) (Ring.inverse x)) x) x
[PROOFSTEP]
rintro _ ⟨y, rfl⟩
[GOAL]
case hsuc.refine'_1.intro
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
n : ℕ
IH : ContDiffAt 𝕜 (↑n) Ring.inverse ↑x
y : Rˣ
⊢ HasFDerivAt Ring.inverse ((fun x => -↑(↑(mulLeftRight 𝕜 R) (Ring.inverse x)) (Ring.inverse x)) ↑y) ↑y
[PROOFSTEP]
simp_rw [inverse_unit]
[GOAL]
case hsuc.refine'_1.intro
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
n : ℕ
IH : ContDiffAt 𝕜 (↑n) Ring.inverse ↑x
y : Rˣ
⊢ HasFDerivAt Ring.inverse (-↑(↑(mulLeftRight 𝕜 R) ↑y⁻¹) ↑y⁻¹) ↑y
[PROOFSTEP]
exact hasFDerivAt_ring_inverse y
[GOAL]
case hsuc.refine'_2
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
n : ℕ
IH : ContDiffAt 𝕜 (↑n) Ring.inverse ↑x
⊢ ContDiffAt 𝕜 (↑n) (fun x => -↑(↑(mulLeftRight 𝕜 R) (Ring.inverse x)) (Ring.inverse x)) ↑x
[PROOFSTEP]
convert (mulLeftRight_isBoundedBilinear 𝕜 R).contDiff.neg.comp_contDiffAt (x : R) (IH.prod IH)
[GOAL]
case htop
𝕜 : 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_2
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
R : Type u_3
inst✝² : NormedRing R
inst✝¹ : NormedAlgebra 𝕜 R
inst✝ : CompleteSpace R
x : Rˣ
Itop : ∀ (n : ℕ), ContDiffAt 𝕜 (↑n) Ring.inverse ↑x
⊢ ContDiffAt 𝕜 ⊤ Ring.inverse ↑x
[PROOFSTEP]
exact contDiffAt_top.mpr Itop
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝⁴ : NormedRing R
inst✝³ : NormedAlgebra 𝕜 R
𝕜' : Type u_4
inst✝² : NormedField 𝕜'
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : CompleteSpace 𝕜'
x : 𝕜'
hx : x ≠ 0
n : ℕ∞
⊢ ContDiffAt 𝕜 n Inv.inv x
[PROOFSTEP]
simpa only [Ring.inverse_eq_inv'] using contDiffAt_ring_inverse 𝕜 (Units.mk0 x hx)
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝⁴ : NormedRing R
inst✝³ : NormedAlgebra 𝕜 R
𝕜' : Type u_4
inst✝² : NormedField 𝕜'
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : CompleteSpace 𝕜'
f : E → 𝕜'
n : ℕ∞
hf : ContDiff 𝕜 n f
h : ∀ (x : E), f x ≠ 0
⊢ ContDiff 𝕜 n fun x => (f x)⁻¹
[PROOFSTEP]
rw [contDiff_iff_contDiffAt]
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝⁴ : NormedRing R
inst✝³ : NormedAlgebra 𝕜 R
𝕜' : Type u_4
inst✝² : NormedField 𝕜'
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : CompleteSpace 𝕜'
f : E → 𝕜'
n : ℕ∞
hf : ContDiff 𝕜 n f
h : ∀ (x : E), f x ≠ 0
⊢ ∀ (x : E), ContDiffAt 𝕜 n (fun x => (f x)⁻¹) x
[PROOFSTEP]
exact fun x => hf.contDiffAt.inv (h x)
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝⁵ : NormedRing R
inst✝⁴ : NormedAlgebra 𝕜 R
𝕜' : Type u_4
inst✝³ : NormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : CompleteSpace 𝕜'
inst✝ : CompleteSpace 𝕜
f g : E → 𝕜
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n f s x
hg : ContDiffWithinAt 𝕜 n g s x
hx : g x ≠ 0
⊢ ContDiffWithinAt 𝕜 n (fun x => f x / g x) s x
[PROOFSTEP]
simpa only [div_eq_mul_inv] using hf.mul (hg.inv hx)
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝⁵ : NormedRing R
inst✝⁴ : NormedAlgebra 𝕜 R
𝕜' : Type u_4
inst✝³ : NormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : CompleteSpace 𝕜'
inst✝ : CompleteSpace 𝕜
f g : E → 𝕜
n : ℕ∞
hf : ContDiff 𝕜 n f
hg : ContDiff 𝕜 n g
h0 : ∀ (x : E), g x ≠ 0
⊢ ContDiff 𝕜 n fun x => f x / g x
[PROOFSTEP]
simp only [contDiff_iff_contDiffAt] at *
[GOAL]
𝕜 : 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_2
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
R : Type u_3
inst✝⁵ : NormedRing R
inst✝⁴ : NormedAlgebra 𝕜 R
𝕜' : Type u_4
inst✝³ : NormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : CompleteSpace 𝕜'
inst✝ : CompleteSpace 𝕜
f g : E → 𝕜
n : ℕ∞
h0 : ∀ (x : E), g x ≠ 0
hf : ∀ (x : E), ContDiffAt 𝕜 n f x
hg : ∀ (x : E), ContDiffAt 𝕜 n g x
⊢ ∀ (x : E), ContDiffAt 𝕜 n (fun x => f x / g x) x
[PROOFSTEP]
exact fun x => (hf x).div (hg x) (h0 x)
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
⊢ ContDiffAt 𝕜 n inverse ↑e
[PROOFSTEP]
nontriviality E
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
✝ : Nontrivial E
⊢ ContDiffAt 𝕜 n inverse ↑e
[PROOFSTEP]
let O₁ : (E →L[𝕜] E) → F →L[𝕜] E := fun f => f.comp (e.symm : F →L[𝕜] E)
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
✝ : Nontrivial E
O₁ : (E →L[𝕜] E) → F →L[𝕜] E := fun f => ContinuousLinearMap.comp f ↑(ContinuousLinearEquiv.symm e)
⊢ ContDiffAt 𝕜 n inverse ↑e
[PROOFSTEP]
let O₂ : (E →L[𝕜] F) → E →L[𝕜] E := fun f => (e.symm : F →L[𝕜] E).comp f
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
✝ : Nontrivial E
O₁ : (E →L[𝕜] E) → F →L[𝕜] E := fun f => ContinuousLinearMap.comp f ↑(ContinuousLinearEquiv.symm e)
O₂ : (E →L[𝕜] F) → E →L[𝕜] E := fun f => ContinuousLinearMap.comp (↑(ContinuousLinearEquiv.symm e)) f
⊢ ContDiffAt 𝕜 n inverse ↑e
[PROOFSTEP]
have : ContinuousLinearMap.inverse = O₁ ∘ Ring.inverse ∘ O₂ := funext (to_ring_inverse e)
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
✝ : Nontrivial E
O₁ : (E →L[𝕜] E) → F →L[𝕜] E := fun f => ContinuousLinearMap.comp f ↑(ContinuousLinearEquiv.symm e)
O₂ : (E →L[𝕜] F) → E →L[𝕜] E := fun f => ContinuousLinearMap.comp (↑(ContinuousLinearEquiv.symm e)) f
this : inverse = O₁ ∘ Ring.inverse ∘ O₂
⊢ ContDiffAt 𝕜 n inverse ↑e
[PROOFSTEP]
rw [this]
  -- `O₁` and `O₂` are `ContDiff`,
    -- so we reduce to proving that `Ring.inverse` is `ContDiff`
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
✝ : Nontrivial E
O₁ : (E →L[𝕜] E) → F →L[𝕜] E := fun f => ContinuousLinearMap.comp f ↑(ContinuousLinearEquiv.symm e)
O₂ : (E →L[𝕜] F) → E →L[𝕜] E := fun f => ContinuousLinearMap.comp (↑(ContinuousLinearEquiv.symm e)) f
this : inverse = O₁ ∘ Ring.inverse ∘ O₂
⊢ ContDiffAt 𝕜 n (O₁ ∘ Ring.inverse ∘ O₂) ↑e
[PROOFSTEP]
have h₁ : ContDiff 𝕜 n O₁ := contDiff_id.clm_comp contDiff_const
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
✝ : Nontrivial E
O₁ : (E →L[𝕜] E) → F →L[𝕜] E := fun f => ContinuousLinearMap.comp f ↑(ContinuousLinearEquiv.symm e)
O₂ : (E →L[𝕜] F) → E →L[𝕜] E := fun f => ContinuousLinearMap.comp (↑(ContinuousLinearEquiv.symm e)) f
this : inverse = O₁ ∘ Ring.inverse ∘ O₂
h₁ : ContDiff 𝕜 n O₁
⊢ ContDiffAt 𝕜 n (O₁ ∘ Ring.inverse ∘ O₂) ↑e
[PROOFSTEP]
have h₂ : ContDiff 𝕜 n O₂ := contDiff_const.clm_comp contDiff_id
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
✝ : Nontrivial E
O₁ : (E →L[𝕜] E) → F →L[𝕜] E := fun f => ContinuousLinearMap.comp f ↑(ContinuousLinearEquiv.symm e)
O₂ : (E →L[𝕜] F) → E →L[𝕜] E := fun f => ContinuousLinearMap.comp (↑(ContinuousLinearEquiv.symm e)) f
this : inverse = O₁ ∘ Ring.inverse ∘ O₂
h₁ : ContDiff 𝕜 n O₁
h₂ : ContDiff 𝕜 n O₂
⊢ ContDiffAt 𝕜 n (O₁ ∘ Ring.inverse ∘ O₂) ↑e
[PROOFSTEP]
refine' h₁.contDiffAt.comp _ (ContDiffAt.comp _ _ h₂.contDiffAt)
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
✝ : Nontrivial E
O₁ : (E →L[𝕜] E) → F →L[𝕜] E := fun f => ContinuousLinearMap.comp f ↑(ContinuousLinearEquiv.symm e)
O₂ : (E →L[𝕜] F) → E →L[𝕜] E := fun f => ContinuousLinearMap.comp (↑(ContinuousLinearEquiv.symm e)) f
this : inverse = O₁ ∘ Ring.inverse ∘ O₂
h₁ : ContDiff 𝕜 n O₁
h₂ : ContDiff 𝕜 n O₂
⊢ ContDiffAt 𝕜 n Ring.inverse (O₂ ↑e)
[PROOFSTEP]
convert contDiffAt_ring_inverse 𝕜 (1 : (E →L[𝕜] E)ˣ)
[GOAL]
case h.e'_11
𝕜 : 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_2
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
inst✝ : CompleteSpace E
e : E ≃L[𝕜] F
✝ : Nontrivial E
O₁ : (E →L[𝕜] E) → F →L[𝕜] E := fun f => ContinuousLinearMap.comp f ↑(ContinuousLinearEquiv.symm e)
O₂ : (E →L[𝕜] F) → E →L[𝕜] E := fun f => ContinuousLinearMap.comp (↑(ContinuousLinearEquiv.symm e)) f
this : inverse = O₁ ∘ Ring.inverse ∘ O₂
h₁ : ContDiff 𝕜 n O₁
h₂ : ContDiff 𝕜 n O₂
⊢ O₂ ↑e = ↑1
[PROOFSTEP]
simp [one_def]
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf : ContDiffAt 𝕜 n (↑f) (↑(LocalHomeomorph.symm f) a)
⊢ ContDiffAt 𝕜 n (↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
induction' n using ENat.nat_induction with n IH Itop
[GOAL]
case h0
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n (↑f) (↑(LocalHomeomorph.symm f) a)
hf : ContDiffAt 𝕜 0 (↑f) (↑(LocalHomeomorph.symm f) a)
⊢ ContDiffAt 𝕜 0 (↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
rw [contDiffAt_zero]
[GOAL]
case h0
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n (↑f) (↑(LocalHomeomorph.symm f) a)
hf : ContDiffAt 𝕜 0 (↑f) (↑(LocalHomeomorph.symm f) a)
⊢ ∃ u, u ∈ 𝓝 a ∧ ContinuousOn (↑(LocalHomeomorph.symm f)) u
[PROOFSTEP]
exact ⟨f.target, IsOpen.mem_nhds f.open_target ha, f.continuous_invFun⟩
[GOAL]
case hsuc
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
⊢ ContDiffAt 𝕜 (↑(Nat.succ n)) (↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
obtain ⟨f', ⟨u, hu, hff'⟩, hf'⟩ := contDiffAt_succ_iff_hasFDerivAt.mp hf
[GOAL]
case hsuc.intro.intro.intro.intro
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
⊢ ContDiffAt 𝕜 (↑(Nat.succ n)) (↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
apply contDiffAt_succ_iff_hasFDerivAt.mpr
[GOAL]
case hsuc.intro.intro.intro.intro
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
⊢ ∃ f', (∃ u, u ∈ 𝓝 a ∧ ∀ (x : F), x ∈ u → HasFDerivAt (↑(LocalHomeomorph.symm f)) (f' x) x) ∧ ContDiffAt 𝕜 (↑n) f' a
[PROOFSTEP]
have eq_f₀' : f' (f.symm a) = f₀' := (hff' (f.symm a) (mem_of_mem_nhds hu)).unique hf₀'
[GOAL]
case hsuc.intro.intro.intro.intro
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
⊢ ∃ f', (∃ u, u ∈ 𝓝 a ∧ ∀ (x : F), x ∈ u → HasFDerivAt (↑(LocalHomeomorph.symm f)) (f' x) x) ∧ ContDiffAt 𝕜 (↑n) f' a
[PROOFSTEP]
refine' ⟨inverse ∘ f' ∘ f.symm, _, _⟩
[GOAL]
case hsuc.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
⊢ ∃ u,
    u ∈ 𝓝 a ∧
      ∀ (x : F), x ∈ u → HasFDerivAt (↑(LocalHomeomorph.symm f)) ((inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) x) x
[PROOFSTEP]
have h_nhds : {y : E | ∃ e : E ≃L[𝕜] F, ↑e = f' y} ∈ 𝓝 (f.symm a) :=
  by
  have hf₀' := f₀'.nhds
  rw [← eq_f₀'] at hf₀'
  exact hf'.continuousAt.preimage_mem_nhds hf₀'
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
⊢ {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
[PROOFSTEP]
have hf₀' := f₀'.nhds
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀'✝ : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
hf₀' : range ContinuousLinearEquiv.toContinuousLinearMap ∈ 𝓝 ↑f₀'
⊢ {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
[PROOFSTEP]
rw [← eq_f₀'] at hf₀'
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀'✝ : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
hf₀' : range ContinuousLinearEquiv.toContinuousLinearMap ∈ 𝓝 (f' (↑(LocalHomeomorph.symm f) a))
⊢ {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
[PROOFSTEP]
exact hf'.continuousAt.preimage_mem_nhds hf₀'
[GOAL]
case hsuc.intro.intro.intro.intro.refine'_1
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
⊢ ∃ u,
    u ∈ 𝓝 a ∧
      ∀ (x : F), x ∈ u → HasFDerivAt (↑(LocalHomeomorph.symm f)) ((inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) x) x
[PROOFSTEP]
obtain ⟨t, htu, ht, htf⟩ := mem_nhds_iff.mp (Filter.inter_mem hu h_nhds)
[GOAL]
case hsuc.intro.intro.intro.intro.refine'_1.intro.intro.intro
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
⊢ ∃ u,
    u ∈ 𝓝 a ∧
      ∀ (x : F), x ∈ u → HasFDerivAt (↑(LocalHomeomorph.symm f)) ((inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) x) x
[PROOFSTEP]
use f.target ∩ f.symm ⁻¹' t
[GOAL]
case h
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
⊢ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t ∈ 𝓝 a ∧
    ∀ (x : F),
      x ∈ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t →
        HasFDerivAt (↑(LocalHomeomorph.symm f)) ((inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) x) x
[PROOFSTEP]
refine' ⟨IsOpen.mem_nhds _ _, _⟩
[GOAL]
case h.refine'_1
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
⊢ IsOpen (f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t)
[PROOFSTEP]
exact f.preimage_open_of_open_symm ht
[GOAL]
case h.refine'_2
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
⊢ a ∈ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t
[PROOFSTEP]
exact mem_inter ha (mem_preimage.mpr htf)
[GOAL]
case h.refine'_3
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
⊢ ∀ (x : F),
    x ∈ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t →
      HasFDerivAt (↑(LocalHomeomorph.symm f)) ((inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) x) x
[PROOFSTEP]
intro x hx
[GOAL]
case h.refine'_3
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
x : F
hx : x ∈ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t
⊢ HasFDerivAt (↑(LocalHomeomorph.symm f)) ((inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) x) x
[PROOFSTEP]
obtain ⟨hxu, e, he⟩ := htu hx.2
[GOAL]
case h.refine'_3.intro.intro
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
x : F
hx : x ∈ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t
hxu : ↑(LocalHomeomorph.symm f) x ∈ u
e : E ≃L[𝕜] F
he : ↑e = f' (↑(LocalHomeomorph.symm f) x)
⊢ HasFDerivAt (↑(LocalHomeomorph.symm f)) ((inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) x) x
[PROOFSTEP]
have h_deriv : HasFDerivAt f (e : E →L[𝕜] F) (f.symm x) :=
  by
  rw [he]
  exact hff' (f.symm x) hxu
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
x : F
hx : x ∈ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t
hxu : ↑(LocalHomeomorph.symm f) x ∈ u
e : E ≃L[𝕜] F
he : ↑e = f' (↑(LocalHomeomorph.symm f) x)
⊢ HasFDerivAt (↑f) (↑e) (↑(LocalHomeomorph.symm f) x)
[PROOFSTEP]
rw [he]
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
x : F
hx : x ∈ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t
hxu : ↑(LocalHomeomorph.symm f) x ∈ u
e : E ≃L[𝕜] F
he : ↑e = f' (↑(LocalHomeomorph.symm f) x)
⊢ HasFDerivAt (↑f) (f' (↑(LocalHomeomorph.symm f) x)) (↑(LocalHomeomorph.symm f) x)
[PROOFSTEP]
exact hff' (f.symm x) hxu
[GOAL]
case h.refine'_3.intro.intro
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
x : F
hx : x ∈ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t
hxu : ↑(LocalHomeomorph.symm f) x ∈ u
e : E ≃L[𝕜] F
he : ↑e = f' (↑(LocalHomeomorph.symm f) x)
h_deriv : HasFDerivAt (↑f) (↑e) (↑(LocalHomeomorph.symm f) x)
⊢ HasFDerivAt (↑(LocalHomeomorph.symm f)) ((inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) x) x
[PROOFSTEP]
convert f.hasFDerivAt_symm hx.1 h_deriv
[GOAL]
case h.e'_10
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_nhds : {y | ∃ e, ↑e = f' y} ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
t : Set E
htu : t ⊆ u ∩ {y | ∃ e, ↑e = f' y}
ht : IsOpen t
htf : ↑(LocalHomeomorph.symm f) a ∈ t
x : F
hx : x ∈ f.target ∩ ↑(LocalHomeomorph.symm f) ⁻¹' t
hxu : ↑(LocalHomeomorph.symm f) x ∈ u
e : E ≃L[𝕜] F
he : ↑e = f' (↑(LocalHomeomorph.symm f) x)
h_deriv : HasFDerivAt (↑f) (↑e) (↑(LocalHomeomorph.symm f) x)
⊢ (inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) x = ↑(ContinuousLinearEquiv.symm e)
[PROOFSTEP]
simp [← he]
[GOAL]
case hsuc.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
⊢ ContDiffAt 𝕜 (↑n) (inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
have h_deriv₁ : ContDiffAt 𝕜 n inverse (f' (f.symm a)) :=
  by
  rw [eq_f₀']
  exact contDiffAt_map_inverse _
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
⊢ ContDiffAt 𝕜 (↑n) inverse (f' (↑(LocalHomeomorph.symm f) a))
[PROOFSTEP]
rw [eq_f₀']
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
⊢ ContDiffAt 𝕜 (↑n) inverse ↑f₀'
[PROOFSTEP]
exact contDiffAt_map_inverse _
[GOAL]
case hsuc.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_deriv₁ : ContDiffAt 𝕜 (↑n) inverse (f' (↑(LocalHomeomorph.symm f) a))
⊢ ContDiffAt 𝕜 (↑n) (inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
have h_deriv₂ : ContDiffAt 𝕜 n f.symm a := by
  refine' IH (hf.of_le _)
  norm_cast
  exact Nat.le_succ n
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_deriv₁ : ContDiffAt 𝕜 (↑n) inverse (f' (↑(LocalHomeomorph.symm f) a))
⊢ ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
refine' IH (hf.of_le _)
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_deriv₁ : ContDiffAt 𝕜 (↑n) inverse (f' (↑(LocalHomeomorph.symm f) a))
⊢ ↑n ≤ ↑(Nat.succ n)
[PROOFSTEP]
norm_cast
[GOAL]
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_deriv₁ : ContDiffAt 𝕜 (↑n) inverse (f' (↑(LocalHomeomorph.symm f) a))
⊢ n ≤ Nat.succ n
[PROOFSTEP]
exact Nat.le_succ n
[GOAL]
case hsuc.intro.intro.intro.intro.refine'_2
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
IH : ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 (↑(Nat.succ n)) (↑f) (↑(LocalHomeomorph.symm f) a)
f' : E → E →L[𝕜] F
hf' : ContDiffAt 𝕜 (↑n) f' (↑(LocalHomeomorph.symm f) a)
u : Set E
hu : u ∈ 𝓝 (↑(LocalHomeomorph.symm f) a)
hff' : ∀ (x : E), x ∈ u → HasFDerivAt (↑f) (f' x) x
eq_f₀' : f' (↑(LocalHomeomorph.symm f) a) = ↑f₀'
h_deriv₁ : ContDiffAt 𝕜 (↑n) inverse (f' (↑(LocalHomeomorph.symm f) a))
h_deriv₂ : ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
⊢ ContDiffAt 𝕜 (↑n) (inverse ∘ f' ∘ ↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
exact (h_deriv₁.comp _ hf').comp _ h_deriv₂
[GOAL]
case htop
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n (↑f) (↑(LocalHomeomorph.symm f) a)
Itop : ∀ (n : ℕ), ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 ⊤ (↑f) (↑(LocalHomeomorph.symm f) a)
⊢ ContDiffAt 𝕜 ⊤ (↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
refine' contDiffAt_top.mpr _
[GOAL]
case htop
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n (↑f) (↑(LocalHomeomorph.symm f) a)
Itop : ∀ (n : ℕ), ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 ⊤ (↑f) (↑(LocalHomeomorph.symm f) a)
⊢ ∀ (n : ℕ), ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
intro n
[GOAL]
case htop
𝕜 : 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_2
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
inst✝ : CompleteSpace E
f : LocalHomeomorph E F
f₀' : E ≃L[𝕜] F
a : F
ha : a ∈ f.target
hf₀' : HasFDerivAt (↑f) (↑f₀') (↑(LocalHomeomorph.symm f) a)
hf✝ : ContDiffAt 𝕜 n✝ (↑f) (↑(LocalHomeomorph.symm f) a)
Itop : ∀ (n : ℕ), ContDiffAt 𝕜 (↑n) (↑f) (↑(LocalHomeomorph.symm f) a) → ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
hf : ContDiffAt 𝕜 ⊤ (↑f) (↑(LocalHomeomorph.symm f) a)
n : ℕ
⊢ ContDiffAt 𝕜 (↑n) (↑(LocalHomeomorph.symm f)) a
[PROOFSTEP]
exact Itop n (contDiffAt_top.mp hf n)
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
n : ℕ∞
f : E → F →L[𝕜] G
s : Set E
inst✝ : FiniteDimensional 𝕜 F
⊢ ContDiffOn 𝕜 n f s ↔ ∀ (y : F), ContDiffOn 𝕜 n (fun x => ↑(f x) y) s
[PROOFSTEP]
refine' ⟨fun h y => h.clm_apply contDiffOn_const, fun h => _⟩
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
n : ℕ∞
f : E → F →L[𝕜] G
s : Set E
inst✝ : FiniteDimensional 𝕜 F
h : ∀ (y : F), ContDiffOn 𝕜 n (fun x => ↑(f x) y) s
⊢ ContDiffOn 𝕜 n f s
[PROOFSTEP]
let d := finrank 𝕜 F
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
n : ℕ∞
f : E → F →L[𝕜] G
s : Set E
inst✝ : FiniteDimensional 𝕜 F
h : ∀ (y : F), ContDiffOn 𝕜 n (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 F
⊢ ContDiffOn 𝕜 n f s
[PROOFSTEP]
have hd : d = finrank 𝕜 (Fin d → 𝕜) := (finrank_fin_fun 𝕜).symm
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
n : ℕ∞
f : E → F →L[𝕜] G
s : Set E
inst✝ : FiniteDimensional 𝕜 F
h : ∀ (y : F), ContDiffOn 𝕜 n (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 F
hd : d = finrank 𝕜 (Fin d → 𝕜)
⊢ ContDiffOn 𝕜 n f s
[PROOFSTEP]
let e₁ := ContinuousLinearEquiv.ofFinrankEq hd
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
n : ℕ∞
f : E → F →L[𝕜] G
s : Set E
inst✝ : FiniteDimensional 𝕜 F
h : ∀ (y : F), ContDiffOn 𝕜 n (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 F
hd : d = finrank 𝕜 (Fin d → 𝕜)
e₁ : F ≃L[𝕜] Fin d → 𝕜 := ContinuousLinearEquiv.ofFinrankEq hd
⊢ ContDiffOn 𝕜 n f s
[PROOFSTEP]
let e₂ := (e₁.arrowCongr (1 : G ≃L[𝕜] G)).trans (ContinuousLinearEquiv.piRing (Fin d))
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
n : ℕ∞
f : E → F →L[𝕜] G
s : Set E
inst✝ : FiniteDimensional 𝕜 F
h : ∀ (y : F), ContDiffOn 𝕜 n (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 F
hd : d = finrank 𝕜 (Fin d → 𝕜)
e₁ : F ≃L[𝕜] Fin d → 𝕜 := ContinuousLinearEquiv.ofFinrankEq hd
e₂ : (F →L[𝕜] G) ≃L[𝕜] Fin d → G :=
  ContinuousLinearEquiv.trans (ContinuousLinearEquiv.arrowCongr e₁ 1) (ContinuousLinearEquiv.piRing (Fin d))
⊢ ContDiffOn 𝕜 n f s
[PROOFSTEP]
rw [← comp.left_id f, ← e₂.symm_comp_self]
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
n : ℕ∞
f : E → F →L[𝕜] G
s : Set E
inst✝ : FiniteDimensional 𝕜 F
h : ∀ (y : F), ContDiffOn 𝕜 n (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 F
hd : d = finrank 𝕜 (Fin d → 𝕜)
e₁ : F ≃L[𝕜] Fin d → 𝕜 := ContinuousLinearEquiv.ofFinrankEq hd
e₂ : (F →L[𝕜] G) ≃L[𝕜] Fin d → G :=
  ContinuousLinearEquiv.trans (ContinuousLinearEquiv.arrowCongr e₁ 1) (ContinuousLinearEquiv.piRing (Fin d))
⊢ ContDiffOn 𝕜 n ((↑(ContinuousLinearEquiv.symm e₂) ∘ ↑e₂) ∘ f) s
[PROOFSTEP]
exact e₂.symm.contDiff.comp_contDiffOn (contDiffOn_pi.mpr fun i => h _)
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
n : ℕ∞
f : E → F →L[𝕜] G
inst✝ : FiniteDimensional 𝕜 F
⊢ ContDiff 𝕜 n f ↔ ∀ (y : F), ContDiff 𝕜 n fun x => ↑(f x) y
[PROOFSTEP]
simp_rw [← contDiffOn_univ, contDiffOn_clm_apply]
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
n : ℕ
f : E → F
⊢ ContDiff 𝕜 (↑(n + 1)) f ↔ Differentiable 𝕜 f ∧ ∀ (y : E), ContDiff 𝕜 ↑n fun x => ↑(fderiv 𝕜 f x) y
[PROOFSTEP]
rw [contDiff_succ_iff_fderiv, contDiff_clm_apply_iff]
[GOAL]
𝕜 : 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_2
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
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
n : ℕ
f : E → F
s : Set E
hs : UniqueDiffOn 𝕜 s
⊢ ContDiffOn 𝕜 (↑(n + 1)) f s ↔
    DifferentiableOn 𝕜 f s ∧ ∀ (y : E), ContDiffOn 𝕜 (↑n) (fun x => ↑(fderivWithin 𝕜 f s x) y) s
[PROOFSTEP]
rw [contDiffOn_succ_iff_fderivWithin hs, contDiffOn_clm_apply]
[GOAL]
𝕜 : 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_2
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
𝕂 : Type u_3
inst✝⁴ : IsROrC 𝕂
E' : Type u_4
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕂 E'
F' : Type u_5
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕂 F'
f : E' → F'
f' : E' →L[𝕂] F'
x : E'
hf : ContDiffAt 𝕂 n f x
hf' : HasFDerivAt f f' x
hn : 1 ≤ n
⊢ HasStrictFDerivAt f f' x
[PROOFSTEP]
rcases hf 1 hn with ⟨u, H, p, hp⟩
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
𝕂 : Type u_3
inst✝⁴ : IsROrC 𝕂
E' : Type u_4
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕂 E'
F' : Type u_5
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕂 F'
f : E' → F'
f' : E' →L[𝕂] F'
x : E'
hf : ContDiffAt 𝕂 n f x
hf' : HasFDerivAt f f' x
hn : 1 ≤ n
u : Set E'
H : u ∈ 𝓝[insert x univ] x
p : E' → FormalMultilinearSeries 𝕂 E' F'
hp : HasFTaylorSeriesUpToOn (↑1) f p u
⊢ HasStrictFDerivAt f f' x
[PROOFSTEP]
simp only [nhdsWithin_univ, mem_univ, insert_eq_of_mem] at H
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
𝕂 : Type u_3
inst✝⁴ : IsROrC 𝕂
E' : Type u_4
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕂 E'
F' : Type u_5
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕂 F'
f : E' → F'
f' : E' →L[𝕂] F'
x : E'
hf : ContDiffAt 𝕂 n f x
hf' : HasFDerivAt f f' x
hn : 1 ≤ n
u : Set E'
p : E' → FormalMultilinearSeries 𝕂 E' F'
hp : HasFTaylorSeriesUpToOn (↑1) f p u
H : u ∈ 𝓝 x
⊢ HasStrictFDerivAt f f' x
[PROOFSTEP]
have := hp.hasStrictFDerivAt le_rfl H
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
𝕂 : Type u_3
inst✝⁴ : IsROrC 𝕂
E' : Type u_4
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕂 E'
F' : Type u_5
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕂 F'
f : E' → F'
f' : E' →L[𝕂] F'
x : E'
hf : ContDiffAt 𝕂 n f x
hf' : HasFDerivAt f f' x
hn : 1 ≤ n
u : Set E'
p : E' → FormalMultilinearSeries 𝕂 E' F'
hp : HasFTaylorSeriesUpToOn (↑1) f p u
H : u ∈ 𝓝 x
this : HasStrictFDerivAt f (↑(continuousMultilinearCurryFin1 𝕂 E' F') (p x 1)) x
⊢ HasStrictFDerivAt f f' x
[PROOFSTEP]
rwa [hf'.unique this.hasFDerivAt]
[GOAL]
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
p : E → FormalMultilinearSeries ℝ E F
s : Set E
x : E
hf : HasFTaylorSeriesUpToOn 1 f p (insert x s)
hs : Convex ℝ s
K : ℝ≥0
hK : ‖p x 1‖₊ < K
⊢ ∃ t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
set f' := fun y => continuousMultilinearCurryFin1 ℝ E F (p y 1)
[GOAL]
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
p : E → FormalMultilinearSeries ℝ E F
s : Set E
x : E
hf : HasFTaylorSeriesUpToOn 1 f p (insert x s)
hs : Convex ℝ s
K : ℝ≥0
hK : ‖p x 1‖₊ < K
f' : E → E →L[ℝ] F := fun y => ↑(continuousMultilinearCurryFin1 ℝ E F) (p y 1)
⊢ ∃ t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
have hder : ∀ y ∈ s, HasFDerivWithinAt f (f' y) s y := fun y hy =>
  (hf.hasFDerivWithinAt le_rfl (subset_insert x s hy)).mono (subset_insert x s)
[GOAL]
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
p : E → FormalMultilinearSeries ℝ E F
s : Set E
x : E
hf : HasFTaylorSeriesUpToOn 1 f p (insert x s)
hs : Convex ℝ s
K : ℝ≥0
hK : ‖p x 1‖₊ < K
f' : E → E →L[ℝ] F := fun y => ↑(continuousMultilinearCurryFin1 ℝ E F) (p y 1)
hder : ∀ (y : E), y ∈ s → HasFDerivWithinAt f (f' y) s y
⊢ ∃ t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
have hcont : ContinuousWithinAt f' s x :=
  (continuousMultilinearCurryFin1 ℝ E F).continuousAt.comp_continuousWithinAt
    ((hf.cont _ le_rfl _ (mem_insert _ _)).mono (subset_insert x s))
[GOAL]
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
p : E → FormalMultilinearSeries ℝ E F
s : Set E
x : E
hf : HasFTaylorSeriesUpToOn 1 f p (insert x s)
hs : Convex ℝ s
K : ℝ≥0
hK : ‖p x 1‖₊ < K
f' : E → E →L[ℝ] F := fun y => ↑(continuousMultilinearCurryFin1 ℝ E F) (p y 1)
hder : ∀ (y : E), y ∈ s → HasFDerivWithinAt f (f' y) s y
hcont : ContinuousWithinAt f' s x
⊢ ∃ t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
replace hK : ‖f' x‖₊ < K
[GOAL]
case hK
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
p : E → FormalMultilinearSeries ℝ E F
s : Set E
x : E
hf : HasFTaylorSeriesUpToOn 1 f p (insert x s)
hs : Convex ℝ s
K : ℝ≥0
hK : ‖p x 1‖₊ < K
f' : E → E →L[ℝ] F := fun y => ↑(continuousMultilinearCurryFin1 ℝ E F) (p y 1)
hder : ∀ (y : E), y ∈ s → HasFDerivWithinAt f (f' y) s y
hcont : ContinuousWithinAt f' s x
⊢ ‖f' x‖₊ < K
[PROOFSTEP]
simpa only [LinearIsometryEquiv.nnnorm_map]
[GOAL]
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
p : E → FormalMultilinearSeries ℝ E F
s : Set E
x : E
hf : HasFTaylorSeriesUpToOn 1 f p (insert x s)
hs : Convex ℝ s
K : ℝ≥0
f' : E → E →L[ℝ] F := fun y => ↑(continuousMultilinearCurryFin1 ℝ E F) (p y 1)
hder : ∀ (y : E), y ∈ s → HasFDerivWithinAt f (f' y) s y
hcont : ContinuousWithinAt f' s x
hK : ‖f' x‖₊ < K
⊢ ∃ t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
exact
  hs.exists_nhdsWithin_lipschitzOnWith_of_hasFDerivWithinAt_of_nnnorm_lt
    (eventually_nhdsWithin_iff.2 <| eventually_of_forall hder) hcont K hK
[GOAL]
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
rcases hf 1 le_rfl with ⟨t, hst, p, hp⟩
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
t : Set E
hst : t ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries ℝ E F
hp : HasFTaylorSeriesUpToOn (↑1) f p t
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
rcases Metric.mem_nhdsWithin_iff.mp hst with ⟨ε, ε0, hε⟩
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
t : Set E
hst : t ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries ℝ E F
hp : HasFTaylorSeriesUpToOn (↑1) f p t
ε : ℝ
ε0 : ε > 0
hε : Metric.ball x ε ∩ insert x s ⊆ t
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
replace hp : HasFTaylorSeriesUpToOn 1 f p (Metric.ball x ε ∩ insert x s) := hp.mono hε
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
t : Set E
hst : t ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hε : Metric.ball x ε ∩ insert x s ⊆ t
hp : HasFTaylorSeriesUpToOn 1 f p (Metric.ball x ε ∩ insert x s)
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
clear hst hε t
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hp : HasFTaylorSeriesUpToOn 1 f p (Metric.ball x ε ∩ insert x s)
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
rw [← insert_eq_of_mem (Metric.mem_ball_self ε0), ← insert_inter_distrib] at hp
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hp : HasFTaylorSeriesUpToOn 1 f p (insert x (Metric.ball x ε ∩ s))
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
rcases hp.exists_lipschitzOnWith ((convex_ball _ _).inter hs) with ⟨K, t, hst, hft⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hp : HasFTaylorSeriesUpToOn 1 f p (insert x (Metric.ball x ε ∩ s))
K : ℝ≥0
t : Set E
hst : t ∈ 𝓝[Metric.ball x ε ∩ s] x
hft : LipschitzOnWith K f t
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
rw [inter_comm, ← nhdsWithin_restrict' _ (Metric.ball_mem_nhds _ ε0)] at hst
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : 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_2
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✝
𝕂 : Type u_3
inst✝⁸ : IsROrC 𝕂
E' : Type u_4
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type u_5
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_6
F : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hp : HasFTaylorSeriesUpToOn 1 f p (insert x (Metric.ball x ε ∩ s))
K : ℝ≥0
t : Set E
hst : t ∈ 𝓝[s] x
hft : LipschitzOnWith K f t
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t
[PROOFSTEP]
exact ⟨K, t, hst, hft⟩
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
⊢ ContDiffOn 𝕜 (↑(n + 1)) f₂ s₂ ↔ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
[PROOFSTEP]
rw [contDiffOn_succ_iff_fderivWithin hs, and_congr_right_iff]
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
⊢ DifferentiableOn 𝕜 f₂ s₂ →
    (ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂ ↔ ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂)
[PROOFSTEP]
intro _
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
⊢ ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂ ↔ ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
[PROOFSTEP]
constructor
[GOAL]
case mp
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
⊢ ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂ → ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
[PROOFSTEP]
intro h
[GOAL]
case mp
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂
⊢ ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
[PROOFSTEP]
have : derivWithin f₂ s₂ = (fun u : 𝕜 →L[𝕜] F => u 1) ∘ fderivWithin 𝕜 f₂ s₂
[GOAL]
case this
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂
⊢ derivWithin f₂ s₂ = (fun u => ↑u 1) ∘ fderivWithin 𝕜 f₂ s₂
[PROOFSTEP]
ext x
[GOAL]
case this.h
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂
x : 𝕜
⊢ derivWithin f₂ s₂ x = ((fun u => ↑u 1) ∘ fderivWithin 𝕜 f₂ s₂) x
[PROOFSTEP]
rfl
[GOAL]
case mp
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂
this : derivWithin f₂ s₂ = (fun u => ↑u 1) ∘ fderivWithin 𝕜 f₂ s₂
⊢ ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
[PROOFSTEP]
simp_rw [this]
[GOAL]
case mp
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂
this : derivWithin f₂ s₂ = (fun u => ↑u 1) ∘ fderivWithin 𝕜 f₂ s₂
⊢ ContDiffOn 𝕜 (↑n) ((fun u => ↑u 1) ∘ fderivWithin 𝕜 f₂ s₂) s₂
[PROOFSTEP]
apply ContDiff.comp_contDiffOn _ h
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂
this : derivWithin f₂ s₂ = (fun u => ↑u 1) ∘ fderivWithin 𝕜 f₂ s₂
⊢ ContDiff 𝕜 ↑n fun u => ↑u 1
[PROOFSTEP]
exact (isBoundedBilinearMapApply.isBoundedLinearMap_left _).contDiff
[GOAL]
case mpr
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
⊢ ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂ → ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂
[PROOFSTEP]
intro h
[GOAL]
case mpr
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
⊢ ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂
[PROOFSTEP]
have : fderivWithin 𝕜 f₂ s₂ = smulRight (1 : 𝕜 →L[𝕜] 𝕜) ∘ derivWithin f₂ s₂
[GOAL]
case this
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
⊢ fderivWithin 𝕜 f₂ s₂ = smulRight 1 ∘ derivWithin f₂ s₂
[PROOFSTEP]
ext x
[GOAL]
case this.h.h
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
x : 𝕜
⊢ ↑(fderivWithin 𝕜 f₂ s₂ x) 1 = ↑((smulRight 1 ∘ derivWithin f₂ s₂) x) 1
[PROOFSTEP]
simp [derivWithin]
[GOAL]
case mpr
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
this : fderivWithin 𝕜 f₂ s₂ = smulRight 1 ∘ derivWithin f₂ s₂
⊢ ContDiffOn 𝕜 (↑n) (fun y => fderivWithin 𝕜 f₂ s₂ y) s₂
[PROOFSTEP]
simp only [this]
[GOAL]
case mpr
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
this : fderivWithin 𝕜 f₂ s₂ = smulRight 1 ∘ derivWithin f₂ s₂
⊢ ContDiffOn 𝕜 (↑n) (fun y => (smulRight 1 ∘ derivWithin f₂ s₂) y) s₂
[PROOFSTEP]
apply ContDiff.comp_contDiffOn _ h
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
this : fderivWithin 𝕜 f₂ s₂ = smulRight 1 ∘ derivWithin f₂ s₂
⊢ ContDiff 𝕜 (↑n) (smulRight 1)
[PROOFSTEP]
have : IsBoundedBilinearMap 𝕜 fun _ : (𝕜 →L[𝕜] 𝕜) × F => _ := isBoundedBilinearMap_smulRight
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : UniqueDiffOn 𝕜 s₂
a✝ : DifferentiableOn 𝕜 f₂ s₂
h : ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂
this✝ : fderivWithin 𝕜 f₂ s₂ = smulRight 1 ∘ derivWithin f₂ s₂
this : IsBoundedBilinearMap 𝕜 fun x => smulRight x.fst x.snd
⊢ ContDiff 𝕜 (↑n) (smulRight 1)
[PROOFSTEP]
exact (this.isBoundedLinearMap_right _).contDiff
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : IsOpen s₂
⊢ ContDiffOn 𝕜 (↑(n + 1)) f₂ s₂ ↔ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 (↑n) (deriv f₂) s₂
[PROOFSTEP]
rw [contDiffOn_succ_iff_derivWithin hs.uniqueDiffOn]
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
hs : IsOpen s₂
⊢ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 (↑n) (derivWithin f₂ s₂) s₂ ↔
    DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 (↑n) (deriv f₂) s₂
[PROOFSTEP]
exact Iff.rfl.and (contDiffOn_congr fun _ => derivWithin_of_open hs)
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
⊢ ContDiffOn 𝕜 ⊤ f₂ s₂ ↔ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂
[PROOFSTEP]
constructor
[GOAL]
case mp
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
⊢ ContDiffOn 𝕜 ⊤ f₂ s₂ → DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂
[PROOFSTEP]
intro h
[GOAL]
case mp
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
h : ContDiffOn 𝕜 ⊤ f₂ s₂
⊢ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂
[PROOFSTEP]
refine' ⟨h.differentiableOn le_top, _⟩
[GOAL]
case mp
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
h : ContDiffOn 𝕜 ⊤ f₂ s₂
⊢ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂
[PROOFSTEP]
refine contDiffOn_top.2 fun n => ((contDiffOn_succ_iff_derivWithin hs).1 ?_).2
[GOAL]
case mp
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
h : ContDiffOn 𝕜 ⊤ f₂ s₂
n : ℕ
⊢ ContDiffOn 𝕜 (↑(n + 1)) f₂ s₂
[PROOFSTEP]
exact h.of_le le_top
[GOAL]
case mpr
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
⊢ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂ → ContDiffOn 𝕜 ⊤ f₂ s₂
[PROOFSTEP]
intro h
[GOAL]
case mpr
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
h : DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂
⊢ ContDiffOn 𝕜 ⊤ f₂ s₂
[PROOFSTEP]
refine' contDiffOn_top.2 fun n => _
[GOAL]
case mpr
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
h : DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂
n : ℕ
⊢ ContDiffOn 𝕜 (↑n) f₂ s₂
[PROOFSTEP]
have A : (n : ℕ∞) ≤ ∞ := le_top
[GOAL]
case mpr
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
h : DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂
n : ℕ
A : ↑n ≤ ⊤
⊢ ContDiffOn 𝕜 (↑n) f₂ s₂
[PROOFSTEP]
apply ((contDiffOn_succ_iff_derivWithin hs).2 ⟨h.1, h.2.of_le A⟩).of_le
[GOAL]
case mpr
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : UniqueDiffOn 𝕜 s₂
h : DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂
n : ℕ
A : ↑n ≤ ⊤
⊢ ↑n ≤ ↑(n + 1)
[PROOFSTEP]
exact WithTop.coe_le_coe.2 (Nat.le_succ n)
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : IsOpen s₂
⊢ ContDiffOn 𝕜 ⊤ f₂ s₂ ↔ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (deriv f₂) s₂
[PROOFSTEP]
rw [contDiffOn_top_iff_derivWithin hs.uniqueDiffOn]
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : IsOpen s₂
⊢ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂ ↔
    DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (deriv f₂) s₂
[PROOFSTEP]
exact Iff.rfl.and <| contDiffOn_congr fun _ => derivWithin_of_open hs
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
hf : ContDiffOn 𝕜 n f₂ s₂
hs : UniqueDiffOn 𝕜 s₂
hmn : m + 1 ≤ n
⊢ ContDiffOn 𝕜 m (derivWithin f₂ s₂) s₂
[PROOFSTEP]
cases m
[GOAL]
case none
𝕜 : 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_2
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
n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hf : ContDiffOn 𝕜 n f₂ s₂
hs : UniqueDiffOn 𝕜 s₂
hmn : none + 1 ≤ n
⊢ ContDiffOn 𝕜 none (derivWithin f₂ s₂) s₂
[PROOFSTEP]
change ∞ + 1 ≤ n at hmn
[GOAL]
case none
𝕜 : 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_2
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
n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hf : ContDiffOn 𝕜 n f₂ s₂
hs : UniqueDiffOn 𝕜 s₂
hmn : ⊤ + 1 ≤ n
⊢ ContDiffOn 𝕜 none (derivWithin f₂ s₂) s₂
[PROOFSTEP]
have : n = ∞ := by simpa using hmn
[GOAL]
𝕜 : 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_2
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
n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hf : ContDiffOn 𝕜 n f₂ s₂
hs : UniqueDiffOn 𝕜 s₂
hmn : ⊤ + 1 ≤ n
⊢ n = ⊤
[PROOFSTEP]
simpa using hmn
[GOAL]
case none
𝕜 : 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_2
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
n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hf : ContDiffOn 𝕜 n f₂ s₂
hs : UniqueDiffOn 𝕜 s₂
hmn : ⊤ + 1 ≤ n
this : n = ⊤
⊢ ContDiffOn 𝕜 none (derivWithin f₂ s₂) s₂
[PROOFSTEP]
rw [this] at hf
[GOAL]
case none
𝕜 : 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_2
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
n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hf : ContDiffOn 𝕜 ⊤ f₂ s₂
hs : UniqueDiffOn 𝕜 s₂
hmn : ⊤ + 1 ≤ n
this : n = ⊤
⊢ ContDiffOn 𝕜 none (derivWithin f₂ s₂) s₂
[PROOFSTEP]
exact ((contDiffOn_top_iff_derivWithin hs).1 hf).2
[GOAL]
case some
𝕜 : 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_2
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
n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hf : ContDiffOn 𝕜 n f₂ s₂
hs : UniqueDiffOn 𝕜 s₂
val✝ : ℕ
hmn : some val✝ + 1 ≤ n
⊢ ContDiffOn 𝕜 (some val✝) (derivWithin f₂ s₂) s₂
[PROOFSTEP]
change (Nat.succ _ : ℕ∞) ≤ n at hmn
[GOAL]
case some
𝕜 : 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_2
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
n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hf : ContDiffOn 𝕜 n f₂ s₂
hs : UniqueDiffOn 𝕜 s₂
val✝ : ℕ
hmn : ↑(Nat.succ val✝) ≤ n
⊢ ContDiffOn 𝕜 (some val✝) (derivWithin f₂ s₂) s₂
[PROOFSTEP]
exact ((contDiffOn_succ_iff_derivWithin hs).1 (hf.of_le hmn)).2
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
n : ℕ
⊢ ContDiff 𝕜 (↑(n + 1)) f₂ ↔ Differentiable 𝕜 f₂ ∧ ContDiff 𝕜 (↑n) (deriv f₂)
[PROOFSTEP]
simp only [← contDiffOn_univ, contDiffOn_succ_iff_deriv_of_open, isOpen_univ, differentiableOn_univ]
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
⊢ ContDiff 𝕜 ⊤ f₂ ↔ Differentiable 𝕜 f₂ ∧ ContDiff 𝕜 ⊤ (deriv f₂)
[PROOFSTEP]
simp only [← contDiffOn_univ, ← differentiableOn_univ, ← derivWithin_univ]
[GOAL]
𝕜 : 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_2
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
f₂ : 𝕜 → F
s₂ : Set 𝕜
⊢ ContDiffOn 𝕜 ⊤ f₂ univ ↔ DifferentiableOn 𝕜 f₂ univ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ univ) univ
[PROOFSTEP]
rw [contDiffOn_top_iff_derivWithin uniqueDiffOn_univ]
[GOAL]
𝕜 : 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_2
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
𝕜' : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜'
inst✝⁴ : NormedAlgebra 𝕜 𝕜'
inst✝³ : NormedSpace 𝕜' E
inst✝² : IsScalarTower 𝕜 𝕜' E
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
p' : E → FormalMultilinearSeries 𝕜' E F
h : HasFTaylorSeriesUpToOn n f p' s
m : ℕ
hm : ↑m < n
x : E
hx : x ∈ s
⊢ HasFDerivWithinAt (fun x => FormalMultilinearSeries.restrictScalars 𝕜 (p' x) m)
    (ContinuousMultilinearMap.curryLeft (FormalMultilinearSeries.restrictScalars 𝕜 (p' x) (Nat.succ m))) s x
[PROOFSTEP]
simpa only using
  -- porting note: added `by simpa only using`(ContinuousMultilinearMap.restrictScalarsLinear
          𝕜).hasFDerivAt.comp_hasFDerivWithinAt
      x <|
    (h.fderivWithin m hm x hx).restrictScalars 𝕜
[GOAL]
𝕜 : 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_2
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
𝕜' : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜'
inst✝⁴ : NormedAlgebra 𝕜 𝕜'
inst✝³ : NormedSpace 𝕜' E
inst✝² : IsScalarTower 𝕜 𝕜' E
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
p' : E → FormalMultilinearSeries 𝕜' E F
h : ContDiffWithinAt 𝕜' n f s x
m : ℕ
hm : ↑m ≤ n
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) f p u
[PROOFSTEP]
rcases h m hm with ⟨u, u_mem, p', hp'⟩
[GOAL]
case intro.intro.intro
𝕜 : 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_2
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
𝕜' : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜'
inst✝⁴ : NormedAlgebra 𝕜 𝕜'
inst✝³ : NormedSpace 𝕜' E
inst✝² : IsScalarTower 𝕜 𝕜' E
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
p'✝ : E → FormalMultilinearSeries 𝕜' E F
h : ContDiffWithinAt 𝕜' n f s x
m : ℕ
hm : ↑m ≤ n
u : Set E
u_mem : u ∈ 𝓝[insert x s] x
p' : E → FormalMultilinearSeries 𝕜' E F
hp' : HasFTaylorSeriesUpToOn (↑m) f p' u
⊢ ∃ u, u ∈ 𝓝[insert x s] x ∧ ∃ p, HasFTaylorSeriesUpToOn (↑m) f p u
[PROOFSTEP]
exact ⟨u, u_mem, _, hp'.restrictScalars _⟩
[GOAL]
𝕜 : 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_2
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‖
[PROOFSTEP]
induction' n with n IH generalizing Eu Fu Gu
[GOAL]
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_2
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‖
[PROOFSTEP]
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]
[GOAL]
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_2
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‖
[PROOFSTEP]
apply B.le_op_norm₂
[GOAL]
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_2
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‖
[PROOFSTEP]
have In : (n : ℕ∞) + 1 ≤ n.succ := by
  simp only [Nat.cast_succ, le_refl]
    -- Porting note: the next line is a hack allowing Lean to find the operator norm instance.
[GOAL]
𝕜 : 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_2
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)
[PROOFSTEP]
simp only [Nat.cast_succ, le_refl]
  -- Porting note: the next line is a hack allowing Lean to find the operator norm instance.
[GOAL]
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_2
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‖
[PROOFSTEP]
let norm := @ContinuousLinearMap.hasOpNorm _ _ Eu ((Du →L[𝕜] Fu) →L[𝕜] Du →L[𝕜] Gu) _ _ _ _ _ _ (RingHom.id 𝕜)
[GOAL]
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_2
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‖
[PROOFSTEP]
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]
        -- Porting note: the next line is a hack allowing Lean to find the operator norm instance.
[GOAL]
𝕜 : 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_2
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‖
[PROOFSTEP]
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]
      -- Porting note: the next line is a hack allowing Lean to find the operator norm instance.
[GOAL]
𝕜 : 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_2
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‖
[PROOFSTEP]
positivity
[GOAL]
𝕜 : 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_2
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‖
[PROOFSTEP]
congr 1
[GOAL]
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_2
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‖
[PROOFSTEP]
apply Finset.sum_congr rfl fun i hi => ?_
[GOAL]
𝕜 : 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_2
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‖
[PROOFSTEP]
rw [Nat.succ_sub (Nat.lt_succ_iff.1 (Finset.mem_range.1 hi)), ← norm_iteratedFDerivWithin_fderivWithin hs hx]
  -- Porting note: the next line is a hack allowing Lean to find the operator norm instance.
[GOAL]
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_2
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‖
[PROOFSTEP]
let norm := @ContinuousLinearMap.hasOpNorm _ _ (Du →L[𝕜] Eu) (Fu →L[𝕜] Du →L[𝕜] Gu) _ _ _ _ _ _ (RingHom.id 𝕜)
[GOAL]
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_2
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‖
[PROOFSTEP]
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]
[GOAL]
𝕜 : 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_2
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‖
[PROOFSTEP]
positivity
[GOAL]
𝕜 : 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_2
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‖
[PROOFSTEP]
congr 1
[GOAL]
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_2
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‖
[PROOFSTEP]
apply Finset.sum_congr rfl fun i _ => ?_
[GOAL]
𝕜 : 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_2
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‖
[PROOFSTEP]
rw [← norm_iteratedFDerivWithin_fderivWithin hs hx]
[GOAL]
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_2
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‖
[PROOFSTEP]
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)
[GOAL]
𝕜 : 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_2
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
[PROOFSTEP]
apply iteratedFDerivWithin_congr (fun y hy => ?_) hx
[GOAL]
𝕜 : 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_2
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)
[PROOFSTEP]
have L : (1 : ℕ∞) ≤ n.succ := by simpa only [ENat.coe_one, Nat.one_le_cast] using Nat.succ_pos n
[GOAL]
𝕜 : 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_2
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)
[PROOFSTEP]
simpa only [ENat.coe_one, Nat.one_le_cast] using Nat.succ_pos n
[GOAL]
𝕜 : 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_2
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)
[PROOFSTEP]
exact B.fderivWithin_of_bilinear (hf.differentiableOn L y hy) (hg.differentiableOn L y hy) (hs y hy)
[GOAL]
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_2
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‖
[PROOFSTEP]
rw [← norm_iteratedFDerivWithin_fderivWithin hs hx, J]
[GOAL]
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_2
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‖
[PROOFSTEP]
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)
[GOAL]
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_2
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‖
[PROOFSTEP]
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)))
[GOAL]
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_2
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‖
[PROOFSTEP]
rw [iteratedFDerivWithin_add_apply' A A' hs hx]
[GOAL]
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_2
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‖
[PROOFSTEP]
apply (norm_add_le _ _).trans ((add_le_add I1 I2).trans (le_of_eq ?_))
[GOAL]
𝕜 : 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_2
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‖
[PROOFSTEP]
simp_rw [← mul_add, mul_assoc]
[GOAL]
𝕜 : 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_2
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‖)
[PROOFSTEP]
congr 1
[GOAL]
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_2
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‖)
[PROOFSTEP]
exact
  (Finset.sum_choose_succ_mul (fun i j => ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 j g s x‖) n).symm
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
⊢ ‖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‖
[PROOFSTEP]
let Du : Type max uD uE uF uG := ULift.{max uE uF uG, uD} D
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
⊢ ‖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‖
[PROOFSTEP]
let Eu : Type max uD uE uF uG := ULift.{max uD uF uG, uE} E
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
⊢ ‖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‖
[PROOFSTEP]
let Fu : Type max uD uE uF uG := ULift.{max uD uE uG, uF} F
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
⊢ ‖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‖
[PROOFSTEP]
let Gu : Type max uD uE uF uG := ULift.{max uD uE uF, uG} G
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
⊢ ‖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‖
[PROOFSTEP]
have isoD : Du ≃ₗᵢ[𝕜] D := LinearIsometryEquiv.ulift 𝕜 D
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
⊢ ‖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‖
[PROOFSTEP]
have isoE : Eu ≃ₗᵢ[𝕜] E := LinearIsometryEquiv.ulift 𝕜 E
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
⊢ ‖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‖
[PROOFSTEP]
have isoF : Fu ≃ₗᵢ[𝕜] F := LinearIsometryEquiv.ulift 𝕜 F
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
⊢ ‖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‖
[PROOFSTEP]
have isoG : Gu ≃ₗᵢ[𝕜] G := LinearIsometryEquiv.ulift 𝕜 G
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
⊢ ‖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‖
[PROOFSTEP]
set fu : Du → Eu := isoE.symm ∘ f ∘ isoD with hfu
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
⊢ ‖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‖
[PROOFSTEP]
set gu : Du → Fu := isoF.symm ∘ g ∘ isoD with hgu
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
⊢ ‖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‖
[PROOFSTEP]
set Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G := ((B.comp (isoE : Eu →L[𝕜] E)).flip.comp (isoF : Fu →L[𝕜] F)).flip with hBu₀
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
⊢ ‖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‖
[PROOFSTEP]
let Bu : Eu →L[𝕜] Fu →L[𝕜] Gu
[GOAL]
case Bu
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
⊢ Eu →L[𝕜] Fu →L[𝕜] Gu
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu := ?Bu
⊢ ‖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‖
[PROOFSTEP]
exact
  ContinuousLinearMap.compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu)
    (ContinuousLinearMap.compL 𝕜 Fu G Gu (isoG.symm : G →L[𝕜] Gu)) Bu₀
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
⊢ ‖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‖
[PROOFSTEP]
have hBu :
  Bu =
    ContinuousLinearMap.compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu)
      (ContinuousLinearMap.compL 𝕜 Fu G Gu (isoG.symm : G →L[𝕜] Gu)) Bu₀ :=
  rfl
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
⊢ ‖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‖
[PROOFSTEP]
have Bu_eq : (fun y => Bu (fu y) (gu y)) = isoG.symm ∘ (fun y => B (f y) (g y)) ∘ isoD :=
  by
  ext1 y
  rw [hBu]
  iterate 2 rw [ContinuousLinearMap.compL_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
  rw [hBu₀]
  iterate 2 rw [ContinuousLinearMap.flip_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
  rw [hfu, Function.comp_apply, LinearIsometryEquiv.coe_coe'', LinearIsometryEquiv.coe_coe'',
    LinearIsometryEquiv.apply_symm_apply isoE, Function.comp_apply, hgu, LinearIsometryEquiv.coe_coe'',
    Function.comp_apply, LinearIsometryEquiv.apply_symm_apply isoF]
  simp only [Function.comp_apply]
    -- All norms are preserved by the lifting process.
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
⊢ (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
[PROOFSTEP]
ext1 y
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑(↑Bu (fu y)) (gu y) = (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
rw [hBu]
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑(↑(↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
                  (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
              Bu₀)
          (fu y))
      (gu y) =
    (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
iterate 2 rw [ContinuousLinearMap.compL_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑(↑(↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
                  (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
              Bu₀)
          (fu y))
      (gu y) =
    (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
rw [ContinuousLinearMap.compL_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑(↑(↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)) (↑Bu₀ (fu y)))
      (gu y) =
    (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
rw [ContinuousLinearMap.compL_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv) (↑(↑Bu₀ (fu y)) (gu y)) =
    (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
rw [hBu₀]
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)
      (↑(↑(flip
                (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
                  ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv)))
            (fu y))
        (gu y)) =
    (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
iterate 2 rw [ContinuousLinearMap.flip_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)
      (↑(↑(flip
                (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
                  ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv)))
            (fu y))
        (gu y)) =
    (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
rw [ContinuousLinearMap.flip_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)
      (↑(↑(flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
            (↑↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv) (gu y)))
        (fu y)) =
    (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
rw [ContinuousLinearMap.flip_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)
      (↑(↑B (↑↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv) (fu y)))
        (↑↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv) (gu y))) =
    (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
rw [hfu, Function.comp_apply, LinearIsometryEquiv.coe_coe'', LinearIsometryEquiv.coe_coe'',
  LinearIsometryEquiv.apply_symm_apply isoE, Function.comp_apply, hgu, LinearIsometryEquiv.coe_coe'',
  Function.comp_apply, LinearIsometryEquiv.apply_symm_apply isoF]
[GOAL]
case h
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
y : Du
⊢ ↑(LinearIsometryEquiv.symm isoG) (↑(↑B (f (↑isoD y))) ((g ∘ ↑isoD) y)) =
    (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) y
[PROOFSTEP]
simp only [Function.comp_apply]
  -- All norms are preserved by the lifting process.
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
⊢ ‖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‖
[PROOFSTEP]
have Bu_le : ‖Bu‖ ≤ ‖B‖ :=
  by
  refine' ContinuousLinearMap.op_norm_le_bound _ (norm_nonneg _) fun y => _
  refine' ContinuousLinearMap.op_norm_le_bound _ (by positivity) fun x => _
  simp only [ContinuousLinearMap.compL_apply, ContinuousLinearMap.coe_comp', Function.comp_apply,
    LinearIsometryEquiv.coe_coe'', ContinuousLinearMap.flip_apply, LinearIsometryEquiv.norm_map]
  rw [ContinuousLinearMap.coe_comp', Function.comp_apply, ContinuousLinearMap.compL_apply,
    ContinuousLinearMap.coe_comp', Function.comp_apply]
  iterate 2 rw [ContinuousLinearMap.flip_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
  simp only [LinearIsometryEquiv.coe_coe'', LinearIsometryEquiv.norm_map]
  calc
    ‖B (isoE y) (isoF x)‖ ≤ ‖B (isoE y)‖ * ‖isoF x‖ := ContinuousLinearMap.le_op_norm _ _
    _ ≤ ‖B‖ * ‖isoE y‖ * ‖isoF x‖ := (mul_le_mul_of_nonneg_right (ContinuousLinearMap.le_op_norm _ _) (norm_nonneg _))
    _ = ‖B‖ * ‖y‖ * ‖x‖ := by simp only [LinearIsometryEquiv.norm_map]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
⊢ ‖Bu‖ ≤ ‖B‖
[PROOFSTEP]
refine' ContinuousLinearMap.op_norm_le_bound _ (norm_nonneg _) fun y => _
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
⊢ ‖↑Bu y‖ ≤ ‖B‖ * ‖y‖
[PROOFSTEP]
refine' ContinuousLinearMap.op_norm_le_bound _ (by positivity) fun x => _
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
⊢ 0 ≤ ‖B‖ * ‖y‖
[PROOFSTEP]
positivity
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x✝ : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x✝ ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
x : Fu
⊢ ‖↑(↑Bu y) x‖ ≤ ‖B‖ * ‖y‖ * ‖x‖
[PROOFSTEP]
simp only [ContinuousLinearMap.compL_apply, ContinuousLinearMap.coe_comp', Function.comp_apply,
  LinearIsometryEquiv.coe_coe'', ContinuousLinearMap.flip_apply, LinearIsometryEquiv.norm_map]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x✝ : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x✝ ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
x : Fu
⊢ ‖↑(↑(comp (↑(compL 𝕜 (ULift F) G (ULift G)) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv))
                (flip
                  (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
                    ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))))
            y)
        x‖ ≤
    ‖B‖ * ‖y‖ * ‖x‖
[PROOFSTEP]
rw [ContinuousLinearMap.coe_comp', Function.comp_apply, ContinuousLinearMap.compL_apply, ContinuousLinearMap.coe_comp',
  Function.comp_apply]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x✝ : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x✝ ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
x : Fu
⊢ ‖↑↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)
        (↑(↑(flip
                  (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
                    ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv)))
              y)
          x)‖ ≤
    ‖B‖ * ‖y‖ * ‖x‖
[PROOFSTEP]
iterate 2 rw [ContinuousLinearMap.flip_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x✝ : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x✝ ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
x : Fu
⊢ ‖↑↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)
        (↑(↑(flip
                  (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
                    ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv)))
              y)
          x)‖ ≤
    ‖B‖ * ‖y‖ * ‖x‖
[PROOFSTEP]
rw [ContinuousLinearMap.flip_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x✝ : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x✝ ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
x : Fu
⊢ ‖↑↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)
        (↑(↑(flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
              (↑↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv) x))
          y)‖ ≤
    ‖B‖ * ‖y‖ * ‖x‖
[PROOFSTEP]
rw [ContinuousLinearMap.flip_apply, ContinuousLinearMap.coe_comp', Function.comp_apply]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x✝ : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x✝ ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
x : Fu
⊢ ‖↑↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)
        (↑(↑B (↑↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv) y))
          (↑↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv) x))‖ ≤
    ‖B‖ * ‖y‖ * ‖x‖
[PROOFSTEP]
simp only [LinearIsometryEquiv.coe_coe'', LinearIsometryEquiv.norm_map]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x✝ : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x✝ ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
x : Fu
⊢ ‖↑(↑B (↑isoE y)) (↑isoF x)‖ ≤ ‖B‖ * ‖y‖ * ‖x‖
[PROOFSTEP]
calc
  ‖B (isoE y) (isoF x)‖ ≤ ‖B (isoE y)‖ * ‖isoF x‖ := ContinuousLinearMap.le_op_norm _ _
  _ ≤ ‖B‖ * ‖isoE y‖ * ‖isoF x‖ := (mul_le_mul_of_nonneg_right (ContinuousLinearMap.le_op_norm _ _) (norm_nonneg _))
  _ = ‖B‖ * ‖y‖ * ‖x‖ := by simp only [LinearIsometryEquiv.norm_map]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x✝ : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x✝ ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
y : Eu
x : Fu
⊢ ‖B‖ * ‖↑isoE y‖ * ‖↑isoF x‖ = ‖B‖ * ‖y‖ * ‖x‖
[PROOFSTEP]
simp only [LinearIsometryEquiv.norm_map]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
⊢ ‖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‖
[PROOFSTEP]
let su := isoD ⁻¹' s
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' 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‖
[PROOFSTEP]
have hsu : UniqueDiffOn 𝕜 su := isoD.toContinuousLinearEquiv.uniqueDiffOn_preimage_iff.2 hs
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
⊢ ‖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‖
[PROOFSTEP]
let xu := isoD.symm x
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
⊢ ‖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‖
[PROOFSTEP]
have hxu : xu ∈ su := by simpa only [Set.mem_preimage, LinearIsometryEquiv.apply_symm_apply] using hx
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
⊢ xu ∈ su
[PROOFSTEP]
simpa only [Set.mem_preimage, LinearIsometryEquiv.apply_symm_apply] using hx
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
⊢ ‖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‖
[PROOFSTEP]
have xu_x : isoD xu = x := by simp only [LinearIsometryEquiv.apply_symm_apply]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
⊢ ↑isoD xu = x
[PROOFSTEP]
simp only [LinearIsometryEquiv.apply_symm_apply]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
⊢ ‖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‖
[PROOFSTEP]
have hfu : ContDiffOn 𝕜 n fu su :=
  isoE.symm.contDiff.comp_contDiffOn ((hf.of_le hn).comp_continuousLinearMap (isoD : Du →L[𝕜] D))
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
⊢ ‖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‖
[PROOFSTEP]
have hgu : ContDiffOn 𝕜 n gu su :=
  isoF.symm.contDiff.comp_contDiffOn ((hg.of_le hn).comp_continuousLinearMap (isoD : Du →L[𝕜] D))
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
⊢ ‖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‖
[PROOFSTEP]
have Nfu : ∀ i, ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖ :=
  by
  intro i
  rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hsu hxu]
  rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_right _ _ hs, xu_x]
  rwa [← xu_x] at hx
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
⊢ ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
intro i
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hsu hxu]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i (f ∘ ↑isoD) su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_right _ _ hs, xu_x]
[GOAL]
case hx
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
i : ℕ
⊢ ↑isoD xu ∈ s
[PROOFSTEP]
rwa [← xu_x] at hx
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
⊢ ‖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‖
[PROOFSTEP]
have Ngu : ∀ i, ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖ :=
  by
  intro i
  rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hsu hxu]
  rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_right _ _ hs, xu_x]
  rwa [← xu_x] at hx
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
⊢ ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
[PROOFSTEP]
intro i
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
[PROOFSTEP]
rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hsu hxu]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i (g ∘ ↑isoD) su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
[PROOFSTEP]
rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_right _ _ hs, xu_x]
[GOAL]
case hx
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
i : ℕ
⊢ ↑isoD xu ∈ s
[PROOFSTEP]
rwa [← xu_x] at hx
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
⊢ ‖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‖
[PROOFSTEP]
have NBu :
  ‖iteratedFDerivWithin 𝕜 n (fun y => Bu (fu y) (gu y)) su xu‖ =
    ‖iteratedFDerivWithin 𝕜 n (fun y => B (f y) (g y)) s x‖ :=
  by
  rw [Bu_eq]
  rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hsu hxu]
  rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_right _ _ hs, xu_x]
  rwa [← xu_x] at hx
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑Bu (fu y)) (gu y)) su xu‖ =
    ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖
[PROOFSTEP]
rw [Bu_eq]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
⊢ ‖iteratedFDerivWithin 𝕜 n (↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) su xu‖ =
    ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖
[PROOFSTEP]
rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hsu hxu]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
⊢ ‖iteratedFDerivWithin 𝕜 n ((fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD) su xu‖ =
    ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖
[PROOFSTEP]
rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_right _ _ hs, xu_x]
[GOAL]
case hx
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
⊢ ↑isoD xu ∈ s
[PROOFSTEP]
rwa [← xu_x] at hx
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
NBu :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑Bu (fu y)) (gu y)) su xu‖ =
    ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖
⊢ ‖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‖
[PROOFSTEP]
have :
  ‖iteratedFDerivWithin 𝕜 n (fun y => Bu (fu y) (gu y)) su xu‖ ≤
    ‖Bu‖ *
      ∑ i in Finset.range (n + 1),
        (n.choose i : ℝ) * ‖iteratedFDerivWithin 𝕜 i fu su xu‖ * ‖iteratedFDerivWithin 𝕜 (n - i) gu su xu‖ :=
  Bu.norm_iteratedFDerivWithin_le_of_bilinear_aux hfu hgu hsu hxu
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
NBu :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑Bu (fu y)) (gu y)) su xu‖ =
    ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖
this :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑Bu (fu y)) (gu y)) su xu‖ ≤
    ‖Bu‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i fu su xu‖ * ‖iteratedFDerivWithin 𝕜 (n - i) gu su xu‖
⊢ ‖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‖
[PROOFSTEP]
simp only [Nfu, Ngu, NBu] at this
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
NBu :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑Bu (fu y)) (gu y)) su xu‖ =
    ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖
this :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖↑(↑(compL 𝕜 (ULift E) (ULift F →L[𝕜] G) (ULift F →L[𝕜] ULift G))
              (↑(compL 𝕜 (ULift F) G (ULift G))
                ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
          (flip
            (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
              ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv)))‖ *
      ∑ x_1 in Finset.range (n + 1),
        ↑(Nat.choose n x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g s x‖
⊢ ‖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‖
[PROOFSTEP]
apply this.trans (mul_le_mul_of_nonneg_right Bu_le ?_)
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
NBu :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑Bu (fu y)) (gu y)) su xu‖ =
    ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖
this :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖↑(↑(compL 𝕜 (ULift E) (ULift F →L[𝕜] G) (ULift F →L[𝕜] ULift G))
              (↑(compL 𝕜 (ULift F) G (ULift G))
                ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
          (flip
            (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
              ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv)))‖ *
      ∑ x_1 in Finset.range (n + 1),
        ↑(Nat.choose n x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g s x‖
⊢ 0 ≤
    ∑ x_1 in Finset.range (n + 1),
      ↑(Nat.choose n x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g s x‖
[PROOFSTEP]
exact Finset.sum_nonneg' fun i => by positivity
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
Du : Type (max uD uE uF uG) := ULift D
Eu : Type (max uD uE uF uG) := ULift E
Fu : Type (max uD uE uF uG) := ULift F
Gu : Type (max uD uE uF uG) := ULift G
isoD : Du ≃ₗᵢ[𝕜] D
isoE : Eu ≃ₗᵢ[𝕜] E
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : Du → Eu := ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
hfu✝ : fu = ↑(LinearIsometryEquiv.symm isoE) ∘ f ∘ ↑isoD
gu : Du → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
hgu✝ : gu = ↑(LinearIsometryEquiv.symm isoF) ∘ g ∘ ↑isoD
Bu₀ : Eu →L[𝕜] Fu →L[𝕜] G :=
  flip
    (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv))) ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
hBu₀ :
  Bu₀ =
    flip
      (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
        ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv))
Bu : Eu →L[𝕜] Fu →L[𝕜] Gu :=
  ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
        (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
    Bu₀
hBu :
  Bu =
    ↑(↑(compL 𝕜 Eu (Fu →L[𝕜] G) (Fu →L[𝕜] Gu))
          (↑(compL 𝕜 Fu G Gu) ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
      Bu₀
Bu_eq : (fun y => ↑(↑Bu (fu y)) (gu y)) = ↑(LinearIsometryEquiv.symm isoG) ∘ (fun y => ↑(↑B (f y)) (g y)) ∘ ↑isoD
Bu_le : ‖Bu‖ ≤ ‖B‖
su : Set Du := ↑isoD ⁻¹' s
hsu : UniqueDiffOn 𝕜 su
xu : Du := ↑(LinearIsometryEquiv.symm isoD) x
hxu : xu ∈ su
xu_x : ↑isoD xu = x
hfu : ContDiffOn 𝕜 (↑n) fu su
hgu : ContDiffOn 𝕜 (↑n) gu su
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu su xu‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu su xu‖ = ‖iteratedFDerivWithin 𝕜 i g s x‖
NBu :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑Bu (fu y)) (gu y)) su xu‖ =
    ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖
this :
  ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ‖↑(↑(compL 𝕜 (ULift E) (ULift F →L[𝕜] G) (ULift F →L[𝕜] ULift G))
              (↑(compL 𝕜 (ULift F) G (ULift G))
                ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm isoG).toLinearEquiv)))
          (flip
            (comp (flip (comp B ↑(ContinuousLinearEquiv.mk isoE.toLinearEquiv)))
              ↑(ContinuousLinearEquiv.mk isoF.toLinearEquiv)))‖ *
      ∑ x_1 in Finset.range (n + 1),
        ↑(Nat.choose n x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g s x‖
i : ℕ
⊢ 0 ≤ ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
[PROOFSTEP]
positivity
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : D
n : ℕ
hn : ↑n ≤ N
⊢ ‖iteratedFDeriv 𝕜 n (fun y => ↑(↑B (f y)) (g y)) x‖ ≤
    ‖B‖ * ∑ i in Finset.range (n + 1), ↑(Nat.choose n i) * ‖iteratedFDeriv 𝕜 i f x‖ * ‖iteratedFDeriv 𝕜 (n - i) g x‖
[PROOFSTEP]
simp_rw [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : D
n : ℕ
hn : ↑n ≤ N
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) univ x‖ ≤
    ‖B‖ *
      ∑ x_1 in Finset.range (n + 1),
        ↑(Nat.choose n x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f univ x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g univ x‖
[PROOFSTEP]
exact B.norm_iteratedFDerivWithin_le_of_bilinear hf.contDiffOn hg.contDiffOn uniqueDiffOn_univ (mem_univ x) hn
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
hB : ‖B‖ ≤ 1
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
[PROOFSTEP]
apply (B.norm_iteratedFDerivWithin_le_of_bilinear hf hg hs hx hn).trans
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
hB : ‖B‖ ≤ 1
⊢ ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
[PROOFSTEP]
apply mul_le_of_le_one_left (Finset.sum_nonneg' fun i => ?_) hB
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
hB : ‖B‖ ≤ 1
i : ℕ
⊢ 0 ≤ ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
[PROOFSTEP]
positivity
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : D
n : ℕ
hn : ↑n ≤ N
hB : ‖B‖ ≤ 1
⊢ ‖iteratedFDeriv 𝕜 n (fun y => ↑(↑B (f y)) (g y)) x‖ ≤
    ∑ i in Finset.range (n + 1), ↑(Nat.choose n i) * ‖iteratedFDeriv 𝕜 i f x‖ * ‖iteratedFDeriv 𝕜 (n - i) g x‖
[PROOFSTEP]
simp_rw [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : D
n : ℕ
hn : ↑n ≤ N
hB : ‖B‖ ≤ 1
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) univ x‖ ≤
    ∑ x_1 in Finset.range (n + 1),
      ↑(Nat.choose n x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f univ x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g univ x‖
[PROOFSTEP]
exact
  B.norm_iteratedFDerivWithin_le_of_bilinear_of_le_one hf.contDiffOn hg.contDiffOn uniqueDiffOn_univ (mem_univ x) hn hB
[GOAL]
𝕜 : 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_2
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
A : Type u_3
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
f g : E → A
N : ℕ∞
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : E
n : ℕ
hn : ↑n ≤ N
⊢ ‖iteratedFDeriv 𝕜 n (fun y => f y * g y) x‖ ≤
    ∑ i in Finset.range (n + 1), ↑(Nat.choose n i) * ‖iteratedFDeriv 𝕜 i f x‖ * ‖iteratedFDeriv 𝕜 (n - i) g x‖
[PROOFSTEP]
simp_rw [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
A : Type u_3
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
f g : E → A
N : ℕ∞
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : E
n : ℕ
hn : ↑n ≤ N
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => f y * g y) univ x‖ ≤
    ∑ x_1 in Finset.range (n + 1),
      ↑(Nat.choose n x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f univ x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g univ x‖
[PROOFSTEP]
exact norm_iteratedFDerivWithin_mul_le hf.contDiffOn hg.contDiffOn uniqueDiffOn_univ (mem_univ x) hn
[GOAL]
𝕜 : 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_2
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
Fu Gu : Type u
inst✝³ : NormedAddCommGroup Fu
inst✝² : NormedSpace 𝕜 Fu
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
f : E → Fu
n : ℕ
s : Set E
t : Set Fu
x : E
hg : ContDiffOn 𝕜 (↑n) g t
hf : ContDiffOn 𝕜 (↑n) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
induction' n using Nat.case_strong_induction_on with n IH generalizing Gu
[GOAL]
case hz
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑0) g t
hf : ContDiffOn 𝕜 (↑0) f s
hC : ∀ (i : ℕ), i ≤ 0 → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ 0 → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
⊢ ‖iteratedFDerivWithin 𝕜 0 (g ∘ f) s x‖ ≤ ↑0! * C * D ^ 0
[PROOFSTEP]
simpa [norm_iteratedFDerivWithin_zero, Nat.factorial_zero, algebraMap.coe_one, one_mul, pow_zero, mul_one,
  comp_apply] using hC 0 le_rfl
[GOAL]
case hi
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (g ∘ f) s x‖ ≤ ↑(Nat.succ n)! * C * D ^ Nat.succ n
[PROOFSTEP]
have M : (n : ℕ∞) < n.succ := Nat.cast_lt.2 n.lt_succ_self
[GOAL]
case hi
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (g ∘ f) s x‖ ≤ ↑(Nat.succ n)! * C * D ^ Nat.succ n
[PROOFSTEP]
have Cnonneg : 0 ≤ C := (norm_nonneg _).trans (hC 0 bot_le)
[GOAL]
case hi
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (g ∘ f) s x‖ ≤ ↑(Nat.succ n)! * C * D ^ Nat.succ n
[PROOFSTEP]
have Dnonneg : 0 ≤ D := by
  have : 1 ≤ n + 1 := by simp only [le_add_iff_nonneg_left, zero_le']
  simpa only [pow_one] using
    (norm_nonneg _).trans
      (hD 1 le_rfl this)
        -- use the inductive assumption to bound the derivatives of `g' ∘ f`.
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
⊢ 0 ≤ D
[PROOFSTEP]
have : 1 ≤ n + 1 := by simp only [le_add_iff_nonneg_left, zero_le']
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
⊢ 1 ≤ n + 1
[PROOFSTEP]
simp only [le_add_iff_nonneg_left, zero_le']
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
this : 1 ≤ n + 1
⊢ 0 ≤ D
[PROOFSTEP]
simpa only [pow_one] using
  (norm_nonneg _).trans
    (hD 1 le_rfl this)
      -- use the inductive assumption to bound the derivatives of `g' ∘ f`.
[GOAL]
case hi
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (g ∘ f) s x‖ ≤ ↑(Nat.succ n)! * C * D ^ Nat.succ n
[PROOFSTEP]
have I : ∀ i ∈ Finset.range (n + 1), ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ i ! * C * D ^ i
[GOAL]
case I
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
⊢ ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
[PROOFSTEP]
intro i hi
[GOAL]
case I
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
[PROOFSTEP]
simp only [Finset.mem_range_succ_iff] at hi
[GOAL]
case I
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
⊢ ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
[PROOFSTEP]
apply IH i hi
[GOAL]
case I.hg
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
⊢ ContDiffOn 𝕜 (↑i) (fderivWithin 𝕜 g t) t
[PROOFSTEP]
apply hg.fderivWithin ht
[GOAL]
case I.hg
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
⊢ ↑i + 1 ≤ ↑(Nat.succ n)
[PROOFSTEP]
simp only [Nat.cast_succ]
[GOAL]
case I.hg
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
⊢ ↑i + 1 ≤ ↑n + 1
[PROOFSTEP]
exact add_le_add_right (Nat.cast_le.2 hi) _
[GOAL]
case I.hf
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
⊢ ContDiffOn 𝕜 (↑i) f s
[PROOFSTEP]
apply hf.of_le (Nat.cast_le.2 (hi.trans n.le_succ))
[GOAL]
case I.hC
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
⊢ ∀ (i_1 : ℕ), i_1 ≤ i → ‖iteratedFDerivWithin 𝕜 i_1 (fderivWithin 𝕜 g t) t (f x)‖ ≤ C
[PROOFSTEP]
intro j hj
[GOAL]
case I.hC
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
j : ℕ
hj : j ≤ i
⊢ ‖iteratedFDerivWithin 𝕜 j (fderivWithin 𝕜 g t) t (f x)‖ ≤ C
[PROOFSTEP]
have : ‖iteratedFDerivWithin 𝕜 j (fderivWithin 𝕜 g t) t (f x)‖ = ‖iteratedFDerivWithin 𝕜 (j + 1) g t (f x)‖ := by
  rw [iteratedFDerivWithin_succ_eq_comp_right ht (hst hx), comp_apply, LinearIsometryEquiv.norm_map]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
j : ℕ
hj : j ≤ i
⊢ ‖iteratedFDerivWithin 𝕜 j (fderivWithin 𝕜 g t) t (f x)‖ = ‖iteratedFDerivWithin 𝕜 (j + 1) g t (f x)‖
[PROOFSTEP]
rw [iteratedFDerivWithin_succ_eq_comp_right ht (hst hx), comp_apply, LinearIsometryEquiv.norm_map]
[GOAL]
case I.hC
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
j : ℕ
hj : j ≤ i
this : ‖iteratedFDerivWithin 𝕜 j (fderivWithin 𝕜 g t) t (f x)‖ = ‖iteratedFDerivWithin 𝕜 (j + 1) g t (f x)‖
⊢ ‖iteratedFDerivWithin 𝕜 j (fderivWithin 𝕜 g t) t (f x)‖ ≤ C
[PROOFSTEP]
rw [this]
[GOAL]
case I.hC
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
j : ℕ
hj : j ≤ i
this : ‖iteratedFDerivWithin 𝕜 j (fderivWithin 𝕜 g t) t (f x)‖ = ‖iteratedFDerivWithin 𝕜 (j + 1) g t (f x)‖
⊢ ‖iteratedFDerivWithin 𝕜 (j + 1) g t (f x)‖ ≤ C
[PROOFSTEP]
exact hC (j + 1) (add_le_add (hj.trans hi) le_rfl)
[GOAL]
case I.hD
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
⊢ ∀ (i_1 : ℕ), 1 ≤ i_1 → i_1 ≤ i → ‖iteratedFDerivWithin 𝕜 i_1 f s x‖ ≤ D ^ i_1
[PROOFSTEP]
intro j hj h'j
[GOAL]
case I.hD
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
i : ℕ
hi : i ≤ n
j : ℕ
hj : 1 ≤ j
h'j : j ≤ i
⊢ ‖iteratedFDerivWithin 𝕜 j f s x‖ ≤ D ^ j
[PROOFSTEP]
exact
  hD j hj
    (h'j.trans (hi.trans n.le_succ))
      -- reformulate `hD` as a bound for the derivatives of `f'`.
[GOAL]
case hi
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (g ∘ f) s x‖ ≤ ↑(Nat.succ n)! * C * D ^ Nat.succ n
[PROOFSTEP]
have J : ∀ i, ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1) :=
  by
  intro i
  have : ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ = ‖iteratedFDerivWithin 𝕜 (n - i + 1) f s x‖
  · rw [iteratedFDerivWithin_succ_eq_comp_right hs hx, comp_apply, LinearIsometryEquiv.norm_map]
  rw [this]
  apply hD
  · simp only [le_add_iff_nonneg_left, zero_le']
  · apply Nat.succ_le_succ tsub_le_self
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
⊢ ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
[PROOFSTEP]
intro i
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
[PROOFSTEP]
have : ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ = ‖iteratedFDerivWithin 𝕜 (n - i + 1) f s x‖
[GOAL]
case this
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ = ‖iteratedFDerivWithin 𝕜 (n - i + 1) f s x‖
[PROOFSTEP]
rw [iteratedFDerivWithin_succ_eq_comp_right hs hx, comp_apply, LinearIsometryEquiv.norm_map]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
i : ℕ
this : ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ = ‖iteratedFDerivWithin 𝕜 (n - i + 1) f s x‖
⊢ ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
[PROOFSTEP]
rw [this]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
i : ℕ
this : ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ = ‖iteratedFDerivWithin 𝕜 (n - i + 1) f s x‖
⊢ ‖iteratedFDerivWithin 𝕜 (n - i + 1) f s x‖ ≤ D ^ (n - i + 1)
[PROOFSTEP]
apply hD
[GOAL]
case 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
i : ℕ
this : ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ = ‖iteratedFDerivWithin 𝕜 (n - i + 1) f s x‖
⊢ 1 ≤ n - i + 1
[PROOFSTEP]
simp only [le_add_iff_nonneg_left, zero_le']
[GOAL]
case 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
i : ℕ
this : ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ = ‖iteratedFDerivWithin 𝕜 (n - i + 1) f s x‖
⊢ n - i + 1 ≤ Nat.succ n
[PROOFSTEP]
apply Nat.succ_le_succ tsub_le_self
[GOAL]
case hi
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ‖iteratedFDerivWithin 𝕜 (Nat.succ n) (g ∘ f) s x‖ ≤ ↑(Nat.succ n)! * C * D ^ Nat.succ n
[PROOFSTEP]
calc
  ‖iteratedFDerivWithin 𝕜 (n + 1) (g ∘ f) s x‖ =
      ‖iteratedFDerivWithin 𝕜 n (fun y : E => fderivWithin 𝕜 (g ∘ f) s y) s x‖ :=
    by rw [iteratedFDerivWithin_succ_eq_comp_right hs hx, comp_apply, LinearIsometryEquiv.norm_map]
  _ =
      ‖iteratedFDerivWithin 𝕜 n
          (fun y : E => ContinuousLinearMap.compL 𝕜 E Fu Gu (fderivWithin 𝕜 g t (f y)) (fderivWithin 𝕜 f s y)) s x‖ :=
    by
    have L : (1 : ℕ∞) ≤ n.succ := by simpa only [ENat.coe_one, Nat.one_le_cast] using n.succ_pos
    congr 1
    refine' iteratedFDerivWithin_congr (fun y hy => _) hx _
    apply fderivWithin.comp _ _ _ hst (hs y hy)
    · exact hg.differentiableOn L _ (hst hy)
    · exact hf.differentiableOn L _ hy
  _ ≤
      ∑ i in Finset.range (n + 1),
        (n.choose i : ℝ) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ *
          ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ :=
    by
    have A : ContDiffOn 𝕜 n (fderivWithin 𝕜 g t ∘ f) s :=
      by
      apply ContDiffOn.comp _ (hf.of_le M.le) hst
      apply hg.fderivWithin ht
      simp only [Nat.cast_succ, le_refl]
    have B : ContDiffOn 𝕜 n (fderivWithin 𝕜 f s) s :=
      by
      apply hf.fderivWithin hs
      simp only [Nat.cast_succ, le_refl]
    exact
      (ContinuousLinearMap.compL 𝕜 E Fu Gu).norm_iteratedFDerivWithin_le_of_bilinear_of_le_one A B hs hx le_rfl
        (ContinuousLinearMap.norm_compL_le 𝕜 E Fu Gu)
          -- bound each of the terms using the estimates on previous derivatives (that use the inductive
              -- assumption for `g' ∘ f`).
  _ ≤ ∑ i in Finset.range (n + 1), (n.choose i : ℝ) * (i ! * C * D ^ i) * D ^ (n - i + 1) :=
    by
    apply Finset.sum_le_sum fun i hi => ?_
    simp only [mul_assoc (n.choose i : ℝ)]
    refine' mul_le_mul_of_nonneg_left _ (Nat.cast_nonneg _)
    apply mul_le_mul (I i hi) (J i) (norm_nonneg _)
    positivity
      -- We are left with trivial algebraic manipulations to see that this is smaller than
          -- the claimed bound.
  _ =
      ∑ i in Finset.range (n + 1),
        -- porting note: had to insert a few more explicit type ascriptions in this and similar
              -- expressions.(n ! : ℝ) * ((i ! : ℝ)⁻¹ * i !) * C * (D ^ i * D ^ (n - i + 1)) * ((n - i)! : ℝ)⁻¹ :=
    by
    apply Finset.sum_congr rfl fun i hi => ?_
    simp only [Nat.cast_choose ℝ (Finset.mem_range_succ_iff.1 hi), div_eq_inv_mul, mul_inv]
    ring
  _ = ∑ i in Finset.range (n + 1), (n ! : ℝ) * 1 * C * D ^ (n + 1) * ((n - i)! : ℝ)⁻¹ :=
    by
    apply Finset.sum_congr rfl fun i hi => ?_
    congr 2
    · congr
      apply inv_mul_cancel
      simpa only [Ne.def, Nat.cast_eq_zero] using i.factorial_ne_zero
    · rw [← pow_add]
      congr 1
      rw [Nat.add_succ, Nat.succ_inj']
      exact Nat.add_sub_of_le (Finset.mem_range_succ_iff.1 hi)
  _ ≤ ∑ i in Finset.range (n + 1), (n ! : ℝ) * 1 * C * D ^ (n + 1) * 1 :=
    by
    apply Finset.sum_le_sum fun i _hi => ?_
    refine' mul_le_mul_of_nonneg_left _ (by positivity)
    apply inv_le_one
    simpa only [Nat.one_le_cast] using (n - i).factorial_pos
  _ = (n + 1)! * C * D ^ (n + 1) := by
    simp only [mul_assoc, mul_one, Finset.sum_const, Finset.card_range, nsmul_eq_mul, Nat.factorial_succ, Nat.cast_mul]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ‖iteratedFDerivWithin 𝕜 (n + 1) (g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (g ∘ f) s y) s x‖
[PROOFSTEP]
rw [iteratedFDerivWithin_succ_eq_comp_right hs hx, comp_apply, LinearIsometryEquiv.norm_map]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (g ∘ f) s y) s x‖ =
    ‖iteratedFDerivWithin 𝕜 n
        (fun y => ↑(↑(ContinuousLinearMap.compL 𝕜 E Fu Gu) (fderivWithin 𝕜 g t (f y))) (fderivWithin 𝕜 f s y)) s x‖
[PROOFSTEP]
have L : (1 : ℕ∞) ≤ n.succ := by simpa only [ENat.coe_one, Nat.one_le_cast] using n.succ_pos
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ 1 ≤ ↑(Nat.succ n)
[PROOFSTEP]
simpa only [ENat.coe_one, Nat.one_le_cast] using n.succ_pos
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
L : 1 ≤ ↑(Nat.succ n)
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (g ∘ f) s y) s x‖ =
    ‖iteratedFDerivWithin 𝕜 n
        (fun y => ↑(↑(ContinuousLinearMap.compL 𝕜 E Fu Gu) (fderivWithin 𝕜 g t (f y))) (fderivWithin 𝕜 f s y)) s x‖
[PROOFSTEP]
congr 1
[GOAL]
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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
L : 1 ≤ ↑(Nat.succ n)
⊢ iteratedFDerivWithin 𝕜 n (fun y => fderivWithin 𝕜 (g ∘ f) s y) s x =
    iteratedFDerivWithin 𝕜 n
      (fun y => ↑(↑(ContinuousLinearMap.compL 𝕜 E Fu Gu) (fderivWithin 𝕜 g t (f y))) (fderivWithin 𝕜 f s y)) s x
[PROOFSTEP]
refine' iteratedFDerivWithin_congr (fun y hy => _) hx _
[GOAL]
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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
L : 1 ≤ ↑(Nat.succ n)
y : E
hy : y ∈ s
⊢ fderivWithin 𝕜 (g ∘ f) s y =
    ↑(↑(ContinuousLinearMap.compL 𝕜 E Fu Gu) (fderivWithin 𝕜 g t (f y))) (fderivWithin 𝕜 f s y)
[PROOFSTEP]
apply fderivWithin.comp _ _ _ hst (hs y hy)
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
L : 1 ≤ ↑(Nat.succ n)
y : E
hy : y ∈ s
⊢ DifferentiableWithinAt 𝕜 g t (f y)
[PROOFSTEP]
exact hg.differentiableOn L _ (hst hy)
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
L : 1 ≤ ↑(Nat.succ n)
y : E
hy : y ∈ s
⊢ DifferentiableWithinAt 𝕜 f s y
[PROOFSTEP]
exact hf.differentiableOn L _ hy
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ‖iteratedFDerivWithin 𝕜 n
        (fun y => ↑(↑(ContinuousLinearMap.compL 𝕜 E Fu Gu) (fderivWithin 𝕜 g t (f y))) (fderivWithin 𝕜 f s y)) s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ *
        ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖
[PROOFSTEP]
have A : ContDiffOn 𝕜 n (fderivWithin 𝕜 g t ∘ f) s :=
  by
  apply ContDiffOn.comp _ (hf.of_le M.le) hst
  apply hg.fderivWithin ht
  simp only [Nat.cast_succ, le_refl]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ContDiffOn 𝕜 (↑n) (fderivWithin 𝕜 g t ∘ f) s
[PROOFSTEP]
apply ContDiffOn.comp _ (hf.of_le M.le) hst
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ContDiffOn 𝕜 (↑n) (fderivWithin 𝕜 g t) t
[PROOFSTEP]
apply hg.fderivWithin ht
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ↑n + 1 ≤ ↑(Nat.succ n)
[PROOFSTEP]
simp only [Nat.cast_succ, le_refl]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
A : ContDiffOn 𝕜 (↑n) (fderivWithin 𝕜 g t ∘ f) s
⊢ ‖iteratedFDerivWithin 𝕜 n
        (fun y => ↑(↑(ContinuousLinearMap.compL 𝕜 E Fu Gu) (fderivWithin 𝕜 g t (f y))) (fderivWithin 𝕜 f s y)) s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ *
        ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖
[PROOFSTEP]
have B : ContDiffOn 𝕜 n (fderivWithin 𝕜 f s) s :=
  by
  apply hf.fderivWithin hs
  simp only [Nat.cast_succ, le_refl]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
A : ContDiffOn 𝕜 (↑n) (fderivWithin 𝕜 g t ∘ f) s
⊢ ContDiffOn 𝕜 (↑n) (fderivWithin 𝕜 f s) s
[PROOFSTEP]
apply hf.fderivWithin hs
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
A : ContDiffOn 𝕜 (↑n) (fderivWithin 𝕜 g t ∘ f) s
⊢ ↑n + 1 ≤ ↑(Nat.succ n)
[PROOFSTEP]
simp only [Nat.cast_succ, le_refl]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
A : ContDiffOn 𝕜 (↑n) (fderivWithin 𝕜 g t ∘ f) s
B : ContDiffOn 𝕜 (↑n) (fderivWithin 𝕜 f s) s
⊢ ‖iteratedFDerivWithin 𝕜 n
        (fun y => ↑(↑(ContinuousLinearMap.compL 𝕜 E Fu Gu) (fderivWithin 𝕜 g t (f y))) (fderivWithin 𝕜 f s y)) s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ *
        ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖
[PROOFSTEP]
exact
  (ContinuousLinearMap.compL 𝕜 E Fu Gu).norm_iteratedFDerivWithin_le_of_bilinear_of_le_one A B hs hx le_rfl
    (ContinuousLinearMap.norm_compL_le 𝕜 E Fu Gu)
      -- bound each of the terms using the estimates on previous derivatives (that use the inductive
          -- assumption for `g' ∘ f`).
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ *
        ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤
    ∑ i in Finset.range (n + 1), ↑(Nat.choose n i) * (↑i ! * C * D ^ i) * D ^ (n - i + 1)
[PROOFSTEP]
apply Finset.sum_le_sum fun i hi => ?_
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ *
      ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤
    ↑(Nat.choose n i) * (↑i ! * C * D ^ i) * D ^ (n - i + 1)
[PROOFSTEP]
simp only [mul_assoc (n.choose i : ℝ)]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ ↑(Nat.choose n i) *
      (‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ *
        ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖) ≤
    ↑(Nat.choose n i) * (↑i ! * C * D ^ i * D ^ (n - i + 1))
[PROOFSTEP]
refine' mul_le_mul_of_nonneg_left _ (Nat.cast_nonneg _)
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤
    ↑i ! * C * D ^ i * D ^ (n - i + 1)
[PROOFSTEP]
apply mul_le_mul (I i hi) (J i) (norm_nonneg _)
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ 0 ≤ ↑i ! * C * D ^ i
[PROOFSTEP]
positivity
  -- We are left with trivial algebraic manipulations to see that this is smaller than
      -- the claimed bound.
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ∑ i in Finset.range (n + 1), ↑(Nat.choose n i) * (↑i ! * C * D ^ i) * D ^ (n - i + 1) =
    ∑ i in Finset.range (n + 1), ↑n ! * ((↑i !)⁻¹ * ↑i !) * C * (D ^ i * D ^ (n - i + 1)) * (↑(n - i)!)⁻¹
[PROOFSTEP]
apply Finset.sum_congr rfl fun i hi => ?_
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ ↑(Nat.choose n i) * (↑i ! * C * D ^ i) * D ^ (n - i + 1) =
    ↑n ! * ((↑i !)⁻¹ * ↑i !) * C * (D ^ i * D ^ (n - i + 1)) * (↑(n - i)!)⁻¹
[PROOFSTEP]
simp only [Nat.cast_choose ℝ (Finset.mem_range_succ_iff.1 hi), div_eq_inv_mul, mul_inv]
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ (↑i !)⁻¹ * (↑(n - i)!)⁻¹ * ↑n ! * (↑i ! * C * D ^ i) * D ^ (n - i + 1) =
    ↑n ! * ((↑i !)⁻¹ * ↑i !) * C * (D ^ i * D ^ (n - i + 1)) * (↑(n - i)!)⁻¹
[PROOFSTEP]
ring
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ∑ i in Finset.range (n + 1), ↑n ! * ((↑i !)⁻¹ * ↑i !) * C * (D ^ i * D ^ (n - i + 1)) * (↑(n - i)!)⁻¹ =
    ∑ i in Finset.range (n + 1), ↑n ! * 1 * C * D ^ (n + 1) * (↑(n - i)!)⁻¹
[PROOFSTEP]
apply Finset.sum_congr rfl fun i hi => ?_
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ ↑n ! * ((↑i !)⁻¹ * ↑i !) * C * (D ^ i * D ^ (n - i + 1)) * (↑(n - i)!)⁻¹ = ↑n ! * 1 * C * D ^ (n + 1) * (↑(n - i)!)⁻¹
[PROOFSTEP]
congr 2
[GOAL]
case e_a.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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ ↑n ! * ((↑i !)⁻¹ * ↑i !) * C = ↑n ! * 1 * C
[PROOFSTEP]
congr
[GOAL]
case e_a.e_a.e_a.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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ (↑i !)⁻¹ * ↑i ! = 1
[PROOFSTEP]
apply inv_mul_cancel
[GOAL]
case e_a.e_a.e_a.e_a.h
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ ↑i ! ≠ 0
[PROOFSTEP]
simpa only [Ne.def, Nat.cast_eq_zero] using i.factorial_ne_zero
[GOAL]
case e_a.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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ D ^ i * D ^ (n - i + 1) = D ^ (n + 1)
[PROOFSTEP]
rw [← pow_add]
[GOAL]
case e_a.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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ D ^ (i + (n - i + 1)) = D ^ (n + 1)
[PROOFSTEP]
congr 1
[GOAL]
case e_a.e_a.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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ i + (n - i + 1) = n + 1
[PROOFSTEP]
rw [Nat.add_succ, Nat.succ_inj']
[GOAL]
case e_a.e_a.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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
hi : i ∈ Finset.range (n + 1)
⊢ i + (n - i) = n
[PROOFSTEP]
exact Nat.add_sub_of_le (Finset.mem_range_succ_iff.1 hi)
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ∑ i in Finset.range (n + 1), ↑n ! * 1 * C * D ^ (n + 1) * (↑(n - i)!)⁻¹ ≤
    ∑ i in Finset.range (n + 1), ↑n ! * 1 * C * D ^ (n + 1) * 1
[PROOFSTEP]
apply Finset.sum_le_sum fun i _hi => ?_
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
_hi : i ∈ Finset.range (n + 1)
⊢ ↑n ! * 1 * C * D ^ (n + 1) * (↑(n - i)!)⁻¹ ≤ ↑n ! * 1 * C * D ^ (n + 1) * 1
[PROOFSTEP]
refine' mul_le_mul_of_nonneg_left _ (by positivity)
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
_hi : i ∈ Finset.range (n + 1)
⊢ 0 ≤ ↑n ! * 1 * C * D ^ (n + 1)
[PROOFSTEP]
positivity
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
_hi : i ∈ Finset.range (n + 1)
⊢ (↑(n - i)!)⁻¹ ≤ 1
[PROOFSTEP]
apply inv_le_one
[GOAL]
case ha
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
i : ℕ
_hi : i ∈ Finset.range (n + 1)
⊢ 1 ≤ ↑(n - i)!
[PROOFSTEP]
simpa only [Nat.one_le_cast] using (n - i).factorial_pos
[GOAL]
𝕜 : 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_2
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
Fu Gu✝ : Type u
inst✝⁵ : NormedAddCommGroup Fu
inst✝⁴ : NormedSpace 𝕜 Fu
inst✝³ : NormedAddCommGroup Gu✝
inst✝² : NormedSpace 𝕜 Gu✝
g✝ : Fu → Gu✝
f : E → Fu
n✝ : ℕ
s : Set E
t : Set Fu
x : E
hg✝ : ContDiffOn 𝕜 (↑n✝) g✝ t
hf✝ : ContDiffOn 𝕜 (↑n✝) f s
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC✝ : ∀ (i : ℕ), i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i g✝ t (f x)‖ ≤ C
hD✝ : ∀ (i : ℕ), 1 ≤ i → i ≤ n✝ → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
n : ℕ
IH :
  ∀ (m : ℕ),
    m ≤ n →
      ∀ {Gu : Type u} [inst : NormedAddCommGroup Gu] [inst_1 : NormedSpace 𝕜 Gu] {g : Fu → Gu},
        ContDiffOn 𝕜 (↑m) g t →
          ContDiffOn 𝕜 (↑m) f s →
            (∀ (i : ℕ), i ≤ m → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C) →
              (∀ (i : ℕ), 1 ≤ i → i ≤ m → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i) →
                ‖iteratedFDerivWithin 𝕜 m (g ∘ f) s x‖ ≤ ↑m ! * C * D ^ m
Gu : Type u
inst✝¹ : NormedAddCommGroup Gu
inst✝ : NormedSpace 𝕜 Gu
g : Fu → Gu
hg : ContDiffOn 𝕜 (↑(Nat.succ n)) g t
hf : ContDiffOn 𝕜 (↑(Nat.succ n)) f s
hC : ∀ (i : ℕ), i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ Nat.succ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
M : ↑n < ↑(Nat.succ n)
Cnonneg : 0 ≤ C
Dnonneg : 0 ≤ D
I : ∀ (i : ℕ), i ∈ Finset.range (n + 1) → ‖iteratedFDerivWithin 𝕜 i (fderivWithin 𝕜 g t ∘ f) s x‖ ≤ ↑i ! * C * D ^ i
J : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 (n - i) (fderivWithin 𝕜 f s) s x‖ ≤ D ^ (n - i + 1)
⊢ ∑ i in Finset.range (n + 1), ↑n ! * 1 * C * D ^ (n + 1) * 1 = ↑(n + 1)! * C * D ^ (n + 1)
[PROOFSTEP]
simp only [mul_assoc, mul_one, Finset.sum_const, Finset.card_range, nsmul_eq_mul, Nat.factorial_succ, Nat.cast_mul]
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
let Fu : Type max uF uG := ULift.{uG, uF} F
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
let Gu : Type max uF uG := ULift.{uF, uG} G
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have isoF : Fu ≃ₗᵢ[𝕜] F := LinearIsometryEquiv.ulift 𝕜 F
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have isoG : Gu ≃ₗᵢ[𝕜] G := LinearIsometryEquiv.ulift 𝕜 G
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
let fu : E → Fu := isoF.symm ∘ f
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
let gu : Fu → Gu := isoG.symm ∘ g ∘ isoF
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
let tu := isoF ⁻¹' t
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have htu : UniqueDiffOn 𝕜 tu := isoF.toContinuousLinearEquiv.uniqueDiffOn_preimage_iff.2 ht
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have hstu : MapsTo fu s tu := fun y hy ↦ by
  simpa only [mem_preimage, comp_apply, LinearIsometryEquiv.apply_symm_apply] using hst hy
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
y : E
hy : y ∈ s
⊢ fu y ∈ tu
[PROOFSTEP]
simpa only [mem_preimage, comp_apply, LinearIsometryEquiv.apply_symm_apply] using hst hy
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have Ffu : isoF (fu x) = f x := by
  simp only [comp_apply, LinearIsometryEquiv.apply_symm_apply]
    -- All norms are preserved by the lifting process.
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
⊢ ↑isoF (fu x) = f x
[PROOFSTEP]
simp only [comp_apply, LinearIsometryEquiv.apply_symm_apply]
  -- All norms are preserved by the lifting process.
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have hfu : ContDiffOn 𝕜 n fu s := isoF.symm.contDiff.comp_contDiffOn (hf.of_le hn)
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have hgu : ContDiffOn 𝕜 n gu tu :=
  isoG.symm.contDiff.comp_contDiffOn ((hg.of_le hn).comp_continuousLinearMap (isoF : Fu →L[𝕜] F))
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have Nfu : ∀ i, ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖ := fun i ↦ by
  rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hs hx]
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
[PROOFSTEP]
rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hs hx]
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f s x‖ ≤ D ^ i
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
simp_rw [← Nfu] at hD
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have Ngu : ∀ i, ‖iteratedFDerivWithin 𝕜 i gu tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ := fun i ↦
  by
  rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ htu (hstu hx)]
  rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_right _ _ ht, Ffu]
  rw [Ffu]
  exact hst hx
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i gu tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖
[PROOFSTEP]
rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ htu (hstu hx)]
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i (g ∘ ↑isoF) tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖
[PROOFSTEP]
rw [LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_right _ _ ht, Ffu]
[GOAL]
case hx
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
i : ℕ
⊢ ↑isoF (fu x) ∈ t
[PROOFSTEP]
rw [Ffu]
[GOAL]
case hx
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
i : ℕ
⊢ f x ∈ t
[PROOFSTEP]
exact hst hx
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g t (f x)‖ ≤ C
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
simp_rw [← Ngu] at hC
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖
hC :
  ∀ (i : ℕ),
    i ≤ n →
      ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF) (↑isoF ⁻¹' t)
            ((↑(LinearIsometryEquiv.symm isoF) ∘ f) x)‖ ≤
        C
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
have Nfgu : ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 n (gu ∘ fu) s x‖ :=
  by
  have : gu ∘ fu = isoG.symm ∘ g ∘ f := by
    ext x
    simp only [comp_apply, LinearIsometryEquiv.map_eq_iff, LinearIsometryEquiv.apply_symm_apply]
  rw [this, LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hs hx]
    -- deduce the required bound from the one for `gu ∘ fu`.
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖
hC :
  ∀ (i : ℕ),
    i ≤ n →
      ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF) (↑isoF ⁻¹' t)
            ((↑(LinearIsometryEquiv.symm isoF) ∘ f) x)‖ ≤
        C
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 n (gu ∘ fu) s x‖
[PROOFSTEP]
have : gu ∘ fu = isoG.symm ∘ g ∘ f := by
  ext x
  simp only [comp_apply, LinearIsometryEquiv.map_eq_iff, LinearIsometryEquiv.apply_symm_apply]
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖
hC :
  ∀ (i : ℕ),
    i ≤ n →
      ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF) (↑isoF ⁻¹' t)
            ((↑(LinearIsometryEquiv.symm isoF) ∘ f) x)‖ ≤
        C
⊢ gu ∘ fu = ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ f
[PROOFSTEP]
ext x
[GOAL]
case h.h
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x✝ : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x✝ ∈ s
C D : ℝ
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x✝) = f x✝
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x✝‖ = ‖iteratedFDerivWithin 𝕜 i f s x✝‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x✝‖ ≤ D ^ i
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu tu (fu x✝)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x✝)‖
hC :
  ∀ (i : ℕ),
    i ≤ n →
      ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF) (↑isoF ⁻¹' t)
            ((↑(LinearIsometryEquiv.symm isoF) ∘ f) x✝)‖ ≤
        C
x : E
⊢ ((gu ∘ fu) x).down = ((↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ f) x).down
[PROOFSTEP]
simp only [comp_apply, LinearIsometryEquiv.map_eq_iff, LinearIsometryEquiv.apply_symm_apply]
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖
hC :
  ∀ (i : ℕ),
    i ≤ n →
      ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF) (↑isoF ⁻¹' t)
            ((↑(LinearIsometryEquiv.symm isoF) ∘ f) x)‖ ≤
        C
this : gu ∘ fu = ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ f
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 n (gu ∘ fu) s x‖
[PROOFSTEP]
rw [this, LinearIsometryEquiv.norm_iteratedFDerivWithin_comp_left _ _ hs hx]
  -- deduce the required bound from the one for `gu ∘ fu`.
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖
hC :
  ∀ (i : ℕ),
    i ≤ n →
      ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF) (↑isoF ⁻¹' t)
            ((↑(LinearIsometryEquiv.symm isoF) ∘ f) x)‖ ≤
        C
Nfgu : ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 n (gu ∘ fu) s x‖
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
rw [Nfgu]
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
s : Set E
t : Set F
x : E
N : ℕ∞
hg : ContDiffOn 𝕜 N g t
hf : ContDiffOn 𝕜 N f s
hn : ↑n ≤ N
ht : UniqueDiffOn 𝕜 t
hs : UniqueDiffOn 𝕜 s
hst : MapsTo f s t
hx : x ∈ s
C D : ℝ
Fu : Type (max uF uG) := ULift F
Gu : Type (max uF uG) := ULift G
isoF : Fu ≃ₗᵢ[𝕜] F
isoG : Gu ≃ₗᵢ[𝕜] G
fu : E → Fu := ↑(LinearIsometryEquiv.symm isoF) ∘ f
gu : Fu → Gu := ↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF
tu : Set Fu := ↑isoF ⁻¹' t
htu : UniqueDiffOn 𝕜 tu
hstu : MapsTo fu s tu
Ffu : ↑isoF (fu x) = f x
hfu : ContDiffOn 𝕜 (↑n) fu s
hgu : ContDiffOn 𝕜 (↑n) gu tu
Nfu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i fu s x‖ = ‖iteratedFDerivWithin 𝕜 i f s x‖
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoF) ∘ f) s x‖ ≤ D ^ i
Ngu : ∀ (i : ℕ), ‖iteratedFDerivWithin 𝕜 i gu tu (fu x)‖ = ‖iteratedFDerivWithin 𝕜 i g t (f x)‖
hC :
  ∀ (i : ℕ),
    i ≤ n →
      ‖iteratedFDerivWithin 𝕜 i (↑(LinearIsometryEquiv.symm isoG) ∘ g ∘ ↑isoF) (↑isoF ⁻¹' t)
            ((↑(LinearIsometryEquiv.symm isoF) ∘ f) x)‖ ≤
        C
Nfgu : ‖iteratedFDerivWithin 𝕜 n (g ∘ f) s x‖ = ‖iteratedFDerivWithin 𝕜 n (gu ∘ fu) s x‖
⊢ ‖iteratedFDerivWithin 𝕜 n (gu ∘ fu) s x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
exact norm_iteratedFDerivWithin_comp_le_aux hgu hfu htu hs hstu hx hC hD
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
N : ℕ∞
hg : ContDiff 𝕜 N g
hf : ContDiff 𝕜 N f
hn : ↑n ≤ N
x : E
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDeriv 𝕜 i g (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDeriv 𝕜 i f x‖ ≤ D ^ i
⊢ ‖iteratedFDeriv 𝕜 n (g ∘ f) x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
simp_rw [← iteratedFDerivWithin_univ] at hC hD ⊢
[GOAL]
𝕜 : 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_2
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
g : F → G
f : E → F
n : ℕ
N : ℕ∞
hg : ContDiff 𝕜 N g
hf : ContDiff 𝕜 N f
hn : ↑n ≤ N
x : E
C D : ℝ
hC : ∀ (i : ℕ), i ≤ n → ‖iteratedFDerivWithin 𝕜 i g univ (f x)‖ ≤ C
hD : ∀ (i : ℕ), 1 ≤ i → i ≤ n → ‖iteratedFDerivWithin 𝕜 i f univ x‖ ≤ D ^ i
⊢ ‖iteratedFDerivWithin 𝕜 n (g ∘ f) univ x‖ ≤ ↑n ! * C * D ^ n
[PROOFSTEP]
exact
  norm_iteratedFDerivWithin_comp_le hg.contDiffOn hf.contDiffOn hn uniqueDiffOn_univ uniqueDiffOn_univ (mapsTo_univ _ _)
    (mem_univ x) hC hD
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
g : E → F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(f y) (g y)) s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
[PROOFSTEP]
let B : (F →L[𝕜] G) →L[𝕜] F →L[𝕜] G := ContinuousLinearMap.flip (ContinuousLinearMap.apply 𝕜 G)
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
g : E → F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
B : (F →L[𝕜] G) →L[𝕜] F →L[𝕜] G := ContinuousLinearMap.flip (ContinuousLinearMap.apply 𝕜 G)
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(f y) (g y)) s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
[PROOFSTEP]
have hB : ‖B‖ ≤ 1 := by
  simp only [ContinuousLinearMap.op_norm_flip, ContinuousLinearMap.apply]
  refine' ContinuousLinearMap.op_norm_le_bound _ zero_le_one fun f => _
  simp only [ContinuousLinearMap.coe_id', id.def, one_mul]
  rfl
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
g : E → F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
B : (F →L[𝕜] G) →L[𝕜] F →L[𝕜] G := ContinuousLinearMap.flip (ContinuousLinearMap.apply 𝕜 G)
⊢ ‖B‖ ≤ 1
[PROOFSTEP]
simp only [ContinuousLinearMap.op_norm_flip, ContinuousLinearMap.apply]
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
g : E → F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
B : (F →L[𝕜] G) →L[𝕜] F →L[𝕜] G := ContinuousLinearMap.flip (ContinuousLinearMap.apply 𝕜 G)
⊢ ‖ContinuousLinearMap.id 𝕜 (F →L[𝕜] G)‖ ≤ 1
[PROOFSTEP]
refine' ContinuousLinearMap.op_norm_le_bound _ zero_le_one fun f => _
[GOAL]
𝕜 : 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_2
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
f✝ : E → F →L[𝕜] G
g : E → F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f✝ s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
B : (F →L[𝕜] G) →L[𝕜] F →L[𝕜] G := ContinuousLinearMap.flip (ContinuousLinearMap.apply 𝕜 G)
f : F →L[𝕜] G
⊢ ‖↑(ContinuousLinearMap.id 𝕜 (F →L[𝕜] G)) f‖ ≤ 1 * ‖f‖
[PROOFSTEP]
simp only [ContinuousLinearMap.coe_id', id.def, one_mul]
[GOAL]
𝕜 : 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_2
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
f✝ : E → F →L[𝕜] G
g : E → F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f✝ s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
B : (F →L[𝕜] G) →L[𝕜] F →L[𝕜] G := ContinuousLinearMap.flip (ContinuousLinearMap.apply 𝕜 G)
f : F →L[𝕜] G
⊢ ‖f‖ ≤ ‖f‖
[PROOFSTEP]
rfl
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
g : E → F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
B : (F →L[𝕜] G) →L[𝕜] F →L[𝕜] G := ContinuousLinearMap.flip (ContinuousLinearMap.apply 𝕜 G)
hB : ‖B‖ ≤ 1
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(f y) (g y)) s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
[PROOFSTEP]
exact B.norm_iteratedFDerivWithin_le_of_bilinear_of_le_one hf hg hs hx hn hB
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
g : E → F
N : ℕ∞
n : ℕ
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : E
hn : ↑n ≤ N
⊢ ‖iteratedFDeriv 𝕜 n (fun y => ↑(f y) (g y)) x‖ ≤
    ∑ i in Finset.range (n + 1), ↑(Nat.choose n i) * ‖iteratedFDeriv 𝕜 i f x‖ * ‖iteratedFDeriv 𝕜 (n - i) g x‖
[PROOFSTEP]
simp only [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
g : E → F
N : ℕ∞
n : ℕ
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : E
hn : ↑n ≤ N
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(f y) (g y)) univ x‖ ≤
    ∑ x_1 in Finset.range (n + 1),
      ↑(Nat.choose n x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f univ x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g univ x‖
[PROOFSTEP]
exact norm_iteratedFDerivWithin_clm_apply hf.contDiffOn hg.contDiffOn uniqueDiffOn_univ (Set.mem_univ x) hn
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
c : F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(f y) c) s x‖ ≤ ‖c‖ * ‖iteratedFDerivWithin 𝕜 n f s x‖
[PROOFSTEP]
let g : (F →L[𝕜] G) →L[𝕜] G := ContinuousLinearMap.apply 𝕜 G c
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
c : F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
g : (F →L[𝕜] G) →L[𝕜] G := ↑(ContinuousLinearMap.apply 𝕜 G) c
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(f y) c) s x‖ ≤ ‖c‖ * ‖iteratedFDerivWithin 𝕜 n f s x‖
[PROOFSTEP]
have h := g.norm_compContinuousMultilinearMap_le (iteratedFDerivWithin 𝕜 n f s x)
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
c : F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
g : (F →L[𝕜] G) →L[𝕜] G := ↑(ContinuousLinearMap.apply 𝕜 G) c
h :
  ‖ContinuousLinearMap.compContinuousMultilinearMap g (iteratedFDerivWithin 𝕜 n f s x)‖ ≤
    ‖g‖ * ‖iteratedFDerivWithin 𝕜 n f s x‖
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(f y) c) s x‖ ≤ ‖c‖ * ‖iteratedFDerivWithin 𝕜 n f s x‖
[PROOFSTEP]
rw [← g.iteratedFDerivWithin_comp_left hf hs hx hn] at h
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
c : F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
g : (F →L[𝕜] G) →L[𝕜] G := ↑(ContinuousLinearMap.apply 𝕜 G) c
h : ‖iteratedFDerivWithin 𝕜 n (↑g ∘ f) s x‖ ≤ ‖g‖ * ‖iteratedFDerivWithin 𝕜 n f s x‖
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(f y) c) s x‖ ≤ ‖c‖ * ‖iteratedFDerivWithin 𝕜 n f s x‖
[PROOFSTEP]
refine' h.trans (mul_le_mul_of_nonneg_right _ (norm_nonneg _))
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
c : F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
g : (F →L[𝕜] G) →L[𝕜] G := ↑(ContinuousLinearMap.apply 𝕜 G) c
h : ‖iteratedFDerivWithin 𝕜 n (↑g ∘ f) s x‖ ≤ ‖g‖ * ‖iteratedFDerivWithin 𝕜 n f s x‖
⊢ ‖g‖ ≤ ‖c‖
[PROOFSTEP]
refine' g.op_norm_le_bound (norm_nonneg _) fun f => _
[GOAL]
𝕜 : 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_2
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
f✝ : E → F →L[𝕜] G
c : F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
g : (F →L[𝕜] G) →L[𝕜] G := ↑(ContinuousLinearMap.apply 𝕜 G) c
h : ‖iteratedFDerivWithin 𝕜 n (↑g ∘ f✝) s x‖ ≤ ‖g‖ * ‖iteratedFDerivWithin 𝕜 n f✝ s x‖
f : F →L[𝕜] G
⊢ ‖↑g f‖ ≤ ‖c‖ * ‖f‖
[PROOFSTEP]
rw [ContinuousLinearMap.apply_apply, mul_comm]
[GOAL]
𝕜 : 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_2
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
f✝ : E → F →L[𝕜] G
c : F
s : Set E
x : E
N : ℕ∞
n : ℕ
hf : ContDiffOn 𝕜 N f✝ s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
hn : ↑n ≤ N
g : (F →L[𝕜] G) →L[𝕜] G := ↑(ContinuousLinearMap.apply 𝕜 G) c
h : ‖iteratedFDerivWithin 𝕜 n (↑g ∘ f✝) s x‖ ≤ ‖g‖ * ‖iteratedFDerivWithin 𝕜 n f✝ s x‖
f : F →L[𝕜] G
⊢ ‖↑f c‖ ≤ ‖f‖ * ‖c‖
[PROOFSTEP]
exact f.le_op_norm c
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
c : F
x : E
N : ℕ∞
n : ℕ
hf : ContDiff 𝕜 N f
hn : ↑n ≤ N
⊢ ‖iteratedFDeriv 𝕜 n (fun y => ↑(f y) c) x‖ ≤ ‖c‖ * ‖iteratedFDeriv 𝕜 n f x‖
[PROOFSTEP]
simp only [← iteratedFDerivWithin_univ]
[GOAL]
𝕜 : 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_2
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
f : E → F →L[𝕜] G
c : F
x : E
N : ℕ∞
n : ℕ
hf : ContDiff 𝕜 N f
hn : ↑n ≤ N
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(f y) c) univ x‖ ≤ ‖c‖ * ‖iteratedFDerivWithin 𝕜 n f univ x‖
[PROOFSTEP]
exact norm_iteratedFDerivWithin_clm_apply_const hf.contDiffOn uniqueDiffOn_univ (Set.mem_univ x) hn