Theorem: ContinuousMultilinearMap.fderiv_compContinuousLinearMap_apply
Proof state before:
case H
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
df : (i : ι) → E i →L[𝕜] E₁ i
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
h : DifferentiableAt 𝕜 (fun f => compContinuousLinearMap g f) f
x : (i : ι) → E i
this :
  HasFDerivAt (fun f i => (f i) (x i))
    (ContinuousLinearMap.pi fun i =>
      ContinuousLinearMap.comp ((ContinuousLinearMap.apply 𝕜 (E₁ i)) (x i)) (ContinuousLinearMap.proj i))
    f
i : ι
a✝ : i ∈ Finset.univ
⊢ (df i) (x i) = (Function.update f i (df i) i) (x i) ∧
    ∀ (x_1 : ι), x_1 ≠ i → (f x_1) (x x_1) = (Function.update f i (df i) x_1) (x x_1)
Tactic:
refine And.intro ?_ ?_
Proof state after:
case H.refine_1
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
df : (i : ι) → E i →L[𝕜] E₁ i
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
h : DifferentiableAt 𝕜 (fun f => compContinuousLinearMap g f) f
x : (i : ι) → E i
this :
  HasFDerivAt (fun f i => (f i) (x i))
    (ContinuousLinearMap.pi fun i =>
      ContinuousLinearMap.comp ((ContinuousLinearMap.apply 𝕜 (E₁ i)) (x i)) (ContinuousLinearMap.proj i))
    f
i : ι
a✝ : i ∈ Finset.univ
⊢ (df i) (x i) = (Function.update f i (df i) i) (x i)

case H.refine_2
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
df : (i : ι) → E i →L[𝕜] E₁ i
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
h : DifferentiableAt 𝕜 (fun f => compContinuousLinearMap g f) f
x : (i : ι) → E i
this :
  HasFDerivAt (fun f i => (f i) (x i))
    (ContinuousLinearMap.pi fun i =>
      ContinuousLinearMap.comp ((ContinuousLinearMap.apply 𝕜 (E₁ i)) (x i)) (ContinuousLinearMap.proj i))
    f
i : ι
a✝ : i ∈ Finset.univ
⊢ ∀ (x_1 : ι), x_1 ≠ i → (f x_1) (x x_1) = (Function.update f i (df i) x_1) (x x_1)