@@ -7,6 +7,7 @@ import data.set.disjointed
7
7
import data.set.countable
8
8
import data.indicator_function
9
9
import data.equiv.encodable.lattice
10
+ import order.filter.basic
10
11
11
12
/-!
12
13
# Measurable spaces and measurable functions
@@ -30,6 +31,9 @@ A measurable equivalence between measurable spaces is an equivalence
30
31
which respects the σ-algebras, that is, for which both directions of
31
32
the equivalence are measurable functions.
32
33
34
+ We say that a filter `f` is measurably generated if every set `s ∈ f` includes a measurable
35
+ set `t ∈ f`. This property is useful, e.g., to extract a measurable witness of `filter.eventually`.
36
+
33
37
## Main statements
34
38
35
39
The main theorem of this file is Dynkin's π-λ theorem, which appears
@@ -59,7 +63,7 @@ measurable space, measurable function, dynkin system
59
63
60
64
local attribute [instance] classical.prop_decidable
61
65
open set encodable
62
- open_locale classical
66
+ open_locale classical filter
63
67
64
68
universes u v w x
65
69
variables {α : Type u} {β : Type v} {γ : Type w} {δ : Type x} {ι : Sort x}
@@ -1075,3 +1079,58 @@ this.rec_on h_basic h_empty
1075
1079
(assume f hf ht, h_union f hf $ assume i, by rw [eq]; exact ht _)
1076
1080
1077
1081
end measurable_space
1082
+
1083
+ namespace filter
1084
+
1085
+ variables [measurable_space α]
1086
+
1087
+ /-- A filter `f` is measurably generates if each `s ∈ f` includes a measurable `t ∈ f`. -/
1088
+ class is_measurably_generated (f : filter α) : Prop :=
1089
+ (exists_measurable_subset : ∀ ⦃s⦄, s ∈ f → ∃ t ∈ f, is_measurable t ∧ t ⊆ s)
1090
+
1091
+ lemma eventually.exists_measurable_mem {f : filter α} [is_measurably_generated f]
1092
+ {p : α → Prop } (h : ∀ᶠ x in f, p x) :
1093
+ ∃ s ∈ f, is_measurable s ∧ ∀ x ∈ s, p x :=
1094
+ is_measurably_generated.exists_measurable_subset h
1095
+
1096
+ instance inf_is_measurably_generated (f g : filter α) [is_measurably_generated f]
1097
+ [is_measurably_generated g] :
1098
+ is_measurably_generated (f ⊓ g) :=
1099
+ begin
1100
+ refine ⟨_⟩,
1101
+ rintros t ⟨sf, hsf, sg, hsg, ht⟩,
1102
+ rcases is_measurably_generated.exists_measurable_subset hsf with ⟨s'f, hs'f, hmf, hs'sf⟩,
1103
+ rcases is_measurably_generated.exists_measurable_subset hsg with ⟨s'g, hs'g, hmg, hs'sg⟩,
1104
+ refine ⟨s'f ∩ s'g, inter_mem_inf_sets hs'f hs'g, hmf.inter hmg, _⟩,
1105
+ exact subset.trans (inter_subset_inter hs'sf hs'sg) ht
1106
+ end
1107
+
1108
+ lemma principal_is_measurably_generated_iff {s : set α} :
1109
+ is_measurably_generated (𝓟 s) ↔ is_measurable s :=
1110
+ begin
1111
+ refine ⟨_, λ hs, ⟨λ t ht, ⟨s, mem_principal_self s, hs, ht⟩⟩⟩,
1112
+ rintros ⟨hs⟩,
1113
+ rcases hs (mem_principal_self s) with ⟨t, ht, htm, hts⟩,
1114
+ have : t = s := subset.antisymm hts ht,
1115
+ rwa ← this
1116
+ end
1117
+
1118
+ alias principal_is_measurably_generated_iff ↔
1119
+ _ is_measurable.principal_is_measurably_generated
1120
+
1121
+ instance infi_is_measurably_generated {f : ι → filter α} [∀ i, is_measurably_generated (f i)] :
1122
+ is_measurably_generated (⨅ i, f i) :=
1123
+ begin
1124
+ refine ⟨λ s hs, _⟩,
1125
+ rw [← equiv.plift.surjective.infi_comp, mem_infi_iff] at hs,
1126
+ rcases hs with ⟨t, ht, ⟨V, hVf, hVs⟩⟩,
1127
+ choose U hUf hU using λ i, is_measurably_generated.exists_measurable_subset (hVf i),
1128
+ refine ⟨⋂ i : t, U i, _, _, _⟩,
1129
+ { rw [← equiv.plift.surjective.infi_comp, mem_infi_iff],
1130
+ refine ⟨t, ht, U, hUf, subset.refl _⟩ },
1131
+ { haveI := ht.countable.to_encodable,
1132
+ refine is_measurable.Inter (λ i, (hU i).1 ) },
1133
+ { exact subset.trans (Inter_subset_Inter $ λ i, (hU i).2 ) hVs }
1134
+ end
1135
+
1136
+ end filter
0 commit comments