Theorem: ConvexCone.hyperplane_separation_of_nonempty_of_isClosed_of_nmem
File: Mathlib/Analysis/Convex/Cone/InnerDual.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : (↑K).Nonempty
hc : IsClosed ↑K
b : H
disj : b ∉ K
⊢ ∃ y, (∀ x ∈ K, 0 ≤ ⟪x, y⟫_ℝ) ∧ ⟪y, b⟫_ℝ < 0
state_after: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : (↑K).Nonempty
hc : IsClosed ↑K
b : H
disj : b ∉ K
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
⊢ ∃ y, (∀ x ∈ K, 0 ≤ ⟪x, y⟫_ℝ) ∧ ⟪y, b⟫_ℝ < 0
tactic: obtain ⟨z, hzK, infi⟩ := exists_norm_eq_iInf_of_complete_convex ne hc.isComplete K.convex b
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : (↑K).Nonempty
hc : IsClosed ↑K
b : H
disj : b ∉ K
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
⊢ ∃ y, (∀ x ∈ K, 0 ≤ ⟪x, y⟫_ℝ) ∧ ⟪y, b⟫_ℝ < 0
state_after: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : (↑K).Nonempty
hc : IsClosed ↑K
b : H
disj : b ∉ K
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
⊢ ∃ y, (∀ x ∈ K, 0 ≤ ⟪x, y⟫_ℝ) ∧ ⟪y, b⟫_ℝ < 0
tactic: have hinner := (norm_eq_iInf_iff_real_inner_le_zero K.convex hzK).1 infi
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : (↑K).Nonempty
hc : IsClosed ↑K
b : H
disj : b ∉ K
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
⊢ ∃ y, (∀ x ∈ K, 0 ≤ ⟪x, y⟫_ℝ) ∧ ⟪y, b⟫_ℝ < 0
state_after: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : (↑K).Nonempty
hc : IsClosed ↑K
b : H
disj : b ∉ K
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
⊢ (∀ x ∈ K, 0 ≤ ⟪x, z - b⟫_ℝ) ∧ ⟪z - b, b⟫_ℝ < 0
tactic: use z - b
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : (↑K).Nonempty
hc : IsClosed ↑K
b : H
disj : b ∉ K
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
⊢ (∀ x ∈ K, 0 ≤ ⟪x, z - b⟫_ℝ) ∧ ⟪z - b, b⟫_ℝ < 0
state_after: case h.left
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : (↑K).Nonempty
hc : IsClosed ↑K
b : H
disj : b ∉ K
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
⊢ ∀ x ∈ K, 0 ≤ ⟪x, z - b⟫_ℝ

case h.right
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : (↑K).Nonempty
hc : IsClosed ↑K
b : H
disj : b ∉ K
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
⊢ ⟪z - b, b⟫_ℝ < 0
tactic: constructor