Skip to content

Commit 9013b20

Browse files
committed
more indepedence work
1 parent 71893a2 commit 9013b20

1 file changed

Lines changed: 139 additions & 46 deletions

File tree

‎LeanBandits/ForMathlib/CondDistrib.lean‎

Lines changed: 139 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Rémy Degenne
55
-/
66
import Mathlib.Probability.Independence.Basic
77
import Mathlib.Probability.Independence.Conditional
8+
import Mathlib.Probability.Kernel.CompProdEqIff
89
import Mathlib.Probability.Kernel.Condexp
910

1011

@@ -45,28 +46,30 @@ end MeasureTheory.Measure
4546

4647
namespace ProbabilityTheory
4748

48-
lemma condDistrib_comp_map [IsFiniteMeasure μ]
49-
(hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) :
49+
section CondDistrib
50+
51+
variable [IsFiniteMeasure μ]
52+
53+
lemma condDistrib_comp_map (hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) :
5054
condDistrib Y X μ ∘ₘ (μ.map X) = μ.map Y := by
5155
rw [← Measure.snd_compProd, compProd_map_condDistrib hY, Measure.snd_map_prodMk₀ hX]
5256

53-
lemma condDistrib_congr [IsFiniteMeasure μ] {X' : α → β} {Y' : α → Ω}
54-
(hY : Y =ᵐ[μ] Y') (hX : X =ᵐ[μ] X') :
57+
lemma condDistrib_congr {X' : α → β} {Y' : α → Ω} (hY : Y =ᵐ[μ] Y') (hX : X =ᵐ[μ] X') :
5558
condDistrib Y X μ = condDistrib Y' X' μ := by
5659
rw [condDistrib, condDistrib]
5760
congr 1
5861
rw [Measure.map_congr]
5962
filter_upwards [hX, hY] with a ha hb using by rw [ha, hb]
6063

61-
lemma condDistrib_congr_right [IsFiniteMeasure μ] {X' : α → β} (hX : X =ᵐ[μ] X') :
64+
lemma condDistrib_congr_right {X' : α → β} (hX : X =ᵐ[μ] X') :
6265
condDistrib Y X μ = condDistrib Y X' μ :=
6366
condDistrib_congr (by rfl) hX
6467

65-
lemma condDistrib_congr_left [IsFiniteMeasure μ] {Y' : α → Ω} (hY : Y =ᵐ[μ] Y') :
68+
lemma condDistrib_congr_left {Y' : α → Ω} (hY : Y =ᵐ[μ] Y') :
6669
condDistrib Y X μ = condDistrib Y' X μ :=
6770
condDistrib_congr hY (by rfl)
6871

69-
lemma condDistrib_ae_eq_of_measure_eq_compProd₀ [IsFiniteMeasure μ]
72+
lemma condDistrib_ae_eq_of_measure_eq_compProd₀
7073
(hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) (κ : Kernel β Ω) [IsFiniteKernel κ]
7174
(hκ : μ.map (fun x => (X x, Y x)) = μ.map X ⊗ₘ κ) :
7275
∀ᵐ x ∂μ.map X, κ x = condDistrib Y X μ x := by
@@ -80,22 +83,145 @@ lemma condDistrib_ae_eq_of_measure_eq_compProd₀ [IsFiniteMeasure μ]
8083
filter_upwards [hX.ae_eq_mk, hY.ae_eq_mk] with a haX haY using by rw [haX, haY]
8184
· rw [Measure.map_congr hX.ae_eq_mk]
8285

83-
lemma condDistrib_comp [IsFiniteMeasure μ]
84-
(hX : AEMeasurable X μ) {f : β → Ω} (hf : Measurable f) :
86+
lemma condDistrib_comp (hX : AEMeasurable X μ) {f : β → Ω} (hf : Measurable f) :
8587
condDistrib (f ∘ X) X μ =ᵐ[μ.map X] Kernel.deterministic f hf := by
8688
symm
8789
refine condDistrib_ae_eq_of_measure_eq_compProd₀ hX (by fun_prop) _ ?_
8890
rw [Measure.compProd_deterministic, AEMeasurable.map_map_of_aemeasurable (by fun_prop) hX]
8991
rfl
9092

91-
lemma condDistrib_const [IsFiniteMeasure μ]
92-
(hX : AEMeasurable X μ) (c : Ω) :
93+
lemma condDistrib_const (hX : AEMeasurable X μ) (c : Ω) :
9394
condDistrib (fun _ ↦ c) X μ =ᵐ[μ.map X] Kernel.deterministic (fun _ ↦ c) (by fun_prop) := by
9495
have : (fun _ : α ↦ c) = (fun _ : β ↦ c) ∘ X := rfl
9596
conv_lhs => rw [this]
9697
filter_upwards [condDistrib_comp hX (by fun_prop : Measurable (fun _ ↦ c))] with b hb
9798
rw [hb]
9899

100+
lemma condDistrib_of_indepFun (h : IndepFun X Y μ) (hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) :
101+
condDistrib Y X μ =ᵐ[μ.map X] Kernel.const β (μ.map Y) := by
102+
symm
103+
refine condDistrib_ae_eq_of_measure_eq_compProd₀ (μ := μ) hX hY _ ?_
104+
simp only [Measure.compProd_const]
105+
exact (indepFun_iff_map_prod_eq_prod_map_map hX hY).mp h
106+
107+
lemma indepFun_iff_condDistrib_eq_const (hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) :
108+
IndepFun X Y μ ↔ condDistrib Y X μ =ᵐ[μ.map X] Kernel.const β (μ.map Y) := by
109+
refine ⟨fun h ↦ condDistrib_of_indepFun h hX hY, fun h ↦ ?_⟩
110+
rw [indepFun_iff_map_prod_eq_prod_map_map hX hY, ← compProd_map_condDistrib hY,
111+
Measure.compProd_congr h]
112+
simp
113+
114+
lemma Kernel.prod_apply_prod {κ : Kernel α β} {η : Kernel α γ}
115+
[IsSFiniteKernel κ] [IsSFiniteKernel η] {s : Set β} {t : Set γ} {a : α} :
116+
(κ ×ₖ η) a (s ×ˢ t) = (κ a s) * (η a t) := by
117+
rw [Kernel.prod_apply, Measure.prod_prod]
118+
119+
theorem Kernel.indepFun_iff_map_prod_eq_prod_map_map {Ω' α β γ : Type*}
120+
{mΩ' : MeasurableSpace Ω'} {mα : MeasurableSpace α} {mβ : MeasurableSpace β}
121+
{mγ : MeasurableSpace γ} {X : α → β} {T : α → γ}
122+
{μ : Measure Ω'} [IsFiniteMeasure μ]
123+
{κ : Kernel Ω' α} [IsFiniteKernel κ]
124+
-- TODO: relax this to CountableOrCountablyGenerated once it is fixed
125+
[StandardBorelSpace β] [StandardBorelSpace γ]
126+
(hf : Measurable X) (hg : Measurable T) :
127+
IndepFun X T κ μ ↔ κ.map (fun ω ↦ (X ω, T ω)) =ᵐ[μ] ((κ.map X) ×ₖ (κ.map T)) := by
128+
classical
129+
rw [indepFun_iff_measure_inter_preimage_eq_mul]
130+
refine ⟨fun h ↦ ?_, fun h ↦ ?_⟩
131+
· rw [← Kernel.compProd_eq_iff]
132+
have : (μ ⊗ₘ κ.map fun ω ↦ (X ω, T ω)) = μ ⊗ₘ (κ.map X ×ₖ κ.map T)
133+
↔ ∀ {u : Set Ω'} {s : Set β} {t : Set γ},
134+
MeasurableSet u → MeasurableSet s → MeasurableSet t →
135+
(μ ⊗ₘ κ.map (fun ω ↦ (X ω, T ω))) (u ×ˢ s ×ˢ t)
136+
= (μ ⊗ₘ (κ.map X ×ₖ κ.map T)) (u ×ˢ s ×ˢ t) := by
137+
refine ⟨fun h ↦ by simp [h], fun h ↦ ?_⟩
138+
sorry
139+
rw [this]
140+
intro u s t hu hs ht
141+
rw [Measure.compProd_apply (hu.prod (hs.prod ht)),
142+
Measure.compProd_apply (hu.prod (hs.prod ht))]
143+
refine lintegral_congr_ae ?_
144+
have h_set_eq ω : Prod.mk ω ⁻¹' u ×ˢ s ×ˢ t = if ω ∈ u then s ×ˢ t else ∅ := by ext; simp
145+
simp_rw [h_set_eq]
146+
filter_upwards [h s t hs ht] with ω hω
147+
by_cases hωu : ω ∈ u
148+
swap; · simp [hωu]
149+
simp only [hωu, ↓reduceIte]
150+
rw [Kernel.map_apply _ (by fun_prop), Measure.map_apply (by fun_prop) (hs.prod ht)]
151+
rw [Set.mk_preimage_prod, hω, Kernel.prod_apply_prod, Kernel.map_apply' _ (by fun_prop),
152+
Kernel.map_apply' _ (by fun_prop)]
153+
exacts [ht, hs]
154+
· intro s t hs ht
155+
filter_upwards [h] with ω hω
156+
calc (κ ω) (X ⁻¹' s ∩ T ⁻¹' t)
157+
_ = (κ.map (fun ω ↦ (X ω, T ω))) ω (s ×ˢ t) := by
158+
rw [← Kernel.deterministic_comp_eq_map, ← deterministic_prod_deterministic hf hg,
159+
Kernel.comp_apply, Measure.bind_apply (hs.prod ht) (by fun_prop)]
160+
simp_rw [Kernel.prod_apply_prod, Kernel.deterministic_apply' hf _ hs,
161+
Kernel.deterministic_apply' hg _ ht]
162+
calc (κ ω) (X ⁻¹' s ∩ T ⁻¹' t)
163+
_ = ∫⁻ a, (X ⁻¹' s ∩ T ⁻¹' t).indicator (fun x ↦ 1) a ∂κ ω := by
164+
simp [lintegral_indicator ((hf hs).inter (hg ht))]
165+
_ = ∫⁻ a, (X ⁻¹' s).indicator (fun x ↦ 1) a * (T ⁻¹' t).indicator (fun x ↦ 1) a ∂κ ω := by
166+
congr with a
167+
simp only [Set.indicator_apply, Set.mem_inter_iff, Set.mem_preimage, mul_ite, mul_one,
168+
mul_zero]
169+
by_cases has : X a ∈ s <;> simp [has]
170+
_ = ∫⁻ a, s.indicator (fun x ↦ 1) (X a) * t.indicator (fun x ↦ 1) (T a) ∂κ ω := rfl
171+
_ = ((κ.map X) ×ₖ (κ.map T)) ω (s ×ˢ t) := by rw [hω]
172+
_ = (κ ω) (X ⁻¹' s) * (κ ω) (T ⁻¹' t) := by
173+
rw [Kernel.prod_apply_prod, Kernel.map_apply' _ (by fun_prop),
174+
Kernel.map_apply' _ (by fun_prop)]
175+
exacts [ht, hs]
176+
177+
theorem Kernel.indepFun_iff_compProd_map_prod_eq_compProd_prod_map_map{Ω' α β γ : Type*}
178+
{mΩ' : MeasurableSpace Ω'} {mα : MeasurableSpace α} {mβ : MeasurableSpace β}
179+
{mγ : MeasurableSpace γ} {X : α → β} {T : α → γ}
180+
{μ : Measure Ω'} [IsFiniteMeasure μ]
181+
{κ : Kernel Ω' α} [IsFiniteKernel κ]
182+
-- TODO: relax this to CountableOrCountablyGenerated once it is fixed
183+
[StandardBorelSpace β] [StandardBorelSpace γ]
184+
(hf : Measurable X) (hg : Measurable T) :
185+
IndepFun X T κ μ ↔ (μ ⊗ₘ κ.map fun ω ↦ (X ω, T ω)) = μ ⊗ₘ (κ.map X ×ₖ κ.map T) := by
186+
rw [Kernel.indepFun_iff_map_prod_eq_prod_map_map hf hg, Kernel.compProd_eq_iff]
187+
188+
theorem condIndepFun_iff_map_prod_eq_prod_map_map {α : Type*} {m mα : MeasurableSpace α}
189+
[StandardBorelSpace α]
190+
{X : α → β} {T : α → γ}
191+
{hm : m ≤ mα} {μ : Measure α} [IsFiniteMeasure μ]
192+
-- TODO: relax this to CountableOrCountablyGenerated once it is fixed
193+
[StandardBorelSpace β] [StandardBorelSpace γ]
194+
(hX : Measurable X) (hT : Measurable T) :
195+
CondIndepFun m hm X T μ
196+
↔ (condExpKernel μ m).map (fun ω ↦ (X ω, T ω))
197+
=ᵐ[μ.trim hm] (((condExpKernel μ m).map X) ×ₖ ((condExpKernel μ m).map T)) :=
198+
Kernel.indepFun_iff_map_prod_eq_prod_map_map hX hT
199+
200+
lemma condDistrib_of_condIndepFun [StandardBorelSpace α]
201+
(hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z)
202+
(h : CondIndepFun (MeasurableSpace.comap Z inferInstance) hZ.comap_le Y X μ) :
203+
condDistrib Y (fun ω ↦ (X ω, Z ω)) μ
204+
=ᵐ[μ.map (fun ω ↦ (X ω, Z ω))] Kernel.prodMkLeft _ (condDistrib Y Z μ) := by
205+
symm
206+
refine condDistrib_ae_eq_of_measure_eq_compProd₀ (μ := μ) (hX.prodMk hZ).aemeasurable
207+
hY.aemeasurable _ ?_
208+
sorry
209+
210+
end CondDistrib
211+
212+
lemma condIndep_iff_condExpKernel_eq {α : Type*} {F G H mα : MeasurableSpace α}
213+
[StandardBorelSpace α] {μ : Measure α} [IsFiniteMeasure μ]
214+
(hG : G ≤ mα) :
215+
CondIndep G F H hG μ
216+
↔ condExpKernel μ (F ⊔ G) =ᵐ[@Measure.map _ _ mα H id μ] condExpKernel μ G := by
217+
sorry
218+
219+
section Cond
220+
221+
lemma ae_cond_of_forall_mem {μ : Measure α} {s : Set α}
222+
(hs : MeasurableSet s) {p : α → Prop} (h : ∀ x ∈ s, p x) :
223+
∀ᵐ x ∂μ[|s], p x := Measure.ae_smul_measure (ae_restrict_of_forall_mem hs h) _
224+
99225
lemma condDistrib_ae_eq_cond [Countable β] [MeasurableSingletonClass β]
100226
[IsFiniteMeasure μ]
101227
(hX : Measurable X) (hY : Measurable Y) :
@@ -110,26 +236,6 @@ lemma condDistrib_ae_eq_cond [Countable β] [MeasurableSingletonClass β]
110236
· congr
111237
· exact hb
112238

113-
lemma ae_cond_of_forall_mem {μ : Measure α} {s : Set α}
114-
(hs : MeasurableSet s) {p : α → Prop} (h : ∀ x ∈ s, p x) :
115-
∀ᵐ x ∂μ[|s], p x := Measure.ae_smul_measure (ae_restrict_of_forall_mem hs h) _
116-
117-
lemma condDistrib_of_indepFun [IsZeroOrProbabilityMeasure μ] (h : IndepFun X Y μ)
118-
(hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) :
119-
condDistrib Y X μ =ᵐ[μ.map X] Kernel.const β (μ.map Y) := by
120-
symm
121-
refine condDistrib_ae_eq_of_measure_eq_compProd₀ (μ := μ) hX hY _ ?_
122-
simp only [Measure.compProd_const]
123-
exact (indepFun_iff_map_prod_eq_prod_map_map hX hY).mp h
124-
125-
lemma indepFun_iff_condDistrib_eq_const [IsZeroOrProbabilityMeasure μ]
126-
(hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) :
127-
IndepFun X Y μ ↔ condDistrib Y X μ =ᵐ[μ.map X] Kernel.const β (μ.map Y) := by
128-
refine ⟨fun h ↦ condDistrib_of_indepFun h hX hY, fun h ↦ ?_⟩
129-
rw [indepFun_iff_map_prod_eq_prod_map_map hX hY, ← compProd_map_condDistrib hY,
130-
Measure.compProd_congr h]
131-
simp
132-
133239
lemma cond_of_indepFun [IsZeroOrProbabilityMeasure μ] (h : IndepFun X T μ)
134240
(hX : Measurable X) (hT : Measurable T) {s : Set β} (hs : MeasurableSet s)
135241
(hμs : μ (X ⁻¹' s) ≠ 0) :
@@ -142,21 +248,6 @@ lemma cond_of_indepFun [IsZeroOrProbabilityMeasure μ] (h : IndepFun X T μ)
142248
· rw [indepFun_iff_indepSet_preimage hX hT] at h
143249
exact h s t hs ht
144250

145-
lemma condIndep_iff_condExpKernel_eq {α : Type*} {F G H mα : MeasurableSpace α}
146-
[StandardBorelSpace α] {μ : Measure α} [IsFiniteMeasure μ]
147-
(hG : G ≤ mα) :
148-
CondIndep G F H hG μ
149-
↔ condExpKernel μ (F ⊔ G) =ᵐ[@Measure.map _ _ mα H id μ] condExpKernel μ G := by
150-
sorry
151-
152-
lemma condDistrib_of_condIndepFun
153-
[StandardBorelSpace α] [IsZeroOrProbabilityMeasure μ]
154-
(hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z)
155-
(h : CondIndepFun (MeasurableSpace.comap Z inferInstance) hZ.comap_le Y X μ) :
156-
condDistrib Y (fun ω ↦ (X ω, Z ω)) μ
157-
=ᵐ[μ.map (fun ω ↦ (X ω, Z ω))] fun p ↦ condDistrib Y Z μ p.2 := by
158-
sorry
159-
160251
lemma cond_of_condIndepFun [StandardBorelSpace α] [IsZeroOrProbabilityMeasure μ]
161252
(hZ : Measurable Z)
162253
(h : CondIndepFun (MeasurableSpace.comap Z inferInstance) hZ.comap_le Y X μ)
@@ -173,4 +264,6 @@ lemma cond_of_condIndepFun [StandardBorelSpace α] [IsZeroOrProbabilityMeasure
173264
specialize h u s hu hs
174265
sorry
175266

267+
end Cond
268+
176269
end ProbabilityTheory

0 commit comments

Comments
 (0)