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

ProbabilityTheory.max_condEntropy_sub_condMutualInfo_le_condEntropy_div

PFR.ForMathlib.Entropy.Group · PFR/ForMathlib/Entropy/Group.lean:106 to 123

Source documentation

max(H[X | Z], H[Y | Z]) - I[X : Y | Z] ≤ H[X / Y | Z]

Exact Lean statement

@[to_additive /-- `max(H[X | Z], H[Y | Z]) - I[X : Y | Z] ≤ H[X - Y | Z]` -/]
lemma max_condEntropy_sub_condMutualInfo_le_condEntropy_div [FiniteRange X] [FiniteRange Y]
    {Z : Ω → T} (hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z)
    [IsProbabilityMeasure μ] [FiniteRange Z] :
    (max H[X | Z ; μ] H[Y | Z ; μ]) - I[X : Y | Z ; μ] ≤ H[X / Y | Z ; μ]

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
@[to_additive /-- `max(H[X | Z], H[Y | Z]) - I[X : Y | Z] ≤ H[X - Y | Z]` -/]lemma max_condEntropy_sub_condMutualInfo_le_condEntropy_div [FiniteRange X] [FiniteRange Y]    {Z : Ω  T} (hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z)    [IsProbabilityMeasure μ] [FiniteRange Z] :    (max H[X | Z ; μ] H[Y | Z ; μ]) - I[X : Y | Z ; μ]  H[X / Y | Z ; μ] := by  rw [condMutualInfo_comm hX hY, condEntropy_eq_kernel_entropy hX hZ,    condEntropy_eq_kernel_entropy hY hZ, condMutualInfo_eq_kernel_mutualInfo hY hX hZ,    condEntropy_eq_kernel_entropy ?_ hZ]  swap ; · exact hX.div hY  rw [Kernel.entropy_congr (condDistrib_snd_ae_eq hY hX hZ μ).symm,    Kernel.entropy_congr (condDistrib_fst_ae_eq hY hX hZ μ).symm, max_comm]  refine (Kernel.max_entropy_sub_mutualInfo_le_entropy_div _ _ ?_).trans_eq ?_  · exact Kernel.aefiniteKernelSupport_condDistrib _ _ _ (hY.prodMk hX) hZ  rw [Kernel.entropy_div_comm]  have h := condDistrib_comp Z (hY.prodMk hX).aemeasurable    (f := fun x  x.2 / x.1) (by fun_prop) (μ := μ) (mβ := inferInstance)  rw [Kernel.entropy_congr h.symm]  rfl