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

tactic: obtain ⟨z, hzK, infi⟩ := exists_norm_eq_iInf_of_complete_convex ne hc.isComplete K.convex b
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: 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‖
⊢ ∃ 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: use z - 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‖
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: constructor
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: rintro x hxK
state_before: 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⟫_ℝ
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 : H
hxK : x ∈ K
⊢ 0 ≤ ⟪x, z - b⟫_ℝ

tactic: specialize hinner _ (K.add_mem hxK hzK)
state_before: 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 : H
hxK : x ∈ K
⊢ 0 ≤ ⟪x, z - b⟫_ℝ
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‖
x : H
hxK : x ∈ K
hinner : ⟪b - z, x + z - z⟫_ℝ ≤ 0
⊢ 0 ≤ ⟪x, z - b⟫_ℝ

tactic: rwa [add_sub_cancel_right, real_inner_comm, ← neg_nonneg, neg_eq_neg_one_mul,
  ← real_inner_smul_right, neg_smul, one_smul, neg_sub] at hinner
state_before: 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‖
x : H
hxK : x ∈ K
hinner : ⟪b - z, x + z - z⟫_ℝ ≤ 0
⊢ 0 ≤ ⟪x, z - b⟫_ℝ
state_after: no goals

tactic: have hinner₀ := hinner 0 (K.pointed_of_nonempty_of_isClosed ne hc)
state_before: 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
state_after: 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
hinner₀ : ⟪b - z, 0 - z⟫_ℝ ≤ 0
⊢ ⟪z - b, b⟫_ℝ < 0

tactic: rw [zero_sub, inner_neg_right, Right.neg_nonpos_iff] at hinner₀
state_before: 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
hinner₀ : ⟪b - z, 0 - z⟫_ℝ ≤ 0
⊢ ⟪z - b, b⟫_ℝ < 0
state_after: 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
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
⊢ ⟪z - b, b⟫_ℝ < 0

tactic: have hbz : b - z ≠ 0 := by
  rw [sub_ne_zero]
  contrapose! hzK
  rwa [← hzK]
state_before: 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
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
⊢ ⟪z - b, b⟫_ℝ < 0
state_after: 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
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
hbz : b - z ≠ 0
⊢ ⟪z - b, b⟫_ℝ < 0

tactic: rw [← neg_zero, lt_neg, ← neg_one_mul, ← real_inner_smul_left, smul_sub, neg_smul, one_smul,
  neg_smul, neg_sub_neg, one_smul]
state_before: 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
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
hbz : b - z ≠ 0
⊢ ⟪z - b, b⟫_ℝ < 0
state_after: 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
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
hbz : b - z ≠ 0
⊢ 0 < ⟪b - z, b⟫_ℝ

tactic: calc
  0 < ⟪b - z, b - z⟫_ℝ := lt_of_not_le ((Iff.not real_inner_self_nonpos).2 hbz)
  _ = ⟪b - z, b - z⟫_ℝ + 0 := (add_zero _).symm
  _ ≤ ⟪b - z, b - z⟫_ℝ + ⟪b - z, z⟫_ℝ := add_le_add rfl.ge hinner₀
  _ = ⟪b - z, b - z + z⟫_ℝ := (inner_add_right _ _ _).symm
  _ = ⟪b - z, b⟫_ℝ := by rw [sub_add_cancel]
state_before: 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
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
hbz : b - z ≠ 0
⊢ 0 < ⟪b - z, b⟫_ℝ
state_after: no goals

tactic: rw [sub_ne_zero]
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
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
⊢ b - z ≠ 0
state_after: 𝕜 : 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
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
⊢ b ≠ z

tactic: contrapose! hzK
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
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
⊢ b ≠ z
state_after: 𝕜 : 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
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
hzK : b = z
⊢ z ∉ ↑K

tactic: rwa [← hzK]
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
z : H
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
hzK : b = z
⊢ z ∉ ↑K
state_after: no goals

tactic: rw [sub_add_cancel]
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
z : H
hzK : z ∈ ↑K
infi : ‖b - z‖ = ⨅ w, ‖b - ↑w‖
hinner : ∀ w ∈ ↑K, ⟪b - z, w - z⟫_ℝ ≤ 0
hinner₀ : 0 ≤ ⟪b - z, z⟫_ℝ
hbz : b - z ≠ 0
⊢ ⟪b - z, b - z + z⟫_ℝ = ⟪b - z, b⟫_ℝ
state_after: no goals