@@ -322,24 +322,29 @@ theorem iInter_halfSpaces_eq (hs₁ : Convex ℝ s) (hs₂ : IsClosed s) :
322322 obtain ⟨y, hy, hxy⟩ := hx l
323323 exact ((hxy.trans_lt (hlA y hy)).trans hl).false
324324
325- /-- A variant of `iInter_halfSpaces_eq`. -/
325+ /-- A variant of `iInter_halfSpaces_eq`. If `s` is nonempty, then all the halfspaces are
326+ nontrivial. -/
326327theorem iInter_halfSpaces_const_eq (hs₁ : Convex ℝ s) (hs₂ : IsClosed s) :
327328 ∃ (L : (sᶜ : Set E) → StrongDual 𝕜 E) (c : (sᶜ : Set E) → ℝ),
328- ⋂ y, { x | re (L y x) ≤ c y } = s := by
329+ ⋂ y, { x | re (L y x) ≤ c y } = s ∧ (s.Nonempty → ∀ y, ∃ x, re (L y x) ≠ 0 ) := by
329330 have (y : (sᶜ : Set E)) := geometric_hahn_banach_closed_point (𝕜 := 𝕜) hs₁ hs₂ y.2
330331 choose L c hLc using this
331- refine ⟨L, c, ?_⟩
332- rw [iInter_setOf]
333- refine subset_antisymm (fun x hx => ?_) fun x hx l => ((hLc l).1 x hx).le
334- by_contra!
335- simp only [Subtype.forall, mem_compl_iff, mem_setOf_eq] at hx
336- linarith [(hLc ⟨x, this⟩).2 , hx x this]
332+ refine ⟨L, c, ?_, fun h y => ?_⟩
333+ · rw [iInter_setOf]
334+ refine subset_antisymm (fun x hx => ?_) fun x hx l => ((hLc l).1 x hx).le
335+ by_contra!
336+ simp only [Subtype.forall, mem_compl_iff, mem_setOf_eq] at hx
337+ linarith [(hLc ⟨x, this⟩).2 , hx x this]
338+ · by_contra! p
339+ have := lt_trans ((hLc y).1 h.some h.some_mem) (hLc y).2
340+ simp [p] at this
337341
338342/-- A closed convex set with a Lindelöf complement is the intersection of countably many
339343halfspaces. -/
340344theorem _root_.IsLindelof.iInter_countable_halfSpaces_const_eq (hs₁ : Convex ℝ s) (hs₂ : IsClosed s)
341345 (hs₃ : IsLindelof sᶜ) : ∃ (u : Set (sᶜ : Set E)) (L : u → StrongDual 𝕜 E) (c : u → ℝ),
342- u.Countable ∧ ⋂ y, { x | re (L y x) ≤ c y } = s := by
346+ u.Countable ∧ ⋂ y, { x | re (L y x) ≤ c y } = s ∧
347+ (s.Nonempty → ∀ y, ∃ x, re (L y x) ≠ 0 ) := by
343348 obtain ⟨L, c, hLc⟩ := iInter_halfSpaces_const_eq (𝕜 := 𝕜) hs₁ hs₂
344349 let t : (sᶜ : Set E) → Set E := fun y => { x | re (L y x) ≤ c y }
345350 have htc y : IsClosed (t y) := by
@@ -348,30 +353,35 @@ theorem _root_.IsLindelof.iInter_countable_halfSpaces_const_eq (hs₁ : Convex
348353 grind
349354 have hst : sᶜ ∩ ⋂ y, t y = ∅ := by grind
350355 obtain ⟨u, hu, hu'⟩ := hs₃.elim_countable_subfamily_closed t htc hst
351- refine ⟨u, fun y => L y, fun y => c y, hu, subset_antisymm (fun z hz => ?_) ?_⟩
356+ refine ⟨u, fun y => L y, fun y => c y, hu, subset_antisymm (fun z hz => ?_) ?_, fun h y =>
357+ hLc.2 h y.1 ⟩
352358 · by_contra!
353359 have : z ∈ (∅ : Set E) := by
354360 simp only [← hu', biInter_eq_iInter]
355361 exact ⟨this, fun i hi => hz i hi⟩
356362 grind
357- · rw (config := {occs := .pos [1 ]}) [← hLc]
363+ · rw (config := {occs := .pos [1 ]}) [← hLc. 1 ]
358364 have : u ⊆ (univ : Set (sᶜ : Set E)) := by grind
359365 have := biInter_subset_biInter_left (t := t) this
360366 simp only [t, biInter_eq_iInter] at this
361367 convert this
362368 simp
363369
364370/-- `IsLindelof.iInter_countable_halfSpaces_const_eq` for product spaces. -/
365- theorem _root_.IsLindelof.iInter_nat_halfSpaces_const_eq {F : Type *} [AddCommGroup F] [Module ℝ F]
366- [TopologicalSpace F] [Module 𝕜 F] [IsScalarTower ℝ 𝕜 F] [IsTopologicalAddGroup F]
371+ theorem _root_.IsLindelof.iInter_countable_halfSpaces_const_eq_prod {F : Type *} [AddCommGroup F]
372+ [Module ℝ F] [ TopologicalSpace F] [Module 𝕜 F] [IsScalarTower ℝ 𝕜 F] [IsTopologicalAddGroup F]
367373 [ContinuousSMul 𝕜 F] [LocallyConvexSpace ℝ F] {s : Set (E × F)} (hs₁ : Convex ℝ s)
368374 (hs₂ : IsClosed s) (hs₃ : IsLindelof sᶜ) :
369375 ∃ (u : Set (sᶜ : Set (E × F))) (L : u → StrongDual 𝕜 E) (T : u → StrongDual 𝕜 F) (c : u → ℝ),
370- u.Countable ∧ ⋂ y, { x | re (L y x.1 ) + re (T y x.2 ) ≤ c y } = s := by
376+ u.Countable ∧ ⋂ y, { x | re (L y x.1 ) + re (T y x.2 ) ≤ c y } = s
377+ ∧ (s.Nonempty → ∀ y, ∃ x z, re (L y x) + re (T y z) ≠ 0 ):= by
371378 obtain ⟨u, LT, c, eq1, eq2⟩ := hs₃.iInter_countable_halfSpaces_const_eq (𝕜 := 𝕜) hs₁ hs₂
372- refine ⟨u, fun i ↦ (LT i).comp (.inl 𝕜 E F), fun i ↦ (LT i).comp (.inr 𝕜 E F), c, eq1, ?_⟩
373- convert eq2
374- simp [← map_add]
379+ refine ⟨u, fun i ↦ (LT i).comp (.inl 𝕜 E F), fun i ↦ (LT i).comp (.inr 𝕜 E F), c, eq1, ?_,
380+ fun h y => ?_⟩
381+ · convert eq2.1
382+ simp [← map_add]
383+ · obtain ⟨w, hw⟩ := eq2.2 h y
384+ simpa [← map_add] using ⟨w.1 , w.2 , hw⟩
375385
376386end
377387
0 commit comments