-- Mathlib/Analysis/Calculus/LineDeriv/Basic.lean
lemma HasLineDerivWithinAt.congr_of_eventuallyEq (hf : HasLineDerivWithinAt 𝕜 f f' s x v)
    (h'f : f₁ =ᶠ[𝓝[s] x] f) (hx : f₁ x = f x) : HasLineDerivWithinAt 𝕜 f₁ f' s x v

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₁ : E → F
f' : F
s : Set E
x v : E
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ Continuous fun t => x + t • v

Tactic:
fun_prop

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₁ : E → F
f' : F
s : Set E
x v : E
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
A : Continuous fun t => x + t • v
⊢ x = x + 0 • v

Tactic:
simp

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₁ : E → F
f' : F
s : Set E
x v : E
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ f₁ (x + 0 • v) = f (x + 0 • v)

Tactic:
simp [hx]

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₁ : E → F
f' : F
s : Set E
x v : E
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
A : Continuous fun t => x + t • v
⊢ (fun t => f₁ (x + t • v)) =ᶠ[𝓝[(fun t => x + t • v) ⁻¹' s] 0] fun t => f (x + t • v)

Tactic:
exact A.continuousWithinAt.preimage_mem_nhdsWithin'' h'f (by simp)

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₁ : E → F
f' : F
s : Set E
x v : E
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ HasLineDerivWithinAt 𝕜 f₁ f' s x v

Tactic:
apply HasDerivWithinAt.congr_of_eventuallyEq hf _ (by simp [hx])

Result:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₁ : E → F
f' : F
s : Set E
x v : E
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ (fun t => f₁ (x + t • v)) =ᶠ[𝓝[(fun t => x + t • v) ⁻¹' s] 0] fun t => f (x + t • v)

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₁ : E → F
f' : F
s : Set E
x v : E
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
⊢ (fun t => f₁ (x + t • v)) =ᶠ[𝓝[(fun t => x + t • v) ⁻¹' s] 0] fun t => f (x + t • v)

Tactic:
have A : Continuous (fun (t : 𝕜) ↦ x + t • v) := by fun_prop

Result:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₁ : E → F
f' : F
s : Set E
x v : E
hf : HasLineDerivWithinAt 𝕜 f f' s x v
h'f : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
A : Continuous fun t => x + t • v
⊢ (fun t => f₁ (x + t • v)) =ᶠ[𝓝[(fun t => x + t • v) ⁻¹' s] 0] fun t => f (x + t • v)