Skip to content

Commit 1bcfaaa

Browse files
committed
chore(MeasureTheory): drop obsolete Lusin dependencies
1 parent e528b6f commit 1bcfaaa

3 files changed

Lines changed: 11 additions & 109 deletions

File tree

Mathlib/MeasureTheory/Measure/Tight.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def IsTightMeasureSet (S : Set (Measure 𝓧)) : Prop :=
5858
/-- A set of measures `S` is tight if for all `0 < ε`, there exists a compact set `K` such that
5959
for all `μ ∈ S`, `μ Kᶜ ≤ ε`. -/
6060
lemma isTightMeasureSet_iff_exists_isCompact_measure_compl_le :
61-
IsTightMeasureSet S ↔ ∀ ε, 0 < ε → ∃ K : Set 𝓧, IsCompact K ∧ ∀ μ ∈ S, μ Kᶜ ≤ ε := by
61+
IsTightMeasureSet S ↔ ∀ ε, 0 < ε → ∃ K : Set 𝓧, IsCompact K ∧ ∀ μ ∈ S, μ (Kᶜ) ≤ ε := by
6262
simp only [IsTightMeasureSet, ENNReal.tendsto_nhds ENNReal.zero_ne_top, gt_iff_lt, zero_add,
6363
iSup_apply, mem_Icc, tsub_le_iff_right, zero_le, iSup_le_iff, true_and, eventually_smallSets,
6464
mem_cocompact]

Mathlib/Topology/Separation/GDelta.lean

Lines changed: 10 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
/-
22
Copyright (c) 2017 Johannes Hölzl. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
4-
Authors: Johannes Hölzl, Mario Carneiro, Yongxi Lin
4+
Authors: Johannes Hölzl, Mario Carneiro
55
-/
66
module
77

8-
public import Mathlib.Topology.UrysohnsLemma
8+
public import Mathlib.Topology.Compactness.Lindelof
9+
public import Mathlib.Topology.Compactness.SigmaCompact
10+
public import Mathlib.Topology.Inseparable
11+
public import Mathlib.Topology.Separation.Regular
12+
public import Mathlib.Topology.GDelta.Basic
913

1014
/-!
1115
# Separation properties of topological spaces.
@@ -65,111 +69,6 @@ closed sets are Gδ. -/
6569
class PerfectlyNormalSpace (X : Type u) [TopologicalSpace X] : Prop extends NormalSpace X where
6670
closed_gdelta : ∀ ⦃h : Set X⦄, IsClosed h → IsGδ h
6771

68-
/-- In a perfectly normal space, all closed sets are Gδ. -/
69-
theorem IsClosed.isGδ [PerfectlyNormalSpace X] {s : Set X} (hs : IsClosed s) : IsGδ s :=
70-
PerfectlyNormalSpace.closed_gdelta hs
71-
72-
/-- A topological space is perfectly normal iff every closed set is the zero set of a continuous
73-
function taking values in the unit interval. -/
74-
theorem perfectlyNormalSpace_iff_forall_isClosed_preimage_zero :
75-
PerfectlyNormalSpace X ↔ ∀ s, IsClosed s → ∃ f : C(X, ℝ), s = f ⁻¹' {0} ∧
76-
range f ⊆ Icc 0 1 where
77-
mp h s hs := by
78-
-- write `s` as the intersection of a sequence of open sets `U n`
79-
obtain ⟨U, ho, hu⟩ := isGδ_iff_eq_iInter_nat.1 hs.isGδ
80-
have (n : ℕ) : Disjoint s (U n)ᶜ := by
81-
apply HasSubset.Subset.disjoint_compl_right
82-
grw [hu, iInter_subset]
83-
-- for each `n`, construct a continuous function `f n` that separates `s` from `(U n)ᶜ`
84-
choose f hfs hfu hfr using fun n =>
85-
exists_continuous_zero_one_of_isClosed hs (ho n).isClosed_compl (this n)
86-
have hsb (x : X) (n : ℕ) : ‖(f n) x * (1 / 2 / 2 ^ n)‖ ≤ 1 / 2 / 2 ^ n := by
87-
simp [abs_of_nonneg (hfr n x).1, (hfr n x).2]
88-
have hsx (x : X) : Summable fun n => f n x * (1 / 2 / 2 ^ n) :=
89-
(summable_geometric_two' 1).of_norm_bounded fun n => hsb x n
90-
-- consider the infinite sum of `f n x * (1 / 2 / 2 ^ n)`, which is uniformly convergent and
91-
-- thus continuous because it is dominated by a geometric series
92-
let h : C(X, ℝ) := {
93-
toFun x := ∑' n, f n x * (1 / 2 / 2 ^ n)
94-
continuous_toFun :=
95-
continuous_tsum (fun n => by fun_prop) (summable_geometric_two' 1) fun n x => hsb x n
96-
}
97-
refine ⟨h, ?_, fun r ⟨x, hx⟩ => ⟨?_, ?_⟩⟩
98-
· ext x
99-
refine ⟨fun hp => ?_, fun hp => ?_⟩
100-
· suffices ∀ n, f n x = 0 from by simp [h, this]
101-
exact fun n => hfs n hp
102-
· contrapose h
103-
simp only [preimage, notMem_setOf_iff, ContinuousMap.coe_mk, mem_singleton_iff]
104-
apply ne_of_gt
105-
obtain ⟨i, hi⟩ := mem_iUnion.1 <| compl_iInter _ ▸ mem_compl (hu ▸ h)
106-
calc
107-
_ < 1 / 2 / 2 ^ i := by positivity
108-
_ = f i x * (1 / 2 / 2 ^ i) := by simp [hfu i hi]
109-
_ ≤ _ := (hsx x).le_tsum i fun j hj => by positivity [(hfr j x).1]
110-
· exact hx ▸ tsum_nonneg fun n => by simp [(hfr n x).1]
111-
· calc
112-
_ = ∑' n, f n x * (1 / 2 / 2 ^ n) := by simp [← hx, h]
113-
_ ≤ ∑' n, 1 / 2 / 2 ^ n :=
114-
(hsx x).tsum_le_tsum (fun n => by simp [(hfr n x).2]) (summable_geometric_two' 1)
115-
_ = _ := tsum_geometric_two' 1
116-
mpr h := {
117-
normal s t hs ht hst := by
118-
-- pick `f, g` such that `s = f ⁻¹' {0}` and `t = g ⁻¹' {0}`, and then the function
119-
-- `f / (f + g)` separates `s` and `t`.
120-
obtain ⟨f, hf, hfr⟩ := h s hs
121-
obtain ⟨g, hg, hgr⟩ := h t ht
122-
have hsn : SeparatedNhds {(0 : ℝ)} {1} :=
123-
SeparatedNhds.of_finite (finite_singleton _) (finite_singleton _)
124-
(disjoint_singleton.2 zero_ne_one)
125-
have hfg (x : X) : f x + g x ≠ 0 := by
126-
simp_all only [preimage, mem_singleton_iff]
127-
by_cases! hfx : f x = 0
128-
· simpa [hfx] using hst.notMem_of_mem_left hfx
129-
· simp only [range, Icc, setOf_subset_setOf, forall_exists_index,
130-
forall_apply_eq_imp_iff] at hfr hgr
131-
positivity [(hgr x).1, (hfr x).1]
132-
have hp : s = (fun a => f a / (f a + g a)) ⁻¹' {0} := by simp_all [preimage]
133-
have : t = (fun a => f a / (f a + g a)) ⁻¹' {1} := by simp_all [preimage, div_eq_one_iff_eq]
134-
rw [hp, this]
135-
exact hsn.preimage (f.continuous.div₀ (f.continuous.add g.continuous) hfg)
136-
closed_gdelta s hs := by
137-
by_cases! hse : s = ∅
138-
· simp_all
139-
-- pick `f` such that `s = f ⁻¹' {0} = ⋂ n, f ⁻¹' {(-1, 1 / (n + 1))}`
140-
obtain ⟨f, hf, hfr⟩ := h s hs
141-
refine isGδ_iff_eq_iInter_nat.2fun n => f ⁻¹' (Ioo (-1 : ℝ) (1 / (n + 1))), fun n => ?_, ?_⟩
142-
· exact f.continuous.isOpen_preimage _ isOpen_Ioo
143-
· simp only [hf, ← preimage_iInter,
144-
← preimage_range_inter (s := ⋂ (n : ℕ), Ioo (-1 : ℝ) (1 / (n + 1))), inter_iInter]
145-
congr
146-
ext x
147-
refine ⟨fun h => mem_iInter_of_mem fun n => ?_, fun h => ?_⟩
148-
· refine ⟨?_, ?_, by simp_all; grind⟩ <;> aesop
149-
· apply le_antisymm
150-
· simp only [mem_iInter, mem_inter_iff, mem_Ioo] at h
151-
exact ge_of_tendsto' tendsto_one_div_add_atTop_nhds_zero_nat (fun n => (h n).2.2.le)
152-
· exact (hfr (mem_iInter.1 h 0).1).1
153-
}
154-
155-
theorem Topology.IsEmbedding.perfectlyNormalSpace {e : X → Y} (he : IsEmbedding e)
156-
[PerfectlyNormalSpace Y] : PerfectlyNormalSpace X := by
157-
rw [perfectlyNormalSpace_iff_forall_isClosed_preimage_zero]
158-
intro t ht
159-
obtain ⟨c, hc⟩ : ∃ c, IsClosed c ∧ e '' t = c ∩ range e := he.image_eq_isClosed_inter_range ht
160-
obtain ⟨f, rfl, hf⟩ :=
161-
perfectlyNormalSpace_iff_forall_isClosed_preimage_zero.1 inferInstance c hc.1
162-
refine ⟨⟨f ∘ e, f.continuous.comp he.continuous⟩, ?_, (range_comp_subset_range e f).trans hf⟩
163-
ext x
164-
refine ⟨fun hx => ?_, fun hx => ?_⟩
165-
· have hx' : e x ∈ e '' t := by grind
166-
simp_all
167-
· have hx' : e x ∈ e '' t := by simp_all
168-
exact he.injective.mem_set_image.1 hx'
169-
170-
instance {s : Set X} [PerfectlyNormalSpace X] : PerfectlyNormalSpace s :=
171-
IsEmbedding.subtypeVal.perfectlyNormalSpace
172-
17372
/-- Lemma that allows the easy conclusion that perfectly normal spaces are completely normal. -/
17473
theorem Disjoint.hasSeparatingCover_closed_gdelta_right {s t : Set X} [NormalSpace X]
17574
(st_dis : Disjoint s t) (t_cl : IsClosed t) (t_gd : IsGδ t) : HasSeparatingCover s t := by
@@ -208,6 +107,10 @@ instance (priority := 100) PerfectlyNormalSpace.toCompletelyNormalSpace
208107
((Disjoint.symm hd₁).hasSeparatingCover_closed_gdelta_right isClosed_closure <|
209108
closed_gdelta isClosed_closure).mono (fun ⦃_⦄ a ↦ a) subset_closure⟩
210109

110+
/-- In a perfectly normal space, all closed sets are Gδ. -/
111+
theorem IsClosed.isGδ [PerfectlyNormalSpace X] {s : Set X} (hs : IsClosed s) : IsGδ s :=
112+
PerfectlyNormalSpace.closed_gdelta hs
113+
211114
instance (priority := 100) [PerfectlyNormalSpace X] : R0Space X where
212115
specializes_symm.symm x y hxy := by
213116
rw [specializes_iff_forall_closed]

docs/1000.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1627,7 +1627,6 @@ Q1361031:
16271627

16281628
Q1361393:
16291629
title: Luzin's theorem
1630-
decl: MeasureTheory.Measurable.exists_continuous_restrict
16311630

16321631
Q1366581:
16331632
title: Erdős–Rado theorem

0 commit comments

Comments
 (0)