Skip to content

Commit 23f4d4a

Browse files
committed
feat(Mathlib/Topology/Bases): subbasis closed under intersection is a basis (#12221)
We show that if a sub-basis is closed under finite intersections, then it is a basis for a topology. As a corollary, if a sub-basis is closed under intersections, then inserting the universal set gives a basis for the topology. An example application of this result is given in #12234 Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com>
1 parent 863d11f commit 23f4d4a

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

Mathlib/Data/Set/Constructions.lean

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,13 @@ theorem finiteInterClosure_insert {A : Set α} (cond : FiniteInter S) (P)
8282
constructor <;> simp (config := { contextual := true })⟩
8383
#align has_finite_inter.finite_inter_closure_insert FiniteInter.finiteInterClosure_insert
8484

85+
open Set
86+
87+
theorem mk₂ (h: ∀ ⦃s⦄, s ∈ S → ∀ ⦃t⦄, t ∈ S → s ∩ t ∈ S) :
88+
FiniteInter (insert (univ : Set α) S) where
89+
univ_mem := Set.mem_insert Set.univ S
90+
inter_mem s hs t ht:= by
91+
obtain ⟨(rfl | hs), (rfl | ht)⟩ := And.intro hs ht
92+
all_goals aesop
93+
8594
end FiniteInter

Mathlib/Topology/Bases.lean

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Johannes Hölzl, Mario Carneiro
55
-/
6+
import Mathlib.Data.Set.Constructions
67
import Mathlib.Topology.Constructions
78
import Mathlib.Topology.ContinuousOn
89

@@ -119,6 +120,18 @@ theorem isTopologicalBasis_of_subbasis {s : Set (Set α)} (hs : t = generateFrom
119120
exact ⟨{t}, ⟨finite_singleton t, singleton_subset_iff.2 ht⟩, rfl⟩
120121
#align topological_space.is_topological_basis_of_subbasis TopologicalSpace.isTopologicalBasis_of_subbasis
121122

123+
theorem isTopologicalBasis_of_subbasis_of_finiteInter {s : Set (Set α)} (hsg : t = generateFrom s)
124+
(hsi : FiniteInter s) : IsTopologicalBasis s := by
125+
convert isTopologicalBasis_of_subbasis hsg
126+
refine le_antisymm (fun t ht ↦ ⟨{t}, by simpa using ht⟩) ?_
127+
rintro _ ⟨g, ⟨hg, hgs⟩, rfl⟩
128+
lift g to Finset (Set α) using hg
129+
exact hsi.finiteInter_mem g hgs
130+
131+
theorem isTopologicalBasis_of_subbasis_of_inter {r : Set (Set α)} (hsg : t = generateFrom r)
132+
(hsi : ∀ ⦃s⦄, s ∈ r → ∀ ⦃t⦄, t ∈ r → s ∩ t ∈ r) : IsTopologicalBasis (insert univ r) :=
133+
isTopologicalBasis_of_subbasis_of_finiteInter (by simpa using hsg) (FiniteInter.mk₂ hsi)
134+
122135
theorem IsTopologicalBasis.of_hasBasis_nhds {s : Set (Set α)}
123136
(h_nhds : ∀ a, (𝓝 a).HasBasis (fun t ↦ t ∈ s ∧ a ∈ t) id) : IsTopologicalBasis s where
124137
exists_subset_inter t₁ ht₁ t₂ ht₂ x hx := by

Mathlib/Topology/Order.lean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,18 @@ theorem le_induced_generateFrom {α β} [t : TopologicalSpace α] {b : Set (Set
579579
exact h
580580
#align le_induced_generate_from le_induced_generateFrom
581581

582+
lemma generateFrom_insert_of_generateOpen {α : Type*} {s : Set (Set α)} {t : Set α}
583+
(ht : GenerateOpen s t) : generateFrom (insert t s) = generateFrom s := by
584+
refine le_antisymm (generateFrom_anti <| subset_insert t s) (le_generateFrom ?_)
585+
rintro t (rfl | h)
586+
· exact ht
587+
· exact isOpen_generateFrom_of_mem h
588+
589+
@[simp]
590+
lemma generateFrom_insert_univ {α : Type*} {s : Set (Set α)} :
591+
generateFrom (insert univ s) = generateFrom s :=
592+
generateFrom_insert_of_generateOpen .univ
593+
582594
/-- This construction is left adjoint to the operation sending a topology on `α`
583595
to its neighborhood filter at a fixed point `a : α`. -/
584596
def nhdsAdjoint (a : α) (f : Filter α) : TopologicalSpace α where

0 commit comments

Comments
 (0)