Theorem: HasFTaylorSeriesUpTo.hasFDerivAt_orderedIteratedFPiDeriv' (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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
n : ℕ
hf : HasFTaylorSeriesUpTo (↑n + 1) f f'
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
Tactic:
induction n generalizing x with
| zero =>
  rw [orderedIteratedFPiDeriv_zero_eq_comp]
  rw [LinearIsometryEquiv.comp_hasFDerivAt_iff']
  refine HasFDerivAt.congr_fderiv (hf.hasFDerivAt (by simp) x) ?_
  ext m
  simp only [continuousMultilinearCurryFin1_apply, Nat.zero_eq, LinearIsometryEquiv.symm_symm,
    ContinuousLinearMap.coe_comp', ContinuousLinearEquiv.coe_coe, LinearIsometryEquiv.coe_coe,
    Function.comp_apply, ContinuousMultilinearMap.compContinuousLinearMapL_apply,
    continuousMultilinearIsEmptyEquiv_apply,
    ContinuousMultilinearMap.compContinuousLinearMap_apply, Pi.zero_apply, map_zero,
    ContinuousMultilinearMap.curryLeft_apply]
  congr
  funext i
  rw [Fin.eq_zero i]
  simp only [Fin.cons_zero]
  have : (0 : Fin 1) = Fin.last 0 := rfl
  simp [this]
| succ n ih =>
  rw [← hasFTaylorSeriesUpToOn_univ_iff] at hf
  rw [hasFTaylorSeriesUpToOn_succ_iff_left] at hf
  rcases hf with ⟨hf_pred, hf_diff, _⟩
  rw [hasFTaylorSeriesUpToOn_univ_iff] at hf_pred
  simp at hf_diff
  specialize @ih hf_pred
  rw [orderedIteratedFPiDeriv_succ_eq_comp_left]
  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))]
  simp
  simp_rw [← ContinuousMultilinearMap.compContinuousLinearMapL_apply]
  refine ((ContinuousLinearMap.hasFDerivAt _).comp _ (hf_diff _)).congr_fderiv ?_
  ext m v
  simp
State after:
no goals

State before:
case zero
ι : 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
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x : (i : ι) → M i
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.zero + 1))))
    x
Tactic:
rw [orderedIteratedFPiDeriv_zero_eq_comp]
State after:
case zero
ι : 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
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x : (i : ι) → M i
⊢ HasFDerivAt (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (js i)) F)) ∘ f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.zero + 1))))
    x

State before:
case zero
ι : 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
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x : (i : ι) → M i
⊢ HasFDerivAt (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (js i)) F)) ∘ f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.zero + 1))))
    x
Tactic:
rw [LinearIsometryEquiv.comp_hasFDerivAt_iff']
State after:
case zero
ι : 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
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x : (i : ι) → M i
⊢ HasFDerivAt f
    (ContinuousLinearMap.comp
      (↑(ContinuousLinearEquiv.mk
          (LinearIsometryEquiv.symm
              (LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (js i)) F))).toLinearEquiv))
      (ContinuousLinearMap.comp
        (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
        (ContinuousMultilinearMap.curryLeft (f' x (Nat.zero + 1)))))
    x

State before:
case zero
ι : 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
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x : (i : ι) → M i
⊢ HasFDerivAt f
    (ContinuousLinearMap.comp
      (↑(ContinuousLinearEquiv.mk
          (LinearIsometryEquiv.symm
              (LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (js i)) F))).toLinearEquiv))
      (ContinuousLinearMap.comp
        (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
        (ContinuousMultilinearMap.curryLeft (f' x (Nat.zero + 1)))))
    x
Tactic:
refine HasFDerivAt.congr_fderiv (hf.hasFDerivAt (by simp) x) ?_
State after:
case zero
ι : 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
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x : (i : ι) → M i
⊢ (continuousMultilinearCurryFin1 𝕜 ((i : ι) → M i) F) (f' x 1) =
    ContinuousLinearMap.comp
      (↑(ContinuousLinearEquiv.mk
          (LinearIsometryEquiv.symm
              (LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (js i)) F))).toLinearEquiv))
      (ContinuousLinearMap.comp
        (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
        (ContinuousMultilinearMap.curryLeft (f' x (Nat.zero + 1))))

State before:
case zero
ι : 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
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x : (i : ι) → M i
⊢ (continuousMultilinearCurryFin1 𝕜 ((i : ι) → M i) F) (f' x 1) =
    ContinuousLinearMap.comp
      (↑(ContinuousLinearEquiv.mk
          (LinearIsometryEquiv.symm
              (LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (js i)) F))).toLinearEquiv))
      (ContinuousLinearMap.comp
        (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
        (ContinuousMultilinearMap.curryLeft (f' x (Nat.zero + 1))))
Tactic:
ext m
State after:
case zero.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
⊢ ((continuousMultilinearCurryFin1 𝕜 ((i : ι) → M i) F) (f' x 1)) m =
    (ContinuousLinearMap.comp
        (↑(ContinuousLinearEquiv.mk
            (LinearIsometryEquiv.symm
                (LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (js i)) F))).toLinearEquiv))
        (ContinuousLinearMap.comp
          (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
          (ContinuousMultilinearMap.curryLeft (f' x (Nat.zero + 1)))))
      m

State before:
case zero.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
⊢ ((continuousMultilinearCurryFin1 𝕜 ((i : ι) → M i) F) (f' x 1)) m =
    (ContinuousLinearMap.comp
        (↑(ContinuousLinearEquiv.mk
            (LinearIsometryEquiv.symm
                (LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (js i)) F))).toLinearEquiv))
        (ContinuousLinearMap.comp
          (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
          (ContinuousMultilinearMap.curryLeft (f' x (Nat.zero + 1)))))
      m
Tactic:
simp only [continuousMultilinearCurryFin1_apply, Nat.zero_eq, LinearIsometryEquiv.symm_symm,
  ContinuousLinearMap.coe_comp', ContinuousLinearEquiv.coe_coe, LinearIsometryEquiv.coe_coe,
  Function.comp_apply, ContinuousMultilinearMap.compContinuousLinearMapL_apply,
  continuousMultilinearIsEmptyEquiv_apply,
  ContinuousMultilinearMap.compContinuousLinearMap_apply, Pi.zero_apply, map_zero,
  ContinuousMultilinearMap.curryLeft_apply]
State after:
case zero.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
⊢ (f' x 1) (Fin.snoc 0 m) = (f' x (0 + 1)) (Fin.cons m fun i => 0)

State before:
case zero.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
⊢ (f' x 1) (Fin.snoc 0 m) = (f' x (0 + 1)) (Fin.cons m fun i => 0)
Tactic:
congr
State after:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
⊢ Fin.snoc 0 m = Fin.cons m fun i => 0

State before:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
⊢ Fin.snoc 0 m = Fin.cons m fun i => 0
Tactic:
funext i
State after:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
i : Fin (0 + 1)
⊢ Fin.snoc 0 m i = Fin.cons m (fun i => 0) i

State before:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
i : Fin (0 + 1)
⊢ Fin.snoc 0 m i = Fin.cons m (fun i => 0) i
Tactic:
rw [Fin.eq_zero i]
State after:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
i : Fin (0 + 1)
⊢ Fin.snoc 0 m 0 = Fin.cons m (fun i => 0) 0

State before:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
i : Fin (0 + 1)
⊢ Fin.snoc 0 m 0 = Fin.cons m (fun i => 0) 0
Tactic:
simp only [Fin.cons_zero]
State after:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
i : Fin (0 + 1)
⊢ Fin.snoc 0 m 0 = m

State before:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
i : Fin (0 + 1)
⊢ Fin.snoc 0 m 0 = m
Tactic:
have : (0 : Fin 1) = Fin.last 0 := rfl
State after:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
i : Fin (0 + 1)
this : 0 = Fin.last 0
⊢ Fin.snoc 0 m 0 = m

State before:
case zero.h.h.e_6.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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x m : (i : ι) → M i
i : Fin (0 + 1)
this : 0 = Fin.last 0
⊢ Fin.snoc 0 m 0 = m
Tactic:
simp [this]
State after:
no goals

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
f' : ((i : ι) → M i) → FormalMultilinearSeries 𝕜 ((i : ι) → M i) F
hf : HasFTaylorSeriesUpTo (↑Nat.zero + 1) f f'
js : Fin Nat.zero → ι
x : (i : ι) → M i
⊢ 1 ≤ ↑Nat.zero + 1
Tactic:
simp
State after:
no goals

State before:
case succ
ι : 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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
hf : HasFTaylorSeriesUpTo (↑(Nat.succ n) + 1) f f'
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
rw [← hasFTaylorSeriesUpToOn_univ_iff] at hf
State after:
case succ
ι : 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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
hf : HasFTaylorSeriesUpToOn (↑(Nat.succ n) + 1) f f' Set.univ
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x

State before:
case succ
ι : 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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
hf : HasFTaylorSeriesUpToOn (↑(Nat.succ n) + 1) f f' Set.univ
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
rw [hasFTaylorSeriesUpToOn_succ_iff_left] at hf
State after:
case succ
ι : 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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
hf :
  HasFTaylorSeriesUpToOn (↑(Nat.succ n)) f f' Set.univ ∧
    (∀ x ∈ Set.univ,
        HasFDerivWithinAt (fun y => f' y (Nat.succ n))
          (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n)))) Set.univ x) ∧
      ContinuousOn (fun x => f' x (Nat.succ n + 1)) Set.univ
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x

State before:
case succ
ι : 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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
hf :
  HasFTaylorSeriesUpToOn (↑(Nat.succ n)) f f' Set.univ ∧
    (∀ x ∈ Set.univ,
        HasFDerivWithinAt (fun y => f' y (Nat.succ n))
          (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n)))) Set.univ x) ∧
      ContinuousOn (fun x => f' x (Nat.succ n + 1)) Set.univ
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
rcases hf with ⟨hf_pred, hf_diff, _⟩
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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
hf_pred : HasFTaylorSeriesUpToOn (↑(Nat.succ n)) f f' Set.univ
hf_diff :
  ∀ x ∈ Set.univ,
    HasFDerivWithinAt (fun y => f' y (Nat.succ n)) (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n))))
      Set.univ x
right✝ : ContinuousOn (fun x => f' x (Nat.succ n + 1)) Set.univ
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x

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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
hf_pred : HasFTaylorSeriesUpToOn (↑(Nat.succ n)) f f' Set.univ
hf_diff :
  ∀ x ∈ Set.univ,
    HasFDerivWithinAt (fun y => f' y (Nat.succ n)) (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n))))
      Set.univ x
right✝ : ContinuousOn (fun x => f' x (Nat.succ n + 1)) Set.univ
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
rw [hasFTaylorSeriesUpToOn_univ_iff] at hf_pred
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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
hf_pred : HasFTaylorSeriesUpTo (↑(Nat.succ n)) f f'
hf_diff :
  ∀ x ∈ Set.univ,
    HasFDerivWithinAt (fun y => f' y (Nat.succ n)) (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n))))
      Set.univ x
right✝ : ContinuousOn (fun x => f' x (Nat.succ n + 1)) Set.univ
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x

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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
js : Fin (Nat.succ n) → ι
x : (i : ι) → M i
hf_pred : HasFTaylorSeriesUpTo (↑(Nat.succ n)) f f'
hf_diff :
  ∀ x ∈ Set.univ,
    HasFDerivWithinAt (fun y => f' y (Nat.succ n)) (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n))))
      Set.univ x
right✝ : ContinuousOn (fun x => f' x (Nat.succ n + 1)) Set.univ
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
simp at hf_diff
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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
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
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x

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 : ℕ
ih :
  HasFTaylorSeriesUpTo (↑n + 1) f f' →
    ∀ {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
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
⊢ HasFDerivAt (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
specialize @ih hf_pred
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 (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x

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 (orderedIteratedFPiDeriv 𝕜 js f)
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
rw [orderedIteratedFPiDeriv_succ_eq_comp_left]
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
    (⇑(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

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))]
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

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
    (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
Tactic:
simp
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 =>
      ContinuousMultilinearMap.compContinuousLinearMap (f' y (n + 1)) fun i => ContinuousLinearMap.single (js i))
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x

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
    (fun y =>
      ContinuousMultilinearMap.compContinuousLinearMap (f' y (n + 1)) fun i => ContinuousLinearMap.single (js i))
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
simp_rw [← ContinuousMultilinearMap.compContinuousLinearMapL_apply]
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 =>
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i)) (f' y (n + 1)))
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x

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
    (fun y =>
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i)) (f' y (n + 1)))
    (ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
    x
Tactic:
refine ((ContinuousLinearMap.hasFDerivAt _).comp _ (hf_diff _)).congr_fderiv ?_
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
⊢ ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n)))) =
    ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1)))

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
⊢ ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n)))) =
    ContinuousLinearMap.comp
      (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
      (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1)))
Tactic:
ext m v
State after:
case succ.intro.intro.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
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
m : (i : ι) → M i
v : (i : Fin (Nat.succ n)) → M (js i)
⊢ ((ContinuousLinearMap.comp
          (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
          (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n)))))
        m)
      v =
    ((ContinuousLinearMap.comp
          (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
          (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
        m)
      v

State before:
case succ.intro.intro.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
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
m : (i : ι) → M i
v : (i : Fin (Nat.succ n)) → M (js i)
⊢ ((ContinuousLinearMap.comp
          (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
          (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ (Nat.succ n)))))
        m)
      v =
    ((ContinuousLinearMap.comp
          (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (js i))
          (ContinuousMultilinearMap.curryLeft (f' x (Nat.succ n + 1))))
        m)
      v
Tactic:
simp
State after:
no goals