Skip to content

Commit 6cbf61f

Browse files
committed
update
1 parent 57cb125 commit 6cbf61f

2 files changed

Lines changed: 30 additions & 30 deletions

File tree

Mathlib/Analysis/LocallyConvex/Separation.lean

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ theorem iInter_halfSpaces_eq (hs₁ : Convex ℝ s) (hs₂ : IsClosed s) :
322322

323323
/-- A variant of `iInter_halfSpaces_eq`. If `s` is nonempty, then all the halfspaces are
324324
nontrivial. -/
325-
theorem iInter_halfSpaces_const_eq (hs₁ : Convex ℝ s) (hs₂ : IsClosed s) :
325+
theorem iInter_halfSpaces_eq' (hs₁ : Convex ℝ s) (hs₂ : IsClosed s) :
326326
∃ (L : (sᶜ : Set E) → StrongDual 𝕜 E) (c : (sᶜ : Set E) → ℝ),
327327
⋂ y, { x | re (L y x) ≤ c y } = s ∧ (s.Nonempty → ∀ y, ∃ x, re (L y x) ≠ 0) := by
328328
have (y : (sᶜ : Set E)) := geometric_hahn_banach_closed_point (𝕜 := 𝕜) hs₁ hs₂ y.2
@@ -339,18 +339,13 @@ theorem iInter_halfSpaces_const_eq (hs₁ : Convex ℝ s) (hs₂ : IsClosed s) :
339339

340340
/-- A closed convex set with a Lindelöf complement is an intersection of countably many
341341
halfspaces. -/
342-
theorem _root_.IsLindelof.iInter_countable_halfSpaces_const_eq (hs₁ : Convex ℝ s) (hs₂ : IsClosed s)
343-
(hs₃ : IsLindelof sᶜ) : ∃ (u : Set (sᶜ : Set E)) (L : u → StrongDual 𝕜 E) (c : u → ℝ),
344-
u.Countable ∧ ⋂ y, { x | re (L y x) ≤ c y } = s ∧
345-
(s.Nonempty → ∀ y, ∃ x, re (L y x) ≠ 0) := by
346-
obtain ⟨L, c, hLc⟩ := iInter_halfSpaces_const_eq (𝕜 := 𝕜) hs₁ hs₂
342+
theorem iInter_countable_halfSpaces_eq [HereditarilyLindelofSpace E] (hs₁ : Convex ℝ s)
343+
(hs₂ : IsClosed s) : ∃ L : ℕ → StrongDual 𝕜 E, ∃ c : ℕ → ℝ,
344+
⋂ n, { x | re (L n x) ≤ c n } = s ∧ (s.Nonempty → ∀ y, ∃ x, re (L y x) ≠ 0) := by
345+
obtain ⟨L, c, hLc⟩ := iInter_halfSpaces_eq' (𝕜 := 𝕜) hs₁ hs₂
347346
let t : (sᶜ : Set E) → Set E := fun y => { x | re (L y x) ≤ c y }
348-
have htc y : IsClosed (t y) := by
349-
suffices t y = re ∘ (L y) ⁻¹' Iic (c y) from by
350-
simpa [this] using IsClosed.preimage (by fun_prop) isClosed_Iic
351-
grind
352-
have hst : sᶜ ∩ ⋂ y, t y = ∅ := by grind
353-
obtain ⟨u, hu, hu'⟩ := hs₃.elim_countable_subfamily_closed t htc hst
347+
have htc y : IsClosed (t y) := isClosed_le (continuous_re.comp (L y).continuous) continuous_const
348+
obtain ⟨u, hu, hu'⟩ := eq_closed_inter_nat t htc
354349
refine ⟨u, fun y => L y, fun y => c y, hu, subset_antisymm (fun z hz => ?_) ?_, fun h y =>
355350
hLc.2 h y.1
356351
· by_contra!
@@ -365,22 +360,6 @@ theorem _root_.IsLindelof.iInter_countable_halfSpaces_const_eq (hs₁ : Convex
365360
convert this
366361
simp
367362

368-
/-- `IsLindelof.iInter_countable_halfSpaces_const_eq` for product spaces. -/
369-
theorem _root_.IsLindelof.iInter_countable_halfSpaces_const_eq_prod {F : Type*} [AddCommGroup F]
370-
[Module ℝ F] [TopologicalSpace F] [Module 𝕜 F] [IsScalarTower ℝ 𝕜 F] [IsTopologicalAddGroup F]
371-
[ContinuousSMul 𝕜 F] [LocallyConvexSpace ℝ F] {s : Set (E × F)} (hs₁ : Convex ℝ s)
372-
(hs₂ : IsClosed s) (hs₃ : IsLindelof sᶜ) :
373-
∃ (u : Set (sᶜ : Set (E × F))) (L : u → StrongDual 𝕜 E) (T : u → StrongDual 𝕜 F) (c : u → ℝ),
374-
u.Countable ∧ ⋂ y, { x | re (L y x.1) + re (T y x.2) ≤ c y } = s
375-
∧ (s.Nonempty → ∀ y, ∃ x z, re (L y x) + re (T y z) ≠ 0):= by
376-
obtain ⟨u, LT, c, eq1, eq2⟩ := hs₃.iInter_countable_halfSpaces_const_eq (𝕜 := 𝕜) hs₁ hs₂
377-
refine ⟨u, fun i ↦ (LT i).comp (.inl 𝕜 E F), fun i ↦ (LT i).comp (.inr 𝕜 E F), c, eq1, ?_,
378-
fun h y => ?_⟩
379-
· convert eq2.1
380-
simp [← map_add]
381-
· obtain ⟨w, hw⟩ := eq2.2 h y
382-
simpa [← map_add] using ⟨w.1, w.2, hw⟩
383-
384363
end
385364

386365
end RCLike

Mathlib/Topology/Compactness/Lindelof.lean

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -723,13 +723,34 @@ instance (priority := 100) SecondCountableTopology.toHereditarilyLindelof
723723
use t, htc
724724
exact subset_of_subset_of_eq hcover (id htu.symm)
725725

726-
lemma eq_open_union_countable [HereditarilyLindelofSpace X] {ι : Type u} (U : ι → Set X)
726+
lemma eq_open_union_countable [HereditarilyLindelofSpace X] {ι : Type*} (U : ι → Set X)
727727
(h : ∀ i, IsOpen (U i)) : ∃ t : Set ι, t.Countable ∧ ⋃ i∈t, U i = ⋃ i, U i := by
728728
have : IsLindelof (⋃ i, U i) := HereditarilyLindelof_LindelofSets (⋃ i, U i)
729-
rcases isLindelof_iff_countable_subcover.mp this U h (Eq.subset rfl) with ⟨t, ⟨htc, htu⟩⟩
729+
rcases IsLindelof.elim_countable_subcover this U h (Eq.subset rfl) with ⟨t, ⟨htc, htu⟩⟩
730730
use t, htc
731731
apply eq_of_subset_of_subset (iUnion₂_subset_iUnion (fun i ↦ i ∈ t) fun i ↦ U i) htu
732732

733+
lemma eq_open_union_nat [HereditarilyLindelofSpace X] {ι : Type*} [Nonempty ι] (U : ι → Set X)
734+
(h : ∀ i, IsOpen (U i)) : ∃ k : ℕ → ι, ⋃ n, U (k n) = ⋃ i, U i := by
735+
obtain ⟨t, htc, htu⟩ := eq_open_union_countable U h
736+
rcases eq_empty_or_nonempty t with rfl | t_ne
737+
· simp_rw [mem_empty_iff_false, iUnion_false, iUnion_empty, eq_comm (a := ∅), iUnion_eq_empty]
738+
at htu
739+
simp [htu]
740+
· obtain ⟨k, rfl⟩ := htc.exists_eq_range t_ne
741+
use k
742+
rwa [biUnion_range] at htu
743+
744+
lemma eq_closed_inter_countable [HereditarilyLindelofSpace X] {ι : Type*} (C : ι → Set X)
745+
(h : ∀ i, IsClosed (C i)) : ∃ t : Set ι, t.Countable ∧ ⋂ i∈t, C i = ⋂ i, C i := by
746+
conv in _ = _ => rw [← compl_inj_iff]; simp
747+
exact eq_open_union_countable (fun i ↦ (C i)ᶜ) (fun i ↦ (h i).isOpen_compl)
748+
749+
lemma eq_closed_inter_nat [HereditarilyLindelofSpace X] {ι : Type*} [Nonempty ι] (C : ι → Set X)
750+
(h : ∀ i, IsClosed (C i)) : ∃ k : ℕ → ι, ⋂ n, C (k n) = ⋂ i, C i := by
751+
conv in _ = _ => rw [← compl_inj_iff]; simp
752+
exact eq_open_union_nat (fun i ↦ (C i)ᶜ) (fun i ↦ (h i).isOpen_compl)
753+
733754
instance HereditarilyLindelof.lindelofSpace_subtype [HereditarilyLindelofSpace X] (p : X → Prop) :
734755
LindelofSpace {x // p x} := by
735756
apply isLindelof_iff_LindelofSpace.mp

0 commit comments

Comments
 (0)