Theorem: orderedIteratedFPiDeriv_succ_apply_right (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
n : ℕ
f : ((i : ι) → M i) → F
js : Fin (n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (n + 1)) → M (js i)
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
Tactic:
induction n generalizing x with
| zero =>
  rw [orderedIteratedFPiDeriv_succ_eq_comp_left]
  rw [fpideriv_def, orderedIteratedFPiDeriv_zero_eq_comp]
  rw [Function.comp_apply, continuousMultilinearCurryLeftEquiv_apply]
  change fderiv 𝕜 (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)) ∘
    f ∘ (Function.update x (js 0))) _ _ _ = _
  rw [LinearIsometryEquiv.comp_fderiv]
  rw [ContinuousLinearMap.comp_apply]
  rfl
| succ n ih =>
  have A (y) : orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (continuousMultilinearCurryRightEquiv 𝕜 (fun i : Fin (n + 1) => M (js (Fin.succ i))) F ∘
        orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f)) y
  . ext m
    rw [ih]
    rfl
  rw [orderedIteratedFPiDeriv_succ_eq_comp_left]
  rw [Function.comp_apply, continuousMultilinearCurryLeftEquiv_apply]
  rw [fpideriv_def]
  simp
  simp_rw [A]
  change fderiv 𝕜 (
    ⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
    (orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f) ∘ Function.update x (js 0)))
    _ _ _ = _
  rw [LinearIsometryEquiv.comp_fderiv]
  rfl
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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))
Tactic:
rw [orderedIteratedFPiDeriv_succ_eq_comp_left]
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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((⇑(continuousMultilinearCurryLeftEquiv 𝕜 (fun i => M (js i)) F) ∘
          fpideriv 𝕜 (js 0) (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f))
        x)
      m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))

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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((⇑(continuousMultilinearCurryLeftEquiv 𝕜 (fun i => M (js i)) F) ∘
          fpideriv 𝕜 (js 0) (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f))
        x)
      m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))
Tactic:
rw [fpideriv_def, 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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((⇑(continuousMultilinearCurryLeftEquiv 𝕜 (fun i => M (js i)) F) ∘ fun x =>
          fderiv 𝕜
            (fun y =>
              (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)) ∘ f)
                (Function.update x (js 0) y))
            (x (js 0)))
        x)
      m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))

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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((⇑(continuousMultilinearCurryLeftEquiv 𝕜 (fun i => M (js i)) F) ∘ fun x =>
          fderiv 𝕜
            (fun y =>
              (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)) ∘ f)
                (Function.update x (js 0) y))
            (x (js 0)))
        x)
      m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))
Tactic:
rw [Function.comp_apply, continuousMultilinearCurryLeftEquiv_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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((fderiv 𝕜
          (fun y =>
            (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)) ∘ f)
              (Function.update x (js 0) y))
          (x (js 0)))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))

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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((fderiv 𝕜
          (fun y =>
            (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)) ∘ f)
              (Function.update x (js 0) y))
          (x (js 0)))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))
Tactic:
change fderiv 𝕜 (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)) ∘
  f ∘ (Function.update x (js 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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((fderiv 𝕜
          (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)) ∘
            f ∘ Function.update x (js 0))
          (x (js 0)))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))

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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((fderiv 𝕜
          (⇑(LinearIsometryEquiv.symm (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)) ∘
            f ∘ Function.update x (js 0))
          (x (js 0)))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))
Tactic:
rw [LinearIsometryEquiv.comp_fderiv]
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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((ContinuousLinearMap.comp
          (↑(ContinuousLinearEquiv.mk
              (LinearIsometryEquiv.symm
                  (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)).toLinearEquiv))
          (fderiv 𝕜 (f ∘ Function.update x (js 0)) (x (js 0))))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))

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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ ((ContinuousLinearMap.comp
          (↑(ContinuousLinearEquiv.mk
              (LinearIsometryEquiv.symm
                  (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)).toLinearEquiv))
          (fderiv 𝕜 (f ∘ Function.update x (js 0)) (x (js 0))))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))
Tactic:
rw [ContinuousLinearMap.comp_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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ (↑(ContinuousLinearEquiv.mk
            (LinearIsometryEquiv.symm
                (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)).toLinearEquiv)
        ((fderiv 𝕜 (f ∘ Function.update x (js 0)) (x (js 0))) (m 0)))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))

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
js : Fin (Nat.zero + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.zero + 1)) → M (js i)
⊢ (↑(ContinuousLinearEquiv.mk
            (LinearIsometryEquiv.symm
                (continuousMultilinearIsEmptyEquiv 𝕜 (fun i => M (Fin.tail js i)) F)).toLinearEquiv)
        ((fderiv 𝕜 (f ∘ Function.update x (js 0)) (x (js 0))) (m 0)))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last Nat.zero)) f) x) (Fin.init m))
      (m (Fin.last Nat.zero))
Tactic:
rfl
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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
have A (y) : orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
    (continuousMultilinearCurryRightEquiv 𝕜 (fun i : Fin (n + 1) => M (js (Fin.succ i))) F ∘
      orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f)) y
State after:
case A
ι : 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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
y : (i : ι) → M i
⊢ orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
    (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
        orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
      y

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))

State before:
case A
ι : 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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
y : (i : ι) → M i
⊢ orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
    (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
        orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
      y

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
. ext m
  rw [ih]
  rfl
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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ (orderedIteratedFPiDeriv 𝕜 js f x) m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
rw [orderedIteratedFPiDeriv_succ_eq_comp_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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((⇑(continuousMultilinearCurryLeftEquiv 𝕜 (fun i => M (js i)) F) ∘
          fpideriv 𝕜 (js 0) (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f))
        x)
      m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((⇑(continuousMultilinearCurryLeftEquiv 𝕜 (fun i => M (js i)) F) ∘
          fpideriv 𝕜 (js 0) (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f))
        x)
      m =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
rw [Function.comp_apply, continuousMultilinearCurryLeftEquiv_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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((fpideriv 𝕜 (js 0) (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f) x) (m 0)) (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((fpideriv 𝕜 (js 0) (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f) x) (m 0)) (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
rw [fpideriv_def]
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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ (((fun x => fderiv 𝕜 (fun y => orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f (Function.update x (js 0) y)) (x (js 0))) x)
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ (((fun x => fderiv 𝕜 (fun y => orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f (Function.update x (js 0) y)) (x (js 0))) x)
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
simp
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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((fderiv 𝕜 (fun y => orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f (Function.update x (js 0) y)) (x (js 0))) (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((fderiv 𝕜 (fun y => orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f (Function.update x (js 0) y)) (x (js 0))) (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
simp_rw [A]
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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((fderiv 𝕜
          (fun y =>
            (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
                orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
              (Function.update x (js 0) y))
          (x (js 0)))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((fderiv 𝕜
          (fun y =>
            (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
                orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
              (Function.update x (js 0) y))
          (x (js 0)))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
change fderiv 𝕜 (
  ⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
  (orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f) ∘ Function.update x (js 0)))
  _ _ _ = _
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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((fderiv 𝕜
          (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
            orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f) ∘
              Function.update x (js 0))
          (x (js 0)))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((fderiv 𝕜
          (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
            orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f) ∘
              Function.update x (js 0))
          (x (js 0)))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
rw [LinearIsometryEquiv.comp_fderiv]
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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((ContinuousLinearMap.comp
          (↑(ContinuousLinearEquiv.mk
              (continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F).toLinearEquiv))
          (fderiv 𝕜
            (orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f) ∘
              Function.update x (js 0))
            (x (js 0))))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))

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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
A :
  ∀ (y : (i : ι) → M i),
    orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
      (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y
⊢ ((ContinuousLinearMap.comp
          (↑(ContinuousLinearEquiv.mk
              (continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F).toLinearEquiv))
          (fderiv 𝕜
            (orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f) ∘
              Function.update x (js 0))
            (x (js 0))))
        (m 0))
      (Fin.tail m) =
    ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last (Nat.succ n))) f) x) (Fin.init m))
      (m (Fin.last (Nat.succ n)))
Tactic:
rfl
State after:
no goals

State before:
case A
ι : 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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m : (i : Fin (Nat.succ n + 1)) → M (js i)
y : (i : ι) → M i
⊢ orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y =
    (⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
        orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
      y
Tactic:
ext m
State after:
case A.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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m✝ : (i : Fin (Nat.succ n + 1)) → M (js i)
y : (i : ι) → M i
m : (i : Fin (n + 1)) → M (Fin.tail js i)
⊢ (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y) m =
    ((⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y)
      m

State before:
case A.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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m✝ : (i : Fin (Nat.succ n + 1)) → M (js i)
y : (i : ι) → M i
m : (i : Fin (n + 1)) → M (Fin.tail js i)
⊢ (orderedIteratedFPiDeriv 𝕜 (Fin.tail js) f y) m =
    ((⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y)
      m
Tactic:
rw [ih]
State after:
case A.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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m✝ : (i : Fin (Nat.succ n + 1)) → M (js i)
y : (i : ι) → M i
m : (i : Fin (n + 1)) → M (Fin.tail js i)
⊢ ((orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (Fin.tail js (Fin.last n)) f) y) (Fin.init m))
      (m (Fin.last n)) =
    ((⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y)
      m

State before:
case A.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
n : ℕ
ih :
  ∀ {js : Fin (n + 1) → ι} {x : (i : ι) → M i} {m : (i : Fin (n + 1)) → M (js i)},
    (orderedIteratedFPiDeriv 𝕜 js f x) m =
      ((orderedIteratedFPiDeriv 𝕜 (Fin.init js) (fpideriv 𝕜 (js (Fin.last n)) f) x) (Fin.init m)) (m (Fin.last n))
js : Fin (Nat.succ n + 1) → ι
x : (i : ι) → M i
m✝ : (i : Fin (Nat.succ n + 1)) → M (js i)
y : (i : ι) → M i
m : (i : Fin (n + 1)) → M (Fin.tail js i)
⊢ ((orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (Fin.tail js (Fin.last n)) f) y) (Fin.init m))
      (m (Fin.last n)) =
    ((⇑(continuousMultilinearCurryRightEquiv 𝕜 (fun i => M (js (Fin.succ i))) F) ∘
          orderedIteratedFPiDeriv 𝕜 (Fin.init (Fin.tail js)) (fpideriv 𝕜 (js (Fin.last (n + 1))) f))
        y)
      m
Tactic:
rfl
State after:
no goals