Skip to content

Commit 8d21bf5

Browse files
committed
Update Separation.lean
1 parent 5ddb466 commit 8d21bf5

1 file changed

Lines changed: 9 additions & 8 deletions

File tree

Mathlib/Analysis/LocallyConvex/Separation.lean

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ module
77

88
public import Mathlib.Analysis.Convex.Cone.Extension
99
public import Mathlib.Analysis.Convex.Gauge
10+
public import Mathlib.Analysis.Normed.Module.Convex
1011
public import Mathlib.Analysis.RCLike.Extend
1112
public import Mathlib.Topology.Algebra.Module.FiniteDimension
1213
public import Mathlib.Topology.Algebra.Module.LocallyConvex
14+
public import Mathlib.Topology.Instances.RealVectorSpace
1315

1416
/-!
1517
# Separation Hahn-Banach theorem
@@ -324,21 +326,21 @@ end
324326
section Countable
325327

326328
variable [NormedAddCommGroup E] [NormedSpace ℝ E] [Module 𝕜 E] [ContinuousSMul 𝕜 E]
329+
[SecondCountableTopology E]
327330

328331
/-- A closed convex set `s` is the intersection of countably many half spaces in a separable Banach
329332
space. Moreover, these halfspaces are all nontrivial if `s` is nonempty and not equal to `univ`. -/
330-
theorem iInter_nat_halfSpaces_eq
331-
(hs₁ : Convex ℝ s) (hs₂ : IsClosed s) (hsep : IsSeparable sᶜ) :
333+
theorem iInter_nat_halfSpaces_eq (hs₁ : Convex ℝ s) (hs₂ : IsClosed s) :
332334
∃ (L : ℕ → E →L[𝕜] 𝕜) (c : ℕ → ℝ),
333335
⋂ (i : ℕ), {x | c i ≤ re (L i x)} = s ∧
334336
(s.Nonempty → s ≠ univ → ∀ i, ∃ x, re (L i x) ≠ 0) := by
335337
obtain rfl | hs₃ := s.eq_empty_or_nonempty
336338
· exact ⟨0, 1, by simp [iInter_eq_empty_iff]⟩
337339
obtain rfl | hs_univ := eq_or_ne s univ
338340
· exact ⟨0, 0, by simp [nonempty_iff_ne_empty]⟩
341+
-- choose a countable dense set of sᶜ
339342
obtain ⟨f, hfmem, hf⟩ : ∃ f : ℕ → E, (∀ i, f i ∈ sᶜ) ∧ sᶜ ⊆ closure (range f) := by
340343
have : Nonempty ↑sᶜ := (nonempty_compl.mpr hs_univ).to_subtype
341-
have : SeparableSpace ↑sᶜ := hsep.separableSpace
342344
refine ⟨fun i ↦ (denseSeq ↑sᶜ i : E), by simp, fun x hx ↦ ?_⟩
343345
change ↑(Subtype.mk x hx) ∈ closure (range (((↑) : ↑sᶜ → E) ∘ _))
344346
rw [range_comp, ← closure_subtype, (denseRange_denseSeq ↑sᶜ).closure_range]
@@ -375,14 +377,13 @@ theorem iInter_nat_halfSpaces_eq
375377
linarith
376378

377379
/-- `iInter_nat_halfSpaces_eq` for product spaces. -/
378-
theorem iInter_nat_halfSpaces_eq_of_prod {F : Type*} {s : Set (E × F)}
379-
[NormedAddCommGroup F] [NormedSpace ℝ F]
380-
[Module 𝕜 F] [ContinuousSMul 𝕜 F]
381-
(hs₁ : Convex ℝ s) (hs₂ : IsClosed s) (hsep : IsSeparable sᶜ) :
380+
theorem iInter_nat_halfSpaces_eq_of_prod {F : Type*} {s : Set (E × F)} [NormedAddCommGroup F]
381+
[NormedSpace ℝ F] [Module 𝕜 F] [ContinuousSMul 𝕜 F] [SecondCountableTopology F]
382+
(hs₁ : Convex ℝ s) (hs₂ : IsClosed s) :
382383
∃ (L : ℕ → E →L[𝕜] 𝕜) (T : ℕ → F →L[𝕜] 𝕜) (c : ℕ → ℝ),
383384
⋂ (i : ℕ), {(x, y) | c i ≤ re (L i x) + re (T i y)} = s
384385
∧ (s.Nonempty → s ≠ univ → ∀ i, ∃ (x : E) (y : F), re (L i x) + re (T i y) ≠ 0) := by
385-
obtain ⟨LT, c, eq1, eq2⟩ := iInter_nat_halfSpaces_eq (𝕜 := 𝕜) hs₁ hs₂ hsep
386+
obtain ⟨LT, c, eq1, eq2⟩ := iInter_nat_halfSpaces_eq (𝕜 := 𝕜) hs₁ hs₂
386387
refine ⟨fun i ↦ (LT i).comp (.inl 𝕜 E F), fun i ↦ (LT i).comp (.inr 𝕜 E F), c, ?_,
387388
fun hs₃ hsne i ↦ ?_⟩
388389
· rw [← eq1]

0 commit comments

Comments
 (0)