Theorem: fderiv_eq_copi_fpideriv (ForML/IndexDeriv.lean)

State before:
ι : Type u_1
𝕜 : Type u_2
inst✝⁸ : Fintype ι
inst✝⁷ : DecidableEq ι
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
M : ι → Type u_4
inst✝³ : (i : ι) → NormedAddCommGroup (M i)
inst✝² : (i : ι) → NormedSpace 𝕜 (M i)
F : Type u_5
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : ((i : ι) → M i) → F
x : (i : ι) → M i
hf : DifferentiableAt 𝕜 f x
⊢ fderiv 𝕜 f x = ContinuousLinearMap.copi fun i => fpideriv 𝕜 i f x
Tactic:
rw [fderiv_eq_copi_fderiv_comp_single]
State after:
ι : Type u_1
𝕜 : Type u_2
inst✝⁸ : Fintype ι
inst✝⁷ : DecidableEq ι
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
M : ι → Type u_4
inst✝³ : (i : ι) → NormedAddCommGroup (M i)
inst✝² : (i : ι) → NormedSpace 𝕜 (M i)
F : Type u_5
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : ((i : ι) → M i) → F
x : (i : ι) → M i
hf : DifferentiableAt 𝕜 f x
⊢ (ContinuousLinearMap.copi fun i => ContinuousLinearMap.comp (fderiv 𝕜 f x) (ContinuousLinearMap.single i)) =
    ContinuousLinearMap.copi fun i => fpideriv 𝕜 i f x

State before:
ι : Type u_1
𝕜 : Type u_2
inst✝⁸ : Fintype ι
inst✝⁷ : DecidableEq ι
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
M : ι → Type u_4
inst✝³ : (i : ι) → NormedAddCommGroup (M i)
inst✝² : (i : ι) → NormedSpace 𝕜 (M i)
F : Type u_5
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : ((i : ι) → M i) → F
x : (i : ι) → M i
hf : DifferentiableAt 𝕜 f x
⊢ (ContinuousLinearMap.copi fun i => ContinuousLinearMap.comp (fderiv 𝕜 f x) (ContinuousLinearMap.single i)) =
    ContinuousLinearMap.copi fun i => fpideriv 𝕜 i f x
Tactic:
congr
State after:
case e_f
ι : Type u_1
𝕜 : Type u_2
inst✝⁸ : Fintype ι
inst✝⁷ : DecidableEq ι
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
M : ι → Type u_4
inst✝³ : (i : ι) → NormedAddCommGroup (M i)
inst✝² : (i : ι) → NormedSpace 𝕜 (M i)
F : Type u_5
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : ((i : ι) → M i) → F
x : (i : ι) → M i
hf : DifferentiableAt 𝕜 f x
⊢ (fun i => ContinuousLinearMap.comp (fderiv 𝕜 f x) (ContinuousLinearMap.single i)) = fun i => fpideriv 𝕜 i f x

State before:
case e_f
ι : Type u_1
𝕜 : Type u_2
inst✝⁸ : Fintype ι
inst✝⁷ : DecidableEq ι
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
M : ι → Type u_4
inst✝³ : (i : ι) → NormedAddCommGroup (M i)
inst✝² : (i : ι) → NormedSpace 𝕜 (M i)
F : Type u_5
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : ((i : ι) → M i) → F
x : (i : ι) → M i
hf : DifferentiableAt 𝕜 f x
⊢ (fun i => ContinuousLinearMap.comp (fderiv 𝕜 f x) (ContinuousLinearMap.single i)) = fun i => fpideriv 𝕜 i f x
Tactic:
ext i m
State after:
case e_f.h.h
ι : Type u_1
𝕜 : Type u_2
inst✝⁸ : Fintype ι
inst✝⁷ : DecidableEq ι
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
M : ι → Type u_4
inst✝³ : (i : ι) → NormedAddCommGroup (M i)
inst✝² : (i : ι) → NormedSpace 𝕜 (M i)
F : Type u_5
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : ((i : ι) → M i) → F
x : (i : ι) → M i
hf : DifferentiableAt 𝕜 f x
i : ι
m : M i
⊢ (ContinuousLinearMap.comp (fderiv 𝕜 f x) (ContinuousLinearMap.single i)) m = (fpideriv 𝕜 i f x) m

State before:
case e_f.h.h
ι : Type u_1
𝕜 : Type u_2
inst✝⁸ : Fintype ι
inst✝⁷ : DecidableEq ι
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
M : ι → Type u_4
inst✝³ : (i : ι) → NormedAddCommGroup (M i)
inst✝² : (i : ι) → NormedSpace 𝕜 (M i)
F : Type u_5
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : ((i : ι) → M i) → F
x : (i : ι) → M i
hf : DifferentiableAt 𝕜 f x
i : ι
m : M i
⊢ (ContinuousLinearMap.comp (fderiv 𝕜 f x) (ContinuousLinearMap.single i)) m = (fpideriv 𝕜 i f x) m
Tactic:
simp
State after:
case e_f.h.h
ι : Type u_1
𝕜 : Type u_2
inst✝⁸ : Fintype ι
inst✝⁷ : DecidableEq ι
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
M : ι → Type u_4
inst✝³ : (i : ι) → NormedAddCommGroup (M i)
inst✝² : (i : ι) → NormedSpace 𝕜 (M i)
F : Type u_5
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : ((i : ι) → M i) → F
x : (i : ι) → M i
hf : DifferentiableAt 𝕜 f x
i : ι
m : M i
⊢ (fderiv 𝕜 f x) (Pi.single i m) = (fpideriv 𝕜 i f x) m

State before:
case e_f.h.h
ι : Type u_1
𝕜 : Type u_2
inst✝⁸ : Fintype ι
inst✝⁷ : DecidableEq ι
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
M : ι → Type u_4
inst✝³ : (i : ι) → NormedAddCommGroup (M i)
inst✝² : (i : ι) → NormedSpace 𝕜 (M i)
F : Type u_5
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : ((i : ι) → M i) → F
x : (i : ι) → M i
hf : DifferentiableAt 𝕜 f x
i : ι
m : M i
⊢ (fderiv 𝕜 f x) (Pi.single i m) = (fpideriv 𝕜 i f x) m
Tactic:
exact (fpideriv_apply_eq_fderiv_apply_single hf).symm
State after:
no goals