Theorem: ContDiffWithinAt.exists_lipschitzOnWith
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: rcases hf 1 le_rfl with ⟨t, hst, p, hp⟩
state_before: 𝕜 : Type ?u.2944822
inst✝¹⁹ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁸ : NormedAddCommGroup D
inst✝¹⁷ : NormedSpace 𝕜 D
E✝ : Type uE
inst✝¹⁶ : NormedAddCommGroup E✝
inst✝¹⁵ : NormedSpace 𝕜 E✝
F✝ : Type uF
inst✝¹⁴ : NormedAddCommGroup F✝
inst✝¹³ : NormedSpace 𝕜 F✝
G : Type uG
inst✝¹² : NormedAddCommGroup G
inst✝¹¹ : NormedSpace 𝕜 G
X : Type ?u.2945243
inst✝¹⁰ : NormedAddCommGroup X
inst✝⁹ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E✝
f✝ f₁ : E✝ → F✝
g : F✝ → G
x✝ x₀ : E✝
c : F✝
b : E✝ × F✝ → G
m n : ℕ∞
p : E✝ → FormalMultilinearSeries 𝕜 E✝ F✝
𝕂 : Type ?u.2948721
inst✝⁸ : IsROrC 𝕂
E' : Type ?u.2948727
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type ?u.2948835
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t

tactic: rcases Metric.mem_nhdsWithin_iff.mp hst with ⟨ε, ε0, hε⟩
state_before: case intro.intro.intro
𝕜 : Type ?u.2944822
inst✝¹⁹ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁸ : NormedAddCommGroup D
inst✝¹⁷ : NormedSpace 𝕜 D
E✝ : Type uE
inst✝¹⁶ : NormedAddCommGroup E✝
inst✝¹⁵ : NormedSpace 𝕜 E✝
F✝ : Type uF
inst✝¹⁴ : NormedAddCommGroup F✝
inst✝¹³ : NormedSpace 𝕜 F✝
G : Type uG
inst✝¹² : NormedAddCommGroup G
inst✝¹¹ : NormedSpace 𝕜 G
X : Type ?u.2945243
inst✝¹⁰ : NormedAddCommGroup X
inst✝⁹ : NormedSpace 𝕜 X
s✝ s₁ t✝ u : Set E✝
f✝ f₁ : E✝ → F✝
g : F✝ → G
x✝ x₀ : E✝
c : F✝
b : E✝ × F✝ → G
m n : ℕ∞
p✝ : E✝ → FormalMultilinearSeries 𝕜 E✝ F✝
𝕂 : Type ?u.2948721
inst✝⁸ : IsROrC 𝕂
E' : Type ?u.2948727
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type ?u.2948835
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
t : Set E
hst : t ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries ℝ E F
hp : HasFTaylorSeriesUpToOn (↑1) f p t
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t

tactic: replace hp : HasFTaylorSeriesUpToOn 1 f p (Metric.ball x ε ∩ insert x s) := hp.mono hε
state_before: case intro.intro.intro.intro.intro
𝕜 : Type ?u.2944822
inst✝¹⁹ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁸ : NormedAddCommGroup D
inst✝¹⁷ : NormedSpace 𝕜 D
E✝ : Type uE
inst✝¹⁶ : NormedAddCommGroup E✝
inst✝¹⁵ : NormedSpace 𝕜 E✝
F✝ : Type uF
inst✝¹⁴ : NormedAddCommGroup F✝
inst✝¹³ : NormedSpace 𝕜 F✝
G : Type uG
inst✝¹² : NormedAddCommGroup G
inst✝¹¹ : NormedSpace 𝕜 G
X : Type ?u.2945243
inst✝¹⁰ : NormedAddCommGroup X
inst✝⁹ : NormedSpace 𝕜 X
s✝ s₁ t✝ u : Set E✝
f✝ f₁ : E✝ → F✝
g : F✝ → G
x✝ x₀ : E✝
c : F✝
b : E✝ × F✝ → G
m n : ℕ∞
p✝ : E✝ → FormalMultilinearSeries 𝕜 E✝ F✝
𝕂 : Type ?u.2948721
inst✝⁸ : IsROrC 𝕂
E' : Type ?u.2948727
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type ?u.2948835
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
t : Set E
hst : t ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries ℝ E F
hp : HasFTaylorSeriesUpToOn (↑1) f p t
ε : ℝ
ε0 : ε > 0
hε : Metric.ball x ε ∩ insert x s ⊆ t
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t

tactic: clear hst hε t
state_before: case intro.intro.intro.intro.intro
𝕜 : Type ?u.2944822
inst✝¹⁹ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁸ : NormedAddCommGroup D
inst✝¹⁷ : NormedSpace 𝕜 D
E✝ : Type uE
inst✝¹⁶ : NormedAddCommGroup E✝
inst✝¹⁵ : NormedSpace 𝕜 E✝
F✝ : Type uF
inst✝¹⁴ : NormedAddCommGroup F✝
inst✝¹³ : NormedSpace 𝕜 F✝
G : Type uG
inst✝¹² : NormedAddCommGroup G
inst✝¹¹ : NormedSpace 𝕜 G
X : Type ?u.2945243
inst✝¹⁰ : NormedAddCommGroup X
inst✝⁹ : NormedSpace 𝕜 X
s✝ s₁ t✝ u : Set E✝
f✝ f₁ : E✝ → F✝
g : F✝ → G
x✝ x₀ : E✝
c : F✝
b : E✝ × F✝ → G
m n : ℕ∞
p✝ : E✝ → FormalMultilinearSeries 𝕜 E✝ F✝
𝕂 : Type ?u.2948721
inst✝⁸ : IsROrC 𝕂
E' : Type ?u.2948727
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type ?u.2948835
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
t : Set E
hst : t ∈ 𝓝[insert x s] x
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hε : Metric.ball x ε ∩ insert x s ⊆ t
hp : HasFTaylorSeriesUpToOn 1 f p (Metric.ball x ε ∩ insert x s)
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t

tactic: rw [← insert_eq_of_mem (Metric.mem_ball_self ε0), ← insert_inter_distrib] at hp
state_before: case intro.intro.intro.intro.intro
𝕜 : Type ?u.2944822
inst✝¹⁹ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁸ : NormedAddCommGroup D
inst✝¹⁷ : NormedSpace 𝕜 D
E✝ : Type uE
inst✝¹⁶ : NormedAddCommGroup E✝
inst✝¹⁵ : NormedSpace 𝕜 E✝
F✝ : Type uF
inst✝¹⁴ : NormedAddCommGroup F✝
inst✝¹³ : NormedSpace 𝕜 F✝
G : Type uG
inst✝¹² : NormedAddCommGroup G
inst✝¹¹ : NormedSpace 𝕜 G
X : Type ?u.2945243
inst✝¹⁰ : NormedAddCommGroup X
inst✝⁹ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E✝
f✝ f₁ : E✝ → F✝
g : F✝ → G
x✝ x₀ : E✝
c : F✝
b : E✝ × F✝ → G
m n : ℕ∞
p✝ : E✝ → FormalMultilinearSeries 𝕜 E✝ F✝
𝕂 : Type ?u.2948721
inst✝⁸ : IsROrC 𝕂
E' : Type ?u.2948727
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type ?u.2948835
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hp : HasFTaylorSeriesUpToOn 1 f p (Metric.ball x ε ∩ insert x s)
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t

tactic: rcases hp.exists_lipschitzOnWith ((convex_ball _ _).inter hs) with ⟨K, t, hst, hft⟩
state_before: case intro.intro.intro.intro.intro
𝕜 : Type ?u.2944822
inst✝¹⁹ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁸ : NormedAddCommGroup D
inst✝¹⁷ : NormedSpace 𝕜 D
E✝ : Type uE
inst✝¹⁶ : NormedAddCommGroup E✝
inst✝¹⁵ : NormedSpace 𝕜 E✝
F✝ : Type uF
inst✝¹⁴ : NormedAddCommGroup F✝
inst✝¹³ : NormedSpace 𝕜 F✝
G : Type uG
inst✝¹² : NormedAddCommGroup G
inst✝¹¹ : NormedSpace 𝕜 G
X : Type ?u.2945243
inst✝¹⁰ : NormedAddCommGroup X
inst✝⁹ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E✝
f✝ f₁ : E✝ → F✝
g : F✝ → G
x✝ x₀ : E✝
c : F✝
b : E✝ × F✝ → G
m n : ℕ∞
p✝ : E✝ → FormalMultilinearSeries 𝕜 E✝ F✝
𝕂 : Type ?u.2948721
inst✝⁸ : IsROrC 𝕂
E' : Type ?u.2948727
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type ?u.2948835
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hp : HasFTaylorSeriesUpToOn 1 f p (insert x (Metric.ball x ε ∩ s))
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t

tactic: rw [inter_comm, ← nhdsWithin_restrict' _ (Metric.ball_mem_nhds _ ε0)] at hst
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type ?u.2944822
inst✝¹⁹ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁸ : NormedAddCommGroup D
inst✝¹⁷ : NormedSpace 𝕜 D
E✝ : Type uE
inst✝¹⁶ : NormedAddCommGroup E✝
inst✝¹⁵ : NormedSpace 𝕜 E✝
F✝ : Type uF
inst✝¹⁴ : NormedAddCommGroup F✝
inst✝¹³ : NormedSpace 𝕜 F✝
G : Type uG
inst✝¹² : NormedAddCommGroup G
inst✝¹¹ : NormedSpace 𝕜 G
X : Type ?u.2945243
inst✝¹⁰ : NormedAddCommGroup X
inst✝⁹ : NormedSpace 𝕜 X
s✝ s₁ t✝ u : Set E✝
f✝ f₁ : E✝ → F✝
g : F✝ → G
x✝ x₀ : E✝
c : F✝
b : E✝ × F✝ → G
m n : ℕ∞
p✝ : E✝ → FormalMultilinearSeries 𝕜 E✝ F✝
𝕂 : Type ?u.2948721
inst✝⁸ : IsROrC 𝕂
E' : Type ?u.2948727
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type ?u.2948835
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hp : HasFTaylorSeriesUpToOn 1 f p (insert x (Metric.ball x ε ∩ s))
K : ℝ≥0
t : Set E
hst : t ∈ 𝓝[Metric.ball x ε ∩ s] x
hft : LipschitzOnWith K f t
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t

tactic: exact ⟨K, t, hst, hft⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type ?u.2944822
inst✝¹⁹ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁸ : NormedAddCommGroup D
inst✝¹⁷ : NormedSpace 𝕜 D
E✝ : Type uE
inst✝¹⁶ : NormedAddCommGroup E✝
inst✝¹⁵ : NormedSpace 𝕜 E✝
F✝ : Type uF
inst✝¹⁴ : NormedAddCommGroup F✝
inst✝¹³ : NormedSpace 𝕜 F✝
G : Type uG
inst✝¹² : NormedAddCommGroup G
inst✝¹¹ : NormedSpace 𝕜 G
X : Type ?u.2945243
inst✝¹⁰ : NormedAddCommGroup X
inst✝⁹ : NormedSpace 𝕜 X
s✝ s₁ t✝ u : Set E✝
f✝ f₁ : E✝ → F✝
g : F✝ → G
x✝ x₀ : E✝
c : F✝
b : E✝ × F✝ → G
m n : ℕ∞
p✝ : E✝ → FormalMultilinearSeries 𝕜 E✝ F✝
𝕂 : Type ?u.2948721
inst✝⁸ : IsROrC 𝕂
E' : Type ?u.2948727
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : NormedSpace 𝕂 E'
F' : Type ?u.2948835
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕂 F'
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
s : Set E
x : E
hf : ContDiffWithinAt ℝ 1 f s x
hs : Convex ℝ s
p : E → FormalMultilinearSeries ℝ E F
ε : ℝ
ε0 : ε > 0
hp : HasFTaylorSeriesUpToOn 1 f p (insert x (Metric.ball x ε ∩ s))
K : ℝ≥0
t : Set E
hst : t ∈ 𝓝[s] x
hft : LipschitzOnWith K f t
⊢ ∃ K t, t ∈ 𝓝[s] x ∧ LipschitzOnWith K f t