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

ProbabilityTheory.condMutualInfo_eq_kernel_mutualInfo

PFR.ForMathlib.Entropy.Basic · PFR/ForMathlib/Entropy/Basic.lean:861 to 887

Source documentation

The conditional mutual information agrees with the information of the conditional kernel.

Exact Lean statement

lemma condMutualInfo_eq_kernel_mutualInfo
    (hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z)
    (μ : Measure Ω) [IsZeroOrProbabilityMeasure μ] [FiniteRange Z] :
    I[X : Y | Z ; μ] = Ik[condDistrib (⟨X, Y⟩) Z μ, μ.map Z]

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma condMutualInfo_eq_kernel_mutualInfo    (hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z)    (μ : Measure Ω) [IsZeroOrProbabilityMeasure μ] [FiniteRange Z] :    I[X : Y | Z ; μ] = Ik[condDistrib (X, Y) Z μ, μ.map Z] := by  rcases finiteSupport_of_finiteRange (μ := μ) (X := Z) with A, hA  simp_rw [condMutualInfo_def, entropy_def, Kernel.mutualInfo, Kernel.entropy,    integral_eq_setIntegral hA, setIntegral_finset _ .finset, smul_eq_mul, mul_sub,    mul_add, Finset.sum_sub_distrib, Finset.sum_add_distrib]  congr with x  · have h := condDistrib_fst_ae_eq hX hY hZ μ    rw [Filter.EventuallyEq, ae_iff_of_countable] at h    specialize h x    by_cases hx : (μ.map Z) {x} = 0    · simp [hx, Measure.real]    rw [h hx, condDistrib_apply hX hZ]    rwa [Measure.map_apply hZ (.singleton _)] at hx  · have h := condDistrib_snd_ae_eq hX hY hZ μ    rw [Filter.EventuallyEq, ae_iff_of_countable] at h    specialize h x    by_cases hx : (μ.map Z) {x} = 0    · simp [hx, Measure.real]    rw [h hx, condDistrib_apply hY hZ]    rwa [Measure.map_apply hZ (.singleton _)] at hx  · by_cases hx : (μ.map Z) {x} = 0    · simp [hx, Measure.real]    rw [condDistrib_apply (hX.prodMk hY) hZ]    rwa [Measure.map_apply hZ (.singleton _)] at hx