Theorem: HasLineDerivWithinAt.smul
File: Mathlib/Analysis/Calculus/LineDeriv/Basic.lean

tactic: simp only [HasLineDerivWithinAt] at h ⊢
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasLineDerivWithinAt 𝕜 f f' s x v
c : 𝕜
⊢ HasLineDerivWithinAt 𝕜 f (c • f') s x (c • v)
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0

tactic: let g := fun (t : 𝕜) ↦ c • t
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0

tactic: let s' := (fun (t : 𝕜) ↦ x + t • v) ⁻¹' s
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0

tactic: have A : HasDerivAt g c 0 := by simpa using (hasDerivAt_id (0 : 𝕜)).const_smul c
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0

tactic: have B : HasDerivWithinAt (fun t ↦ f (x + t • v)) f' s' (g 0) := by simpa [g] using h
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0

tactic: have Z := B.scomp (0 : 𝕜) A.hasDerivWithinAt (mapsTo_preimage g s')
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
Z : HasDerivWithinAt ((fun t => f (x + t • v)) ∘ g) (c • f') (g ⁻¹' s') 0
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0

tactic: simp only [g, s', Function.comp, smul_eq_mul, mul_comm c, ← smul_smul] at Z
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
Z : HasDerivWithinAt ((fun t => f (x + t • v)) ∘ g) (c • f') (g ⁻¹' s') 0
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
Z : HasDerivWithinAt (fun x_1 => f (x + x_1 • c • v)) (c • f') ((fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)) 0
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0

tactic: convert Z
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
Z : HasDerivWithinAt (fun x_1 => f (x + x_1 • c • v)) (c • f') ((fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)) 0
⊢ HasDerivWithinAt (fun t => f (x + t • c • v)) (c • f') ((fun t => x + t • c • v) ⁻¹' s) 0
state_after: case h.e'_8
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
Z : HasDerivWithinAt (fun x_1 => f (x + x_1 • c • v)) (c • f') ((fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)) 0
⊢ (fun t => x + t • c • v) ⁻¹' s = (fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)

tactic: ext t
state_before: case h.e'_8
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
Z : HasDerivWithinAt (fun x_1 => f (x + x_1 • c • v)) (c • f') ((fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)) 0
⊢ (fun t => x + t • c • v) ⁻¹' s = (fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)
state_after: case h.e'_8.h
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
Z : HasDerivWithinAt (fun x_1 => f (x + x_1 • c • v)) (c • f') ((fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)) 0
t : 𝕜
⊢ t ∈ (fun t => x + t • c • v) ⁻¹' s ↔ t ∈ (fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)

tactic: simp [← smul_smul]
state_before: case h.e'_8.h
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
B : HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
Z : HasDerivWithinAt (fun x_1 => f (x + x_1 • c • v)) (c • f') ((fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)) 0
t : 𝕜
⊢ t ∈ (fun t => x + t • c • v) ⁻¹' s ↔ t ∈ (fun t => t * c) ⁻¹' ((fun t => x + t • v) ⁻¹' s)
state_after: no goals

tactic: simpa using (hasDerivAt_id (0 : 𝕜)).const_smul c
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
⊢ HasDerivAt g c 0
state_after: no goals

tactic: simpa [g] using h
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x v : E
f' : F
h : HasDerivWithinAt (fun t => f (x + t • v)) f' ((fun t => x + t • v) ⁻¹' s) 0
c : 𝕜
g : 𝕜 → 𝕜 := fun t => c • t
s' : Set 𝕜 := (fun t => x + t • v) ⁻¹' s
A : HasDerivAt g c 0
⊢ HasDerivWithinAt (fun t => f (x + t • v)) f' s' (g 0)
state_after: no goals