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

ProbabilityTheory.Kernel.entropy_submodular_compProd

PFR.ForMathlib.Entropy.Kernel.MutualInfo · PFR/ForMathlib/Entropy/Kernel/MutualInfo.lean:264 to 296

Mathematical statement

Exact Lean statement

lemma entropy_submodular_compProd {ξ : Kernel T S} [IsZeroOrMarkovKernel ξ]
    {κ : Kernel (T × S) U} [IsZeroOrMarkovKernel κ] {η : Kernel (T × S × U) V} [IsMarkovKernel η]
    {μ : Measure T} [IsZeroOrProbabilityMeasure μ] [FiniteSupport μ]
    (hκ : AEFiniteKernelSupport κ (μ ⊗ₘ ξ))
    (hη : AEFiniteKernelSupport η (μ ⊗ₘ (ξ ⊗ₖ κ))) (hξ : AEFiniteKernelSupport ξ μ) :
    Hk[η, μ ⊗ₘ (ξ ⊗ₖ κ)]
      ≤ Hk[snd (κ ⊗ₖ (comap η MeasurableEquiv.prodAssoc MeasurableEquiv.prodAssoc.measurable)),
            μ ⊗ₘ ξ]

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma entropy_submodular_compProd {ξ : Kernel T S} [IsZeroOrMarkovKernel ξ]    {κ : Kernel (T × S) U} [IsZeroOrMarkovKernel κ] {η : Kernel (T × S × U) V} [IsMarkovKernel η]    {μ : Measure T} [IsZeroOrProbabilityMeasure μ] [FiniteSupport μ]    (hκ : AEFiniteKernelSupport κ (μ ⊗ₘ ξ))    (hη : AEFiniteKernelSupport η (μ ⊗ₘ (ξ ⊗ₖ κ))) (hξ : AEFiniteKernelSupport ξ μ) :    Hk[η, μ ⊗ₘ (ξ ⊗ₖ κ)]       Hk[snd (κ ⊗ₖ (comap η MeasurableEquiv.prodAssoc MeasurableEquiv.prodAssoc.measurable)),            μ ⊗ₘ ξ] := by  rcases eq_zero_or_isProbabilityMeasure μ with rfl | hμ  · simp  rcases eq_zero_or_isMarkovKernel ξ with rfl | hξ'  · simp  have : Nonempty S := nonempty_of_isProbabilityMeasure_of_isMarkovKernel μ ξ  have : Nonempty T := μ.nonempty_of_neZero  rcases eq_zero_or_isMarkovKernel κ with rfl | hκ'  · simp  have : Nonempty U := nonempty_of_isMarkovKernel κ  rcases eq_zero_or_isMarkovKernel η with rfl | hκ'  · simp  have : Nonempty V := nonempty_of_isMarkovKernel η  have h_meas := (MeasurableEquiv.prodAssoc : (T × S) × U ≃ᵐ T × S × U).measurable  have : FiniteSupport (μ ⊗ₘ ξ) := finiteSupport_of_compProd hξ  have : FiniteSupport (μ ⊗ₘ (ξ ⊗ₖ κ)) := finiteSupport_of_compProd (hξ.compProd hκ)  have h := entropy_condKernel_le_entropy_snd:= κ ⊗ₖ (comap η MeasurableEquiv.prodAssoc h_meas)) (μ := μ ⊗ₘ ξ) ?_  · simp only [fst_compProd] at h    have : condKernel (κ ⊗ₖ comap η ↑MeasurableEquiv.prodAssoc h_meas)        =ᵐ[μ ⊗ₘ ξ ⊗ₘ κ] comap η ↑MeasurableEquiv.prodAssoc h_meas := by      exact condKernel_compProd_ae_eq κ (comap η _ MeasurableEquiv.prodAssoc.measurable) (μ ⊗ₘ ξ)    rwa [entropy_congr this, Measure.compProd_compProd'', entropy_comap_equiv] at h  · refine (hκ.compProd ?_)    convert hη.comap_equiv MeasurableEquiv.prodAssoc    exact Measure.compProd_compProd'' _ _ _