Theorem: ContinuousLinearEquiv.iteratedFDerivWithin_comp_right
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: induction' i with i IH generalizing x
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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

tactic: ext1
state_before: case zero
𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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

tactic: simp only [Nat.zero_eq, iteratedFDerivWithin_zero_apply, comp_apply,
 ContinuousMultilinearMap.compContinuousLinearMap_apply]
state_before: 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.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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✝

tactic: ext1 m
state_before: case succ
𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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

tactic: simp only [ContinuousMultilinearMap.compContinuousLinearMap_apply,
  ContinuousLinearEquiv.coe_coe, iteratedFDerivWithin_succ_apply_left]
state_before: 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.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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

tactic: 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
state_before: 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.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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))

tactic: rw [this, ContinuousLinearEquiv.comp_fderivWithin _ (g.uniqueDiffOn_preimage_iff.2 hs x hx)]
state_before: 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.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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))

tactic: simp only [ContinuousLinearMap.coe_comp', ContinuousLinearEquiv.coe_coe, comp_apply,
  ContinuousMultilinearMap.compContinuousLinearMapEquivL_apply,
  ContinuousMultilinearMap.compContinuousLinearMap_apply]
state_before: 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.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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))

tactic: rw [ContinuousLinearEquiv.comp_right_fderivWithin _ (g.uniqueDiffOn_preimage_iff.2 hs x hx)]
state_before: 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.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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))

tactic: rfl
state_before: 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.487520
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set 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))