Theorem: uniqueDiffWithinAt_convex
File: Mathlib/Analysis/Calculus/TangentCone.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
hs : (interior s).Nonempty
x : G
hx : x ∈ closure s
⊢ UniqueDiffWithinAt ℝ s x
state_after: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : y ∈ interior s
⊢ UniqueDiffWithinAt ℝ s x
tactic: rcases hs with ⟨y, hy⟩
state_before: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : y ∈ interior s
⊢ UniqueDiffWithinAt ℝ s x
state_after: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : y ∈ interior s
⊢ y - x ∈ interior (tangentConeAt ℝ s x)
tactic: suffices y - x ∈ interior (tangentConeAt ℝ s x) by
    refine ⟨Dense.of_closure ?_, hx⟩
    simp [(Submodule.span ℝ (tangentConeAt ℝ s x)).eq_top_of_nonempty_interior'
        ⟨y - x, interior_mono Submodule.subset_span this⟩]
state_before: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : y ∈ interior s
⊢ y - x ∈ interior (tangentConeAt ℝ s x)
state_after: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : y ∈ interior s
⊢ tangentConeAt ℝ s x ∈ 𝓝 (y - x)
tactic: rw [mem_interior_iff_mem_nhds]
state_before: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : y ∈ interior s
⊢ tangentConeAt ℝ s x ∈ 𝓝 (y - x)
state_after: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : interior s ∈ 𝓝 y
⊢ tangentConeAt ℝ s x ∈ 𝓝 (y - x)
tactic: replace hy : interior s ∈ 𝓝 y := IsOpen.mem_nhds isOpen_interior hy
state_before: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : interior s ∈ 𝓝 y
⊢ tangentConeAt ℝ s x ∈ 𝓝 (y - x)
state_after: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : interior s ∈ 𝓝 y
⊢ (fun x_1 => x_1 - x) '' interior s ⊆ tangentConeAt ℝ s x
tactic: apply mem_of_superset ((isOpenMap_sub_right x).image_mem_nhds hy)
state_before: case intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : interior s ∈ 𝓝 y
⊢ (fun x_1 => x_1 - x) '' interior s ⊆ tangentConeAt ℝ s x
state_after: case intro.intro.intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : interior s ∈ 𝓝 y
z : G
zs : z ∈ interior s
⊢ (fun x_1 => x_1 - x) z ∈ tangentConeAt ℝ s x
tactic: rintro _ ⟨z, zs, rfl⟩
state_before: case intro.intro.intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : interior s ∈ 𝓝 y
z : G
zs : z ∈ interior s
⊢ (fun x_1 => x_1 - x) z ∈ tangentConeAt ℝ s x
state_after: case intro.intro.intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : interior s ∈ 𝓝 y
z : G
zs : z ∈ interior s
⊢ openSegment ℝ x z ⊆ interior s
tactic: refine mem_tangentCone_of_openSegment_subset (Subset.trans ?_ interior_subset)
state_before: case intro.intro.intro
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x✝ y✝ : E
s✝ t : Set E
s : Set G
conv : Convex ℝ s
x : G
hx : x ∈ closure s
y : G
hy : interior s ∈ 𝓝 y
z : G
zs : z ∈ interior s
⊢ openSegment ℝ x z ⊆ interior s
state_after: no goals
tactic: exact conv.openSegment_closure_interior_subset_interior hx zs