Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 617b07e

Browse files
feat(uniform_space/separation): add separated_set (#3130)
Also add documentation and simplify the proof of separated => t2 and add the converse. Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
1 parent 985cce7 commit 617b07e

14 files changed

+304
-87
lines changed

src/topology/algebra/group_completion.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ instance is_add_group_hom_coe : is_add_group_hom (coe : α → completion α) :=
6565

6666
variables {β : Type v} [uniform_space β] [add_group β] [uniform_add_group β]
6767

68-
lemma is_add_group_hom_extension [complete_space β] [separated β]
68+
lemma is_add_group_hom_extension [complete_space β] [separated_space β]
6969
{f : α → β} [is_add_group_hom f] (hf : continuous f) : is_add_group_hom (completion.extension f) :=
7070
have hf : uniform_continuous f, from uniform_continuous_of_continuous hf,
7171
{ map_add := assume a b, completion.induction_on₂ a b

src/topology/algebra/uniform_group.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ variables [topological_space α] [add_comm_group α] [topological_add_group α]
339339
variables [topological_space β] [add_comm_group β] [topological_add_group β]
340340
variables [topological_space γ] [add_comm_group γ] [topological_add_group γ]
341341
variables [topological_space δ] [add_comm_group δ] [topological_add_group δ]
342-
variables [uniform_space G] [add_comm_group G] [uniform_add_group G] [separated G] [complete_space G]
342+
variables [uniform_space G] [add_comm_group G] [uniform_add_group G] [separated_space G] [complete_space G]
343343
variables {e : β → α} [is_add_group_hom e] (de : dense_inducing e)
344344
variables {f : δ → γ} [is_add_group_hom f] (df : dense_inducing f)
345345
variables {φ : β × δ → G} (hφ : continuous φ) [bilin : is_Z_bilin φ]

src/topology/algebra/uniform_ring.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ variables {β : Type u} [uniform_space β] [ring β] [uniform_add_group β] [top
9797
(f : α →+* β) (hf : continuous f)
9898

9999
/-- The completion extension as a ring morphism. -/
100-
def extension_hom [complete_space β] [separated β] :
100+
def extension_hom [complete_space β] [separated_space β] :
101101
completion α →+* β :=
102102
have hf : uniform_continuous f, from uniform_continuous_of_continuous hf,
103103
{ to_fun := completion.extension f,

src/topology/category/UniformSpace.lean

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ structure CpltSepUniformSpace :=
5858
(α : Type u)
5959
[is_uniform_space : uniform_space α]
6060
[is_complete_space : complete_space α]
61-
[is_separated : separated α]
61+
[is_separated : separated_space α]
6262

6363
namespace CpltSepUniformSpace
6464

@@ -71,10 +71,10 @@ def to_UniformSpace (X : CpltSepUniformSpace) : UniformSpace :=
7171
UniformSpace.of X
7272

7373
instance (X : CpltSepUniformSpace) : complete_space ((to_UniformSpace X).α) := CpltSepUniformSpace.is_complete_space X
74-
instance (X : CpltSepUniformSpace) : separated ((to_UniformSpace X).α) := CpltSepUniformSpace.is_separated X
74+
instance (X : CpltSepUniformSpace) : separated_space ((to_UniformSpace X).α) := CpltSepUniformSpace.is_separated X
7575

7676
/-- Construct a bundled `UniformSpace` from the underlying type and the appropriate typeclasses. -/
77-
def of (X : Type u) [uniform_space X] [complete_space X] [separated X] : CpltSepUniformSpace := ⟨X⟩
77+
def of (X : Type u) [uniform_space X] [complete_space X] [separated_space X] : CpltSepUniformSpace := ⟨X⟩
7878

7979
/-- The category instance on `CpltSepUniformSpace`. -/
8080
instance category : category CpltSepUniformSpace :=
@@ -136,7 +136,7 @@ adjunction.mk_of_hom_equiv
136136
right_inv := λ f,
137137
begin
138138
apply subtype.eq, funext x, cases f,
139-
exact @completion.extension_coe _ _ _ _ _ (CpltSepUniformSpace.separated _) f_property _
139+
exact @completion.extension_coe _ _ _ _ _ (CpltSepUniformSpace.separated_space _) f_property _
140140
end },
141141
hom_equiv_naturality_left_symm' := λ X X' Y f g,
142142
begin

src/topology/metric_space/basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ end metric
651651
open metric
652652

653653
@[priority 100] -- see Note [lower instance priority]
654-
instance metric_space.to_separated : separated α :=
654+
instance metric_space.to_separated : separated_space α :=
655655
separated_def.2 $ λ x y h, eq_of_forall_dist_le $
656656
λ ε ε0, le_of_lt (h _ (dist_mem_uniformity ε0))
657657

src/topology/metric_space/completion.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ protected lemma completion.eq_of_dist_eq_zero (x y : completion α) (h : dist x
142142
begin
143143
/- This follows from the separation of `completion α` and from the description of
144144
entourages in terms of the distance. -/
145-
have : separated (completion α) := by apply_instance,
145+
have : separated_space (completion α) := by apply_instance,
146146
refine separated_def.1 this x y (λs hs, _),
147147
rcases (completion.mem_uniformity_dist s).1 hs with ⟨ε, εpos, hε⟩,
148148
rw ← h at εpos,

src/topology/metric_space/emetric_space.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ open emetric
375375

376376
/-- An emetric space is separated -/
377377
@[priority 100] -- see Note [lower instance priority]
378-
instance to_separated : separated α :=
378+
instance to_separated : separated_space α :=
379379
separated_def.2 $ λ x y h, eq_of_forall_edist_le $
380380
λ ε ε0, le_of_lt (h _ (edist_mem_uniformity ε0))
381381

src/topology/separation.lean

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,40 @@ t2_iff_nhds.trans
122122
let ⟨f, hf, uf⟩ := exists_ultrafilter xy in
123123
h f uf (le_trans hf inf_le_left) (le_trans hf inf_le_right)⟩
124124

125+
lemma is_closed_diagonal [t2_space α] : is_closed (diagonal α) :=
126+
is_closed_iff_nhds.mpr $ assume ⟨a₁, a₂⟩ h, eq_of_nhds_ne_bot $ assume : 𝓝 a₁ ⊓ 𝓝 a₂ = ⊥, h $
127+
let ⟨t₁, ht₁, t₂, ht₂, (h' : t₁ ∩ t₂ ⊆ ∅)⟩ :=
128+
by rw [←empty_in_sets_eq_bot, mem_inf_sets] at this; exact this in
129+
begin
130+
change t₁ ∈ 𝓝 a₁ at ht₁,
131+
change t₂ ∈ 𝓝 a₂ at ht₂,
132+
rw [nhds_prod_eq, ←empty_in_sets_eq_bot],
133+
apply filter.sets_of_superset,
134+
apply inter_mem_inf_sets (prod_mem_prod ht₁ ht₂) (mem_principal_sets.mpr (subset.refl _)),
135+
exact assume ⟨x₁, x₂⟩ ⟨⟨hx₁, hx₂⟩, (heq : x₁ = x₂)⟩,
136+
show false, from @h' x₁ ⟨hx₁, heq.symm ▸ hx₂⟩
137+
end
138+
139+
lemma t2_iff_is_closed_diagonal : t2_space α ↔ is_closed (diagonal α) :=
140+
begin
141+
split,
142+
{ introI h,
143+
exact is_closed_diagonal },
144+
{ intro h,
145+
constructor,
146+
intros x y hxy,
147+
have : (x, y) ∈ -diagonal α, by rwa [mem_compl_iff],
148+
obtain ⟨t, t_sub, t_op, xyt⟩ : ∃ t ⊆ -diagonal α, is_open t ∧ (x, y) ∈ t :=
149+
is_open_iff_forall_mem_open.mp h _ this,
150+
rcases is_open_prod_iff.mp t_op x y xyt with ⟨U, V, U_op, V_op, xU, yV, H⟩,
151+
use [U, V, U_op, V_op, xU, yV],
152+
have := subset.trans H t_sub,
153+
rw eq_empty_iff_forall_not_mem,
154+
rintros z ⟨zU, zV⟩,
155+
have : ¬ (z, z) ∈ diagonal α := this (mk_mem_prod zU zV),
156+
exact this rfl },
157+
end
158+
125159
@[simp] lemma nhds_eq_nhds_iff {a b : α} [t2_space α] : 𝓝 a = 𝓝 b ↔ a = b :=
126160
⟨assume h, eq_of_nhds_ne_bot $ by rw [h, inf_idem]; exact nhds_ne_bot, assume h, h ▸ rfl⟩
127161

@@ -202,20 +236,6 @@ instance Pi.t2_space {α : Type*} {β : α → Type v} [t₂ : Πa, topological_
202236
let ⟨i, hi⟩ := not_forall.mp (mt funext h) in
203237
separated_by_f (λz, z i) (infi_le _ i) hi⟩
204238

205-
lemma is_closed_diagonal [t2_space α] : is_closed {p:α×α | p.1 = p.2} :=
206-
is_closed_iff_nhds.mpr $ assume ⟨a₁, a₂⟩ h, eq_of_nhds_ne_bot $ assume : 𝓝 a₁ ⊓ 𝓝 a₂ = ⊥, h $
207-
let ⟨t₁, ht₁, t₂, ht₂, (h' : t₁ ∩ t₂ ⊆ ∅)⟩ :=
208-
by rw [←empty_in_sets_eq_bot, mem_inf_sets] at this; exact this in
209-
begin
210-
change t₁ ∈ 𝓝 a₁ at ht₁,
211-
change t₂ ∈ 𝓝 a₂ at ht₂,
212-
rw [nhds_prod_eq, ←empty_in_sets_eq_bot],
213-
apply filter.sets_of_superset,
214-
apply inter_mem_inf_sets (prod_mem_prod ht₁ ht₂) (mem_principal_sets.mpr (subset.refl _)),
215-
exact assume ⟨x₁, x₂⟩ ⟨⟨hx₁, hx₂⟩, (heq : x₁ = x₂)⟩,
216-
show false, from @h' x₁ ⟨hx₁, heq.symm ▸ hx₂⟩
217-
end
218-
219239
variables [topological_space β]
220240

221241
lemma is_closed_eq [t2_space α] {f g : β → α}

src/topology/uniform_space/abstract_completion.lean

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ structure abstract_completion (α : Type u) [uniform_space α] :=
5555
(coe : α → space)
5656
(uniform_struct : uniform_space space)
5757
(complete : complete_space space)
58-
(separation : separated space)
58+
(separation : separated_space space)
5959
(uniform_inducing : uniform_inducing coe)
6060
(dense : dense_range coe)
6161

@@ -110,7 +110,7 @@ begin
110110
exact pkg.dense_inducing.extend_eq_of_cont hf.continuous a
111111
end
112112

113-
variables [complete_space β] [separated β]
113+
variables [complete_space β] [separated_space β]
114114

115115
lemma uniform_continuous_extend : uniform_continuous (pkg.extend f) :=
116116
begin
@@ -178,7 +178,7 @@ pkg.map_unique pkg uniform_continuous_id (assume a, rfl)
178178

179179
variables {γ : Type*} [uniform_space γ]
180180

181-
lemma extend_map [complete_space γ] [separated γ] {f : β → γ} {g : α → β}
181+
lemma extend_map [complete_space γ] [separated_space γ] {f : β → γ} {g : α → β}
182182
(hf : uniform_continuous f) (hg : uniform_continuous g) :
183183
pkg'.extend f ∘ map g = pkg.extend (f ∘ g) :=
184184
pkg.funext (pkg'.continuous_extend.comp (pkg.continuous_map pkg' _)) pkg.continuous_extend $ λ a,
@@ -263,7 +263,7 @@ open function
263263
protected def extend₂ (f : α → β → γ) : hatα → hatβ → γ :=
264264
curry $ (pkg.prod pkg').extend (uncurry f)
265265

266-
variables [separated γ] {f : α → β → γ}
266+
variables [separated_space γ] {f : α → β → γ}
267267

268268
lemma extension₂_coe_coe (hf : uniform_continuous $ uncurry f) (a : α) (b : β) :
269269
pkg.extend₂ pkg' f (ι a) (ι' b) = f a b :=

src/topology/uniform_space/complete_separated.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ open_locale topological_space
1717
variables {α : Type*}
1818

1919
/-In a separated space, a complete set is closed -/
20-
lemma is_closed_of_is_complete [uniform_space α] [separated α] {s : set α} (h : is_complete s) :
20+
lemma is_closed_of_is_complete [uniform_space α] [separated_space α] {s : set α} (h : is_complete s) :
2121
is_closed s :=
2222
is_closed_iff_nhds.2 $ λ a ha, begin
2323
let f := 𝓝 a ⊓ principal s,
@@ -29,7 +29,7 @@ end
2929
namespace dense_inducing
3030
open filter
3131
variables [topological_space α] {β : Type*} [topological_space β]
32-
variables {γ : Type*} [uniform_space γ] [complete_space γ] [separated γ]
32+
variables {γ : Type*} [uniform_space γ] [complete_space γ] [separated_space γ]
3333

3434
lemma continuous_extend_of_cauchy {e : α → β} {f : α → γ}
3535
(de : dense_inducing e) (h : ∀ b : β, cauchy (map f (comap e $ 𝓝 b))) :

0 commit comments

Comments
 (0)