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

tactic: ext x
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
⊢ (↑(↑K).innerDualCone).innerDualCone = K
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
x : H
⊢ x ∈ (↑(↑K).innerDualCone).innerDualCone ↔ x ∈ K

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
x : H
⊢ x ∈ (↑(↑K).innerDualCone).innerDualCone ↔ x ∈ K
state_after: case h.mp
𝕜 : 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
x : H
⊢ x ∈ (↑(↑K).innerDualCone).innerDualCone → x ∈ K

case h.mpr
𝕜 : 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
x : H
⊢ x ∈ K → x ∈ (↑(↑K).innerDualCone).innerDualCone

tactic: rw [mem_innerDualCone, ← SetLike.mem_coe]
state_before: case h.mp
𝕜 : 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
x : H
⊢ x ∈ (↑(↑K).innerDualCone).innerDualCone → x ∈ K
state_after: case h.mp
𝕜 : 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
x : H
⊢ (∀ x_1 ∈ ↑(↑K).innerDualCone, 0 ≤ ⟪x_1, x⟫_ℝ) → x ∈ ↑K

tactic: contrapose!
state_before: case h.mp
𝕜 : 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
x : H
⊢ (∀ x_1 ∈ ↑(↑K).innerDualCone, 0 ≤ ⟪x_1, x⟫_ℝ) → x ∈ ↑K
state_after: case h.mp
𝕜 : 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
x : H
⊢ x ∉ ↑K → ∃ x_1 ∈ ↑(↑K).innerDualCone, ⟪x_1, x⟫_ℝ < 0

tactic: exact K.hyperplane_separation_of_nonempty_of_isClosed_of_nmem ne hc
state_before: case h.mp
𝕜 : 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
x : H
⊢ x ∉ ↑K → ∃ x_1 ∈ ↑(↑K).innerDualCone, ⟪x_1, x⟫_ℝ < 0
state_after: no goals

tactic: rintro hxK y h
state_before: case h.mpr
𝕜 : 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
x : H
⊢ x ∈ K → x ∈ (↑(↑K).innerDualCone).innerDualCone
state_after: case h.mpr
𝕜 : 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
x : H
hxK : x ∈ K
y : H
h : y ∈ ↑(↑K).innerDualCone
⊢ 0 ≤ ⟪y, x⟫_ℝ

tactic: specialize h x hxK
state_before: case h.mpr
𝕜 : 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
x : H
hxK : x ∈ K
y : H
h : y ∈ ↑(↑K).innerDualCone
⊢ 0 ≤ ⟪y, x⟫_ℝ
state_after: case h.mpr
𝕜 : 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
x : H
hxK : x ∈ K
y : H
h : 0 ≤ ⟪x, y⟫_ℝ
⊢ 0 ≤ ⟪y, x⟫_ℝ

tactic: rwa [real_inner_comm]
state_before: case h.mpr
𝕜 : 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
x : H
hxK : x ∈ K
y : H
h : 0 ≤ ⟪x, y⟫_ℝ
⊢ 0 ≤ ⟪y, x⟫_ℝ
state_after: no goals