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

Commit fecdd4b

Browse files
vihdzpsgouezel
andcommitted
feat(measure_theory/card_measurable_space): generate_measurable_rec s gives precisely the generated sigma-algebra (#12462)
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
1 parent adfe9c7 commit fecdd4b

File tree

2 files changed

+104
-73
lines changed

2 files changed

+104
-73
lines changed

src/measure_theory/card_measurable_space.lean

Lines changed: 101 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ In particular, if `#s ≤ 𝔠`, then the generated sigma-algebra has cardinalit
2020
For the proof, we rely on an explicit inductive construction of the sigma-algebra generated by
2121
`s` (instead of the inductive predicate `generate_measurable`). This transfinite inductive
2222
construction is parameterized by an ordinal `< ω₁`, and the cardinality bound is preserved along
23-
each step of the construction.
23+
each step of the construction. We show in `measurable_space.generate_measurable_eq_rec` that this
24+
indeed generates this sigma-algebra.
2425
-/
2526

2627
universe u
@@ -29,21 +30,61 @@ variables {α : Type u}
2930
open_locale cardinal
3031
open cardinal set
3132

32-
local notation `ω₁`:= (aleph 1 : cardinal.{u}).ord.out.α
33+
local notation `ω₁` := (aleph 1 : cardinal.{u}).ord.out.α
3334

3435
namespace measurable_space
3536

3637
/-- Transfinite induction construction of the sigma-algebra generated by a set of sets `s`. At each
3738
step, we add all elements of `s`, the empty set, the complements of already constructed sets, and
3839
countable unions of already constructed sets. We index this construction by an ordinal `< ω₁`, as
39-
this will be enough to generate all sets in the sigma-algebra. -/
40+
this will be enough to generate all sets in the sigma-algebra.
41+
42+
This construction is very similar to that of the Borel hierarchy. -/
4043
def generate_measurable_rec (s : set (set α)) : ω₁ → set (set α)
4144
| i := let S := ⋃ j : {j // j < i}, generate_measurable_rec j.1 in
42-
s ∪ {∅} ∪ compl '' S ∪ (set.range (λ (f : ℕ → S), ⋃ n, (f n).1))
45+
s ∪ {∅} ∪ compl '' S ∪ set.range (λ (f : ℕ → S), ⋃ n, (f n).1)
4346
using_well_founded {dec_tac := `[exact j.2]}
4447

45-
/-- At each step of the inductive construction, the cardinality bound `≤ (max (#s) 2) ^ ω`
46-
holds. -/
48+
theorem self_subset_generate_measurable_rec (s : set (set α)) (i : ω₁) :
49+
s ⊆ generate_measurable_rec s i :=
50+
begin
51+
unfold generate_measurable_rec,
52+
apply_rules [subset_union_of_subset_left],
53+
exact subset_rfl
54+
end
55+
56+
theorem empty_mem_generate_measurable_rec (s : set (set α)) (i : ω₁) :
57+
∅ ∈ generate_measurable_rec s i :=
58+
begin
59+
unfold generate_measurable_rec,
60+
exact mem_union_left _ (mem_union_left _ (mem_union_right _ (mem_singleton ∅)))
61+
end
62+
63+
theorem compl_mem_generate_measurable_rec {s : set (set α)} {i j : ω₁} (h : j < i) {t : set α}
64+
(ht : t ∈ generate_measurable_rec s j) : tᶜ ∈ generate_measurable_rec s i :=
65+
begin
66+
unfold generate_measurable_rec,
67+
exact mem_union_left _ (mem_union_right _ ⟨t, mem_Union.2 ⟨⟨j, h⟩, ht⟩, rfl⟩)
68+
end
69+
70+
theorem Union_mem_generate_measurable_rec {s : set (set α)} {i : ω₁}
71+
{f : ℕ → set α} (hf : ∀ n, ∃ j < i, f n ∈ generate_measurable_rec s j) :
72+
(⋃ n, f n) ∈ generate_measurable_rec s i :=
73+
begin
74+
unfold generate_measurable_rec,
75+
exact mem_union_right _ ⟨λ n, ⟨f n, let ⟨j, hj, hf⟩ := hf n in mem_Union.2 ⟨⟨j, hj⟩, hf⟩⟩, rfl⟩
76+
end
77+
78+
theorem generate_measurable_rec_subset (s : set (set α)) {i j : ω₁} (h : i ≤ j) :
79+
generate_measurable_rec s i ⊆ generate_measurable_rec s j :=
80+
λ x hx, begin
81+
rcases eq_or_lt_of_le h with rfl | h,
82+
{ exact hx },
83+
{ convert Union_mem_generate_measurable_rec (λ n, ⟨i, h, hx⟩),
84+
exact (Union_const x).symm }
85+
end
86+
87+
/-- At each step of the inductive construction, the cardinality bound `≤ (max (#s) 2) ^ ω` holds. -/
4788
lemma cardinal_generate_measurable_rec_le (s : set (set α)) (i : ω₁) :
4889
#(generate_measurable_rec s i) ≤ (max (#s) 2) ^ omega.{u} :=
4990
begin
@@ -52,14 +93,12 @@ begin
5293
have A := omega_le_aleph 1,
5394
have B : aleph 1 ≤ (max (#s) 2) ^ omega.{u} :=
5495
aleph_one_le_continuum.trans (power_le_power_right (le_max_right _ _)),
55-
have C : omega.{u} ≤ (max (#s) 2) ^ omega.{u} := A.trans B,
96+
have C : ω ≤ (max (#s) 2) ^ omega.{u} := A.trans B,
5697
have J : #(⋃ (j : {j // j < i}), generate_measurable_rec s j.1) ≤ (max (#s) 2) ^ omega.{u},
5798
{ apply (mk_Union_le _).trans,
58-
have D : # {j // j < i} ≤ aleph 1 := (mk_subtype_le _).trans (le_of_eq (aleph 1).mk_ord_out),
59-
have E : cardinal.sup.{u u}
60-
(λ (j : {j // j < i}), #(generate_measurable_rec s j.1)) ≤ (max (#s) 2) ^ omega.{u} :=
61-
cardinal.sup_le (λ ⟨j, hj⟩, IH j hj),
62-
apply (mul_le_mul' D E).trans,
99+
have D : cardinal.sup.{u u} (λ (j : {j // j < i}), #(generate_measurable_rec s j.1)) ≤ _ :=
100+
cardinal.sup_le (λ ⟨j, hj⟩, IH j hj),
101+
apply (mul_le_mul' ((mk_subtype_le _).trans (aleph 1).mk_ord_out.le) D).trans,
63102
rw mul_eq_max A C,
64103
exact max_le B le_rfl },
65104
rw [generate_measurable_rec],
@@ -69,70 +108,61 @@ begin
69108
exact one_lt_omega.le.trans C },
70109
{ apply mk_range_le.trans,
71110
simp only [mk_pi, subtype.val_eq_coe, prod_const, lift_uzero, mk_denumerable, lift_omega],
72-
have := @power_le_power_right _ _ omega.{u} J,
111+
have := @power_le_power_right _ _ ω J,
73112
rwa [← power_mul, omega_mul_omega] at this }
74113
end
75114

76-
lemma cardinal_Union_generate_measurable_rec_le (s : set (set α)) :
77-
#(⋃ i, generate_measurable_rec s i) ≤ (max (#s) 2) ^ omega.{u} :=
115+
/-- `generate_measurable_rec s` generates precisely the smallest sigma-algebra containing `s`. -/
116+
theorem generate_measurable_eq_rec (s : set (set α)) :
117+
{t | generate_measurable s t} = ⋃ i, generate_measurable_rec s i :=
78118
begin
119+
ext t, refine ⟨λ ht, _, λ ht, _⟩,
120+
{ inhabit ω₁,
121+
induction ht with u hu u hu IH f hf IH,
122+
{ exact mem_Union.2 ⟨default, self_subset_generate_measurable_rec s _ hu⟩ },
123+
{ exact mem_Union.2 ⟨default, empty_mem_generate_measurable_rec s _⟩ },
124+
{ rcases mem_Union.1 IH with ⟨i, hi⟩,
125+
obtain ⟨j, hj⟩ := exists_gt i,
126+
exact mem_Union.2 ⟨j, compl_mem_generate_measurable_rec hj hi⟩ },
127+
{ have : ∀ n, ∃ i, f n ∈ generate_measurable_rec s i := λ n, by simpa using IH n,
128+
choose I hI using this,
129+
refine mem_Union.2 ⟨ordinal.enum (<) (ordinal.lsub (λ n, ordinal.typein.{u} (<) (I n))) _,
130+
Union_mem_generate_measurable_rec (λ n, ⟨I n, _, hI n⟩)⟩,
131+
{ rw ordinal.type_lt,
132+
refine ordinal.lsub_lt_ord_lift _ (λ i, ordinal.typein_lt_self _),
133+
rw [mk_denumerable, lift_omega, is_regular_aleph_one.2],
134+
exact omega_lt_aleph_one },
135+
{ rw [←ordinal.typein_lt_typein (<), ordinal.typein_enum],
136+
apply ordinal.lt_lsub (λ n : ℕ, _) } } },
137+
{ rcases ht with ⟨t, ⟨i, rfl⟩, hx⟩,
138+
revert t,
139+
apply (aleph 1).ord.out.wo.wf.induction i,
140+
intros j H t ht,
141+
unfold generate_measurable_rec at ht,
142+
rcases ht with (((h | h) | ⟨u, ⟨-, ⟨⟨k, hk⟩, rfl⟩, hu⟩, rfl⟩) | ⟨f, rfl⟩),
143+
{ exact generate_measurable.basic t h },
144+
{ convert generate_measurable.empty },
145+
{ exact generate_measurable.compl u (H k hk u hu) },
146+
{ apply generate_measurable.union _ (λ n, _),
147+
obtain ⟨-, ⟨⟨k, hk⟩, rfl⟩, hf⟩ := (f n).prop,
148+
exact H k hk _ hf } }
149+
end
150+
151+
/-- If a sigma-algebra is generated by a set of sets `s`, then the sigma-algebra has cardinality at
152+
most `(max (#s) 2) ^ ω`. -/
153+
theorem cardinal_generate_measurable_le (s : set (set α)) :
154+
#{t | generate_measurable s t} ≤ (max (#s) 2) ^ omega.{u} :=
155+
begin
156+
rw generate_measurable_eq_rec,
79157
apply (mk_Union_le _).trans,
80-
rw [(aleph 1).mk_ord_out],
158+
rw (aleph 1).mk_ord_out,
81159
refine le_trans (mul_le_mul' aleph_one_le_continuum
82160
(cardinal.sup_le (λ i, cardinal_generate_measurable_rec_le s i))) _,
83161
have := power_le_power_right (le_max_right (#s) 2),
84162
rw mul_eq_max omega_le_continuum (omega_le_continuum.trans this),
85163
exact max_le this le_rfl
86164
end
87165

88-
/-- A set in the sigma-algebra generated by a set of sets `s` is constructed at some step of the
89-
transfinite induction defining `generate_measurable_rec`.
90-
The other inclusion is also true, but not proved here as it is not needed for the cardinality
91-
bounds.-/
92-
theorem generate_measurable_subset_rec (s : set (set α)) ⦃t : set α⦄
93-
(ht : generate_measurable s t) :
94-
t ∈ ⋃ i, generate_measurable_rec s i :=
95-
begin
96-
inhabit ω₁,
97-
induction ht with u hu u hu IH f hf IH,
98-
{ refine mem_Union.2 ⟨default, _⟩,
99-
rw generate_measurable_rec,
100-
simp only [hu, mem_union_eq, true_or] },
101-
{ refine mem_Union.2 ⟨default, _⟩,
102-
rw generate_measurable_rec,
103-
simp only [union_singleton, mem_union_eq, mem_insert_iff, eq_self_iff_true, true_or] },
104-
{ rcases mem_Union.1 IH with ⟨i, hi⟩,
105-
obtain ⟨j, hj⟩ : ∃ j, i < j := ordinal.has_succ_of_type_succ_lt
106-
(by { rw ordinal.type_lt, exact (ord_aleph_is_limit 1).2 }) _,
107-
apply mem_Union.2 ⟨j, _⟩,
108-
rw generate_measurable_rec,
109-
have : ∃ a, (a < j) ∧ u ∈ generate_measurable_rec s a := ⟨i, hj, hi⟩,
110-
simp [this] },
111-
{ have : ∀ n, ∃ i, f n ∈ generate_measurable_rec s i := λ n, by simpa using IH n,
112-
choose I hI using this,
113-
obtain ⟨j, hj⟩ : ∃ j, ∀ k, k ∈ range I → (k < j),
114-
{ apply ordinal.lt_cof_type,
115-
simp only [is_regular_aleph_one.2, mk_singleton, ordinal.type_lt],
116-
have : #(range I) = lift.{0} (#(range I)), by simp only [lift_uzero],
117-
rw this,
118-
apply mk_range_le_lift.trans_lt _,
119-
simp [omega_lt_aleph_one] },
120-
apply mem_Union.2 ⟨j, _⟩,
121-
rw generate_measurable_rec,
122-
have : ∃ (g : ℕ → (↥⋃ (i : {i // i < j}), generate_measurable_rec s i.1)),
123-
(⋃ (n : ℕ), ↑(g n)) = (⋃ n, f n),
124-
{ refine ⟨λ n, ⟨f n, _⟩, rfl⟩,
125-
exact mem_Union.2 ⟨⟨I n, hj (I n) (mem_range_self _)⟩, hI n⟩ },
126-
simp [this] }
127-
end
128-
129-
/-- If a sigma-algebra is generated by a set of sets `s`, then the sigma
130-
algebra has cardinality at most `(max (#s) 2) ^ ω`. -/
131-
theorem cardinal_generate_measurable_le (s : set (set α)) :
132-
#{t | generate_measurable s t} ≤ (max (#s) 2) ^ omega.{u} :=
133-
(mk_subtype_le_of_subset (generate_measurable_subset_rec s)).trans
134-
(cardinal_Union_generate_measurable_rec_le s)
135-
136166
/-- If a sigma-algebra is generated by a set of sets `s`, then the sigma
137167
algebra has cardinality at most `(max (#s) 2) ^ ω`. -/
138168
theorem cardinal_measurable_set_le (s : set (set α)) :
@@ -143,17 +173,15 @@ cardinal_generate_measurable_le s
143173
then the sigma algebra has the same cardinality bound. -/
144174
theorem cardinal_generate_measurable_le_continuum {s : set (set α)} (hs : #s ≤ 𝔠) :
145175
#{t | generate_measurable s t} ≤ 𝔠 :=
146-
calc
147-
#{t | generate_measurable s t}
148-
≤ (max (#s) 2) ^ omega.{u} : cardinal_generate_measurable_le s
149-
... ≤ 𝔠 ^ omega.{u} :
150-
by exact_mod_cast power_le_power_right (max_le hs (nat_lt_continuum 2).le)
151-
... = 𝔠 : continuum_power_omega
176+
(cardinal_generate_measurable_le s).trans begin
177+
rw ←continuum_power_omega,
178+
exact_mod_cast power_le_power_right (max_le hs (nat_lt_continuum 2).le)
179+
end
152180

153181
/-- If a sigma-algebra is generated by a set of sets `s` with cardinality at most the continuum,
154182
then the sigma algebra has the same cardinality bound. -/
155-
theorem cardinal_measurable_set_le_continuum {s : set (set α)} (hs : #s ≤ 𝔠) :
156-
#{t | @measurable_set α (generate_from s) t} ≤ 𝔠 :=
157-
cardinal_generate_measurable_le_continuum hs
183+
theorem cardinal_measurable_set_le_continuum {s : set (set α)} :
184+
#s ≤ 𝔠 → #{t | @measurable_set α (generate_from s) t} ≤ 𝔠 :=
185+
cardinal_generate_measurable_le_continuum
158186

159187
end measurable_space

src/set_theory/cardinal_ordinal.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,9 @@ end
229229
theorem ord_aleph_is_limit (o : ordinal) : is_limit (aleph o).ord :=
230230
ord_is_limit $ omega_le_aleph _
231231

232+
instance (o : ordinal) : no_max_order (aleph o).ord.out.α :=
233+
ordinal.out_no_max_of_succ_lt (ord_aleph_is_limit o).2
234+
232235
theorem exists_aleph {c : cardinal} : ω ≤ c ↔ ∃ o, c = aleph o :=
233236
⟨λ h, ⟨aleph_idx c - ordinal.omega,
234237
by rw [aleph, ordinal.add_sub_cancel_of_le, aleph'_aleph_idx];

0 commit comments

Comments
 (0)