teorth/PFR
Source indexedlemma · leanprover/lean4:v4.33.0-rc1
ProbabilityTheory.Kernel.entropy_snd_sub_mutualInfo_le_entropy_map_of_injective
PFR.ForMathlib.Entropy.Kernel.MutualInfo · PFR/ForMathlib/Entropy/Kernel/MutualInfo.lean:195 to 226
Mathematical statement
Exact Lean statement
lemma entropy_snd_sub_mutualInfo_le_entropy_map_of_injective {V : Type*} [Countable V]
[MeasurableSpace V] [MeasurableSingletonClass V]
(κ : Kernel T (S × U)) [IsZeroOrMarkovKernel κ] (μ : Measure T) [IsZeroOrProbabilityMeasure μ]
(f : S × U → V) (hfi : ∀ x, Injective (fun y ↦ f (x, y))) [FiniteSupport μ]
(hκ : AEFiniteKernelSupport κ μ) :
Hk[snd κ, μ] - Ik[κ, μ] ≤ Hk[map κ f, μ]Complete declaration
Lean source
Full Lean sourceLean 4
lemma entropy_snd_sub_mutualInfo_le_entropy_map_of_injective {V : Type*} [Countable V] [MeasurableSpace V] [MeasurableSingletonClass V] (κ : Kernel T (S × U)) [IsZeroOrMarkovKernel κ] (μ : Measure T) [IsZeroOrProbabilityMeasure μ] (f : S × U → V) (hfi : ∀ x, Injective (fun y ↦ f (x, y))) [FiniteSupport μ] (hκ : AEFiniteKernelSupport κ μ) : Hk[snd κ, μ] - Ik[κ, μ] ≤ Hk[map κ f, μ] := by rcases eq_zero_or_isMarkovKernel κ with rfl | hκ' · simp rcases eq_zero_or_isProbabilityMeasure μ with rfl | hμ' · simp have : Nonempty (S × U) := nonempty_of_isProbabilityMeasure_of_isMarkovKernel μ κ inhabit (S × U) have : Nonempty U := ⟨(default : S × U).2⟩ have : Nonempty V := ⟨f default⟩ rw [mutualInfo_eq_snd_sub hκ] have hf : Measurable f := by fun_prop ring_nf calc Hk[condKernel κ, μ ⊗ₘ fst κ] = Hk[snd ((condKernel κ) ⊗ₖ (deterministic (fun x : (T × S) × U ↦ f (x.1.2, x.2)) .of_discrete)), μ ⊗ₘ fst κ] := by symm apply entropy_snd_compProd_deterministic_of_injective _ _ (fun t ↦ hfi t.2) _ = Hk[condKernel (map κ (fun p ↦ (p.1, f p))), μ ⊗ₘ fst κ] := entropy_congr (condKernel_map_prodMk_left κ μ f).symm _ = Hk[condKernel (map κ (fun p ↦ (p.1, f p))), μ ⊗ₘ fst (map κ (fun p ↦ (p.1, f p)))] := by congr 2 with x rw [fst_map_prod _ hf, fst_apply, map_apply _ measurable_fst] _ ≤ Hk[snd (map κ (fun p ↦ (p.1, f p))), μ] := entropy_condKernel_le_entropy_snd hκ.map _ = Hk[map κ f, μ] := by rw [snd_map_prod _ measurable_fst]