@@ -67,37 +67,66 @@ open measure_theory measure_theory.outer_measure
67
67
def to_outer_measure (p : pmf α) : outer_measure α :=
68
68
outer_measure.sum (λ (x : α), p x • dirac x)
69
69
70
- lemma to_outer_measure_apply (p : pmf α) (s : set α) :
71
- p.to_outer_measure s = ∑' x, s.indicator (λ x, (p x : ℝ≥0 ∞)) x :=
70
+ variables (p : pmf α) (s t : set α)
71
+
72
+ lemma to_outer_measure_apply : p.to_outer_measure s = ∑' x, s.indicator (coe ∘ p) x :=
72
73
tsum_congr (λ x, smul_dirac_apply (p x) x s)
73
74
74
- lemma to_outer_measure_apply' (p : pmf α) (s : set α) :
75
- p.to_outer_measure s = ↑(∑' (x : α), s.indicator p x) :=
75
+ lemma to_outer_measure_apply' : p.to_outer_measure s = ↑(∑' (x : α), s.indicator p x) :=
76
76
by simp only [ennreal.coe_tsum (nnreal.indicator_summable (summable_coe p) s),
77
77
ennreal.coe_indicator, to_outer_measure_apply]
78
78
79
79
@[simp]
80
- lemma to_outer_measure_apply_finset (p : pmf α) (s : finset α) :
81
- p.to_outer_measure s = ∑ x in s, (p x : ℝ≥0 ∞) :=
80
+ lemma to_outer_measure_apply_finset (s : finset α) : p.to_outer_measure s = ∑ x in s, ↑(p x) :=
82
81
begin
83
82
refine (to_outer_measure_apply p s).trans ((@tsum_eq_sum _ _ _ _ _ _ s _).trans _),
84
83
{ exact λ x hx, set.indicator_of_not_mem hx _ },
85
84
{ exact finset.sum_congr rfl (λ x hx, set.indicator_of_mem hx _) }
86
85
end
87
86
88
- @[simp]
89
- lemma to_outer_measure_apply_fintype [fintype α] (p : pmf α) (s : set α) :
90
- p.to_outer_measure s = ∑ x, (s.indicator (λ x, (p x : ℝ≥0 ∞)) x) :=
91
- (p.to_outer_measure_apply s).trans (tsum_eq_sum (λ x h, absurd (finset.mem_univ x) h))
92
-
93
- lemma to_outer_measure_apply_eq_zero_iff (p : pmf α) (s : set α) :
94
- p.to_outer_measure s = 0 ↔ disjoint p.support s :=
87
+ lemma to_outer_measure_apply_eq_zero_iff : p.to_outer_measure s = 0 ↔ disjoint p.support s :=
95
88
begin
96
89
rw [to_outer_measure_apply', ennreal.coe_eq_zero,
97
90
tsum_eq_zero_iff (nnreal.indicator_summable (summable_coe p) s)],
98
91
exact function.funext_iff.symm.trans set.indicator_eq_zero',
99
92
end
100
93
94
+ lemma to_outer_measure_apply_eq_one_iff : p.to_outer_measure s = 1 ↔ p.support ⊆ s :=
95
+ begin
96
+ rw [to_outer_measure_apply', ennreal.coe_eq_one],
97
+ refine ⟨λ h a ha, _, λ h, _⟩,
98
+ { have hsp : ∀ x, s.indicator p x ≤ p x := λ _, set.indicator_apply_le (λ _, le_rfl),
99
+ have := λ hpa, ne_of_lt (nnreal.tsum_lt_tsum hsp hpa p.summable_coe) (h.trans p.tsum_coe.symm),
100
+ exact not_not.1 (λ has, ha $ set.indicator_apply_eq_self.1 (le_antisymm
101
+ (set.indicator_apply_le $ λ _, le_rfl) $ le_of_not_lt $ this ) has) },
102
+ { suffices : ∀ x, x ∉ s → p x = 0 ,
103
+ from trans (tsum_congr $ λ a, (set.indicator_apply s p a).trans
104
+ (ite_eq_left_iff.2 $ symm ∘ (this a))) p.tsum_coe,
105
+ exact λ a ha, (p.apply_eq_zero_iff a).2 $ set.not_mem_subset h ha }
106
+ end
107
+
108
+ @[simp]
109
+ lemma to_outer_measure_apply_inter_support :
110
+ p.to_outer_measure (s ∩ p.support) = p.to_outer_measure s :=
111
+ by simp only [to_outer_measure_apply', ennreal.coe_eq_coe,
112
+ pmf.support, set.indicator_inter_support]
113
+
114
+ /-- Slightly stronger than `outer_measure.mono` having an intersection with `p.support` -/
115
+ lemma to_outer_measure_mono {s t : set α} (h : s ∩ p.support ⊆ t) :
116
+ p.to_outer_measure s ≤ p.to_outer_measure t :=
117
+ le_trans (le_of_eq (to_outer_measure_apply_inter_support p s).symm) (p.to_outer_measure.mono h)
118
+
119
+ lemma to_outer_measure_apply_eq_of_inter_support_eq {s t : set α}
120
+ (h : s ∩ p.support = t ∩ p.support) : p.to_outer_measure s = p.to_outer_measure t :=
121
+ le_antisymm (p.to_outer_measure_mono (h.symm ▸ (set.inter_subset_left t p.support)))
122
+ (p.to_outer_measure_mono (h ▸ (set.inter_subset_left s p.support)))
123
+
124
+ @[simp]
125
+ lemma to_outer_measure_apply_fintype [fintype α] :
126
+ p.to_outer_measure s = ↑(∑ x, (s.indicator p x)) :=
127
+ (p.to_outer_measure_apply' s).trans
128
+ (ennreal.coe_eq_coe.2 $ tsum_eq_sum (λ x h, absurd (finset.mem_univ x) h))
129
+
101
130
@[simp]
102
131
lemma to_outer_measure_caratheodory (p : pmf α) :
103
132
(to_outer_measure p).caratheodory = ⊤ :=
@@ -119,41 +148,63 @@ open measure_theory
119
148
def to_measure [measurable_space α] (p : pmf α) : measure α :=
120
149
p.to_outer_measure.to_measure ((to_outer_measure_caratheodory p).symm ▸ le_top)
121
150
122
- variables [measurable_space α]
151
+ variables [measurable_space α] (p : pmf α) (s t : set α)
152
+
153
+ lemma to_outer_measure_apply_le_to_measure_apply : p.to_outer_measure s ≤ p.to_measure s :=
154
+ le_to_measure_apply p.to_outer_measure _ s
123
155
124
- lemma to_measure_apply_eq_to_outer_measure_apply (p : pmf α) (s : set α) ( hs : measurable_set s) :
156
+ lemma to_measure_apply_eq_to_outer_measure_apply (hs : measurable_set s) :
125
157
p.to_measure s = p.to_outer_measure s :=
126
158
to_measure_apply p.to_outer_measure _ hs
127
159
128
- lemma to_outer_measure_apply_le_to_measure_apply (p : pmf α) (s : set α) :
129
- p.to_outer_measure s ≤ p.to_measure s :=
130
- le_to_measure_apply p.to_outer_measure _ s
131
-
132
- lemma to_measure_apply (p : pmf α) (s : set α) (hs : measurable_set s) :
133
- p.to_measure s = ∑' x, s.indicator (λ x, (p x : ℝ≥0 ∞)) x :=
160
+ lemma to_measure_apply (hs : measurable_set s) : p.to_measure s = ∑' x, s.indicator (coe ∘ p) x :=
134
161
(p.to_measure_apply_eq_to_outer_measure_apply s hs).trans (p.to_outer_measure_apply s)
135
162
136
- lemma to_measure_apply' (p : pmf α) (s : set α) (hs : measurable_set s) :
137
- p.to_measure s = ↑(∑' x, s.indicator p x) :=
163
+ lemma to_measure_apply' (hs : measurable_set s) : p.to_measure s = ↑(∑' x, s.indicator p x) :=
138
164
(p.to_measure_apply_eq_to_outer_measure_apply s hs).trans (p.to_outer_measure_apply' s)
139
165
166
+ lemma to_measure_apply_eq_one_iff (hs : measurable_set s) : p.to_measure s = 1 ↔ p.support ⊆ s :=
167
+ (p.to_measure_apply_eq_to_outer_measure_apply s hs : p.to_measure s = p.to_outer_measure s).symm
168
+ ▸ (p.to_outer_measure_apply_eq_one_iff s)
169
+
140
170
@[simp]
141
- lemma to_measure_apply_finset [measurable_singleton_class α] (p : pmf α) (s : finset α) :
142
- p.to_measure s = ∑ x in s, (p x : ℝ≥0 ∞) :=
171
+ lemma to_measure_apply_inter_support (hs : measurable_set s) (hp : measurable_set p.support) :
172
+ p.to_measure (s ∩ p.support) = p.to_measure s :=
173
+ by simp [p.to_measure_apply_eq_to_outer_measure_apply s hs,
174
+ p.to_measure_apply_eq_to_outer_measure_apply _ (hs.inter hp)]
175
+
176
+ lemma to_measure_mono {s t : set α} (hs : measurable_set s) (ht : measurable_set t)
177
+ (h : s ∩ p.support ⊆ t) : p.to_measure s ≤ p.to_measure t :=
178
+ by simpa only [p.to_measure_apply_eq_to_outer_measure_apply, hs, ht]
179
+ using to_outer_measure_mono p h
180
+
181
+ lemma to_measure_apply_eq_of_inter_support_eq {s t : set α} (hs : measurable_set s)
182
+ (ht : measurable_set t) (h : s ∩ p.support = t ∩ p.support) : p.to_measure s = p.to_measure t :=
183
+ by simpa only [p.to_measure_apply_eq_to_outer_measure_apply, hs, ht]
184
+ using to_outer_measure_apply_eq_of_inter_support_eq p h
185
+
186
+ section measurable_singleton_class
187
+
188
+ variables [measurable_singleton_class α]
189
+
190
+ @[simp]
191
+ lemma to_measure_apply_finset (s : finset α) : p.to_measure s = ∑ x in s, (p x : ℝ≥0 ∞) :=
143
192
(p.to_measure_apply_eq_to_outer_measure_apply s s.measurable_set).trans
144
193
(p.to_outer_measure_apply_finset s)
145
194
146
- lemma to_measure_apply_of_finite [measurable_singleton_class α] (p : pmf α) (s : set α)
147
- (hs : s.finite) : p.to_measure s = ∑' x, s.indicator (λ x, ( p x : ℝ≥ 0 ∞)) x :=
195
+ lemma to_measure_apply_of_finite (hs : s.finite) :
196
+ p.to_measure s = ↑( ∑' x, s.indicator p x) :=
148
197
(p.to_measure_apply_eq_to_outer_measure_apply s hs.measurable_set).trans
149
- (p.to_outer_measure_apply s)
198
+ (p.to_outer_measure_apply' s)
150
199
151
200
@[simp]
152
- lemma to_measure_apply_fintype [measurable_singleton_class α] [ fintype α] (p : pmf α) (s : set α) :
153
- p.to_measure s = ∑ x, s.indicator (λ x, ( p x : ℝ≥ 0 ∞)) x :=
201
+ lemma to_measure_apply_fintype [fintype α] :
202
+ p.to_measure s = ↑( ∑ x, s.indicator p x) :=
154
203
(p.to_measure_apply_eq_to_outer_measure_apply s (set.finite.of_fintype s).measurable_set).trans
155
204
(p.to_outer_measure_apply_fintype s)
156
205
206
+ end measurable_singleton_class
207
+
157
208
/-- The measure associated to a `pmf` by `to_measure` is a probability measure -/
158
209
instance to_measure.is_probability_measure (p : pmf α) : is_probability_measure (p.to_measure) :=
159
210
⟨by simpa only [measurable_set.univ, to_measure_apply_eq_to_outer_measure_apply, set.indicator_univ,
0 commit comments