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

Commit 9969321

Browse files
committed
feat(measure_theory/probability_mass_function): Lemmas connecting pmf.support and pmf.to_measure (#11842)
Add lemmas relating the support of a `pmf` to the measures of sets under the induced measure.
1 parent 612ca40 commit 9969321

File tree

1 file changed

+81
-30
lines changed
  • src/measure_theory/probability_mass_function

1 file changed

+81
-30
lines changed

src/measure_theory/probability_mass_function/basic.lean

Lines changed: 81 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -67,37 +67,66 @@ open measure_theory measure_theory.outer_measure
6767
def to_outer_measure (p : pmf α) : outer_measure α :=
6868
outer_measure.sum (λ (x : α), p x • dirac x)
6969

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 :=
7273
tsum_congr (λ x, smul_dirac_apply (p x) x s)
7374

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) :=
7676
by simp only [ennreal.coe_tsum (nnreal.indicator_summable (summable_coe p) s),
7777
ennreal.coe_indicator, to_outer_measure_apply]
7878

7979
@[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) :=
8281
begin
8382
refine (to_outer_measure_apply p s).trans ((@tsum_eq_sum _ _ _ _ _ _ s _).trans _),
8483
{ exact λ x hx, set.indicator_of_not_mem hx _ },
8584
{ exact finset.sum_congr rfl (λ x hx, set.indicator_of_mem hx _) }
8685
end
8786

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 :=
9588
begin
9689
rw [to_outer_measure_apply', ennreal.coe_eq_zero,
9790
tsum_eq_zero_iff (nnreal.indicator_summable (summable_coe p) s)],
9891
exact function.funext_iff.symm.trans set.indicator_eq_zero',
9992
end
10093

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+
101130
@[simp]
102131
lemma to_outer_measure_caratheodory (p : pmf α) :
103132
(to_outer_measure p).caratheodory = ⊤ :=
@@ -119,41 +148,63 @@ open measure_theory
119148
def to_measure [measurable_space α] (p : pmf α) : measure α :=
120149
p.to_outer_measure.to_measure ((to_outer_measure_caratheodory p).symm ▸ le_top)
121150

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
123155

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) :
125157
p.to_measure s = p.to_outer_measure s :=
126158
to_measure_apply p.to_outer_measure _ hs
127159

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 :=
134161
(p.to_measure_apply_eq_to_outer_measure_apply s hs).trans (p.to_outer_measure_apply s)
135162

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) :=
138164
(p.to_measure_apply_eq_to_outer_measure_apply s hs).trans (p.to_outer_measure_apply' s)
139165

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+
140170
@[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∞) :=
143192
(p.to_measure_apply_eq_to_outer_measure_apply s s.measurable_set).trans
144193
(p.to_outer_measure_apply_finset s)
145194

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) :=
148197
(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)
150199

151200
@[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) :=
154203
(p.to_measure_apply_eq_to_outer_measure_apply s (set.finite.of_fintype s).measurable_set).trans
155204
(p.to_outer_measure_apply_fintype s)
156205

206+
end measurable_singleton_class
207+
157208
/-- The measure associated to a `pmf` by `to_measure` is a probability measure -/
158209
instance to_measure.is_probability_measure (p : pmf α) : is_probability_measure (p.to_measure) :=
159210
by simpa only [measurable_set.univ, to_measure_apply_eq_to_outer_measure_apply, set.indicator_univ,

0 commit comments

Comments
 (0)