@@ -25,7 +25,7 @@ open_locale classical
25
25
26
26
open filter encodable set
27
27
28
- variables {α : Type *} {β : Type *} {γ : Type *}
28
+ variables {α : Type *} {β : Type *} {γ : Type *} {ι : Type *}
29
29
30
30
section is_Gδ
31
31
variable [topological_space α]
@@ -38,43 +38,50 @@ def is_Gδ (s : set α) : Prop :=
38
38
lemma is_open.is_Gδ {s : set α} (h : is_open s) : is_Gδ s :=
39
39
⟨{s}, by simp [h], countable_singleton _, (set.sInter_singleton _).symm⟩
40
40
41
- lemma is_Gδ_bInter_of_open {ι : Type *} {I : set ι} (hI : countable I) {f : ι → set α}
41
+ lemma is_Gδ_univ : is_Gδ (univ : set α) := is_open_univ.is_Gδ
42
+
43
+ lemma is_Gδ_bInter_of_open {I : set ι} (hI : countable I) {f : ι → set α}
42
44
(hf : ∀i ∈ I, is_open (f i)) : is_Gδ (⋂i∈I, f i) :=
43
45
⟨f '' I, by rwa ball_image_iff, hI.image _, by rw sInter_image⟩
44
46
45
- lemma is_Gδ_Inter_of_open {ι : Type *} [encodable ι] {f : ι → set α}
47
+ lemma is_Gδ_Inter_of_open [encodable ι] {f : ι → set α}
46
48
(hf : ∀i, is_open (f i)) : is_Gδ (⋂i, f i) :=
47
49
⟨range f, by rwa forall_range_iff, countable_range _, by rw sInter_range⟩
48
50
49
51
/-- A countable intersection of Gδ sets is a Gδ set. -/
50
52
lemma is_Gδ_sInter {S : set (set α)} (h : ∀s∈S, is_Gδ s) (hS : countable S) : is_Gδ (⋂₀ S) :=
51
53
begin
52
- have : ∀s : set α, ∃T : set (set α), s ∈ S → ((∀t ∈ T, is_open t) ∧ countable T ∧ s = (⋂₀ T)),
53
- { assume s,
54
- by_cases hs : s ∈ S,
55
- { simp [hs], exact h s hs },
56
- { simp [hs] }},
57
- choose T hT using this ,
58
- refine ⟨⋃s∈S, T s, λt ht, _, _, _⟩,
59
- { simp only [exists_prop, set.mem_Union] at ht,
60
- rcases ht with ⟨s, hs, tTs⟩,
54
+ choose T hT using h,
55
+ refine ⟨_, _, _, (sInter_bUnion (λ s hs, (hT s hs).2 .2 )).symm⟩,
56
+ { simp only [mem_Union],
57
+ rintros t ⟨s, hs, tTs⟩,
61
58
exact (hT s hs).1 t tTs },
62
59
{ exact hS.bUnion (λs hs, (hT s hs).2 .1 ) },
63
- { exact (sInter_bUnion (λs hs, (hT s hs).2 .2 )).symm }
64
60
end
65
61
62
+ lemma is_Gδ_Inter [encodable ι] {s : ι → set α} (hs : ∀ i, is_Gδ (s i)) : is_Gδ (⋂ i, s i) :=
63
+ is_Gδ_sInter (forall_range_iff.2 hs) $ countable_range s
64
+
65
+ lemma is_Gδ_bInter {s : set ι} (hs : countable s) {t : Π i ∈ s, set α} (ht : ∀ i ∈ s, is_Gδ (t i ‹_›)) :
66
+ is_Gδ (⋂ i ∈ s, t i ‹_›) :=
67
+ begin
68
+ rw [bInter_eq_Inter],
69
+ haveI := hs.to_encodable,
70
+ exact is_Gδ_Inter (λ x, ht x x.2 )
71
+ end
72
+
73
+ lemma is_Gδ.inter {s t : set α} (hs : is_Gδ s) (ht : is_Gδ t) : is_Gδ (s ∩ t) :=
74
+ by { rw inter_eq_Inter, exact is_Gδ_Inter (bool.forall_bool.2 ⟨ht, hs⟩) }
75
+
66
76
/-- The union of two Gδ sets is a Gδ set. -/
67
77
lemma is_Gδ.union {s t : set α} (hs : is_Gδ s) (ht : is_Gδ t) : is_Gδ (s ∪ t) :=
68
78
begin
69
- rcases hs with ⟨S, Sopen, Scount, sS ⟩,
70
- rcases ht with ⟨T, Topen, Tcount, tT ⟩,
71
- rw [sS, tT, sInter_union_sInter],
79
+ rcases hs with ⟨S, Sopen, Scount, rfl ⟩,
80
+ rcases ht with ⟨T, Topen, Tcount, rfl ⟩,
81
+ rw [sInter_union_sInter],
72
82
apply is_Gδ_bInter_of_open (countable_prod Scount Tcount),
73
83
rintros ⟨a, b⟩ hab,
74
- simp only [set.prod_mk_mem_set_prod_eq] at hab,
75
- have aopen : is_open a := Sopen a hab.1 ,
76
- have bopen : is_open b := Topen b hab.2 ,
77
- simp [aopen, bopen, is_open_union]
84
+ exact is_open_union (Sopen a hab.1 ) (Topen b hab.2 )
78
85
end
79
86
80
87
end is_Gδ
@@ -224,39 +231,17 @@ theorem dense_sInter_of_Gδ {S : set (set α)} (ho : ∀s∈S, is_Gδ s) (hS : c
224
231
begin
225
232
-- the result follows from the result for a countable intersection of dense open sets,
226
233
-- by rewriting each set as a countable intersection of open sets, which are of course dense.
227
- have : ∀s : set α, ∃T : set (set α), s ∈ S → ((∀t ∈ T, is_open t) ∧ countable T ∧ s = (⋂₀ T)),
228
- { assume s,
229
- by_cases hs : s ∈ S,
230
- { simp [hs], exact ho s hs },
231
- { simp [hs] }},
232
- choose T hT using this ,
233
- have : ⋂₀ S = ⋂₀ (⋃s∈S, T s) := (sInter_bUnion (λs hs, (hT s hs).2 .2 )).symm,
234
+ choose T hT using ho,
235
+ have : ⋂₀ S = ⋂₀ (⋃s∈S, T s ‹_›) := (sInter_bUnion (λs hs, (hT s hs).2 .2 )).symm,
234
236
rw this ,
235
- refine dense_sInter_of_open (λt ht, _) (hS.bUnion (λs hs, (hT s hs).2 .1 )) (λt ht, _),
237
+ refine dense_sInter_of_open _ (hS.bUnion (λs hs, (hT s hs).2 .1 )) _;
238
+ simp only [set.mem_Union, exists_prop]; rintro t ⟨s, hs, tTs⟩,
236
239
show is_open t,
237
- { simp only [exists_prop, set.mem_Union] at ht,
238
- rcases ht with ⟨s, hs, tTs⟩,
239
- exact (hT s hs).1 t tTs },
240
+ { exact (hT s hs).1 t tTs },
240
241
show closure t = univ,
241
- { simp only [exists_prop, set.mem_Union] at ht,
242
- rcases ht with ⟨s, hs, tTs⟩,
243
- apply subset.antisymm (subset_univ _),
244
- rw ← (hd s hs),
245
- apply closure_mono,
246
- have := sInter_subset_of_mem tTs,
247
- rwa ← (hT s hs).2 .2 at this }
248
- end
249
-
250
- /-- Baire theorem: a countable intersection of dense Gδ sets is dense. Formulated here with
251
- an index set which is a countable set in any type. -/
252
- theorem dense_bInter_of_Gδ {S : set β} {f : β → set α} (ho : ∀s∈S, is_Gδ (f s))
253
- (hS : countable S) (hd : ∀s∈S, closure (f s) = univ) : closure (⋂s∈S, f s) = univ :=
254
- begin
255
- rw ← sInter_image,
256
- apply dense_sInter_of_Gδ,
257
- { rwa ball_image_iff },
258
- { exact hS.image _ },
259
- { rwa ball_image_iff }
242
+ { apply eq_univ_of_univ_subset,
243
+ rw [← hd s hs, (hT s hs).2 .2 ],
244
+ exact closure_mono (sInter_subset_of_mem tTs) }
260
245
end
261
246
262
247
/-- Baire theorem: a countable intersection of dense Gδ sets is dense. Formulated here with
@@ -265,10 +250,26 @@ theorem dense_Inter_of_Gδ [encodable β] {f : β → set α} (ho : ∀s, is_Gδ
265
250
(hd : ∀s, closure (f s) = univ) : closure (⋂s, f s) = univ :=
266
251
begin
267
252
rw ← sInter_range,
268
- apply dense_sInter_of_Gδ,
269
- { rwa forall_range_iff },
270
- { exact countable_range _ },
271
- { rwa forall_range_iff }
253
+ exact dense_sInter_of_Gδ (forall_range_iff.2 ‹_›) (countable_range _) (forall_range_iff.2 ‹_›)
254
+ end
255
+
256
+ /-- Baire theorem: a countable intersection of dense Gδ sets is dense. Formulated here with
257
+ an index set which is a countable set in any type. -/
258
+ theorem dense_bInter_of_Gδ {S : set β} {f : Π x ∈ S, set α} (ho : ∀s∈S, is_Gδ (f s ‹_›))
259
+ (hS : countable S) (hd : ∀s∈S, closure (f s ‹_›) = univ) : closure (⋂s∈S, f s ‹_›) = univ :=
260
+ begin
261
+ rw bInter_eq_Inter,
262
+ haveI := hS.to_encodable,
263
+ exact dense_Inter_of_Gδ (λ s, ho s s.2 ) (λ s, hd s s.2 )
264
+ end
265
+
266
+ /-- Baire theorem: the intersection of two dense Gδ sets is dense. -/
267
+ theorem dense_inter_of_Gδ {s t : set α} (hs : is_Gδ s) (ht : is_Gδ t) (hsc : closure s = univ)
268
+ (htc : closure t = univ) :
269
+ closure (s ∩ t) = univ :=
270
+ begin
271
+ rw [inter_eq_Inter],
272
+ apply dense_Inter_of_Gδ; simp [bool.forall_bool, *]
272
273
end
273
274
274
275
/-- Baire theorem: if countably many closed sets cover the whole space, then their interiors
@@ -282,7 +283,7 @@ begin
282
283
show is_open (g s), from is_open_compl_iff.2 is_closed_frontier,
283
284
show closure (g s) = univ,
284
285
{ apply subset.antisymm (subset_univ _),
285
- simp [g, interior_frontier (hc s hs)] }},
286
+ simp [interior_frontier (hc s hs)] }},
286
287
have : (⋂s∈S, g s) ⊆ (⋃s∈S, interior (f s)),
287
288
{ assume x hx,
288
289
have : x ∈ ⋃s∈S, f s, { have := mem_univ x, rwa ← hU at this },
0 commit comments