teorth/PFR
Source indexedlemma · leanprover/lean4:v4.33.0-rc1
kaimanovich_vershik
PFR.ForMathlib.Entropy.RuzsaDist · PFR/ForMathlib/Entropy/RuzsaDist.lean:1114 to 1143
Source documentation
The Kaimanovich-Vershik inequality. H[X + Y + Z] - H[X + Y] ≤ H[Y + Z] - H[Y].
Exact Lean statement
lemma kaimanovich_vershik {X Y Z : Ω → G} (h : iIndepFun ![X, Y, Z] μ)
(hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z)
[FiniteRange X] [FiniteRange Z] [FiniteRange Y] :
H[X + Y + Z ; μ] - H[X + Y ; μ] ≤ H[Y + Z ; μ] - H[Y ; μ]Complete declaration
Lean source
Full Lean sourceLean 4
lemma kaimanovich_vershik {X Y Z : Ω → G} (h : iIndepFun ![X, Y, Z] μ) (hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z) [FiniteRange X] [FiniteRange Z] [FiniteRange Y] : H[X + Y + Z ; μ] - H[X + Y ; μ] ≤ H[Y + Z ; μ] - H[Y ; μ] := by have : IsProbabilityMeasure μ := h.isProbabilityMeasure suffices (H[X ; μ] + H[Y ; μ] + H[Z ; μ]) + H[X + Y + Z ; μ] ≤ (H[X ; μ] + H[Y + Z ; μ]) + (H[Z ; μ] + H[X + Y ; μ]) by linarith have : ∀ (i : Fin 3), Measurable (![X, Y, Z] i) := fun i ↦ by fin_cases i <;> assumption convert entropy_triple_add_entropy_le μ hX hZ (show Measurable (X + (Y + Z)) by fun_prop) using 2 · calc H[X ; μ] + H[Y ; μ] + H[Z ; μ] = H[⟨X, Y⟩ ; μ] + H[Z ; μ] := by rw [IndepFun.entropy_pair_eq_add hX hY] exact h.indepFun (show 0 ≠ 1 by decide) _ = H[⟨⟨X, Y⟩, Z⟩ ; μ] := by rw [IndepFun.entropy_pair_eq_add (hX.prodMk hY) hZ] exact h.indepFun_prodMk this 0 1 2 (by decide) (by decide) _ = H[⟨X, ⟨Z , X + (Y + Z)⟩⟩ ; μ] := by apply entropy_of_comp_eq_of_comp μ (by fun_prop) (by fun_prop) (fun ((x, y), z) ↦ (x, z, x + y + z)) (fun (a, b, c) ↦ ((a, c - a - b), b)) all_goals { funext ω; dsimp [prod]; ext <;> dsimp; abel } · rw [add_assoc] · symm refine (entropy_add_right hX (by fun_prop) _).trans <| IndepFun.entropy_pair_eq_add hX (by fun_prop) ?_ exact h.indepFun_add_right this 0 1 2 (by decide) (by decide) · rw [eq_comm, ← add_assoc] refine (entropy_add_right' hZ (by fun_prop) _).trans <| IndepFun.entropy_pair_eq_add hZ (by fun_prop) ?_ exact h.indepFun_add_right this 2 0 1 (by decide) (by decide)