-- Mathlib/Analysis/Calculus/ContDiff/Defs.lean
theorem contDiffWithinAt_succ_iff_hasFDerivWithinAt (hn : n ≠ ∞) :
    ContDiffWithinAt 𝕜 (n + 1) f s x ↔ ∃ u ∈ 𝓝[insert x s] x, (n = ω → AnalyticOn 𝕜 f u) ∧
      ∃ f' : E → E →L[𝕜] F,
      (∀ x ∈ u, HasFDerivWithinAt f (f' x) u x) ∧ ContDiffWithinAt 𝕜 n f' u x

Proof state:
case h.e'_11.h.h.H.h
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
s : Set E
f : E → F
x✝ : E
n : WithTop ℕ∞
hn : n ≠ ∞
h'n : n + 1 ≠ ∞
u : Set E
hu : u ∈ 𝓝[insert x✝ s] x✝
hf : n = ω → AnalyticOn 𝕜 f u
f' : E → E →L[𝕜] F
f'_eq_deriv : ∀ x ∈ u, HasFDerivWithinAt f (f' x) u x
Hf' : ContDiffWithinAt 𝕜 n f' u x✝
v✝ : Set E
hv : v✝ ∈ 𝓝[insert x✝ u] x✝
p' : E → FormalMultilinearSeries 𝕜 E (E →L[𝕜] F)
Hp' : HasFTaylorSeriesUpToOn n f' p' v✝
p'_an : n = ω → ∀ (i : ℕ), AnalyticOn 𝕜 (fun x => p' x i) v✝
x : E
k : ℕ
v : Fin k → E
y : E
⊢ ((((p' x).unshift (f x)).shift k) v) y = ((p' x k) v) y

Tactic:
change p' x k (init (@snoc k (fun _ : Fin k.succ => E) v y))
  (@snoc k (fun _ : Fin k.succ => E) v y (last k)) = p' x k v y

Result:
case h.e'_11.h.h.H.h
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
s : Set E
f : E → F
x✝ : E
n : WithTop ℕ∞
hn : n ≠ ∞
h'n : n + 1 ≠ ∞
u : Set E
hu : u ∈ 𝓝[insert x✝ s] x✝
hf : n = ω → AnalyticOn 𝕜 f u
f' : E → E →L[𝕜] F
f'_eq_deriv : ∀ x ∈ u, HasFDerivWithinAt f (f' x) u x
Hf' : ContDiffWithinAt 𝕜 n f' u x✝
v✝ : Set E
hv : v✝ ∈ 𝓝[insert x✝ u] x✝
p' : E → FormalMultilinearSeries 𝕜 E (E →L[𝕜] F)
Hp' : HasFTaylorSeriesUpToOn n f' p' v✝
p'_an : n = ω → ∀ (i : ℕ), AnalyticOn 𝕜 (fun x => p' x i) v✝
x : E
k : ℕ
v : Fin k → E
y : E
⊢ ((p' x k) (init (snoc v y))) (snoc v y (last k)) = ((p' x k) v) y

Proof state:
case mp.intro.intro.intro.intro.refine_2.refine_2
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
s : Set E
f : E → F
x : E
u : Set E
hu : u ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries 𝕜 E F
hn : ω ≠ ∞
h'n : ω + 1 ≠ ∞
h : ContDiffWithinAt 𝕜 (ω + 1) f s x
Hp :
  (∀ x ∈ u, (p x 0).curry0 = f x) ∧
    (∀ x ∈ u, HasFDerivWithinAt (fun y => p y 0) (p x 1).curryLeft u x) ∧
      HasFTaylorSeriesUpToOn ω (fun x => (continuousMultilinearCurryFin1 𝕜 E F) (p x 1)) (fun x => (p x).shift) u
H'p : ω + 1 = ω → ∀ (i : ℕ), AnalyticOn 𝕜 (fun x => p x i) u
i : ℕ
⊢ AnalyticOn 𝕜 (fun x => (continuousMultilinearCurryRightEquiv' 𝕜 i E F) (p x (i + 1))) u

Tactic:
apply (LinearIsometryEquiv.analyticOnNhd _ _).comp_analyticOn
  ?_ (Set.mapsTo_univ _ _)

Result:
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
s : Set E
f : E → F
x : E
u : Set E
hu : u ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries 𝕜 E F
hn : ω ≠ ∞
h'n : ω + 1 ≠ ∞
h : ContDiffWithinAt 𝕜 (ω + 1) f s x
Hp :
  (∀ x ∈ u, (p x 0).curry0 = f x) ∧
    (∀ x ∈ u, HasFDerivWithinAt (fun y => p y 0) (p x 1).curryLeft u x) ∧
      HasFTaylorSeriesUpToOn ω (fun x => (continuousMultilinearCurryFin1 𝕜 E F) (p x 1)) (fun x => (p x).shift) u
H'p : ω + 1 = ω → ∀ (i : ℕ), AnalyticOn 𝕜 (fun x => p x i) u
i : ℕ
⊢ AnalyticOn 𝕜 (fun x => p x (i + 1)) u

Proof state:
case mp.intro.intro.intro.intro.refine_2.refine_1
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
s : Set E
f : E → F
x : E
n : WithTop ℕ∞
hn : n ≠ ∞
h'n : n + 1 ≠ ∞
h : ContDiffWithinAt 𝕜 (n + 1) f s x
u : Set E
hu : u ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries 𝕜 E F
Hp : HasFTaylorSeriesUpToOn (n + 1) f p u
H'p : n + 1 = ω → ∀ (i : ℕ), AnalyticOn 𝕜 (fun x => p x i) u
⊢ u ∈ 𝓝[insert x u] x

Tactic:
convert @self_mem_nhdsWithin _ _ x u

Result:
case h.e'_4.h.e'_4
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
s : Set E
f : E → F
x : E
n : WithTop ℕ∞
hn : n ≠ ∞
h'n : n + 1 ≠ ∞
h : ContDiffWithinAt 𝕜 (n + 1) f s x
u : Set E
hu : u ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries 𝕜 E F
Hp : HasFTaylorSeriesUpToOn (n + 1) f p u
H'p : n + 1 = ω → ∀ (i : ℕ), AnalyticOn 𝕜 (fun x => p x i) u
⊢ insert x u = u

Proof state:
case mp
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
s : Set E
f : E → F
x : E
n : WithTop ℕ∞
hn : n ≠ ∞
h'n : n + 1 ≠ ∞
⊢ ContDiffWithinAt 𝕜 (n + 1) f s x →
    ∃ u ∈ 𝓝[insert x s] x,
      (n = ω → AnalyticOn 𝕜 f u) ∧ ∃ f', (∀ x ∈ u, HasFDerivWithinAt f (f' x) u x) ∧ ContDiffWithinAt 𝕜 n f' u x

Tactic:
intro h

Result:
case mp
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
s : Set E
f : E → F
x : E
n : WithTop ℕ∞
hn : n ≠ ∞
h'n : n + 1 ≠ ∞
h : ContDiffWithinAt 𝕜 (n + 1) f s x
⊢ ∃ u ∈ 𝓝[insert x s] x,
    (n = ω → AnalyticOn 𝕜 f u) ∧ ∃ f', (∀ x ∈ u, HasFDerivWithinAt f (f' x) u x) ∧ ContDiffWithinAt 𝕜 n f' u x

Proof state:
case h.e'_11.h.h.H.h
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type uE
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type uF
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
s : Set E
f : E → F
x✝ : E
n : WithTop ℕ∞
hn : n ≠ ∞
h'n : n + 1 ≠ ∞
u : Set E
hu : u ∈ 𝓝[insert x✝ s] x✝
hf : n = ω → AnalyticOn 𝕜 f u
f' : E → E →L[𝕜] F
f'_eq_deriv : ∀ x ∈ u, HasFDerivWithinAt f (f' x) u x
Hf' : ContDiffWithinAt 𝕜 n f' u x✝
v✝ : Set E
hv : v✝ ∈ 𝓝[insert x✝ u] x✝
p' : E → FormalMultilinearSeries 𝕜 E (E →L[𝕜] F)
Hp' : HasFTaylorSeriesUpToOn n f' p' v✝
p'_an : n = ω → ∀ (i : ℕ), AnalyticOn 𝕜 (fun x => p' x i) v✝
x : E
k : ℕ
v : Fin k → E
y : E
⊢ ((p' x k) (init (snoc v y))) (snoc v y (last k)) = ((p' x k) v) y

Tactic:
rw [snoc_last, init_snoc]

Result:
no goals