Theorem: second_derivative_symmetric_of_eventually
File: Mathlib/Analysis/Calculus/FDeriv/Symmetric.lean

tactic: rcases Metric.mem_nhds_iff.1 hf with ⟨ε, εpos, hε⟩
state_before: E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
s : Set E
s_conv : Convex ℝ s
f✝ : E → F
f'✝ : E → E →L[ℝ] F
f''✝ : E →L[ℝ] E →L[ℝ] F
hf✝ : ∀ x ∈ interior s, HasFDerivAt f✝ (f'✝ x) x
x : E
xs : x ∈ s
hx✝ : HasFDerivWithinAt f'✝ f''✝ (interior s) x
f : E → F
f' : E → E →L[ℝ] F
f'' : E →L[ℝ] E →L[ℝ] F
hf : ∀ᶠ (y : E) in 𝓝 x, HasFDerivAt f (f' y) y
hx : HasFDerivAt f' f'' x
v w : E
⊢ (f'' v) w = (f'' w) v
state_after: case intro.intro
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
s : Set E
s_conv : Convex ℝ s
f✝ : E → F
f'✝ : E → E →L[ℝ] F
f''✝ : E →L[ℝ] E →L[ℝ] F
hf✝ : ∀ x ∈ interior s, HasFDerivAt f✝ (f'✝ x) x
x : E
xs : x ∈ s
hx✝ : HasFDerivWithinAt f'✝ f''✝ (interior s) x
f : E → F
f' : E → E →L[ℝ] F
f'' : E →L[ℝ] E →L[ℝ] F
hf : ∀ᶠ (y : E) in 𝓝 x, HasFDerivAt f (f' y) y
hx : HasFDerivAt f' f'' x
v w : E
ε : ℝ
εpos : ε > 0
hε : Metric.ball x ε ⊆ {x | (fun y => HasFDerivAt f (f' y) y) x}
⊢ (f'' v) w = (f'' w) v

tactic: have A : (interior (Metric.ball x ε)).Nonempty := by
  rwa [Metric.isOpen_ball.interior_eq, Metric.nonempty_ball]
state_before: case intro.intro
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
s : Set E
s_conv : Convex ℝ s
f✝ : E → F
f'✝ : E → E →L[ℝ] F
f''✝ : E →L[ℝ] E →L[ℝ] F
hf✝ : ∀ x ∈ interior s, HasFDerivAt f✝ (f'✝ x) x
x : E
xs : x ∈ s
hx✝ : HasFDerivWithinAt f'✝ f''✝ (interior s) x
f : E → F
f' : E → E →L[ℝ] F
f'' : E →L[ℝ] E →L[ℝ] F
hf : ∀ᶠ (y : E) in 𝓝 x, HasFDerivAt f (f' y) y
hx : HasFDerivAt f' f'' x
v w : E
ε : ℝ
εpos : ε > 0
hε : Metric.ball x ε ⊆ {x | (fun y => HasFDerivAt f (f' y) y) x}
⊢ (f'' v) w = (f'' w) v
state_after: case intro.intro
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
s : Set E
s_conv : Convex ℝ s
f✝ : E → F
f'✝ : E → E →L[ℝ] F
f''✝ : E →L[ℝ] E →L[ℝ] F
hf✝ : ∀ x ∈ interior s, HasFDerivAt f✝ (f'✝ x) x
x : E
xs : x ∈ s
hx✝ : HasFDerivWithinAt f'✝ f''✝ (interior s) x
f : E → F
f' : E → E →L[ℝ] F
f'' : E →L[ℝ] E →L[ℝ] F
hf : ∀ᶠ (y : E) in 𝓝 x, HasFDerivAt f (f' y) y
hx : HasFDerivAt f' f'' x
v w : E
ε : ℝ
εpos : ε > 0
hε : Metric.ball x ε ⊆ {x | (fun y => HasFDerivAt f (f' y) y) x}
A : (interior (Metric.ball x ε)).Nonempty
⊢ (f'' v) w = (f'' w) v

tactic: exact
  Convex.second_derivative_within_at_symmetric (convex_ball x ε) A
    (fun y hy => hε (interior_subset hy)) (Metric.mem_ball_self εpos) hx.hasFDerivWithinAt v w
state_before: case intro.intro
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
s : Set E
s_conv : Convex ℝ s
f✝ : E → F
f'✝ : E → E →L[ℝ] F
f''✝ : E →L[ℝ] E →L[ℝ] F
hf✝ : ∀ x ∈ interior s, HasFDerivAt f✝ (f'✝ x) x
x : E
xs : x ∈ s
hx✝ : HasFDerivWithinAt f'✝ f''✝ (interior s) x
f : E → F
f' : E → E →L[ℝ] F
f'' : E →L[ℝ] E →L[ℝ] F
hf : ∀ᶠ (y : E) in 𝓝 x, HasFDerivAt f (f' y) y
hx : HasFDerivAt f' f'' x
v w : E
ε : ℝ
εpos : ε > 0
hε : Metric.ball x ε ⊆ {x | (fun y => HasFDerivAt f (f' y) y) x}
A : (interior (Metric.ball x ε)).Nonempty
⊢ (f'' v) w = (f'' w) v
state_after: no goals

tactic: rwa [Metric.isOpen_ball.interior_eq, Metric.nonempty_ball]
state_before: E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
s : Set E
s_conv : Convex ℝ s
f✝ : E → F
f'✝ : E → E →L[ℝ] F
f''✝ : E →L[ℝ] E →L[ℝ] F
hf✝ : ∀ x ∈ interior s, HasFDerivAt f✝ (f'✝ x) x
x : E
xs : x ∈ s
hx✝ : HasFDerivWithinAt f'✝ f''✝ (interior s) x
f : E → F
f' : E → E →L[ℝ] F
f'' : E →L[ℝ] E →L[ℝ] F
hf : ∀ᶠ (y : E) in 𝓝 x, HasFDerivAt f (f' y) y
hx : HasFDerivAt f' f'' x
v w : E
ε : ℝ
εpos : ε > 0
hε : Metric.ball x ε ⊆ {x | (fun y => HasFDerivAt f (f' y) y) x}
⊢ (interior (Metric.ball x ε)).Nonempty
state_after: no goals