Skip to content

Commit 3037e76

Browse files
committed
Update Separation.lean
1 parent 5aecc61 commit 3037e76

1 file changed

Lines changed: 27 additions & 17 deletions

File tree

Mathlib/Analysis/LocallyConvex/Separation.lean

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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. -/
326327
theorem 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
339343
halfspaces. -/
340344
theorem _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

376386
end
377387

0 commit comments

Comments
 (0)