Theorem: orderedIteratedPiDeriv_succ_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 : (ι → 𝕜) → F
js : Fin (n + 1) → ι
x : ι → 𝕜
⊢ orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
Tactic:
induction n generalizing f x with
| zero => rfl
| succ n ih =>
  have A (y) : orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
  . rw [ih]
    rfl
  rw [orderedIteratedPiDeriv_succ_left]
  change pideriv (js 0) (fun y => orderedIteratedPiDeriv (Fin.tail js) f y) x = _
  simp_rw [A]
  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 : (ι → 𝕜) → F
js : Fin (Nat.zero + 1) → ι
x : ι → 𝕜
⊢ orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last Nat.zero)) f) x
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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
⊢ orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) x
Tactic:
have A (y) : orderedIteratedPiDeriv (Fin.tail js) f y =
    orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x y : ι → 𝕜
⊢ orderedIteratedPiDeriv (Fin.tail js) f y =
    orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) x

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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x y : ι → 𝕜
⊢ orderedIteratedPiDeriv (Fin.tail js) f y =
    orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) x
Tactic:
. 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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) 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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) x
Tactic:
rw [orderedIteratedPiDeriv_succ_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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ pideriv (js 0) (orderedIteratedPiDeriv (Fin.tail js) f) x =
    orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) 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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ pideriv (js 0) (orderedIteratedPiDeriv (Fin.tail js) f) x =
    orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) x
Tactic:
change pideriv (js 0) (fun y => orderedIteratedPiDeriv (Fin.tail js) f y) x = _
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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ pideriv (js 0) (fun y => orderedIteratedPiDeriv (Fin.tail js) f y) x =
    orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) 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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ pideriv (js 0) (fun y => orderedIteratedPiDeriv (Fin.tail js) f y) x =
    orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) x
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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ pideriv (js 0) (fun y => orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y) x =
    orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) 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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x : ι → 𝕜
A :
  ∀ (y : ι → 𝕜),
    orderedIteratedPiDeriv (Fin.tail js) f y =
      orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
⊢ pideriv (js 0) (fun y => orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y) x =
    orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last (Nat.succ n))) f) x
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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x y : ι → 𝕜
⊢ orderedIteratedPiDeriv (Fin.tail js) f y =
    orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
Tactic:
rw [ih]
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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x y : ι → 𝕜
⊢ orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (Fin.tail js (Fin.last n)) f) y =
    orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y

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
n : ℕ
ih :
  ∀ {f : (ι → 𝕜) → F} {js : Fin (n + 1) → ι} {x : ι → 𝕜},
    orderedIteratedPiDeriv js f x = orderedIteratedPiDeriv (Fin.init js) (pideriv (js (Fin.last n)) f) x
f : (ι → 𝕜) → F
js : Fin (Nat.succ n + 1) → ι
x y : ι → 𝕜
⊢ orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (Fin.tail js (Fin.last n)) f) y =
    orderedIteratedPiDeriv (Fin.init (Fin.tail js)) (pideriv (js (Fin.last (n + 1))) f) y
Tactic:
rfl
State after:
no goals