teorth/PFR
Source indexedlemma · leanprover/lean4:v4.33.0-rc1
condRuzsaDist_eq_sum
PFR.ForMathlib.Entropy.RuzsaDist · PFR/ForMathlib/Entropy/RuzsaDist.lean:526 to 559
Source documentation
Explicit formula for conditional Ruzsa distance .
Exact Lean statement
lemma condRuzsaDist_eq_sum {X : Ω → G} {Z : Ω → S} {Y : Ω' → G} {W : Ω' → T}
(hX : Measurable X) (hZ : Measurable Z) (hY : Measurable Y) (hW : Measurable W)
(μ : Measure Ω) [IsFiniteMeasure μ] (μ' : Measure Ω') [IsFiniteMeasure μ']
[FiniteRange Z] [FiniteRange W] :
d[X | Z ; μ # Y | W ; μ']
= ∑ z ∈ FiniteRange.toFinset Z, ∑ w ∈ FiniteRange.toFinset W,
μ.real (Z ⁻¹' {z}) * μ'.real (W ⁻¹' {w})
* d[X ; (μ[|Z ← z]) # Y ; (μ'[|W ← w])]Complete declaration
Lean source
Full Lean sourceLean 4
lemma condRuzsaDist_eq_sum {X : Ω → G} {Z : Ω → S} {Y : Ω' → G} {W : Ω' → T} (hX : Measurable X) (hZ : Measurable Z) (hY : Measurable Y) (hW : Measurable W) (μ : Measure Ω) [IsFiniteMeasure μ] (μ' : Measure Ω') [IsFiniteMeasure μ'] [FiniteRange Z] [FiniteRange W] : d[X | Z ; μ # Y | W ; μ'] = ∑ z ∈ FiniteRange.toFinset Z, ∑ w ∈ FiniteRange.toFinset W, μ.real (Z ⁻¹' {z}) * μ'.real (W ⁻¹' {w}) * d[X ; (μ[|Z ← z]) # Y ; (μ'[|W ← w])] := by have : ∀ᵐ x ∂Measure.prod (μ.map Z) (μ'.map W), x ∈ ((((FiniteRange.toFinset Z) ×ˢ (FiniteRange.toFinset W)) : Finset (S × T)): Set (S × T)) := by apply Measure.prod_of_full_measure_finset all_goals { rw [Measure.map_apply ‹_›] convert measure_empty (μ := μ) simp [← FiniteRange.range] measurability } rw [condRuzsaDist_def, Kernel.rdist, integral_eq_setIntegral this, setIntegral_finset _ .finset] simp_rw [Measure.prod_real_singleton, smul_eq_mul, Finset.sum_product, map_measureReal_apply hZ (.singleton _), map_measureReal_apply hW (.singleton _)] congr with z congr with w by_cases hz : μ.real (Z ⁻¹' {z}) = 0 · simp only [mul_eq_mul_left_iff, mul_eq_zero] refine Or.inr (Or.inl ?_) simp [hz] by_cases hw : μ'.real (W ⁻¹' {w}) = 0 · simp only [mul_eq_mul_left_iff, mul_eq_zero] refine Or.inr (Or.inr ?_) simp [hw] congr 1 simp only [Measure.real, ENNReal.toReal_eq_zero_iff, measure_ne_top μ, or_false, measure_ne_top] at hz hw rw [rdist_eq_rdistm, condDistrib_apply hX hZ _ _ hz, condDistrib_apply hY hW _ _ hw]