Theorem: closure_convexHull_extremePoints
File: Mathlib/Analysis/Convex/KreinMilman.lean

tactic: apply (closure_minimal (convexHull_min extremePoints_subset hAconv) hscomp.isClosed).antisymm
state_before: E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
inst✝⁴ : TopologicalSpace E
inst✝³ : T2Space E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : LocallyConvexSpace ℝ E
s : Set E
hscomp : IsCompact s
hAconv : Convex ℝ s
⊢ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s)) = s

tactic: by_contra hs
state_before: E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
inst✝⁴ : TopologicalSpace E
inst✝³ : T2Space E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : LocallyConvexSpace ℝ E
s : Set E
hscomp : IsCompact s
hAconv : Convex ℝ s
⊢ s ⊆ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))

tactic: obtain ⟨x, hxA, hxt⟩ := not_subset.1 hs
state_before: E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
inst✝⁴ : TopologicalSpace E
inst✝³ : T2Space E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : LocallyConvexSpace ℝ E
s : Set E
hscomp : IsCompact s
hAconv : Convex ℝ s
hs : ¬s ⊆ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
⊢ False

tactic: obtain ⟨l, r, hlr, hrx⟩ :=
  geometric_hahn_banach_closed_point (convex_convexHull _ _).closure isClosed_closure hxt
state_before: case intro.intro
E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
inst✝⁴ : TopologicalSpace E
inst✝³ : T2Space E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : LocallyConvexSpace ℝ E
s : Set E
hscomp : IsCompact s
hAconv : Convex ℝ s
hs : ¬s ⊆ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
x : E
hxA : x ∈ s
hxt : ¬x ∈ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
⊢ False

tactic: have h : IsExposed ℝ s ({ y ∈ s | ∀ z ∈ s, l z ≤ l y }) := fun _ => ⟨l, rfl⟩
state_before: case intro.intro.intro.intro.intro
E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
inst✝⁴ : TopologicalSpace E
inst✝³ : T2Space E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : LocallyConvexSpace ℝ E
s : Set E
hscomp : IsCompact s
hAconv : Convex ℝ s
hs : ¬s ⊆ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
x : E
hxA : x ∈ s
hxt : ¬x ∈ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
l : E →L[ℝ] ℝ
r : ℝ
hlr : ∀ (a : E), a ∈ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s)) → ↑l a < r
hrx : r < ↑l x
⊢ False

tactic: obtain ⟨z, hzA, hz⟩ := hscomp.exists_forall_ge ⟨x, hxA⟩ l.continuous.continuousOn
state_before: case intro.intro.intro.intro.intro
E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
inst✝⁴ : TopologicalSpace E
inst✝³ : T2Space E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : LocallyConvexSpace ℝ E
s : Set E
hscomp : IsCompact s
hAconv : Convex ℝ s
hs : ¬s ⊆ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
x : E
hxA : x ∈ s
hxt : ¬x ∈ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
l : E →L[ℝ] ℝ
r : ℝ
hlr : ∀ (a : E), a ∈ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s)) → ↑l a < r
hrx : r < ↑l x
h : IsExposed ℝ s {y | y ∈ s ∧ ∀ (z : E), z ∈ s → ↑l z ≤ ↑l y}
⊢ False

tactic: obtain ⟨y, hy⟩ := (h.isCompact hscomp).has_extreme_point ⟨z, hzA, hz⟩
state_before: case intro.intro.intro.intro.intro.intro.intro
E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
inst✝⁴ : TopologicalSpace E
inst✝³ : T2Space E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : LocallyConvexSpace ℝ E
s : Set E
hscomp : IsCompact s
hAconv : Convex ℝ s
hs : ¬s ⊆ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
x : E
hxA : x ∈ s
hxt : ¬x ∈ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
l : E →L[ℝ] ℝ
r : ℝ
hlr : ∀ (a : E), a ∈ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s)) → ↑l a < r
hrx : r < ↑l x
h : IsExposed ℝ s {y | y ∈ s ∧ ∀ (z : E), z ∈ s → ↑l z ≤ ↑l y}
z : E
hzA : z ∈ s
hz : ∀ (y : E), y ∈ s → ↑l y ≤ ↑l z
⊢ False

tactic: linarith [hlr _ (subset_closure <| subset_convexHull _ _ <|
  h.isExtreme.extremePoints_subset_extremePoints hy), hy.1.2 x hxA]
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
inst✝⁴ : TopologicalSpace E
inst✝³ : T2Space E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : LocallyConvexSpace ℝ E
s : Set E
hscomp : IsCompact s
hAconv : Convex ℝ s
hs : ¬s ⊆ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
x : E
hxA : x ∈ s
hxt : ¬x ∈ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s))
l : E →L[ℝ] ℝ
r : ℝ
hlr : ∀ (a : E), a ∈ closure (↑(convexHull ℝ).toOrderHom (extremePoints ℝ s)) → ↑l a < r
hrx : r < ↑l x
h : IsExposed ℝ s {y | y ∈ s ∧ ∀ (z : E), z ∈ s → ↑l z ≤ ↑l y}
z : E
hzA : z ∈ s
hz : ∀ (y : E), y ∈ s → ↑l y ≤ ↑l z
y : E
hy : y ∈ extremePoints ℝ {y | y ∈ s ∧ ∀ (z : E), z ∈ s → ↑l z ≤ ↑l y}
⊢ False