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

rdist_of_indep_eq_sum_fibre

PFR.Fibring · PFR/Fibring.lean:38 to 64

Source documentation

If Z1,Z2Z_1, Z_2 are independent, then d[Z1;Z2]d[Z_1; Z_2] is equal to d[π(Z1);π(Z2)]+d[Z1π(Z1);Z2π(Z2)] d[\pi(Z_1);\pi(Z_2)] + d[Z_1|\pi(Z_1); Z_2 |\pi(Z_2)] plus I(Z1Z2:(π(Z1),π(Z2))π(Z1Z2)).I( Z_1 - Z_2 : (\pi(Z_1), \pi(Z_2)) | \pi(Z_1 - Z_2) ).

Exact Lean statement

lemma rdist_of_indep_eq_sum_fibre {Z_1 Z_2 : Ω → H} (h : IndepFun Z_1 Z_2 μ)
    (h1 : Measurable Z_1) (h2 : Measurable Z_2) [FiniteRange Z_1] [FiniteRange Z_2] :
    d[Z_1; μ # Z_2; μ] = d[π ∘ Z_1; μ # π ∘ Z_2; μ] + d[Z_1|π∘Z_1; μ # Z_2|π∘Z_2; μ]
      + I[Z_1-Z_2 : ⟨π∘Z_1, π∘Z_2⟩ | π∘(Z_1 - Z_2); μ]

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma rdist_of_indep_eq_sum_fibre {Z_1 Z_2 : Ω  H} (h : IndepFun Z_1 Z_2 μ)    (h1 : Measurable Z_1) (h2 : Measurable Z_2) [FiniteRange Z_1] [FiniteRange Z_2] :    d[Z_1; μ # Z_2; μ] = d[π ∘ Z_1; μ # π ∘ Z_2; μ] + d[Z_1|π∘Z_1; μ # Z_2|π∘Z_2; μ]      + I[Z_1-Z_2 : π∘Z_1, π∘Z_2 | π∘(Z_1 - Z_2); μ] := by  have hπ : Measurable π := .of_discrete  have step1 : d[Z_1; μ # Z_2; μ] = d[π ∘ Z_1; μ # π ∘ Z_2; μ] +      H[(Z_1 - Z_2)| π ∘ (Z_1 - Z_2); μ] - H[Z_1 | π ∘ Z_1; μ] / 2 - H[Z_2 | π ∘ Z_2; μ] / 2 := by    have hsub : H[(Z_1 - Z_2)| π ∘ (Z_1 - Z_2); μ] = H[(Z_1 - Z_2); μ] - H[π ∘ (Z_1 - Z_2); μ] :=      condEntropy_comp_self (by fun_prop) hπ    rw [h.rdist_eq h1 h2, (h.comp hπ hπ).rdist_eq (hπ.comp h1) (hπ.comp h2),      condEntropy_comp_self h1 hπ, condEntropy_comp_self h2 hπ, hsub, map_comp_sub π]    ring_nf  have m0 : Measurable (fun x  (x, π x)) := .of_discrete  have h' : IndepFun (Z_1, π ∘ Z_1) (Z_2, π ∘ Z_2) μ := h.comp m0 m0  have m1 : Measurable (Z_1 - Z_2) := h1.sub h2  have m2 : Measurable (↑π ∘ Z_1, ↑π ∘ Z_2) := (hπ.comp h1).prodMk (hπ.comp h2)  have m3 : Measurable (↑π ∘ (Z_1 - Z_2)) := hπ.comp m1  have entroplem : H[Z_1 - Z_2|⟨⟨↑π ∘ Z_1, ↑π ∘ Z_2, ↑π ∘ (Z_1 - Z_2); μ]      = H[Z_1 - Z_2|↑π ∘ Z_1, ↑π ∘ Z_2; μ] := by    rw [map_comp_sub π]    let f : H' × H'  (H' × H') × H' := fun (x,y)  ((x,y), x - y)    have hf : Injective f := fun _ _ h  (Prod.ext_iff.1 h).1    have mf : Measurable f := measurable_id.prodMk measurable_sub    refine condEntropy_of_injective' μ m1 m2 f hf (mf.comp m2)  rw [step1, condMutualInfo_eq' m1 m2 m3, entroplem,    condRuzsaDist_of_indep h1 (hπ.comp h1) h2 (hπ.comp h2) μ h']  ring_nf