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

Commit 0039a19

Browse files
committed
feat(probability/independence): two tuples indexed by disjoint subsets of an independent family of r.v. are independent (#15131)
If `f` is a family of independent random variables and `S,T` are two disjoint finsets, then we have `indep_fun (λ a (i : S), f i a) (λ a (i : T), f i a) μ`. Also golf `indep_fun_iff_measure_inter_preimage_eq_mul` and add its `Indep` version: `Indep_fun_iff_measure_inter_preimage_eq_mul`.
1 parent d6d3d61 commit 0039a19

File tree

2 files changed

+143
-26
lines changed

2 files changed

+143
-26
lines changed

src/measure_theory/pi_system.lean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,18 @@ begin
101101
{ exact set.mem_insert_of_mem _ (h_pi s hs t ht hst), }, },
102102
end
103103

104+
lemma is_pi_system.comap {α β} {S : set (set β)} (h_pi : is_pi_system S) (f : α → β) :
105+
is_pi_system {s : set α | ∃ t ∈ S, f ⁻¹' t = s} :=
106+
begin
107+
rintros _ ⟨s, hs_mem, rfl⟩ _ ⟨t, ht_mem, rfl⟩ hst,
108+
rw ← set.preimage_inter at hst ⊢,
109+
refine ⟨s ∩ t, h_pi s hs_mem t ht_mem _, rfl⟩,
110+
by_contra,
111+
rw set.not_nonempty_iff_eq_empty at h,
112+
rw h at hst,
113+
simpa using hst,
114+
end
115+
104116
section order
105117

106118
variables {α : Type*} {ι ι' : Sort*} [linear_order α]

src/probability/independence.lean

Lines changed: 131 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Rémy Degenne
55
-/
66
import algebra.big_operators.intervals
7-
import measure_theory.measure.measure_space
7+
import measure_theory.constructions.pi
88

99
/-!
1010
# Independence of sets of sets and measure spaces (σ-algebras)
@@ -237,6 +237,12 @@ begin
237237
exact Indep_sets.indep_sets h_indep hij,
238238
end
239239

240+
lemma Indep_fun.indep_fun {α ι : Type*} {m₀ : measurable_space α} {μ : measure α} {β : ι → Type*}
241+
{m : Π x, measurable_space (β x)} {f : Π i, α → β i} (hf_Indep : Indep_fun m f μ)
242+
{i j : ι} (hij : i ≠ j) :
243+
indep_fun (f i) (f j) μ :=
244+
hf_Indep.indep hij
245+
240246
end from_Indep_to_indep
241247

242248
/-!
@@ -436,7 +442,7 @@ variables {α : Type*} [measurable_space α] {s t : set α} (S T : set (set α))
436442
lemma indep_set_iff_indep_sets_singleton (hs_meas : measurable_set s) (ht_meas : measurable_set t)
437443
(μ : measure α . volume_tac) [is_probability_measure μ] :
438444
indep_set s t μ ↔ indep_sets {s} {t} μ :=
439-
⟨indep.indep_sets, λ h, indep_sets.indep
445+
⟨indep.indep_sets, λ h, indep_sets.indep
440446
(generate_from_le (λ u hu, by rwa set.mem_singleton_iff.mp hu))
441447
(generate_from_le (λ u hu, by rwa set.mem_singleton_iff.mp hu)) (is_pi_system.singleton s)
442448
(is_pi_system.singleton t) rfl rfl h⟩
@@ -463,41 +469,52 @@ section indep_fun
463469
variables {α β β' γ γ' : Type*} {mα : measurable_space α} {μ : measure α} {f : α → β} {g : α → β'}
464470

465471
lemma indep_fun_iff_measure_inter_preimage_eq_mul
466-
{mβ : measurable_space β} {mβ' : measurable_space β'} [is_probability_measure μ]
467-
(hf : measurable f) (hg : measurable g) :
472+
{mβ : measurable_space β} {mβ' : measurable_space β'} :
468473
indep_fun f g μ
469474
↔ ∀ s t, measurable_set s → measurable_set t
470475
→ μ (f ⁻¹' s ∩ g ⁻¹' t) = μ (f ⁻¹' s) * μ (g ⁻¹' t) :=
471476
begin
472-
let Sf := {t1 | ∃ s, measurable_set s ∧ f ⁻¹' s = t1},
473-
let Sg := {t1 | ∃ t, measurable_set t ∧ g ⁻¹' t = t1},
474-
suffices : indep_fun f g μ ↔ indep_sets Sf Sg μ,
475-
{ refine this.trans _,
476-
simp_rw [indep_sets, Sf, Sg, set.mem_set_of_eq],
477-
split; intro h,
478-
{ exact λ s t hs ht, h (f ⁻¹' s) (g ⁻¹' t) ⟨s, hs, rfl⟩ ⟨t, ht, rfl⟩, },
479-
{ rintros t1 t2 ⟨s, hs, rfl⟩ ⟨t, ht, rfl⟩,
480-
exact h s t hs ht, }, },
481-
have hSf_pi : is_pi_system Sf,
482-
{ rintros s ⟨s', hs', rfl⟩ t ⟨t', ht', rfl⟩ hst_nonempty,
483-
exact ⟨s' ∩ t', hs'.inter ht', rfl⟩, },
484-
have hSg_pi : is_pi_system Sg,
485-
{ rintros s ⟨s', hs', rfl⟩ t ⟨t', ht', rfl⟩ hst_nonempty,
486-
exact ⟨s' ∩ t', hs'.inter ht', rfl⟩, },
487-
have hSf_gen : mβ.comap f = generate_from Sf := mβ.comap_eq_generate_from f,
488-
have hSg_gen : mβ'.comap g = generate_from Sg := mβ'.comap_eq_generate_from g,
489-
rw indep_fun,
490477
split; intro h,
491-
{ rw [hSf_gen, hSg_gen] at h,
492-
exact indep.indep_sets h, },
493-
{ exact indep_sets.indep hf.comap_le hg.comap_le hSf_pi hSg_pi hSf_gen hSg_gen h, },
478+
{ refine λ s t hs ht, h (f ⁻¹' s) (g ⁻¹' t) ⟨s, hs, rfl⟩ ⟨t, ht, rfl⟩, },
479+
{ rintros _ _ ⟨s, hs, rfl⟩ ⟨t, ht, rfl⟩, exact h s t hs ht, },
480+
end
481+
482+
lemma Indep_fun_iff_measure_inter_preimage_eq_mul {ι : Type*} {β : ι → Type*}
483+
(m : Π x, measurable_space (β x)) (f : Π i, α → β i) :
484+
Indep_fun m f μ
485+
↔ ∀ (S : finset ι) {sets : Π i : ι, set (β i)} (H : ∀ i, i ∈ S → measurable_set[m i] (sets i)),
486+
μ (⋂ i ∈ S, (f i) ⁻¹' (sets i)) = ∏ i in S, μ ((f i) ⁻¹' (sets i)) :=
487+
begin
488+
refine ⟨λ h S sets h_meas, h _ (λ i hi_mem, ⟨sets i, h_meas i hi_mem, rfl⟩), _⟩,
489+
intros h S setsα h_meas,
490+
let setsβ : (Π i : ι, set (β i)) := λ i,
491+
dite (i ∈ S) (λ hi_mem, (h_meas i hi_mem).some) (λ _, set.univ),
492+
have h_measβ : ∀ i ∈ S, measurable_set[m i] (setsβ i),
493+
{ intros i hi_mem,
494+
simp_rw [setsβ, dif_pos hi_mem],
495+
exact (h_meas i hi_mem).some_spec.1, },
496+
have h_preim : ∀ i ∈ S, setsα i = (f i) ⁻¹' (setsβ i),
497+
{ intros i hi_mem,
498+
simp_rw [setsβ, dif_pos hi_mem],
499+
exact (h_meas i hi_mem).some_spec.2.symm, },
500+
have h_left_eq : μ (⋂ i ∈ S, setsα i) = μ (⋂ i ∈ S, (f i) ⁻¹' (setsβ i)),
501+
{ congr' with i x,
502+
simp only [set.mem_Inter],
503+
split; intros h hi_mem; specialize h hi_mem,
504+
{ rwa h_preim i hi_mem at h, },
505+
{ rwa h_preim i hi_mem, }, },
506+
have h_right_eq : (∏ i in S, μ (setsα i)) = ∏ i in S, μ ((f i) ⁻¹' (setsβ i)),
507+
{ refine finset.prod_congr rfl (λ i hi_mem, _),
508+
rw h_preim i hi_mem, },
509+
rw [h_left_eq, h_right_eq],
510+
exact h S h_measβ,
494511
end
495512

496513
lemma indep_fun_iff_indep_set_preimage {mβ : measurable_space β} {mβ' : measurable_space β'}
497514
[is_probability_measure μ] (hf : measurable f) (hg : measurable g) :
498515
indep_fun f g μ ↔ ∀ s t, measurable_set s → measurable_set t → indep_set (f ⁻¹' s) (g ⁻¹' t) μ :=
499516
begin
500-
refine (indep_fun_iff_measure_inter_preimage_eq_mul hf hg).trans _,
517+
refine indep_fun_iff_measure_inter_preimage_eq_mul.trans _,
501518
split; intros h s t hs ht; specialize h s t hs ht,
502519
{ rwa indep_set_iff_measure_inter_eq_mul (hf hs) (hg ht) μ, },
503520
{ rwa ← indep_set_iff_measure_inter_eq_mul (hf hs) (hg ht) μ, },
@@ -525,6 +542,94 @@ begin
525542
{ exact ⟨ψ ⁻¹' B, hψ hB, set.preimage_comp.symm⟩ }
526543
end
527544

545+
/-- If `f` is a family of mutually independent random variables (`Indep_fun m f μ`) and `S, T` are
546+
two disjoint finite index sets, then the tuple formed by `f i` for `i ∈ S` is independent of the
547+
tuple `(f i)_i` for `i ∈ T`. -/
548+
lemma Indep_fun.indep_fun_finset [is_probability_measure μ]
549+
{ι : Type*} {β : ι → Type*} {m : Π i, measurable_space (β i)}
550+
{f : Π i, α → β i} (S T : finset ι) (hST : disjoint S T) (hf_Indep : Indep_fun m f μ)
551+
(hf_meas : ∀ i, measurable (f i)) :
552+
indep_fun (λ a (i : S), f i a) (λ a (i : T), f i a) μ :=
553+
begin
554+
-- We introduce π-systems, build from the π-system of boxes which generates `measurable_space.pi`.
555+
let πSβ := (set.pi (set.univ : set S) ''
556+
(set.pi (set.univ : set S) (λ i, {s : set (β i) | measurable_set[m i] s}))),
557+
let πS := {s : set α | ∃ t ∈ πSβ, (λ a (i : S), f i a) ⁻¹' t = s},
558+
have hπS_pi : is_pi_system πS := is_pi_system_pi.comap (λ a i, f i a),
559+
have hπS_gen : measurable_space.pi.comap (λ a (i : S), f i a) = generate_from πS,
560+
{ rw [generate_from_pi.symm, comap_generate_from],
561+
{ congr' with s,
562+
simp only [set.mem_image, set.mem_set_of_eq, exists_prop], },
563+
{ exact finset.fintype_coe_sort S, }, },
564+
let πTβ := (set.pi (set.univ : set T) ''
565+
(set.pi (set.univ : set T) (λ i, {s : set (β i) | measurable_set[m i] s}))),
566+
let πT := {s : set α | ∃ t ∈ πTβ, (λ a (i : T), f i a) ⁻¹' t = s},
567+
have hπT_pi : is_pi_system πT := is_pi_system_pi.comap (λ a i, f i a),
568+
have hπT_gen : measurable_space.pi.comap (λ a (i : T), f i a) = generate_from πT,
569+
{ rw [generate_from_pi.symm, comap_generate_from],
570+
{ congr' with s,
571+
simp only [set.mem_image, set.mem_set_of_eq, exists_prop], },
572+
{ exact finset.fintype_coe_sort T, }, },
573+
574+
-- To prove independence, we prove independence of the generating π-systems.
575+
refine indep_sets.indep (measurable.comap_le (measurable_pi_iff.mpr (λ i, hf_meas i)))
576+
(measurable.comap_le (measurable_pi_iff.mpr (λ i, hf_meas i))) hπS_pi hπT_pi hπS_gen hπT_gen _,
577+
578+
rintros _ _ ⟨s, ⟨sets_s, hs1, hs2⟩, rfl⟩ ⟨t, ⟨sets_t, ht1, ht2⟩, rfl⟩,
579+
simp only [set.mem_univ_pi, set.mem_set_of_eq] at hs1 ht1,
580+
rw [← hs2, ← ht2],
581+
let sets_s' : (Π i : ι, set (β i)) := λ i, dite (i ∈ S) (λ hi, sets_s ⟨i, hi⟩) (λ _, set.univ),
582+
have h_sets_s'_eq : ∀ {i} (hi : i ∈ S), sets_s' i = sets_s ⟨i, hi⟩,
583+
{ intros i hi, simp_rw [sets_s', dif_pos hi], },
584+
have h_sets_s'_univ : ∀ {i} (hi : i ∈ T), sets_s' i = set.univ,
585+
{ intros i hi, simp_rw [sets_s', dif_neg (finset.disjoint_right.mp hST hi)], },
586+
let sets_t' : (Π i : ι, set (β i)) := λ i, dite (i ∈ T) (λ hi, sets_t ⟨i, hi⟩) (λ _, set.univ),
587+
have h_sets_t'_univ : ∀ {i} (hi : i ∈ S), sets_t' i = set.univ,
588+
{ intros i hi, simp_rw [sets_t', dif_neg (finset.disjoint_left.mp hST hi)], },
589+
have h_meas_s' : ∀ i ∈ S, measurable_set (sets_s' i),
590+
{ intros i hi, rw h_sets_s'_eq hi, exact hs1 _, },
591+
have h_meas_t' : ∀ i ∈ T, measurable_set (sets_t' i),
592+
{ intros i hi, simp_rw [sets_t', dif_pos hi], exact ht1 _, },
593+
have h_eq_inter_S : (λ (a : α) (i : ↥S), f ↑i a) ⁻¹' set.pi set.univ sets_s
594+
= ⋂ i ∈ S, (f i) ⁻¹' (sets_s' i),
595+
{ ext1 x,
596+
simp only [set.mem_preimage, set.mem_univ_pi, set.mem_Inter],
597+
split; intro h,
598+
{ intros i hi, rw [h_sets_s'_eq hi], exact h ⟨i, hi⟩, },
599+
{ rintros ⟨i, hi⟩, specialize h i hi, rw [h_sets_s'_eq hi] at h, exact h, }, },
600+
have h_eq_inter_T : (λ (a : α) (i : ↥T), f ↑i a) ⁻¹' set.pi set.univ sets_t
601+
= ⋂ i ∈ T, (f i) ⁻¹' (sets_t' i),
602+
{ ext1 x,
603+
simp only [set.mem_preimage, set.mem_univ_pi, set.mem_Inter],
604+
split; intro h,
605+
{ intros i hi, simp_rw [sets_t', dif_pos hi], exact h ⟨i, hi⟩, },
606+
{ rintros ⟨i, hi⟩, specialize h i hi, simp_rw [sets_t', dif_pos hi] at h, exact h, }, },
607+
rw Indep_fun_iff_measure_inter_preimage_eq_mul at hf_Indep,
608+
rw [h_eq_inter_S, h_eq_inter_T, hf_Indep S h_meas_s', hf_Indep T h_meas_t'],
609+
have h_Inter_inter : (⋂ i ∈ S, (f i) ⁻¹' (sets_s' i)) ∩ (⋂ i ∈ T, (f i) ⁻¹' (sets_t' i))
610+
= ⋂ i ∈ (S ∪ T), (f i) ⁻¹' (sets_s' i ∩ sets_t' i),
611+
{ ext1 x,
612+
simp only [set.mem_inter_eq, set.mem_Inter, set.mem_preimage, finset.mem_union],
613+
split; intro h,
614+
{ intros i hi,
615+
cases hi,
616+
{ rw h_sets_t'_univ hi, exact ⟨h.1 i hi, set.mem_univ _⟩, },
617+
{ rw h_sets_s'_univ hi, exact ⟨set.mem_univ _, h.2 i hi⟩, }, },
618+
{ exact ⟨λ i hi, (h i (or.inl hi)).1, λ i hi, (h i (or.inr hi)).2⟩, }, },
619+
rw [h_Inter_inter, hf_Indep (S ∪ T)],
620+
swap, { intros i hi_mem,
621+
rw finset.mem_union at hi_mem,
622+
cases hi_mem,
623+
{ rw [h_sets_t'_univ hi_mem, set.inter_univ], exact h_meas_s' i hi_mem, },
624+
{ rw [h_sets_s'_univ hi_mem, set.univ_inter], exact h_meas_t' i hi_mem, }, },
625+
rw finset.prod_union hST,
626+
congr' 1,
627+
{ refine finset.prod_congr rfl (λ i hi, _),
628+
rw [h_sets_t'_univ hi, set.inter_univ], },
629+
{ refine finset.prod_congr rfl (λ i hi, _),
630+
rw [h_sets_s'_univ hi, set.univ_inter], },
631+
end
632+
528633
end indep_fun
529634

530635
end probability_theory

0 commit comments

Comments
 (0)