Theorem: HasFTaylorSeriesUpTo.orderedIteratedFPiDeriv_apply (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 : ℕ
N : ℕ∞
hn : ↑n ≤ N
hf : HasFTaylorSeriesUpTo N f f'
js : Fin n → ι
x : (i : ι) → M i
m : (i : Fin n) → M (js i)
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m = (f' x n) fun i => Pi.single (js i) (m i)
Tactic:
cases n with
| zero =>
  simp
  rw [orderedIteratedFPiDeriv_zero_apply]
  rw [Subsingleton.elim (fun i => Pi.single (js i) _) 0]
  rw [← ContinuousMultilinearMap.uncurry0_apply]
  rw [hf.zero_eq]
| succ n =>
  replace hn : n < N
  . refine lt_of_lt_of_le ?_ hn
    norm_cast
    exact Nat.lt_succ_self n
  rw [orderedIteratedFPiDeriv_succ_apply_left]
  rw [fpideriv_apply_eq_fderiv_apply_single (differentiableAt_orderedIteratedFPiDeriv hn hf)]
  rw [HasFTaylorSeriesUpTo.fderiv_orderedIteratedFPiDeriv hn hf]
  rw [ContinuousLinearMap.comp_apply]
  simp only [ContinuousMultilinearMap.compContinuousLinearMapL_apply,
    ContinuousMultilinearMap.compContinuousLinearMap_apply, ContinuousLinearMap.single_apply,
    ContinuousMultilinearMap.curryLeft_apply]
  congr
  simp only [Fin.tail]
  funext i
  refine Fin.cases ?_ ?_ i <;> 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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
hn : ↑Nat.zero ≤ N
js : Fin Nat.zero → ι
m : (i : Fin Nat.zero) → M (js i)
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m = (f' x Nat.zero) fun i => Pi.single (js i) (m i)
Tactic:
simp
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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
hn : ↑Nat.zero ≤ N
js : Fin Nat.zero → ι
m : (i : Fin Nat.zero) → M (js i)
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m = (f' x 0) fun i => Pi.single (js i) (m i)

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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
hn : ↑Nat.zero ≤ N
js : Fin Nat.zero → ι
m : (i : Fin Nat.zero) → M (js i)
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m = (f' x 0) fun i => Pi.single (js i) (m i)
Tactic:
rw [orderedIteratedFPiDeriv_zero_apply]
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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
hn : ↑Nat.zero ≤ N
js : Fin Nat.zero → ι
m : (i : Fin Nat.zero) → M (js i)
⊢ f x = (f' x 0) fun i => Pi.single (js i) (m i)

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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
hn : ↑Nat.zero ≤ N
js : Fin Nat.zero → ι
m : (i : Fin Nat.zero) → M (js i)
⊢ f x = (f' x 0) fun i => Pi.single (js i) (m i)
Tactic:
rw [Subsingleton.elim (fun i => Pi.single (js i) _) 0]
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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
hn : ↑Nat.zero ≤ N
js : Fin Nat.zero → ι
m : (i : Fin Nat.zero) → M (js i)
⊢ f x = (f' x 0) 0

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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
hn : ↑Nat.zero ≤ N
js : Fin Nat.zero → ι
m : (i : Fin Nat.zero) → M (js i)
⊢ f x = (f' x 0) 0
Tactic:
rw [← ContinuousMultilinearMap.uncurry0_apply]
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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
hn : ↑Nat.zero ≤ N
js : Fin Nat.zero → ι
m : (i : Fin Nat.zero) → M (js i)
⊢ f x = ContinuousMultilinearMap.uncurry0 (f' x 0)

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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
hn : ↑Nat.zero ≤ N
js : Fin Nat.zero → ι
m : (i : Fin Nat.zero) → M (js i)
⊢ f x = ContinuousMultilinearMap.uncurry0 (f' x 0)
Tactic:
rw [hf.zero_eq]
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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
hn : ↑(Nat.succ n) ≤ N
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m = (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)
Tactic:
replace hn : n < N
State after:
case hn
ι : 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 f f'
x : (i : ι) → M i
n : ℕ
hn : ↑(Nat.succ n) ≤ N
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
⊢ ↑n < N

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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m = (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)

State before:
case hn
ι : 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 f f'
x : (i : ι) → M i
n : ℕ
hn : ↑(Nat.succ n) ≤ N
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
⊢ ↑n < N

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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m = (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)
Tactic:
. refine lt_of_lt_of_le ?_ hn
  norm_cast
  exact Nat.lt_succ_self n
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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m = (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)

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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m = (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)
Tactic:
rw [orderedIteratedFPiDeriv_succ_apply_left]
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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ ((fpideriv 𝕜 (js 0) (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f) x) (m 0)) (Fin.tail m) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)

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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ ((fpideriv 𝕜 (js 0) (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f) x) (m 0)) (Fin.tail m) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)
Tactic:
rw [fpideriv_apply_eq_fderiv_apply_single (differentiableAt_orderedIteratedFPiDeriv hn 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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ ((_root_.fderiv 𝕜 (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f) x) (Pi.single (js 0) (m 0))) (Fin.tail m) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)

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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ ((_root_.fderiv 𝕜 (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f) x) (Pi.single (js 0) (m 0))) (Fin.tail m) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)
Tactic:
rw [HasFTaylorSeriesUpTo.fderiv_orderedIteratedFPiDeriv hn 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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ ((ContinuousLinearMap.comp
          (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (Fin.tail js i))
          (ContinuousMultilinearMap.curryLeft (f' x (n + 1))))
        (Pi.single (js 0) (m 0)))
      (Fin.tail m) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)

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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ ((ContinuousLinearMap.comp
          (ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (Fin.tail js i))
          (ContinuousMultilinearMap.curryLeft (f' x (n + 1))))
        (Pi.single (js 0) (m 0)))
      (Fin.tail m) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)
Tactic:
rw [ContinuousLinearMap.comp_apply]
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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ ((ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (Fin.tail js i))
        ((ContinuousMultilinearMap.curryLeft (f' x (n + 1))) (Pi.single (js 0) (m 0))))
      (Fin.tail m) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)

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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ ((ContinuousMultilinearMap.compContinuousLinearMapL fun i => ContinuousLinearMap.single (Fin.tail js i))
        ((ContinuousMultilinearMap.curryLeft (f' x (n + 1))) (Pi.single (js 0) (m 0))))
      (Fin.tail m) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)
Tactic:
simp only [ContinuousMultilinearMap.compContinuousLinearMapL_apply,
  ContinuousMultilinearMap.compContinuousLinearMap_apply, ContinuousLinearMap.single_apply,
  ContinuousMultilinearMap.curryLeft_apply]
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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (f' x (n + 1)) (Fin.cons (Pi.single (js 0) (m 0)) fun i => Pi.single (Fin.tail js i) (Fin.tail m i)) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)

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 : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (f' x (n + 1)) (Fin.cons (Pi.single (js 0) (m 0)) fun i => Pi.single (Fin.tail js i) (Fin.tail m i)) =
    (f' x (Nat.succ n)) fun i => Pi.single (js i) (m i)
Tactic:
congr
State after:
case succ.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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (Fin.cons (Pi.single (js 0) (m 0)) fun i => Pi.single (Fin.tail js i) (Fin.tail m i)) = fun i =>
    Pi.single (js i) (m i)

State before:
case succ.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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (Fin.cons (Pi.single (js 0) (m 0)) fun i => Pi.single (Fin.tail js i) (Fin.tail m i)) = fun i =>
    Pi.single (js i) (m i)
Tactic:
simp only [Fin.tail]
State after:
case succ.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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (Fin.cons (Pi.single (js 0) (m 0)) fun i => Pi.single (js (Fin.succ i)) (m (Fin.succ i))) = fun i =>
    Pi.single (js i) (m i)

State before:
case succ.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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
⊢ (Fin.cons (Pi.single (js 0) (m 0)) fun i => Pi.single (js (Fin.succ i)) (m (Fin.succ i))) = fun i =>
    Pi.single (js i) (m i)
Tactic:
funext i
State after:
case succ.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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
i : Fin (n + 1)
⊢ Fin.cons (Pi.single (js 0) (m 0)) (fun i => Pi.single (js (Fin.succ i)) (m (Fin.succ i))) i = Pi.single (js i) (m i)

State before:
case succ.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
N : ℕ∞
hf : HasFTaylorSeriesUpTo N f f'
x : (i : ι) → M i
n : ℕ
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
hn : ↑n < N
i : Fin (n + 1)
⊢ Fin.cons (Pi.single (js 0) (m 0)) (fun i => Pi.single (js (Fin.succ i)) (m (Fin.succ i))) i = Pi.single (js i) (m i)
Tactic:
refine Fin.cases ?_ ?_ i <;> simp
State after:
no goals

State before:
case hn
ι : 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 f f'
x : (i : ι) → M i
n : ℕ
hn : ↑(Nat.succ n) ≤ N
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
⊢ ↑n < N
Tactic:
refine lt_of_lt_of_le ?_ hn
State after:
case hn
ι : 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 f f'
x : (i : ι) → M i
n : ℕ
hn : ↑(Nat.succ n) ≤ N
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
⊢ ↑n < ↑(Nat.succ n)

State before:
case hn
ι : 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 f f'
x : (i : ι) → M i
n : ℕ
hn : ↑(Nat.succ n) ≤ N
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
⊢ ↑n < ↑(Nat.succ n)
Tactic:
norm_cast
State after:
case hn
ι : 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 f f'
x : (i : ι) → M i
n : ℕ
hn : ↑(Nat.succ n) ≤ N
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
⊢ n < Nat.succ n

State before:
case hn
ι : 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 f f'
x : (i : ι) → M i
n : ℕ
hn : ↑(Nat.succ n) ≤ N
js : Fin (Nat.succ n) → ι
m : (i : Fin (Nat.succ n)) → M (js i)
⊢ n < Nat.succ n
Tactic:
exact Nat.lt_succ_self n
State after:
no goals