-- Mathlib/Analysis/Calculus/LineDeriv/Basic.lean
theorem lineDerivWithin_congr_set (h : s =ᶠ[𝓝 x] t) :
    lineDerivWithin 𝕜 f s x v = lineDerivWithin 𝕜 f t x v

Proof state:
case h
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
⊢ (fun t => x + t • v) ⁻¹' s =ᶠ[𝓝 0] (fun t => x + t • v) ⁻¹' t

Tactic:
have B : ContinuousAt F 0 := by apply Continuous.continuousAt; fun_prop

Result:
case h
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
B : ContinuousAt F 0
⊢ (fun t => x + t • v) ⁻¹' s =ᶠ[𝓝 0] (fun t => x + t • v) ⁻¹' t

Proof state:
case h
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
B : ContinuousAt F 0
⊢ (fun t => x + t • v) ⁻¹' s =ᶠ[𝓝 0] (fun t => x + t • v) ⁻¹' t

Tactic:
have : s =ᶠ[𝓝 (F 0)] t := by convert h; simp [F]

Result:
case h
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
B : ContinuousAt F 0
this : s =ᶠ[𝓝 (F 0)] t
⊢ (fun t => x + t • v) ⁻¹' s =ᶠ[𝓝 0] (fun t => x + t • v) ⁻¹' t

Proof state:
case h
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
B : ContinuousAt F 0
this : s =ᶠ[𝓝 (F 0)] t
⊢ (fun t => x + t • v) ⁻¹' s =ᶠ[𝓝 0] (fun t => x + t • v) ⁻¹' t

Tactic:
exact B.preimage_mem_nhds this

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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
B : ContinuousAt F 0
⊢ s =ᶠ[𝓝 (F 0)] t

Tactic:
convert h

Result:
case h.e'_3.h.e'_3
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
B : ContinuousAt F 0
⊢ F 0 = x

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 : E → F
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
⊢ lineDerivWithin 𝕜 f s x v = lineDerivWithin 𝕜 f t x v

Tactic:
apply derivWithin_congr_set

Result:
case h
𝕜 : 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 : E → F
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
⊢ (fun t => x + t • v) ⁻¹' s =ᶠ[𝓝 0] (fun t => x + t • v) ⁻¹' t

Proof state:
case h
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
⊢ Continuous F

Tactic:
fun_prop

Result:
no goals

Proof state:
case h.e'_3.h.e'_3
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
B : ContinuousAt F 0
⊢ F 0 = x

Tactic:
simp [F]

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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
⊢ ContinuousAt F 0

Tactic:
apply Continuous.continuousAt

Result:
case h
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
⊢ Continuous F

Proof state:
case h
𝕜 : 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 : E → F
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
⊢ (fun t => x + t • v) ⁻¹' s =ᶠ[𝓝 0] (fun t => x + t • v) ⁻¹' t

Tactic:
let F := fun (t : 𝕜) ↦ x + t • v

Result:
case h
𝕜 : 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 : E → F✝
s t : Set E
x v : E
h : s =ᶠ[𝓝 x] t
F : 𝕜 → E := fun t => x + t • v
⊢ (fun t => x + t • v) ⁻¹' s =ᶠ[𝓝 0] (fun t => x + t • v) ⁻¹' t