Theorem: HasFTaylorSeriesUpTo.hasFDerivAt_orderedIteratedFPiDeriv'
Proof state before:
case succ.intro.intro
ι : 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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
n : ℕ
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
hf_pred : HasFTaylorSeriesUpTo (↑(Nat.succ n)) f f'
right✝ : ContinuousOn (fun x => f' x (Nat.succ n + 1)) Set.univ
hf_diff :
  ∀ (x : (i : ι) → M i),
    HasFDerivAt (fun y => f' y (Nat.succ n)) (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n)))) x
ih :
  ∀ {js : Fin n → ι} {x : (i : ι) → M i},
    HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
      (ContinuousLinearMap.comp
        (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
        (ContinuousMultilinearMap.curryLeft (f' x (n + 1))))
      x
⊢ HasFDerivAt
    (⇑(continuousMultilinearCurryLeftEquiv 𝕜 (fun i => M (js i)) F) ∘
      fpideriv 𝕜 (js 0) (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f))
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
conv =>
  arg 1; intro y; arg 2; intro x
  rw [fpideriv_eq_fderiv_comp_single ih.differentiableAt]
  rw [ih.fderiv]
  rw [ContinuousLinearMap.comp_assoc]
  simp [Fin.tail]
  rw [← ContinuousMultilinearMap.curryLeft_compContinuousLinearMap (f' x (n + 1)) (fun i => ContinuousLinearMap.single (js i))]
Proof state after:
case succ.intro.intro
ι : 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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
n : ℕ
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
hf_pred : HasFTaylorSeriesUpTo (↑(Nat.succ n)) f f'
right✝ : ContinuousOn (fun x => f' x (Nat.succ n + 1)) Set.univ
hf_diff :
  ∀ (x : (i : ι) → M i),
    HasFDerivAt (fun y => f' y (Nat.succ n)) (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n)))) x
ih :
  ∀ {js : Fin n → ι} {x : (i : ι) → M i},
    HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
      (ContinuousLinearMap.comp
        (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
        (ContinuousMultilinearMap.curryLeft (f' x (n + 1))))
      x
⊢ HasFDerivAt
    (fun y =>
      (⇑(continuousMultilinearCurryLeftEquiv 𝕜 (fun i => M (js i)) F) ∘ fun x =>
          ContinuousMultilinearMap.curryLeft
            (ContinuousMultilinearMap.compContinuousLinearMap (f' x (n + 1)) fun i =>
              ContinuousLinearMap.single (js i)))
        y)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x