|
7 | 7 |
|
8 | 8 | public import Mathlib.Analysis.Convex.Cone.Extension |
9 | 9 | public import Mathlib.Analysis.Convex.Gauge |
| 10 | +public import Mathlib.Analysis.Normed.Module.Convex |
10 | 11 | public import Mathlib.Analysis.RCLike.Extend |
11 | 12 | public import Mathlib.Topology.Algebra.Module.FiniteDimension |
12 | 13 | public import Mathlib.Topology.Algebra.Module.LocallyConvex |
| 14 | +public import Mathlib.Topology.Instances.RealVectorSpace |
13 | 15 |
|
14 | 16 | /-! |
15 | 17 | # Separation Hahn-Banach theorem |
@@ -324,21 +326,21 @@ end |
324 | 326 | section Countable |
325 | 327 |
|
326 | 328 | variable [NormedAddCommGroup E] [NormedSpace ℝ E] [Module 𝕜 E] [ContinuousSMul 𝕜 E] |
| 329 | + [SecondCountableTopology E] |
327 | 330 |
|
328 | 331 | /-- A closed convex set `s` is the intersection of countably many half spaces in a separable Banach |
329 | 332 | 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) : |
332 | 334 | ∃ (L : ℕ → E →L[𝕜] 𝕜) (c : ℕ → ℝ), |
333 | 335 | ⋂ (i : ℕ), {x | c i ≤ re (L i x)} = s ∧ |
334 | 336 | (s.Nonempty → s ≠ univ → ∀ i, ∃ x, re (L i x) ≠ 0) := by |
335 | 337 | obtain rfl | hs₃ := s.eq_empty_or_nonempty |
336 | 338 | · exact ⟨0, 1, by simp [iInter_eq_empty_iff]⟩ |
337 | 339 | obtain rfl | hs_univ := eq_or_ne s univ |
338 | 340 | · exact ⟨0, 0, by simp [nonempty_iff_ne_empty]⟩ |
| 341 | + -- choose a countable dense set of sᶜ |
339 | 342 | obtain ⟨f, hfmem, hf⟩ : ∃ f : ℕ → E, (∀ i, f i ∈ sᶜ) ∧ sᶜ ⊆ closure (range f) := by |
340 | 343 | have : Nonempty ↑sᶜ := (nonempty_compl.mpr hs_univ).to_subtype |
341 | | - have : SeparableSpace ↑sᶜ := hsep.separableSpace |
342 | 344 | refine ⟨fun i ↦ (denseSeq ↑sᶜ i : E), by simp, fun x hx ↦ ?_⟩ |
343 | 345 | change ↑(Subtype.mk x hx) ∈ closure (range (((↑) : ↑sᶜ → E) ∘ _)) |
344 | 346 | rw [range_comp, ← closure_subtype, (denseRange_denseSeq ↑sᶜ).closure_range] |
@@ -375,14 +377,13 @@ theorem iInter_nat_halfSpaces_eq |
375 | 377 | linarith |
376 | 378 |
|
377 | 379 | /-- `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) : |
382 | 383 | ∃ (L : ℕ → E →L[𝕜] 𝕜) (T : ℕ → F →L[𝕜] 𝕜) (c : ℕ → ℝ), |
383 | 384 | ⋂ (i : ℕ), {(x, y) | c i ≤ re (L i x) + re (T i y)} = s |
384 | 385 | ∧ (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₂ |
386 | 387 | refine ⟨fun i ↦ (LT i).comp (.inl 𝕜 E F), fun i ↦ (LT i).comp (.inr 𝕜 E F), c, ?_, |
387 | 388 | fun hs₃ hsne i ↦ ?_⟩ |
388 | 389 | · rw [← eq1] |
|
0 commit comments