Skip to main content
teorth/PFR
Source indexedtheorem · leanprover/lean4:v4.33.0-rc1

condMultiDist_of_hom

PFR.MoreRuzsaDist · PFR/MoreRuzsaDist.lean:2164 to 2191

Mathematical statement

Exact Lean statement

theorem condMultiDist_of_hom {G G' S : Type*} [Fintype S]
    [MeasurableSpace G] [MeasurableSingletonClass G] [AddCommGroup G] [Finite G]
    [MeasurableSpace G'] [MeasurableSingletonClass G'] [AddCommGroup G'] [Finite G']
    [MeasurableSpace S] [MeasurableSingletonClass S]
    {ι : G →+ G'} (hι : Function.Injective ⇑ι)
    {Ω : Type*} (hΩ : MeasureSpace Ω) [IsProbabilityMeasure (ℙ : Measure Ω)]
    {m : ℕ} {X : Fin m → Ω → G} (hX : ∀ i, Measurable (X i))
    {Y : Fin m → Ω → S} (hY : ∀ i, Measurable (Y i)) (a : Fin m → S → G') :
    D[fun i ω ↦ ι (X i ω) + a i (Y i ω) | Y; fun _ ↦ hΩ] = D[X | Y; fun _ ↦ hΩ]

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem condMultiDist_of_hom {G G' S : Type*} [Fintype S]    [MeasurableSpace G] [MeasurableSingletonClass G] [AddCommGroup G] [Finite G]    [MeasurableSpace G'] [MeasurableSingletonClass G'] [AddCommGroup G'] [Finite G']    [MeasurableSpace S] [MeasurableSingletonClass S]    {ι : G →+ G'} (hι : Function.Injective ⇑ι)    {Ω : Type*} (hΩ : MeasureSpace Ω) [IsProbabilityMeasure (ℙ : Measure Ω)]    {m : } {X : Fin m  Ω  G} (hX :  i, Measurable (X i))    {Y : Fin m  Ω  S} (hY :  i, Measurable (Y i)) (a : Fin m  S  G') :    D[fun i ω  ι (X i ω) + a i (Y i ω) | Y; fun _  hΩ] = D[X | Y; fun _  hΩ] := by  cases nonempty_fintype G  cases nonempty_fintype G'  unfold condMultiDist  apply Finset.sum_congr rfl; intro y _  by_cases h :  i, ℙ ( Y i ⁻¹' {y i})  0  · congr; calc      _ =  D[fun i ω  ι (X i ω) + a i (y i) ; fun i  ℙ[|Y i ⁻¹' {y i}]]  := by        convert multiDist_congr (fun i  ℙ[|Y i ⁻¹' {y i}]) _        intro i        convert! Filter.EventuallyEq.comp₂ (f := fun ω  Y i ω) (f' := fun ω  y i) (g := id)          (g' := id) _ (fun y' ω  ι (X i ω) + a i y') ae_eq_rfl        apply Filter.Eventually.mono (p := fun ω  ω  Y i ⁻¹' {y i})        · apply ae_cond_mem; measurability        intro ω; simp      _ = _ := by        convert multiDist_of_hom' hι (fun i  ℙ[|Y i ⁻¹' {y i}]) hX _        intro i; exact cond_isProbabilityMeasure (h i)  simp only [ne_eq, not_forall, Decidable.not_not, mul_eq_mul_left_iff] at h ; right  obtain i, hi := h; apply Finset.prod_eq_zero (i:= i) <;> simp [hi, Measure.real]