@@ -5,11 +5,52 @@ Authors: Johannes Hölzl
5
5
6
6
Measurable spaces -- σ-algberas
7
7
-/
8
- import data.set order.galois_connection data.set.countable
8
+ import data.set data.finset order.galois_connection data.set.countable
9
9
open classical set lattice
10
10
local attribute [instance] decidable_inhabited prop_decidable
11
11
12
12
universes u v w x
13
+ variables {α : Type u} {β : Type v} {γ : Type w} {ι : Sort x}
14
+ {s t u : set α}
15
+
16
+ namespace set
17
+ def disjointed (f : ℕ → set α) (n : ℕ) : set α := f n ∩ (⋂i<n, - f i)
18
+
19
+ lemma disjoint_disjointed {i j : ℕ} {f : ℕ → set α} (h : i ≠ j) :
20
+ disjointed f i ∩ disjointed f j = ∅ :=
21
+ have ∀i j, i < j → disjointed f i ∩ disjointed f j = ∅,
22
+ from assume i j hij, eq_empty_of_forall_not_mem $ assume x h,
23
+ have x ∈ f i, from h.left.left,
24
+ have x ∈ (⋂i<j, - f i), from h.right.right,
25
+ have x ∉ f i, begin simp at this ; exact this _ hij end ,
26
+ absurd ‹x ∈ f i› this ,
27
+ show disjointed f i ∩ disjointed f j = ∅,
28
+ from (ne_iff_lt_or_gt.mp h).elim (this i j) begin rw [inter_comm], exact this j i end
29
+
30
+ lemma disjointed_Union {f : ℕ → set α} : (⋃n, disjointed f n) = (⋃n, f n) :=
31
+ subset.antisymm (Union_subset_Union $ assume i, inter_subset_left _ _) $
32
+ assume x h,
33
+ have ∃n, x ∈ f n, from (mem_Union_eq _ _).mp h,
34
+ have hn : ∀ (i : ℕ), i < nat.find this → x ∉ f i,
35
+ from assume i, nat.find_min this ,
36
+ (mem_Union_eq _ _).mpr ⟨nat.find this , nat.find_spec this , by simp; assumption⟩
37
+ end set
38
+
39
+ namespace nat
40
+ open nat
41
+
42
+ lemma lt_succ_iff {n i : ℕ } : n < i.succ ↔ (n < i ∨ n = i) :=
43
+ calc n < i.succ ↔ n ≤ i : succ_le_succ_iff _ _
44
+ ... ↔ (n + 1 ≤ i ∨ n = i) : iff.intro
45
+ (assume h : n ≤ i, match le.dest h with
46
+ | ⟨zero, h⟩ := by simp at h; simp [*]
47
+ | ⟨succ k, h⟩ := or.inl $ h ▸ add_le_add_left (le_add_left _ _) _
48
+ end )
49
+ (or.rec (assume h, le_trans (le_add_right _ _) h) le_of_eq)
50
+
51
+ end nat
52
+
53
+ open set
13
54
14
55
structure measurable_space (α : Type u) :=
15
56
(is_measurable : set α → Prop )
@@ -19,9 +60,6 @@ structure measurable_space (α : Type u) :=
19
60
20
61
attribute [class] measurable_space
21
62
22
- variables {α : Type u} {β : Type v} {γ : Type w} {ι : Sort x}
23
- {s t u : set α}
24
-
25
63
section
26
64
variable [m : measurable_space α]
27
65
include m
@@ -33,6 +71,10 @@ lemma is_measurable_empty : is_measurable (∅ : set α) := m.is_measurable_empt
33
71
lemma is_measurable_compl : is_measurable s → is_measurable (-s) :=
34
72
m.is_measurable_compl s
35
73
74
+ lemma is_measurable_univ : is_measurable (univ : set α) :=
75
+ have is_measurable (- ∅ : set α), from is_measurable_compl is_measurable_empty,
76
+ by simp * at *
77
+
36
78
lemma is_measurable_Union_nat {f : ℕ → set α} : (∀i, is_measurable (f i)) → is_measurable (⋃i, f i) :=
37
79
m.is_measurable_Union f
38
80
@@ -112,6 +154,7 @@ lemma measurable_space_eq :
112
154
by subst this
113
155
114
156
namespace measurable_space
157
+
115
158
section complete_lattice
116
159
117
160
instance : partial_order (measurable_space α) :=
@@ -121,6 +164,34 @@ instance : partial_order (measurable_space α) :=
121
164
le_trans := assume a b c, le_trans,
122
165
le_antisymm := assume a b h₁ h₂, measurable_space_eq $ assume s, ⟨h₁ s, h₂ s⟩ }
123
166
167
+ section generated_from
168
+
169
+ inductive generate_measurable (s : set (set α)) : set α → Prop
170
+ | basic : ∀u∈s, generate_measurable u
171
+ | empty : generate_measurable ∅
172
+ | compl : ∀s, generate_measurable s → generate_measurable (-s)
173
+ | union : ∀f:ℕ → set α, (∀n, generate_measurable (f n)) → generate_measurable (⋃i, f i)
174
+
175
+ def generate_from (s : set (set α)) : measurable_space α :=
176
+ {measurable_space .
177
+ is_measurable := generate_measurable s,
178
+ is_measurable_empty := generate_measurable.empty s,
179
+ is_measurable_compl := generate_measurable.compl,
180
+ is_measurable_Union := generate_measurable.union }
181
+
182
+ lemma is_measurable_generate_from {s : set (set α)} {t : set α} (ht : t ∈ s) :
183
+ (generate_from s).is_measurable t :=
184
+ generate_measurable.basic t ht
185
+
186
+ lemma generate_from_le {s : set (set α)} {m : measurable_space α} (h : ∀t∈s, m.is_measurable t) :
187
+ generate_from s ≤ m :=
188
+ assume t (ht : generate_measurable s t), ht.rec_on h
189
+ (is_measurable_empty m)
190
+ (assume s _ hs, is_measurable_compl m s hs)
191
+ (assume f _ hf, is_measurable_Union m f hf)
192
+
193
+ end generated_from
194
+
124
195
instance : has_top (measurable_space α) :=
125
196
⟨{measurable_space .
126
197
is_measurable := λs, true,
@@ -267,6 +338,10 @@ lemma measurable_comp [measurable_space α] [measurable_space β] [measurable_sp
267
338
{f : α → β} {g : β → γ} (hf : measurable f) (hg : measurable g) : measurable (g ∘ f) :=
268
339
le_trans hg $ map_mono hf
269
340
341
+ lemma measurable_generate_from [measurable_space α] {s : set (set β)} {f : α → β}
342
+ (h : ∀t∈s, is_measurable (f ⁻¹' t)) : @measurable _ _ _ (generate_from s) f :=
343
+ generate_from_le h
344
+
270
345
end measurable_functions
271
346
272
347
section constructions
@@ -290,3 +365,193 @@ instance {β : α → Type v} [m : Πa, measurable_space (β a)] : measurable_sp
290
365
⨅a, (m a).map (sigma.mk a)
291
366
292
367
end constructions
368
+
369
+ namespace measurable_space
370
+
371
+ /-- Dynkin systems
372
+ The main purpose of Dynkin systems is to provide a powerful induction rule for σ-algebras generated
373
+ by intersection stable set systems.
374
+ -/
375
+ structure dynkin_system (α : Type *) :=
376
+ (has : set α → Prop )
377
+ (has_empty : has ∅)
378
+ (has_compl : ∀{a}, has a → has (-a))
379
+ (has_Union : ∀{f:ℕ → set α}, (∀i j, i ≠ j → f i ∩ f j = ∅) → (∀i, has (f i)) → has (⋃i, f i))
380
+
381
+ namespace dynkin_system
382
+
383
+ lemma dynkin_system_eq :
384
+ ∀{d₁ d₂ : dynkin_system α}, (∀s:set α, d₁.has s ↔ d₂.has s) → d₁ = d₂
385
+ | ⟨s₁, _, _, _⟩ ⟨s₂, _, _, _⟩ h :=
386
+ have s₁ = s₂, from funext $ assume x, propext $ h x,
387
+ by subst this
388
+
389
+ instance : partial_order (dynkin_system α) :=
390
+ { partial_order .
391
+ le := λm₁ m₂, m₁.has ≤ m₂.has,
392
+ le_refl := assume a b, le_refl _,
393
+ le_trans := assume a b c, le_trans,
394
+ le_antisymm := assume a b h₁ h₂, dynkin_system_eq $ assume s, ⟨h₁ s, h₂ s⟩ }
395
+
396
+ def of_measurable_space (m : measurable_space α) : dynkin_system α :=
397
+ { dynkin_system .
398
+ has := m.is_measurable,
399
+ has_empty := m.is_measurable_empty,
400
+ has_compl := m.is_measurable_compl,
401
+ has_Union := assume f _ hf, m.is_measurable_Union f hf }
402
+
403
+ lemma of_measurable_space_le_of_measurable_space_iff {m₁ m₂ : measurable_space α} :
404
+ of_measurable_space m₁ ≤ of_measurable_space m₂ ↔ m₁ ≤ m₂ :=
405
+ iff.refl _
406
+
407
+ inductive generate_has (s : set (set α)) : set α → Prop
408
+ | basic : ∀t∈s, generate_has t
409
+ | empty : generate_has ∅
410
+ | compl : ∀{a}, generate_has a → generate_has (-a)
411
+ | Union : ∀{f:ℕ → set α}, (∀i j, i ≠ j → f i ∩ f j = ∅) →
412
+ (∀i, generate_has (f i)) → generate_has (⋃i, f i)
413
+
414
+ def generate (s : set (set α)) : dynkin_system α :=
415
+ { dynkin_system .
416
+ has := generate_has s,
417
+ has_empty := generate_has.empty s,
418
+ has_compl := assume a, generate_has.compl,
419
+ has_Union := assume f, generate_has.Union }
420
+
421
+ section internal
422
+ parameters {δ : Type *} (d : dynkin_system δ)
423
+
424
+ lemma has_univ : d.has univ :=
425
+ have d.has (- ∅), from d.has_compl d.has_empty,
426
+ by simp * at *
427
+
428
+ lemma has_union {s₁ s₂ : set δ} (h₁ : d.has s₁) (h₂ : d.has s₂) (h : s₁ ∩ s₂ = ∅) : d.has (s₁ ∪ s₂) :=
429
+ let f := [s₁, s₂].inth in
430
+ have hf0 : f 0 = s₁, from rfl,
431
+ have hf1 : f 1 = s₂, from rfl,
432
+ have hf2 : ∀n:ℕ, f n.succ.succ = ∅, from assume n, rfl,
433
+ have (∀i j, i ≠ j → f i ∩ f j = ∅),
434
+ from assume i, i.two_step_induction
435
+ (assume j, j.two_step_induction (by simp) (by simp [hf0, hf1, h]) (by simp [hf2]))
436
+ (assume j, j.two_step_induction (by simp [hf0, hf1, h]) (by simp) (by simp [hf2]))
437
+ (by simp [hf2]),
438
+ have eq : s₁ ∪ s₂ = (⋃i, f i),
439
+ from subset.antisymm (union_subset (le_supr f 0 ) (le_supr f 1 )) $
440
+ Union_subset $ assume i,
441
+ match i with
442
+ | 0 := subset_union_left _ _
443
+ | 1 := subset_union_right _ _
444
+ | nat.succ (nat.succ n) := by simp [hf2]
445
+ end ,
446
+ by rw [eq]; exact d.has_Union this (assume i,
447
+ match i with
448
+ | 0 := h₁
449
+ | 1 := h₂
450
+ | nat.succ (nat.succ n) := by simp [d.has_empty, hf2]
451
+ end )
452
+
453
+ lemma has_sdiff {s₁ s₂ : set δ} (h₁ : d.has s₁) (h₂ : d.has s₂) (h : s₂ ⊆ s₁) : d.has (s₁ - s₂) :=
454
+ have d.has (- (s₂ ∪ -s₁)),
455
+ from d.has_compl $ d.has_union h₂ (d.has_compl h₁) $ eq_empty_of_forall_not_mem $
456
+ assume x ⟨h₁, h₂⟩, h₂ $ h h₁,
457
+ have s₁ - s₂ = - (s₂ ∪ -s₁),
458
+ by rw [compl_union, compl_compl, inter_comm]; refl,
459
+ by rwa [this ]
460
+
461
+ def to_measurable_space (h_inter : ∀s₁ s₂, d.has s₁ → d.has s₂ → d.has (s₁ ∩ s₂)) :=
462
+ { measurable_space .
463
+ is_measurable := d.has,
464
+ is_measurable_empty := d.has_empty,
465
+ is_measurable_compl := assume s h, d.has_compl h,
466
+ is_measurable_Union := assume f hf,
467
+ have h_diff : ∀{s₁ s₂}, d.has s₁ → d.has s₂ → d.has (s₁ - s₂),
468
+ from assume s₁ s₂ h₁ h₂, h_inter _ _ h₁ (d.has_compl h₂),
469
+ have ∀n, d.has (disjointed f n),
470
+ from assume n, h_inter _ _ (hf n)
471
+ begin
472
+ induction n,
473
+ case nat.zero {
474
+ have h : (⋂ (i : ℕ) (H : i < 0 ), -f i) = univ,
475
+ { apply eq_univ_of_forall,
476
+ simp [mem_Inter, nat.not_lt_zero] },
477
+ simp [h, d.has_univ] },
478
+ case nat.succ n ih {
479
+ have h : (⨅ (i : ℕ) (H : i < n.succ), -f i) = (⨅ (i : ℕ) (H : i < n), -f i) ⊓ - f n,
480
+ by simp [nat.lt_succ_iff, infi_or, infi_inf_eq, inf_comm],
481
+ change (⋂ (i : ℕ) (H : i < n.succ), -f i) = (⋂ (i : ℕ) (H : i < n), -f i) ∩ - f n at h,
482
+ rw [h],
483
+ exact h_inter _ _ ih (d.has_compl $ hf _) },
484
+ end ,
485
+ have d.has (⋃n, disjointed f n), from d.has_Union (assume i j, disjoint_disjointed) this ,
486
+ by rwa [disjointed_Union] at this }
487
+
488
+ lemma of_measurable_space_to_measurable_space
489
+ (h_inter : ∀s₁ s₂, d.has s₁ → d.has s₂ → d.has (s₁ ∩ s₂)) :
490
+ of_measurable_space (d.to_measurable_space h_inter) = d :=
491
+ dynkin_system_eq $ assume s, iff.refl _
492
+
493
+ def restrict_on {s : set δ} (h : d.has s) : dynkin_system δ :=
494
+ { dynkin_system .
495
+ has := λt, d.has (t ∩ s),
496
+ has_empty := by simp [d.has_empty],
497
+ has_compl := assume t hts,
498
+ have -t ∩ s = (- (t ∩ s)) \ -s,
499
+ from set.ext $ assume x, by by_cases x ∈ s; simp [h],
500
+ by rw [this ]; from d.has_sdiff (d.has_compl hts) (d.has_compl h)
501
+ (compl_subset_compl_iff_subset.mpr $ inter_subset_right _ _),
502
+ has_Union := assume f hd hf,
503
+ begin
504
+ rw [inter_comm, inter_distrib_Union_left],
505
+ apply d.has_Union,
506
+ exact assume i j h,
507
+ calc s ∩ f i ∩ (s ∩ f j) = s ∩ s ∩ (f i ∩ f j) : by cc
508
+ ... = ∅ : by rw [hd i j h]; simp,
509
+ intro i, rw [inter_comm], exact hf i
510
+ end }
511
+
512
+ lemma generate_le {s : set (set δ)} (h : ∀t∈s, d.has t) : generate s ≤ d :=
513
+ assume t ht,
514
+ ht.rec_on h d.has_empty (assume a _ h, d.has_compl h) (assume f hd _ hf, d.has_Union hd hf)
515
+
516
+ end internal
517
+
518
+ lemma generate_inter {s : set (set α)}
519
+ (hs : ∀t₁ t₂, t₁ ∈ s → t₂ ∈ s → t₁ ∩ t₂ ∈ s) {t₁ t₂ : set α}
520
+ (ht₁ : (generate s).has t₁) (ht₂ : (generate s).has t₂) : (generate s).has (t₁ ∩ t₂) :=
521
+ have generate s ≤ (generate s).restrict_on ht₂,
522
+ from generate_le _ $ assume s₁ hs₁,
523
+ have (generate s).has s₁, from generate_has.basic s₁ hs₁,
524
+ have generate s ≤ (generate s).restrict_on this ,
525
+ from generate_le _ $ assume s₂ hs₂, show (generate s).has (s₂ ∩ s₁),
526
+ from generate_has.basic _ (hs _ _ hs₂ hs₁),
527
+ have (generate s).has (t₂ ∩ s₁), from this _ ht₂,
528
+ show (generate s).has (s₁ ∩ t₂), by rwa [inter_comm],
529
+ this _ ht₁
530
+
531
+ lemma generate_from_eq {s : set (set α)}
532
+ (hs : ∀t₁ t₂, t₁ ∈ s → t₂ ∈ s → t₁ ∩ t₂ ∈ s) :
533
+ generate_from s = (generate s).to_measurable_space (assume t₁ t₂, generate_inter hs) :=
534
+ le_antisymm
535
+ (generate_from_le $ assume t ht, generate_has.basic t ht)
536
+ (of_measurable_space_le_of_measurable_space_iff.mp $
537
+ by rw [of_measurable_space_to_measurable_space];
538
+ from (generate_le _ $ assume t ht, is_measurable_generate_from ht))
539
+
540
+ end dynkin_system
541
+
542
+ lemma induction_on_inter {C : set α → Prop } {s : set (set α)} {m : measurable_space α}
543
+ (h_eq : m = generate_from s)
544
+ (h_inter : ∀t₁ t₂, t₁ ∈ s → t₂ ∈ s → t₁ ∩ t₂ ∈ s)
545
+ (h_empty : C ∅) (h_basic : ∀t∈s, C t) (h_compl : ∀t, m.is_measurable t → C t → C (- t))
546
+ (h_union : ∀f:ℕ → set α, (∀i j, i ≠ j → f i ∩ f j = ∅) →
547
+ (∀i, m.is_measurable (f i)) → (∀i, C (f i)) → C (⋃i, f i)) :
548
+ ∀{t}, m.is_measurable t → C t :=
549
+ have eq : m.is_measurable = dynkin_system.generate_has s,
550
+ by rw [h_eq, dynkin_system.generate_from_eq h_inter]; refl,
551
+ assume t ht,
552
+ have dynkin_system.generate_has s t, by rwa [eq] at ht,
553
+ this.rec_on h_basic h_empty
554
+ (assume t ht, h_compl t $ by rw [eq]; exact ht)
555
+ (assume f hf ht, h_union f hf $ assume i, by rw [eq]; exact ht _)
556
+
557
+ end measurable_space
0 commit comments