Skip to content

Commit 5e63835

Browse files
committed
feat(Topology/Sets): separability of (Nonempty)Compacts (leanprover-community#40109)
1 parent 5ad5d52 commit 5e63835

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

Mathlib/Topology/Sets/VietorisTopology.lean

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,24 @@ instance [LocallyCompactSpace α] : LocallyCompactSpace (Compacts α) := by
659659
vietoris.specializes_of_subset_closure ?_ ?_⟩ <;>
660660
grind [coe_mk, subset_closure]
661661

662+
instance [SeparableSpace α] : SeparableSpace (Compacts α) := by
663+
obtain ⟨s, hs₁, hs₂⟩ := exists_countable_dense α
664+
refine ⟨_, (countable_setOf_finite_subset hs₁).preimage SetLike.coe_injective, ?_⟩
665+
simp [dense_iff_closure_eq, closure_finite_subsets, hs₂.closure_eq]
666+
667+
@[simp]
668+
theorem separableSpace_iff : SeparableSpace (Compacts α) ↔ SeparableSpace α := by
669+
refine ⟨fun _ => ?_, fun _ => inferInstance⟩
670+
cases isEmpty_or_nonempty α
671+
· infer_instance
672+
obtain ⟨s, hs₁, hs₂⟩ := exists_countable_dense (Compacts α)
673+
refine ⟨(fun K => Classical.epsilon (· ∈ K)) '' s, hs₁.image _,
674+
dense_iff_inter_open.mpr fun U hU ⟨x, hx⟩ => ?_⟩
675+
obtain ⟨K, ⟨hK₁, hK₂⟩, hK₃⟩ := hs₂.inter_open_nonempty _
676+
((isOpen_subsets_of_isOpen hU).inter (isOpen_inter_nonempty_of_isOpen hU)) ⟨{x}, by simpa⟩
677+
refine ⟨Classical.epsilon (· ∈ K), ?_, mem_image_of_mem _ hK₃⟩
678+
exact hK₁ <| Classical.epsilon_spec (hK₂.mono inter_subset_left)
679+
662680
end Compacts
663681

664682
namespace NonemptyCompacts
@@ -900,6 +918,16 @@ theorem _root_.TopologicalSpace.Compacts.locallyCompactSpace_iff :
900918
fun _ => NonemptyCompacts.locallyCompactSpace_iff.mp
901919
isOpenEmbedding_toCompacts.locallyCompactSpace, fun _ => inferInstance⟩
902920

921+
instance [SeparableSpace α] : SeparableSpace (NonemptyCompacts α) :=
922+
isOpenEmbedding_toCompacts.separableSpace
923+
924+
@[simp]
925+
theorem separableSpace_iff : SeparableSpace (NonemptyCompacts α) ↔ SeparableSpace α := by
926+
refine ⟨fun _ => ?_, fun _ => inferInstance⟩
927+
rw [← Compacts.separableSpace_iff, ← isSeparable_univ_iff, ← union_compl_self {⊥},
928+
← range_toCompacts]
929+
exact (finite_singleton _).isSeparable.union (isSeparable_range continuous_toCompacts)
930+
903931
end NonemptyCompacts
904932

905933
end TopologicalSpace

0 commit comments

Comments
 (0)