@@ -347,13 +347,13 @@ variable [Countable T]
347
347
lemma entropy_comm (hX : Measurable X) (hY : Measurable Y) (μ : Measure Ω) :
348
348
H[⟨X, Y⟩; μ] = H[⟨Y, X⟩ ; μ] := by
349
349
change H[Prod.swap ∘ ⟨Y, X⟩ ; μ] = H[⟨Y, X⟩ ; μ]
350
- exact entropy_comp_of_injective μ (hY.prod_mk hX) Prod.swap Prod.swap_injective
350
+ exact entropy_comp_of_injective μ (hY.prodMk hX) Prod.swap Prod.swap_injective
351
351
352
352
/-- `H[(X, Y), Z] = H[X, (Y, Z)]`. -/
353
353
lemma entropy_assoc (hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z) (μ : Measure Ω) :
354
354
H[⟨X, ⟨Y, Z⟩⟩ ; μ] = H[⟨⟨X, Y⟩, Z⟩ ; μ] := by
355
355
change H[MeasurableEquiv.prodAssoc ∘ ⟨⟨X, Y⟩, Z⟩ ; μ] = H[⟨⟨X, Y⟩, Z⟩ ; μ]
356
- exact entropy_comp_of_injective μ ((hX.prod_mk hY).prod_mk hZ) _ $ Equiv.injective _
356
+ exact entropy_comp_of_injective μ ((hX.prodMk hY).prodMk hZ) _ $ Equiv.injective _
357
357
358
358
end entropy
359
359
@@ -417,7 +417,7 @@ lemma condEntropy_two_eq_kernel_entropy (hX : Measurable X) (hY : Measurable Y)
417
417
← Kernel.entropy_congr (swap_condDistrib_ae_eq hY hX hZ μ)]
418
418
have : μ.map (fun ω ↦ (Z ω, Y ω)) = (μ.map (fun ω ↦ (Y ω, Z ω))).comap Prod.swap := by
419
419
rw [map_prod_comap_swap hY hZ]
420
- rw [this, condEntropy_eq_kernel_entropy hX (hY.prod_mk hZ), Kernel.entropy_comap_swap]
420
+ rw [this, condEntropy_eq_kernel_entropy hX (hY.prodMk hZ), Kernel.entropy_comap_swap]
421
421
422
422
end
423
423
@@ -463,7 +463,7 @@ lemma condEntropy_prod_eq_sum {X : Ω → S} {Y : Ω → T} {Z : Ω → T'} [Mea
463
463
[IsFiniteMeasure μ] [Fintype T] [Fintype T'] :
464
464
H[X | ⟨Y, Z⟩ ; μ]
465
465
= ∑ z, (μ (Z ⁻¹' {z})).toReal * H[X | Y ; μ[|Z ⁻¹' {z}]] := by
466
- simp_rw [condEntropy_eq_sum_fintype _ _ _ (hY.prod_mk hZ), condEntropy_eq_sum_fintype _ _ _ hY,
466
+ simp_rw [condEntropy_eq_sum_fintype _ _ _ (hY.prodMk hZ), condEntropy_eq_sum_fintype _ _ _ hY,
467
467
Fintype.sum_prod_type_right, Finset.mul_sum, ← mul_assoc, ← ENNReal.toReal_mul]
468
468
congr with y
469
469
congr with x
@@ -544,7 +544,7 @@ lemma condEntropy_comm [Countable T] {Z : Ω → U}
544
544
(hX : Measurable X) (hY : Measurable Y) (μ : Measure Ω) :
545
545
H[⟨X, Y⟩ | Z ; μ] = H[⟨Y, X⟩ | Z; μ] := by
546
546
change H[⟨X, Y⟩ | Z ; μ] = H[Prod.swap ∘ ⟨X, Y⟩ | Z; μ]
547
- exact (condEntropy_comp_of_injective μ (hX.prod_mk hY) Prod.swap Prod.swap_injective).symm
547
+ exact (condEntropy_comp_of_injective μ (hX.prodMk hY) Prod.swap Prod.swap_injective).symm
548
548
549
549
end condEntropy
550
550
@@ -562,20 +562,20 @@ lemma chain_rule' (μ : Measure Ω) [IsZeroOrProbabilityMeasure μ]
562
562
· simp
563
563
have : Nonempty T := Nonempty.map Y (μ.nonempty_of_neZero)
564
564
rw [entropy_eq_kernel_entropy, Kernel.chain_rule]
565
- simp_rw [← Kernel.map_const _ (hX.prod_mk hY), Kernel.fst_map_prod _ hY, Kernel.map_const _ hX,
566
- Kernel.map_const _ (hX.prod_mk hY)]
565
+ simp_rw [← Kernel.map_const _ (hX.prodMk hY), Kernel.fst_map_prod _ hY, Kernel.map_const _ hX,
566
+ Kernel.map_const _ (hX.prodMk hY)]
567
567
· congr 1
568
568
· rw [Kernel.entropy, integral_dirac]
569
569
rfl
570
570
· simp_rw [condEntropy_eq_kernel_entropy hY hX]
571
571
have : Measure.dirac () ⊗ₘ Kernel.const Unit (μ.map X) = μ.map (fun ω ↦ ((), X ω)) := by
572
572
ext s _
573
- rw [Measure.dirac_unit_compProd_const, Measure.map_map measurable_prod_mk_left hX]
573
+ rw [Measure.dirac_unit_compProd_const, Measure.map_map measurable_prodMk_left hX]
574
574
congr
575
575
rw [this, Kernel.entropy_congr (condDistrib_const_unit hX hY μ)]
576
576
have : μ.map (fun ω ↦ ((), X ω)) = (μ.map X).map (Prod.mk ()) := by
577
577
ext s _
578
- rw [Measure.map_map measurable_prod_mk_left hX]
578
+ rw [Measure.map_map measurable_prodMk_left hX]
579
579
rfl
580
580
rw [this, Kernel.entropy_prodMkLeft_unit]
581
581
· apply Kernel.FiniteKernelSupport.aefiniteKernelSupport
@@ -634,7 +634,7 @@ lemma cond_chain_rule' (μ : Measure Ω) [IsZeroOrProbabilityMeasure μ]
634
634
· simp
635
635
have : Nonempty S := Nonempty.map X (μ.nonempty_of_neZero)
636
636
have : Nonempty T := Nonempty.map Y (μ.nonempty_of_neZero)
637
- rw [condEntropy_eq_kernel_entropy (hX.prod_mk hY) hZ, Kernel.chain_rule]
637
+ rw [condEntropy_eq_kernel_entropy (hX.prodMk hY) hZ, Kernel.chain_rule]
638
638
· congr 1
639
639
· rw [condEntropy_eq_kernel_entropy hX hZ]
640
640
refine Kernel.entropy_congr ?_
@@ -737,10 +737,10 @@ lemma mutualInfo_nonneg (hX : Measurable X) (hY : Measurable Y) (μ : Measure Ω
737
737
0 ≤ I[X : Y ; μ] := by
738
738
simp_rw [mutualInfo_def, entropy_def]
739
739
have h_fst : μ.map X = (μ.map (⟨X, Y⟩)).map Prod.fst := by
740
- rw [Measure.map_map measurable_fst (hX.prod_mk hY)]
740
+ rw [Measure.map_map measurable_fst (hX.prodMk hY)]
741
741
congr
742
742
have h_snd : μ.map Y = (μ.map (⟨X, Y⟩)).map Prod.snd := by
743
- rw [Measure.map_map measurable_snd (hX.prod_mk hY)]
743
+ rw [Measure.map_map measurable_snd (hX.prodMk hY)]
744
744
congr
745
745
rw [h_fst, h_snd]
746
746
exact measureMutualInfo_nonneg
@@ -756,10 +756,10 @@ lemma mutualInfo_eq_zero (hX : Measurable X) (hY : Measurable Y) {μ : Measure
756
756
I[X : Y ; μ] = 0 ↔ IndepFun X Y μ := by
757
757
simp_rw [mutualInfo_def, entropy_def]
758
758
have h_fst : μ.map X = (μ.map (⟨X, Y⟩)).map Prod.fst := by
759
- rw [Measure.map_map measurable_fst (hX.prod_mk hY)]
759
+ rw [Measure.map_map measurable_fst (hX.prodMk hY)]
760
760
congr
761
761
have h_snd : μ.map Y = (μ.map (⟨X, Y⟩)).map Prod.snd := by
762
- rw [Measure.map_map measurable_snd (hX.prod_mk hY)]
762
+ rw [Measure.map_map measurable_snd (hX.prodMk hY)]
763
763
congr
764
764
rw [h_fst, h_snd]
765
765
convert measureMutualInfo_eq_zero_iff (μ := μ.map (⟨X, Y⟩))
@@ -768,8 +768,8 @@ lemma mutualInfo_eq_zero (hX : Measurable X) (hY : Measurable Y) {μ : Measure
768
768
congr! with p
769
769
convert measureReal_prod_prod (μ := μ.map X) (ν := μ.map Y) {p.1 } {p.2 }
770
770
· simp
771
- · exact Measure.map_map measurable_fst (hX.prod_mk hY)
772
- · exact Measure.map_map measurable_snd (hX.prod_mk hY)
771
+ · exact Measure.map_map measurable_fst (hX.prodMk hY)
772
+ · exact Measure.map_map measurable_snd (hX.prodMk hY)
773
773
774
774
protected alias ⟨_, IndepFun.mutualInfo_eq_zero⟩ := mutualInfo_eq_zero
775
775
@@ -857,7 +857,7 @@ lemma condMutualInfo_eq_kernel_mutualInfo
857
857
rwa [Measure.map_apply hZ (.singleton _)] at hx
858
858
· by_cases hx : (μ.map Z) {x} = 0
859
859
· simp [hx]
860
- rw [condDistrib_apply (hX.prod_mk hY) hZ]
860
+ rw [condDistrib_apply (hX.prodMk hY) hZ]
861
861
rwa [Measure.map_apply hZ (.singleton _)] at hx
862
862
863
863
end
@@ -920,7 +920,7 @@ lemma condMutualInfo_eq [Countable U]
920
920
Kernel.entropy_congr (condDistrib_fst_ae_eq hX hY hZ _),
921
921
Kernel.entropy_congr (condDistrib_snd_ae_eq hX hY hZ _),
922
922
condEntropy_eq_kernel_entropy hX hZ, condEntropy_eq_kernel_entropy hY hZ,
923
- condEntropy_eq_kernel_entropy (hX.prod_mk hY) hZ]
923
+ condEntropy_eq_kernel_entropy (hX.prodMk hY) hZ]
924
924
925
925
/-- `I[X : Y| Z] = H[X| Z] - H[X|Y, Z]`. -/
926
926
lemma condMutualInfo_eq' [Countable U]
@@ -943,7 +943,7 @@ lemma condMutualInfo_of_inj_map [Countable U] [IsZeroOrProbabilityMeasure μ]
943
943
let g : U → (S × T) → (V × T) := fun z (x, y) ↦ (f z x, y)
944
944
have hg : ∀ t, Function.Injective (g t) :=
945
945
fun _ _ _ h ↦ Prod.ext_iff.2 ⟨hf _ (Prod.ext_iff.1 h).1 , (Prod.ext_iff.1 h).2 ⟩
946
- rw [← condEntropy_of_injective μ (hX.prod_mk hY) hZ g hg, ← condEntropy_of_injective μ hX hZ _ hf]
946
+ rw [← condEntropy_of_injective μ (hX.prodMk hY) hZ g hg, ← condEntropy_of_injective μ hX hZ _ hf]
947
947
948
948
lemma condMutualInfo_of_inj [Countable U]
949
949
(hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z)
@@ -952,7 +952,7 @@ lemma condMutualInfo_of_inj [Countable U]
952
952
{f : U → V} (hf : Function.Injective f) :
953
953
I[X : Y | f ∘ Z; μ] = I[X : Y | Z; μ] := by
954
954
have hfZ : Measurable (f ∘ Z) := by fun_prop
955
- rw [condMutualInfo_eq hX hY hZ, condMutualInfo_eq hX hY hfZ, condEntropy_of_injective' _ hX hZ _ hf hfZ, condEntropy_of_injective' _ hY hZ _ hf hfZ, condEntropy_of_injective' _ (hX.prod_mk hY) hZ _ hf hfZ]
955
+ rw [condMutualInfo_eq hX hY hZ, condMutualInfo_eq hX hY hfZ, condEntropy_of_injective' _ hX hZ _ hf hfZ, condEntropy_of_injective' _ hY hZ _ hf hfZ, condEntropy_of_injective' _ (hX.prodMk hY) hZ _ hf hfZ]
956
956
957
957
lemma condEntropy_prod_eq_of_indepFun [Fintype T] [Fintype U] [IsZeroOrProbabilityMeasure μ]
958
958
(hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z) [FiniteRange X]
@@ -970,7 +970,7 @@ lemma condEntropy_prod_eq_of_indepFun [Fintype T] [Fintype U] [IsZeroOrProbabili
970
970
congr 1
971
971
have : IsProbabilityMeasure (μ[|Z ⁻¹' {w}]) := cond_isProbabilityMeasure hw
972
972
apply IdentDistrib.condEntropy_eq hX hY hX hY
973
- exact (h.identDistrib_cond (MeasurableSet.singleton w) (hX.prod_mk hY) hZ hw).symm
973
+ exact (h.identDistrib_cond (MeasurableSet.singleton w) (hX.prodMk hY) hZ hw).symm
974
974
975
975
end
976
976
@@ -1013,7 +1013,7 @@ lemma ent_of_cond_indep (hX : Measurable X) (hY : Measurable Y) (hZ : Measurable
1013
1013
H[⟨X, ⟨Y, Z⟩⟩ ; μ] = H[⟨X, Z⟩; μ] + H[⟨Y, Z⟩; μ] - H[Z; μ] := by
1014
1014
have hI : I[X : Y | Z ; μ] = 0 := (condMutualInfo_eq_zero hX hY).mpr h
1015
1015
rw [condMutualInfo_eq hX hY hZ] at hI
1016
- rw [entropy_assoc hX hY hZ, chain_rule _ (hX.prod_mk hY) hZ, chain_rule _ hX hZ, chain_rule _ hY hZ]
1016
+ rw [entropy_assoc hX hY hZ, chain_rule _ (hX.prodMk hY) hZ, chain_rule _ hX hZ, chain_rule _ hY hZ]
1017
1017
linarith [hI]
1018
1018
1019
1019
variable [IsZeroOrProbabilityMeasure μ]
@@ -1062,7 +1062,7 @@ lemma condEntropy_comp_ge
1062
1062
lemma entropy_triple_add_entropy_le (hX : Measurable X) (hY : Measurable Y) (hZ : Measurable Z)
1063
1063
[FiniteRange X] [FiniteRange Y] [FiniteRange Z] :
1064
1064
H[⟨X, ⟨Y, Z⟩⟩ ; μ] + H[Z ; μ] ≤ H[⟨X, Z⟩ ; μ] + H[⟨Y, Z⟩ ; μ] := by
1065
- rw [chain_rule _ hX (hY.prod_mk hZ), chain_rule _ hX hZ, chain_rule _ hY hZ]
1065
+ rw [chain_rule _ hX (hY.prodMk hZ), chain_rule _ hX hZ, chain_rule _ hY hZ]
1066
1066
ring_nf
1067
1067
exact add_le_add le_rfl (entropy_submodular _ hX hY hZ)
1068
1068
0 commit comments