teorth/PFR
Source indexedlemma · leanprover/lean4:v4.33.0-rc1
ProbabilityTheory.max_entropy_le_entropy_prod
PFR.ForMathlib.Entropy.Group · PFR/ForMathlib/Entropy/Group.lean:248 to 271
Source documentation
If X₁, ..., Xₙ are independent and s ⊆ {1, ..., n}, then for all i ∈ s,
H[Xᵢ] ≤ H[∏ j ∈ s, Xⱼ].
Exact Lean statement
@[to_additive /-- If `X₁, ..., Xₙ` are independent and `s ⊆ {1, ..., n}`, then for all `i ∈ s`,
`H[Xᵢ] ≤ H[∑ j ∈ s, Xⱼ]`. -/]
lemma max_entropy_le_entropy_prod {G : Type*} [Countable G] [hG : MeasurableSpace G]
[MeasurableSingletonClass G] [CommGroup G] [MeasurableMul₂ G]
{I : Type*} {s : Finset I} {i₀ : I} (hi₀ : i₀ ∈ s) {X : I → Ω → G} [∀ i, FiniteRange (X i)]
(hX : (i : I) → Measurable (X i)) (h_indep : iIndepFun X μ) :
H[X i₀ ; μ] ≤ H[∏ i ∈ s, X i ; μ]Complete declaration
Lean source
Full Lean sourceLean 4
@[to_additive /-- If `X₁, ..., Xₙ` are independent and `s ⊆ {1, ..., n}`, then for all `i ∈ s`,`H[Xᵢ] ≤ H[∑ j ∈ s, Xⱼ]`. -/]lemma max_entropy_le_entropy_prod {G : Type*} [Countable G] [hG : MeasurableSpace G] [MeasurableSingletonClass G] [CommGroup G] [MeasurableMul₂ G] {I : Type*} {s : Finset I} {i₀ : I} (hi₀ : i₀ ∈ s) {X : I → Ω → G} [∀ i, FiniteRange (X i)] (hX : (i : I) → Measurable (X i)) (h_indep : iIndepFun X μ) : H[X i₀ ; μ] ≤ H[∏ i ∈ s, X i ; μ] := by have hs : s.Nonempty := ⟨i₀, hi₀⟩ induction hs using Finset.Nonempty.cons_induction with | singleton i => simp_all | cons j s Hnot _ Hind => rw [Finset.prod_cons] rcases Finset.mem_cons.mp hi₀ with rfl | hi₀ · calc _ ≤ max H[X i₀ ; μ] H[∏ i ∈ s, X i ; μ] := le_max_left _ _ _ ≤ H[X i₀ * ∏ i ∈ s, X i ; μ] := by refine max_entropy_le_entropy_mul (hX i₀) (by fun_prop) ?_ exact iIndepFun.indepFun_finsetProd_of_notMem h_indep hX Hnot |>.symm · calc _ ≤ H[∏ i ∈ s, X i ; μ] := Hind hi₀ _ ≤ max H[X j ; μ] H[∏ i ∈ s, X i ; μ] := le_max_right _ _ _ ≤ H[X j * ∏ x ∈ s, X x ; μ] := by refine max_entropy_le_entropy_mul (hX j) (by fun_prop) ?_ exact iIndepFun.indepFun_finsetProd_of_notMem h_indep hX Hnot |>.symm