LeanMachineLearning exposition

ProbabilityTheory.indepFun_snd_prod🔗

Minimal Lean file

indepFun_snd_prod🔗

LemmaProbabilityTheory.indepFun_snd_prod

No docstring.

🔗theorem
ProbabilityTheory.indepFun_snd_prod.{u_1, u_2, u_3, u_5} {α : Type u_1} {β : Type u_2} {γ : Type u_3} {Ω : Type u_5} { : MeasurableSpace α} {μ : MeasureTheory.Measure α} { : MeasurableSpace β} { : MeasurableSpace γ} [MeasurableSpace Ω] {X : α β} {Y : α Ω} [MeasureTheory.IsFiniteMeasure μ] (hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) (h_indep : IndepFun X Y μ) (ν : MeasureTheory.Measure γ) [MeasureTheory.IsProbabilityMeasure ν] : IndepFun (fun ω => X (Prod.snd ω)) (fun ω => Y (Prod.snd ω)) (MeasureTheory.Measure.prod ν μ)
ProbabilityTheory.indepFun_snd_prod.{u_1, u_2, u_3, u_5} {α : Type u_1} {β : Type u_2} {γ : Type u_3} {Ω : Type u_5} { : MeasurableSpace α} {μ : MeasureTheory.Measure α} { : MeasurableSpace β} { : MeasurableSpace γ} [MeasurableSpace Ω] {X : α β} {Y : α Ω} [MeasureTheory.IsFiniteMeasure μ] (hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) (h_indep : IndepFun X Y μ) (ν : MeasureTheory.Measure γ) [MeasureTheory.IsProbabilityMeasure ν] : IndepFun (fun ω => X (Prod.snd ω)) (fun ω => Y (Prod.snd ω)) (MeasureTheory.Measure.prod ν μ)

Code

lemma indepFun_snd_prod (hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) (h_indep : IndepFun X Y μ)
    (ν : Measure γ) [IsProbabilityMeasure ν] :
    IndepFun (fun ω ↦ X ω.2) (fun ω ↦ Y ω.2) (ν.prod μ)

Actions: Source · Open Issue

Proof
by
  rw [indepFun_iff_map_prod_eq_prod_map_map (by fun_prop) (by fun_prop)] at h_indep ⊢
  have :  AEMeasurable (fun ω ↦ (X ω, Y ω)) (Measure.map Prod.snd (ν.prod μ)) := by
    simp only [Measure.map_snd_prod, measure_univ, one_smul]
    fun_prop
  have :  AEMeasurable X (Measure.map Prod.snd (ν.prod μ)) := by
    simp only [Measure.map_snd_prod, measure_univ, one_smul]
    fun_prop
  have :  AEMeasurable Y (Measure.map Prod.snd (ν.prod μ)) := by
    simp only [Measure.map_snd_prod, measure_univ, one_smul]
    fun_prop
  have h : (ν.prod μ).map (fun ω ↦ (X ω.2, Y ω.2)) = μ.map (fun ω ↦ (X ω, Y ω)) := by
    conv_rhs => rw [← Measure.snd_prod (μ := ν) (ν := μ), Measure.snd,
      AEMeasurable.map_map_of_aemeasurable (by fun_prop) (by fun_prop)]
    rfl
  rw [h, h_indep]
  conv_lhs => rw [← Measure.snd_prod (μ := ν) (ν := μ), Measure.snd,
      AEMeasurable.map_map_of_aemeasurable (by fun_prop) (by fun_prop),
      AEMeasurable.map_map_of_aemeasurable (by fun_prop) (by fun_prop)]
  rfl