Skip to content

Commit c6541c0

Browse files
committed
feat(RingTheory): IsAdicComplete I R ↔ CompleteSpace R ∧ T2Space R (leanprover-community#30124)
1 parent fa601af commit c6541c0

5 files changed

Lines changed: 40 additions & 0 deletions

File tree

Mathlib/Order/Filter/Bases/Basic.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,9 @@ protected theorem generate (B : FilterBasis α) : generate B.sets = B.filter :=
174174
· rw [le_generate_iff]
175175
apply mem_filter_of_mem
176176

177+
lemma ker_filter (F : FilterBasis α) : F.filter.ker = ⋂₀ F.sets := by
178+
aesop (add simp [ker, FilterBasis.filter])
179+
177180
end FilterBasis
178181

179182
namespace Filter

Mathlib/RingTheory/AdicCompletion/Basic.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class IsPrecomplete : Prop where
4444
∃ L : M, ∀ n, f n ≡ L [SMOD (I ^ n • ⊤ : Submodule R M)]
4545

4646
/-- A module `M` is `I`-adically complete if it is Hausdorff and precomplete. -/
47+
@[mk_iff]
4748
class IsAdicComplete : Prop extends IsHausdorff I M, IsPrecomplete I M
4849

4950
variable {I M}

Mathlib/RingTheory/AdicCompletion/Topology.lean

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,23 @@ import Mathlib.Topology.Algebra.Nonarchimedean.AdicTopology
1313
## Main results
1414
- `IsAdic.isPrecomplete_iff`:
1515
`IsPrecomplete I R` is equivalent to `CompleteSpace R` in the adic topology.
16+
- `IsAdic.isAdicComplete_iff`:
17+
`IsAdicComplete I R` is equivalent to `CompleteSpace R` and `T2Space R` in the adic topology.
1618
1719
-/
1820

21+
section TopologicalSpace
22+
23+
variable {R : Type*} [CommRing R] [TopologicalSpace R] {I : Ideal R} (hI : IsAdic I)
24+
25+
include hI in
26+
/-- `IsHausdorff I R` is equivalent to being Hausdorff in the adic topology. -/
27+
protected lemma IsAdic.isHausdorff_iff : IsHausdorff I R ↔ T2Space R := by
28+
rw [I.ringFilterBasis.t2Space_iff_sInter_subset hI.symm, isHausdorff_iff]
29+
simp [SModEq.zero, Ideal.ringFilterBasis, RingSubgroupsBasis.toRingFilterBasis]
30+
31+
end TopologicalSpace
32+
1933
section UniformSpace
2034

2135
open Topology Uniformity
@@ -53,4 +67,9 @@ protected lemma IsAdic.isPrecomplete_iff : IsPrecomplete I R ↔ CompleteSpace R
5367
simpa [sub_eq_neg_add] using (hI.hasBasis_nhds L).tendsto_right_iff.mp hL i
5468
simpa using Ideal.add_mem _ (hN (max i N) le_sup_right) (hf (le_max_left i N))
5569

70+
include hI in
71+
/-- `IsAdicComplete I R` is equivalent to being complete and hausdorff in the adic topology. -/
72+
protected lemma IsAdic.isAdicComplete_iff : IsAdicComplete I R ↔ CompleteSpace R ∧ T2Space R := by
73+
rw [isAdicComplete_iff, hI.isHausdorff_iff, hI.isPrecomplete_iff, and_comm]
74+
5675
end UniformSpace

Mathlib/Topology/Algebra/FilterBasis.lean

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,20 @@ instance (priority := 100) isTopologicalGroup (B : GroupFilterBasis G) :
206206
intro U U_in
207207
exact conj x₀ U_in
208208

209+
@[to_additive]
210+
lemma t2Space_iff [t : TopologicalSpace G] (F : GroupFilterBasis G)
211+
(hG : F.topology = t) : T2Space G ↔ ⋂₀ F.sets = {1} := by
212+
have : IsTopologicalGroup G := hG ▸ F.isTopologicalGroup
213+
rw [IsTopologicalGroup.t2Space_iff_one_closed, ← closure_eq_iff_isClosed,
214+
R0Space.closure_singleton, ← hG, F.nhds_one_eq, FilterBasis.ker_filter]
215+
216+
@[to_additive]
217+
lemma t2Space_iff_sInter_subset [t : TopologicalSpace G] (F : GroupFilterBasis G)
218+
(hG : F.topology = t) : T2Space G ↔ ⋂₀ F.sets ⊆ {1} := by
219+
rw [F.t2Space_iff hG, subset_antisymm_iff, and_iff_left_iff_imp]
220+
rintro -
221+
simpa using fun _ ↦ F.one
222+
209223
end GroupFilterBasis
210224

211225
/-- A `RingFilterBasis` on a ring is a `FilterBasis` satisfying some additional axioms.

Mathlib/Topology/Separation/Basic.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,9 @@ instance {ι : Type*} {X : ι → Type*} [∀ i, TopologicalSpace (X i)] [∀ i,
293293
R0Space (∀ i, X i) where
294294
specializes_symmetric _ _ h := specializes_pi.2 fun i ↦ (specializes_pi.1 h i).symm
295295

296+
lemma R0Space.closure_singleton (x : X) : closure {x} = (𝓝 x).ker := by
297+
ext; simp [ker_nhds_eq_specializes, ← specializes_iff_mem_closure, specializes_comm]
298+
296299
/-- In an R₀ space, the closure of a singleton is a compact set. -/
297300
theorem isCompact_closure_singleton : IsCompact (closure {x}) := by
298301
refine isCompact_of_finite_subcover fun U hUo hxU ↦ ?_

0 commit comments

Comments
 (0)