@@ -142,7 +142,7 @@ localized "infix (name := uniformity.comp_rel) ` ○ `:55 := comp_rel" in unifor
142
142
@[simp] theorem swap_id_rel : prod.swap '' id_rel = @id_rel α :=
143
143
set.ext $ assume ⟨a, b⟩, by simp [image_swap_eq_preimage_swap]; exact eq_comm
144
144
145
- theorem monotone_comp_rel [preorder β] {f g : β → set (α×α)}
145
+ theorem monotone.comp_rel [preorder β] {f g : β → set (α×α)}
146
146
(hf : monotone f) (hg : monotone g) : monotone (λx, (f x) ○ (g x)) :=
147
147
assume a b h p ⟨z, h₁, h₂⟩, ⟨z, hf h h₁, hg h h₂⟩
148
148
@@ -218,12 +218,7 @@ def uniform_space.core.mk' {α : Type u} (U : filter (α × α))
218
218
(symm : ∀ r ∈ U, prod.swap ⁻¹' r ∈ U)
219
219
(comp : ∀ r ∈ U, ∃ t ∈ U, t ○ t ⊆ r) : uniform_space.core α :=
220
220
⟨U, λ r ru, id_rel_subset.2 (refl _ ru), symm,
221
- begin
222
- intros r ru,
223
- rw [mem_lift'_sets],
224
- exact comp _ ru,
225
- apply monotone_comp_rel; exact monotone_id,
226
- end ⟩
221
+ λ r ru, let ⟨s, hs, hsr⟩ := comp _ ru in mem_of_superset (mem_lift' hs) hsr⟩
227
222
228
223
/-- Defining an `uniform_space.core` from a filter basis satisfying some uniformity-like axioms. -/
229
224
def uniform_space.core.mk_of_basis {α : Type u} (B : filter_basis (α × α))
@@ -233,7 +228,7 @@ def uniform_space.core.mk_of_basis {α : Type u} (B : filter_basis (α × α))
233
228
{ uniformity := B.filter,
234
229
refl := B.has_basis.ge_iff.mpr (λ r ru, id_rel_subset.2 $ refl _ ru),
235
230
symm := (B.has_basis.tendsto_iff B.has_basis).mpr symm,
236
- comp := (has_basis.le_basis_iff (B.has_basis.lift' (monotone_comp_rel monotone_id monotone_id))
231
+ comp := (has_basis.le_basis_iff (B.has_basis.lift' (monotone_id.comp_rel monotone_id))
237
232
B.has_basis).mpr comp }
238
233
239
234
/-- A uniform space generates a topological space -/
@@ -248,7 +243,7 @@ def uniform_space.core.to_topological_space {α : Type u} (u : uniform_space.cor
248
243
249
244
lemma uniform_space.core_eq :
250
245
∀{u₁ u₂ : uniform_space.core α}, u₁.uniformity = u₂.uniformity → u₁ = u₂
251
- | ⟨u₁, _, _, _⟩ ⟨u₂, _, _, _⟩ h := by { congr, exact h }
246
+ | ⟨u₁, _, _, _⟩ ⟨u₂, _, _, _⟩ rfl := by congr
252
247
253
248
-- the topological structure is embedded in the uniform structure
254
249
-- to avoid instance diamond issues. See Note [forgetful inheritance].
@@ -329,19 +324,15 @@ lemma refl_le_uniformity : 𝓟 id_rel ≤ 𝓤 α :=
329
324
(@uniform_space.to_core α _).refl
330
325
331
326
instance uniformity.ne_bot [nonempty α] : ne_bot (𝓤 α) :=
332
- begin
333
- inhabit α,
334
- refine (principal_ne_bot_iff.2 _).mono refl_le_uniformity,
335
- exact ⟨(default, default), rfl⟩
336
- end
327
+ diagonal_nonempty.principal_ne_bot.mono refl_le_uniformity
337
328
338
329
lemma refl_mem_uniformity {x : α} {s : set (α × α)} (h : s ∈ 𝓤 α) :
339
330
(x, x) ∈ s :=
340
331
refl_le_uniformity h rfl
341
332
342
333
lemma mem_uniformity_of_eq {x y : α} {s : set (α × α)} (h : s ∈ 𝓤 α) (hx : x = y) :
343
334
(x, y) ∈ s :=
344
- hx ▸ refl_mem_uniformity h
335
+ refl_le_uniformity h hx
345
336
346
337
lemma symm_le_uniformity : map (@prod.swap α α) (𝓤 _) ≤ (𝓤 _) :=
347
338
(@uniform_space.to_core α _).symm
@@ -356,7 +347,7 @@ lemma comp_mem_uniformity_sets {s : set (α × α)} (hs : s ∈ 𝓤 α) :
356
347
∃ t ∈ 𝓤 α, t ○ t ⊆ s :=
357
348
have s ∈ (𝓤 α).lift' (λt:set (α×α), t ○ t),
358
349
from comp_le_uniformity hs,
359
- (mem_lift'_sets $ monotone_comp_rel monotone_id monotone_id).mp this
350
+ (mem_lift'_sets $ monotone_id.comp_rel monotone_id).mp this
360
351
361
352
/-- If `s ∈ 𝓤 α`, then for any natural `n`, for a subset `t` of a sufficiently small set in `𝓤 α`,
362
353
we have `t ○ t ○ ... ○ t ⊆ s` (`n` compositions). -/
@@ -411,7 +402,7 @@ lemma comp_symm_of_uniformity {s : set (α × α)} (hs : s ∈ 𝓤 α) :
411
402
∃ t ∈ 𝓤 α, (∀{a b}, (a, b) ∈ t → (b, a) ∈ t) ∧ t ○ t ⊆ s :=
412
403
let ⟨t, ht₁, ht₂⟩ := comp_mem_uniformity_sets hs in
413
404
let ⟨t', ht', ht'₁, ht'₂⟩ := symm_of_uniformity ht₁ in
414
- ⟨t', ht', ht'₁, subset.trans (monotone_comp_rel monotone_id monotone_id ht'₂) ht₂⟩
405
+ ⟨t', ht', ht'₁, subset.trans (monotone_id.comp_rel monotone_id ht'₂) ht₂⟩
415
406
416
407
lemma uniformity_le_symm : 𝓤 α ≤ (@prod.swap α α) <$> 𝓤 α :=
417
408
by rw [map_swap_eq_comap_swap];
@@ -449,7 +440,7 @@ calc (𝓤 α).lift (λs, f (s ○ s)) =
449
440
((𝓤 α).lift' (λs:set (α×α), s ○ s)).lift f :
450
441
begin
451
442
rw [lift_lift'_assoc],
452
- exact monotone_comp_rel monotone_id monotone_id,
443
+ exact monotone_id.comp_rel monotone_id,
453
444
exact h
454
445
end
455
446
... ≤ (𝓤 α).lift f : lift_mono comp_le_uniformity le_rfl
@@ -460,16 +451,16 @@ calc (𝓤 α).lift' (λd, d ○ (d ○ d)) =
460
451
(𝓤 α).lift (λs, (𝓤 α).lift' (λt:set(α×α), s ○ (t ○ t))) :
461
452
begin
462
453
rw [lift_lift'_same_eq_lift'],
463
- exact (assume x, monotone_comp_rel monotone_const $ monotone_comp_rel monotone_id monotone_id),
464
- exact (assume x, monotone_comp_rel monotone_id monotone_const),
454
+ exact (assume x, monotone_const.comp_rel $ monotone_id.comp_rel monotone_id),
455
+ exact (assume x, monotone_id.comp_rel monotone_const),
465
456
end
466
457
... ≤ (𝓤 α).lift (λs, (𝓤 α).lift' (λt:set(α×α), s ○ t)) :
467
458
lift_mono' $ assume s hs, @uniformity_lift_le_comp α _ _ (𝓟 ∘ (○) s) $
468
- monotone_principal.comp (monotone_comp_rel monotone_const monotone_id)
459
+ monotone_principal.comp (monotone_const.comp_rel monotone_id)
469
460
... = (𝓤 α).lift' (λs:set(α×α), s ○ s) :
470
461
lift_lift'_same_eq_lift'
471
- (assume s, monotone_comp_rel monotone_const monotone_id)
472
- (assume s, monotone_comp_rel monotone_id monotone_const)
462
+ (assume s, monotone_const.comp_rel monotone_id)
463
+ (assume s, monotone_id.comp_rel monotone_const)
473
464
... ≤ (𝓤 α) : comp_le_uniformity
474
465
475
466
/-- See also `comp_open_symm_mem_uniformity_sets`. -/
@@ -591,15 +582,8 @@ lemma mem_nhds_uniformity_iff_left {x : α} {s : set α} :
591
582
s ∈ 𝓝 x ↔ {p : α × α | p.2 = x → p.1 ∈ s} ∈ 𝓤 α :=
592
583
by { rw [uniformity_eq_symm, mem_nhds_uniformity_iff_right], refl }
593
584
594
- lemma nhds_eq_comap_uniformity_aux {α : Type u} {x : α} {s : set α} {F : filter (α × α)} :
595
- {p : α × α | p.fst = x → p.snd ∈ s} ∈ F ↔ s ∈ comap (prod.mk x) F :=
596
- by rw mem_comap ; from iff.intro
597
- (assume hs, ⟨_, hs, assume x hx, hx rfl⟩)
598
- (assume ⟨t, h, ht⟩, F.sets_of_superset h $
599
- assume ⟨p₁, p₂⟩ hp (h : p₁ = x), ht $ by simp [h.symm, hp])
600
-
601
585
lemma nhds_eq_comap_uniformity {x : α} : 𝓝 x = (𝓤 α).comap (prod.mk x) :=
602
- by { ext s, rw [mem_nhds_uniformity_iff_right], exact nhds_eq_comap_uniformity_aux }
586
+ by { ext s, rw [mem_nhds_uniformity_iff_right, mem_comap_prod_mk] }
603
587
604
588
/-- See also `is_open_iff_open_ball_subset`. -/
605
589
lemma is_open_iff_ball_subset {s : set α} : is_open s ↔ ∀ x ∈ s, ∃ V ∈ 𝓤 α, ball x V ⊆ s :=
@@ -621,6 +605,9 @@ begin
621
605
exact nhds_basis_uniformity' h
622
606
end
623
607
608
+ lemma nhds_eq_comap_uniformity' {x : α} : 𝓝 x = (𝓤 α).comap (λ y, (y, x)) :=
609
+ (nhds_basis_uniformity (𝓤 α).basis_sets).eq_of_same_basis $ (𝓤 α).basis_sets.comap _
610
+
624
611
lemma uniform_space.mem_nhds_iff {x : α} {s : set α} : s ∈ 𝓝 x ↔ ∃ V ∈ 𝓤 α, ball x V ⊆ s :=
625
612
begin
626
613
rw [nhds_eq_comap_uniformity, mem_comap],
@@ -747,32 +734,20 @@ lemma tendsto_left_nhds_uniformity {a : α} : tendsto (λa', (a, a')) (𝓝 a) (
747
734
assume s, mem_nhds_left a
748
735
749
736
lemma lift_nhds_left {x : α} {g : set α → filter β} (hg : monotone g) :
750
- (𝓝 x).lift g = (𝓤 α).lift (λs:set (α×α), g {y | (x, y) ∈ s}) :=
751
- eq.trans
752
- begin
753
- rw [nhds_eq_uniformity],
754
- exact (filter.lift_assoc $ monotone_principal.comp $ monotone_preimage.comp monotone_preimage )
755
- end
756
- (congr_arg _ $ funext $ assume s, filter.lift_principal hg)
737
+ (𝓝 x).lift g = (𝓤 α).lift (λs:set (α×α), g (ball x s)) :=
738
+ by { rw [nhds_eq_comap_uniformity, comap_lift_eq2 hg], refl }
757
739
758
740
lemma lift_nhds_right {x : α} {g : set α → filter β} (hg : monotone g) :
759
741
(𝓝 x).lift g = (𝓤 α).lift (λs:set (α×α), g {y | (y, x) ∈ s}) :=
760
- calc (𝓝 x).lift g = (𝓤 α).lift (λs:set (α×α), g {y | (x, y) ∈ s}) : lift_nhds_left hg
761
- ... = ((@prod.swap α α) <$> (𝓤 α)).lift (λs:set (α×α), g {y | (x, y) ∈ s}) :
762
- by rw [←uniformity_eq_symm]
763
- ... = (𝓤 α).lift (λs:set (α×α), g {y | (x, y) ∈ image prod.swap s}) :
764
- map_lift_eq2 $ hg.comp monotone_preimage
765
- ... = _ : by simp [image_swap_eq_preimage_swap]
742
+ by { rw [nhds_eq_comap_uniformity', comap_lift_eq2 hg], refl }
766
743
767
744
lemma nhds_nhds_eq_uniformity_uniformity_prod {a b : α} :
768
745
𝓝 a ×ᶠ 𝓝 b =
769
746
(𝓤 α).lift (λs:set (α×α), (𝓤 α).lift' (λt:set (α×α),
770
747
{y : α | (y, a) ∈ s} ×ˢ {y : α | (b, y) ∈ t})) :=
771
748
begin
772
749
rw [nhds_eq_uniformity', nhds_eq_uniformity, prod_lift'_lift'],
773
- { refl },
774
- { exact monotone_preimage },
775
- { exact monotone_preimage },
750
+ exacts [rfl, monotone_preimage, monotone_preimage]
776
751
end
777
752
778
753
lemma nhds_eq_uniformity_prod {a b : α} :
@@ -874,7 +849,7 @@ lemma uniformity_eq_uniformity_interior : 𝓤 α = (𝓤 α).lift' interior :=
874
849
le_antisymm
875
850
(le_infi $ assume d, le_infi $ assume hd,
876
851
let ⟨s, hs, hs_comp⟩ := (mem_lift'_sets $
877
- monotone_comp_rel monotone_id $ monotone_comp_rel monotone_id monotone_id).mp
852
+ monotone_id.comp_rel $ monotone_id.comp_rel monotone_id).mp
878
853
(comp_le_uniformity3 hd) in
879
854
let ⟨t, ht, hst, ht_comp⟩ := nhdset_of_mem_uniformity s hs in
880
855
have s ⊆ interior d, from
@@ -1062,12 +1037,8 @@ instance : has_bot (uniform_space α) :=
1062
1037
⟨{ to_topological_space := ⊥,
1063
1038
uniformity := 𝓟 id_rel,
1064
1039
refl := le_rfl,
1065
- symm := by simp [tendsto]; apply subset.refl,
1066
- comp :=
1067
- begin
1068
- rw [lift'_principal], {simp},
1069
- exact monotone_comp_rel monotone_id monotone_id
1070
- end ,
1040
+ symm := by simp [tendsto],
1041
+ comp := lift'_le (mem_principal_self _) $ principal_mono.2 id_comp_rel.subset,
1071
1042
is_open_uniformity :=
1072
1043
assume s, by simp [is_open_fold, subset_def, id_rel] {contextual := tt } } ⟩
1073
1044
@@ -1138,19 +1109,11 @@ def uniform_space.comap (f : α → β) (u : uniform_space β) : uniform_space
1138
1109
begin
1139
1110
rw [comap_lift'_eq, comap_lift'_eq2],
1140
1111
exact (lift'_mono' $ assume s hs ⟨a₁, a₂⟩ ⟨x, h₁, h₂⟩, ⟨f x, h₁, h₂⟩),
1141
- exact monotone_comp_rel monotone_id monotone_id
1112
+ exact monotone_id.comp_rel monotone_id
1142
1113
end
1143
1114
(comap_mono u.comp),
1144
- is_open_uniformity := λ s, begin
1145
- change (@is_open α (u.to_topological_space.induced f) s ↔ _),
1146
- simp [is_open_iff_nhds, nhds_induced, mem_nhds_uniformity_iff_right, filter.comap, and_comm],
1147
- refine ball_congr (λ x hx, ⟨_, _⟩),
1148
- { rintro ⟨t, hts, ht⟩, refine ⟨_, ht, _⟩,
1149
- rintro ⟨x₁, x₂⟩ h rfl, exact hts (h rfl) },
1150
- { rintro ⟨t, ht, hts⟩,
1151
- exact ⟨{y | (f x, y) ∈ t}, λ y hy, @hts (x, y) hy rfl,
1152
- mem_nhds_uniformity_iff_right.1 $ mem_nhds_left _ ht⟩ }
1153
- end }
1115
+ is_open_uniformity := λ s, by simp only [is_open_fold, is_open_induced, is_open_iff_mem_nhds,
1116
+ nhds_induced, nhds_eq_comap_uniformity, comap_comap, ← mem_comap_prod_mk, ← uniformity] }
1154
1117
1155
1118
lemma uniformity_comap [uniform_space α] [uniform_space β] {f : α → β}
1156
1119
(h : ‹uniform_space α› = uniform_space.comap f ‹uniform_space β›) :
@@ -1655,9 +1618,6 @@ end sum
1655
1618
1656
1619
end constructions
1657
1620
1658
- -- For a version of the Lebesgue number lemma assuming only a sequentially compact space,
1659
- -- see topology/sequences.lean
1660
-
1661
1621
/-- Let `c : ι → set α` be an open cover of a compact set `s`. Then there exists an entourage
1662
1622
`n` such that for each `x ∈ s` its `n`-neighborhood is contained in some `c i`. -/
1663
1623
lemma lebesgue_number_lemma {α : Type u} [uniform_space α] {s : set α} {ι} {c : ι → set α}
@@ -1671,7 +1631,7 @@ begin
1671
1631
rcases comp_mem_uniformity_sets hm with ⟨m', hm', mm'⟩,
1672
1632
apply (𝓤 α).sets_of_superset hm',
1673
1633
rintros ⟨x, y⟩ hp rfl,
1674
- refine ⟨i, m', hm', λ z hz, h (monotone_comp_rel monotone_id monotone_const mm' _)⟩,
1634
+ refine ⟨i, m', hm', λ z hz, h (monotone_id.comp_rel monotone_const mm' _)⟩,
1675
1635
dsimp [-mem_comp_rel] at hz ⊢, rw comp_rel_assoc,
1676
1636
exact ⟨y, hp, hz⟩ },
1677
1637
have hu₂ : s ⊆ ⋃ n ∈ 𝓤 α, u n,
@@ -1741,13 +1701,11 @@ variables [uniform_space α]
1741
1701
1742
1702
theorem tendsto_nhds_right {f : filter β} {u : β → α} {a : α} :
1743
1703
tendsto u f (𝓝 a) ↔ tendsto (λ x, (a, u x)) f (𝓤 α) :=
1744
- ⟨λ H, tendsto_left_nhds_uniformity.comp H,
1745
- λ H s hs, by simpa [mem_of_mem_nhds hs] using H (mem_nhds_uniformity_iff_right.1 hs)⟩
1704
+ by rw [nhds_eq_comap_uniformity, tendsto_comap_iff]
1746
1705
1747
1706
theorem tendsto_nhds_left {f : filter β} {u : β → α} {a : α} :
1748
1707
tendsto u f (𝓝 a) ↔ tendsto (λ x, (u x, a)) f (𝓤 α) :=
1749
- ⟨λ H, tendsto_right_nhds_uniformity.comp H,
1750
- λ H s hs, by simpa [mem_of_mem_nhds hs] using H (mem_nhds_uniformity_iff_left.1 hs)⟩
1708
+ by rw [nhds_eq_comap_uniformity', tendsto_comap_iff]
1751
1709
1752
1710
theorem continuous_at_iff'_right [topological_space β] {f : β → α} {b : β} :
1753
1711
continuous_at f b ↔ tendsto (λ x, (f b, f x)) (𝓝 b) (𝓤 α) :=
0 commit comments