Theorem: Convex.norm_image_sub_le_of_norm_hasFDerivWithin_le
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: letI : NormedSpace ℝ G := RestrictScalars.normedSpace ℝ 𝕜 G
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.59306
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → G
C : ℝ
s : Set E
x y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hf : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
bound : ∀ (x : E), x ∈ s → ‖f' x‖ ≤ C
hs : Convex ℝ s
xs : x ∈ s
ys : y ∈ s
⊢ ‖f y - f x‖ ≤ C * ‖y - x‖

tactic: set g := (AffineMap.lineMap x y : ℝ → E)
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.59306
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → G
C : ℝ
s : Set E
x y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hf : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
bound : ∀ (x : E), x ∈ s → ‖f' x‖ ≤ C
hs : Convex ℝ s
xs : x ∈ s
ys : y ∈ s
this : NormedSpace ℝ G := RestrictScalars.normedSpace ℝ 𝕜 G
⊢ ‖f y - f x‖ ≤ C * ‖y - x‖

tactic: have segm : MapsTo g (Icc 0 1 : Set ℝ) s := hs.mapsTo_lineMap xs ys
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.59306
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → G
C : ℝ
s : Set E
x y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hf : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
bound : ∀ (x : E), x ∈ s → ‖f' x‖ ≤ C
hs : Convex ℝ s
xs : x ∈ s
ys : y ∈ s
this : NormedSpace ℝ G := RestrictScalars.normedSpace ℝ 𝕜 G
g : (a : ℝ) → (fun a => E) a := ↑(AffineMap.lineMap x y)
⊢ ‖f y - f x‖ ≤ C * ‖y - x‖

tactic: have hD : ∀ t ∈ Icc (0 : ℝ) 1,
    HasDerivWithinAt (f ∘ g) (f' (g t) (y - x)) (Icc 0 1) t := fun t ht => by
  simpa using ((hf (g t) (segm ht)).restrictScalars ℝ).comp_hasDerivWithinAt _
    AffineMap.hasDerivWithinAt_lineMap segm
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.59306
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → G
C : ℝ
s : Set E
x y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hf : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
bound : ∀ (x : E), x ∈ s → ‖f' x‖ ≤ C
hs : Convex ℝ s
xs : x ∈ s
ys : y ∈ s
this : NormedSpace ℝ G := RestrictScalars.normedSpace ℝ 𝕜 G
g : (a : ℝ) → (fun a => E) a := ↑(AffineMap.lineMap x y)
segm : MapsTo g (Icc 0 1) s
⊢ ‖f y - f x‖ ≤ C * ‖y - x‖

tactic: have bound : ∀ t ∈ Ico (0 : ℝ) 1, ‖f' (g t) (y - x)‖ ≤ C * ‖y - x‖ := fun t ht =>
  le_of_op_norm_le _ (bound _ <| segm <| Ico_subset_Icc_self ht) _
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.59306
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → G
C : ℝ
s : Set E
x y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hf : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
bound : ∀ (x : E), x ∈ s → ‖f' x‖ ≤ C
hs : Convex ℝ s
xs : x ∈ s
ys : y ∈ s
this : NormedSpace ℝ G := RestrictScalars.normedSpace ℝ 𝕜 G
g : (a : ℝ) → (fun a => E) a := ↑(AffineMap.lineMap x y)
segm : MapsTo g (Icc 0 1) s
hD : ∀ (t : ℝ), t ∈ Icc 0 1 → HasDerivWithinAt (f ∘ g) (↑(f' (g t)) (y - x)) (Icc 0 1) t
⊢ ‖f y - f x‖ ≤ C * ‖y - x‖

tactic: simpa using norm_image_sub_le_of_norm_deriv_le_segment_01' hD bound
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.59306
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → G
C : ℝ
s : Set E
x y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hf : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
bound✝ : ∀ (x : E), x ∈ s → ‖f' x‖ ≤ C
hs : Convex ℝ s
xs : x ∈ s
ys : y ∈ s
this : NormedSpace ℝ G := RestrictScalars.normedSpace ℝ 𝕜 G
g : (a : ℝ) → (fun a => E) a := ↑(AffineMap.lineMap x y)
segm : MapsTo g (Icc 0 1) s
hD : ∀ (t : ℝ), t ∈ Icc 0 1 → HasDerivWithinAt (f ∘ g) (↑(f' (g t)) (y - x)) (Icc 0 1) t
bound : ∀ (t : ℝ), t ∈ Ico 0 1 → ‖↑(f' (g t)) (y - x)‖ ≤ C * ‖y - x‖
⊢ ‖f y - f x‖ ≤ C * ‖y - x‖

tactic: simpa using ((hf (g t) (segm ht)).restrictScalars ℝ).comp_hasDerivWithinAt _
  AffineMap.hasDerivWithinAt_lineMap segm
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.59306
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → G
C : ℝ
s : Set E
x y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hf : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
bound : ∀ (x : E), x ∈ s → ‖f' x‖ ≤ C
hs : Convex ℝ s
xs : x ∈ s
ys : y ∈ s
this : NormedSpace ℝ G := RestrictScalars.normedSpace ℝ 𝕜 G
g : (a : ℝ) → (fun a => E) a := ↑(AffineMap.lineMap x y)
segm : MapsTo g (Icc 0 1) s
t : ℝ
ht : t ∈ Icc 0 1
⊢ HasDerivWithinAt (f ∘ g) (↑(f' (g t)) (y - x)) (Icc 0 1) t