teorth/PFR
Source indexedlemma · leanprover/lean4:v4.33.0-rc1
ProbabilityTheory.Kernel.rdist_triangle_aux2
PFR.ForMathlib.Entropy.Kernel.RuzsaDist · PFR/ForMathlib/Entropy/Kernel/RuzsaDist.lean:310 to 346
Mathematical statement
Exact Lean statement
lemma rdist_triangle_aux2 (η : Kernel T' G) (ξ : Kernel T'' G)
[IsMarkovKernel η] [IsMarkovKernel ξ]
(μ : Measure T) (μ' : Measure T') (μ'' : Measure T'')
[IsProbabilityMeasure μ] [IsProbabilityMeasure μ'] [IsProbabilityMeasure μ'']
[FiniteSupport μ] [FiniteSupport μ'] [FiniteSupport μ''] :
Hk[map (prodMkLeft (T × T'') η ×ₖ prodMkRight T' (prodMkLeft T ξ))
(fun p ↦ p.1 - p.2), (μ.prod μ'').prod μ']
= Hk[map (prodMkRight T'' η ×ₖ prodMkLeft T' ξ) (fun x ↦ x.1 - x.2), μ'.prod μ'']Complete declaration
Lean source
Full Lean sourceLean 4
lemma rdist_triangle_aux2 (η : Kernel T' G) (ξ : Kernel T'' G) [IsMarkovKernel η] [IsMarkovKernel ξ] (μ : Measure T) (μ' : Measure T') (μ'' : Measure T'') [IsProbabilityMeasure μ] [IsProbabilityMeasure μ'] [IsProbabilityMeasure μ''] [FiniteSupport μ] [FiniteSupport μ'] [FiniteSupport μ''] : Hk[map (prodMkLeft (T × T'') η ×ₖ prodMkRight T' (prodMkLeft T ξ)) (fun p ↦ p.1 - p.2), (μ.prod μ'').prod μ'] = Hk[map (prodMkRight T'' η ×ₖ prodMkLeft T' ξ) (fun x ↦ x.1 - x.2), μ'.prod μ''] := by have hBC : ∀ᵐ x ∂(μ'.prod μ''), x ∈ ((μ'.support ×ˢ μ''.support : Finset (T' × T'')):Set (T' × T'')) := Measure.prod_of_full_measure_finset (measure_compl_support μ') (measure_compl_support μ'') have hAC: (μ.prod μ'') ((μ.support ×ˢ μ''.support : Finset (T × T'')):Set (T × T''))ᶜ = 0 := Measure.prod_of_full_measure_finset (measure_compl_support μ) (measure_compl_support μ'') have hACB : ∀ᵐ x ∂(μ.prod μ'').prod μ', x ∈ (((μ.support ×ˢ μ''.support) ×ˢ μ'.support : Finset ((T × T'') × T')) : Set ((T × T'') × T')) := Measure.prod_of_full_measure_finset hAC (measure_compl_support μ') simp_rw [entropy, integral_eq_setIntegral hACB, integral_eq_setIntegral hBC, setIntegral_finset _ .finset, smul_eq_mul, Measure.prod_real_singleton] conv_rhs => rw [Finset.sum_product_right] conv_lhs => rw [Finset.sum_product, Finset.sum_product_right] simp_rw [mul_assoc, ← Finset.mul_sum] congr with z have : ∀ x y, map (prodMkLeft (T × T'') η ×ₖ prodMkRight T' (prodMkLeft T ξ)) (fun p ↦ p.1 - p.2) ((x, z), y) = map (prodMkLeft T'' η ×ₖ prodMkRight T' ξ) (fun p ↦ p.1 - p.2) (z, y) := by intro x y ext s hs rw [map_apply' _ (by fun_prop) _ hs, map_apply' _ (by fun_prop) _ hs, prod_apply, prod_apply] simp simp_rw [this, ← Finset.sum_mul, sum_measureReal_singleton, Measure.real, measure_of_measure_compl_eq_zero (measure_compl_support μ), measure_univ, ENNReal.toReal_one, one_mul, ← mul_assoc, mul_comm _ (μ'' {z}).toReal, mul_assoc, ← Finset.mul_sum] congr with y congr 2 with s _hs rw [map_apply _ (by fun_prop), map_apply _ (by fun_prop), prod_apply, prod_apply] simp