Skip to content

Commit bb328b0

Browse files
committed
Bump mathlib
1 parent 0010cb5 commit bb328b0

31 files changed

+399
-796
lines changed

PFR.lean

+10-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import PFR.ForMathlib.FiniteRange.ConditionalProbability
2323
import PFR.ForMathlib.FiniteRange.Defs
2424
import PFR.ForMathlib.FiniteRange.IdentDistrib
2525
import PFR.ForMathlib.FourVariables
26-
import PFR.ForMathlib.MeasureReal.Defs
2726
import PFR.ForMathlib.MeasureReal.Indep
2827
import PFR.ForMathlib.MeasureReal.UniformOn
2928
import PFR.ForMathlib.Pair
@@ -42,9 +41,17 @@ import PFR.Mathlib.LinearAlgebra.Basis.VectorSpace
4241
import PFR.Mathlib.LinearAlgebra.Dimension.Finrank
4342
import PFR.Mathlib.LinearAlgebra.Dimension.FreeAndStrongRankCondition
4443
import PFR.Mathlib.MeasureTheory.Constructions.Pi
45-
import PFR.Mathlib.MeasureTheory.Integral.Lebesgue
46-
import PFR.Mathlib.MeasureTheory.Integral.SetIntegral
44+
import PFR.Mathlib.MeasureTheory.Integral.Bochner.Basic
45+
import PFR.Mathlib.MeasureTheory.Integral.Bochner.Set
46+
import PFR.Mathlib.MeasureTheory.Integral.Lebesgue.Basic
47+
import PFR.Mathlib.MeasureTheory.Integral.Lebesgue.Countable
48+
import PFR.Mathlib.MeasureTheory.Measure.Dirac
49+
import PFR.Mathlib.MeasureTheory.Measure.MeasureSpace
50+
import PFR.Mathlib.MeasureTheory.Measure.MeasureSpaceDef
4751
import PFR.Mathlib.MeasureTheory.Measure.Prod
52+
import PFR.Mathlib.MeasureTheory.Measure.Real
53+
import PFR.Mathlib.MeasureTheory.Measure.Typeclasses.Probability
54+
import PFR.Mathlib.Probability.ConditionalProbability
4855
import PFR.Mathlib.Probability.IdentDistrib
4956
import PFR.Mathlib.Probability.Independence.Basic
5057
import PFR.Mathlib.Probability.Independence.Kernel

PFR/ForMathlib/Entropy/Basic.lean

+40-37
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import PFR.ForMathlib.ConditionalIndependence
22
import PFR.ForMathlib.Entropy.Kernel.MutualInfo
33
import PFR.ForMathlib.Uniform
4+
import PFR.Mathlib.MeasureTheory.Integral.Bochner.Basic
5+
import PFR.Mathlib.Probability.ConditionalProbability
46

57
/-!
68
# Entropy and conditional entropy
@@ -99,7 +101,7 @@ lemma entropy_le_log_card_of_mem_finite [DiscreteMeasurableSpace S]
99101

100102
/-- `H[X] = ∑ₛ P[X=s] log 1 / P[X=s]`. -/
101103
lemma entropy_eq_sum (μ : Measure Ω) [IsZeroOrProbabilityMeasure μ] :
102-
entropy X μ = ∑' x, negMulLog (μ.map X {x}).toReal := by
104+
entropy X μ = ∑' x, negMulLog ((μ.map X).real {x}) := by
103105
rw [entropy_def, measureEntropy_of_isProbabilityMeasure]
104106

105107
lemma entropy_eq_sum' (μ : Measure Ω) [IsZeroOrProbabilityMeasure μ] :
@@ -108,11 +110,12 @@ lemma entropy_eq_sum' (μ : Measure Ω) [IsZeroOrProbabilityMeasure μ] :
108110

109111
lemma entropy_eq_sum_finset {μ : Measure Ω} [IsZeroOrProbabilityMeasure μ]
110112
{A : Finset S} (hA : (μ.map X) Aᶜ = 0):
111-
entropy X μ = ∑ x ∈ A, negMulLog (μ.map X {x}).toReal := by
113+
entropy X μ = ∑ x ∈ A, negMulLog ((μ.map X).real {x}) := by
112114
rw [entropy_eq_sum]
113115
convert tsum_eq_sum ?_
114116
intro s hs
115117
convert negMulLog_zero
118+
rw [Measure.real]
116119
convert ENNReal.toReal_zero
117120
convert measure_mono_null ?_ hA
118121
simp [hs]
@@ -124,7 +127,7 @@ lemma entropy_eq_sum_finset' {μ : Measure Ω} [IsZeroOrProbabilityMeasure μ]
124127

125128
lemma entropy_eq_sum_finiteRange [MeasurableSingletonClass S]
126129
(hX : Measurable X) {μ : Measure Ω} [IsZeroOrProbabilityMeasure μ] [FiniteRange X]:
127-
entropy X μ = ∑ x ∈ FiniteRange.toFinset X, negMulLog (μ.map X {x}).toReal :=
130+
entropy X μ = ∑ x ∈ FiniteRange.toFinset X, negMulLog ((μ.map X).real {x}) :=
128131
entropy_eq_sum_finset (A := FiniteRange.toFinset X) (full_measure_of_finiteRange hX)
129132

130133
lemma entropy_eq_sum_finiteRange' [MeasurableSingletonClass S] (hX : Measurable X) {μ : Measure Ω}
@@ -134,15 +137,15 @@ lemma entropy_eq_sum_finiteRange' [MeasurableSingletonClass S] (hX : Measurable
134137

135138
/-- `H[X | Y=y] = ∑_s P[X=s | Y=y] log 1/(P[X=s | Y=y])`. -/
136139
lemma entropy_cond_eq_sum (μ : Measure Ω) (y : T) :
137-
H[X | Y ← y ; μ] = ∑' x, negMulLog ((μ[|Y ← y]).map X {x}).toReal := by
140+
H[X | Y ← y ; μ] = ∑' x, negMulLog (((μ[|Y ← y]).map X).real {x}) := by
138141
by_cases hy : μ (Y ⁻¹' {y}) = 0
139142
· rw [entropy_def, cond_eq_zero_of_meas_eq_zero hy]
140143
simp
141144
· rw [entropy_eq_sum]
142145

143146
lemma entropy_cond_eq_sum_finiteRange [MeasurableSingletonClass S]
144147
(hX : Measurable X) (μ : Measure Ω) (y : T) [FiniteRange X]:
145-
H[X | Y ← y ; μ] = ∑ x ∈ FiniteRange.toFinset X, negMulLog ((μ[|Y ← y]).map X {x}).toReal := by
148+
H[X | Y ← y ; μ] = ∑ x ∈ FiniteRange.toFinset X, negMulLog (((μ[|Y ← y]).map X).real {x}) := by
146149
by_cases hy : μ (Y ⁻¹' {y}) = 0
147150
· rw [entropy_def, cond_eq_zero_of_meas_eq_zero hy]
148151
simp
@@ -212,10 +215,12 @@ lemma entropy_eq_log_card {X : Ω → S} [Fintype S] [MeasurableSingletonClass S
212215
simp
213216

214217
/-- If `X` is an `S`-valued random variable, then there exists `s ∈ S` such that
215-
`P[X = s] ≥ \exp(- H[X])`. TODO: remove the probability measure hypothesis, which is unncessary here. -/
218+
`P[X = s] ≥ \exp(- H[X])`.
219+
220+
TODO: remove the probability measure hypothesis, which is unnecessary here. -/
216221
lemma prob_ge_exp_neg_entropy [MeasurableSingletonClass S] (X : Ω → S) (μ : Measure Ω)
217222
[IsProbabilityMeasure μ] (hX : Measurable X) [hX': FiniteRange X] :
218-
∃ s : S, μ.map X {s} ≥ (μ Set.univ) * (rexp (- H[X ; μ])).toNNReal := by
223+
∃ s : S, μ Set.univ * (rexp (- H[X ; μ])).toNNReal ≤ μ.map X {s} := by
219224
have : Nonempty Ω := μ.nonempty_of_neZero
220225
have : Nonempty S := Nonempty.map X (by infer_instance)
221226
let μS := μ.map X
@@ -237,7 +242,7 @@ lemma prob_ge_exp_neg_entropy [MeasurableSingletonClass S] (X : Ω → S) (μ :
237242
rcases Finset.eq_empty_or_nonempty S_nonzero with h_empty | h_nonempty
238243
· have h_norm_zero : μ Set.univ = 0 := by
239244
have h : ∀ s ∈ A, μs s ≠ 0 → μs s ≠ 0 := fun _ _ h ↦ h
240-
rw [← h_norm, rw_norm, ← Finset.sum_measure_singleton, ← Finset.sum_filter_of_ne h,
245+
rw [← h_norm, rw_norm, ← sum_measure_singleton, ← Finset.sum_filter_of_ne h,
241246
show Finset.filter _ _ = S_nonzero from rfl, h_empty, show Finset.sum ∅ μs = 0 from rfl]
242247
use Classical.arbitrary (α := S)
243248
rw [h_norm_zero, zero_mul]
@@ -256,7 +261,7 @@ lemma prob_ge_exp_neg_entropy [MeasurableSingletonClass S] (X : Ω → S) (μ :
256261
rw [h_norm, Measure.measure_univ_pos]
257262
exact NeZero.ne μ
258263
have h_norm_finite : norm < ∞ := by
259-
rw [rw_norm, ← Finset.sum_measure_singleton]
264+
rw [rw_norm, ← sum_measure_singleton]
260265
exact ENNReal.sum_lt_top.2 (fun s _ ↦ Ne.lt_top (h_finite s))
261266
have h_invinvnorm_finite : norm⁻¹⁻¹ ≠ ∞ := by
262267
rw [inv_inv]
@@ -271,7 +276,7 @@ lemma prob_ge_exp_neg_entropy [MeasurableSingletonClass S] (X : Ω → S) (μ :
271276
ENNReal.mul_inv_cancel (ne_zero_of_lt h_norm_pos) (LT.lt.ne_top h_norm_finite)
272277
have h_pdf1 : (∑ s ∈ A, pdf s) = 1 := by
273278
rw [← ENNReal.toReal_sum (fun s _ ↦ h_pdf_finite s), ← Finset.mul_sum,
274-
Finset.sum_measure_singleton, mul_comm, h_norm_cancel, ENNReal.toReal_one]
279+
sum_measure_singleton, mul_comm, h_norm_cancel, ENNReal.toReal_one]
275280

276281
let ⟨s_max, hs, h_min⟩ := Finset.exists_min_image S_nonzero neg_log_pdf h_nonempty
277282
have h_pdf_s_max_pos : 0 < pdf s_max := by
@@ -296,7 +301,7 @@ lemma prob_ge_exp_neg_entropy [MeasurableSingletonClass S] (X : Ω → S) (μ :
296301
congr with s
297302
simp only [negMulLog, neg_mul, ENNReal.toReal_mul, neg_inj, g_rhs, pdf, pdf_nn]
298303
simp at h_norm
299-
simp [h_norm, μs, μS]
304+
simp [h_norm, μs, μS, Measure.real]
300305
have h_lhs : ∀ s, μs s = 0 → g_lhs s = 0 := by {intros _ h; simp [g_lhs, pdf, pdf_nn, h]}
301306
have h_rhs : ∀ s, μs s = 0 → g_rhs s = 0 := by {intros _ h; simp [g_rhs, pdf, pdf_nn, h]}
302307
rw [← Finset.sum_filter_of_ne (fun s _ ↦ (h_lhs s).mt),
@@ -314,7 +319,7 @@ lemma prob_ge_exp_neg_entropy' [MeasurableSingletonClass S]
314319
∃ s : S, rexp (- H[X ; μ]) ≤ μ.real (X ⁻¹' {s}) := by
315320
obtain ⟨s, hs⟩ := prob_ge_exp_neg_entropy X μ hX
316321
use s
317-
rwa [IsProbabilityMeasure.measure_univ, one_mul, ge_iff_le,
322+
rwa [IsProbabilityMeasure.measure_univ, one_mul,
318323
(show ENNReal.ofNNReal _ = ENNReal.ofReal _ from rfl),
319324
ENNReal.ofReal_le_iff_le_toReal (measure_ne_top _ _), ← Measure.real,
320325
map_measureReal_apply hX (MeasurableSet.singleton s)] at hs
@@ -327,7 +332,7 @@ lemma const_of_nonpos_entropy [MeasurableSingletonClass S]
327332
rcases prob_ge_exp_neg_entropy' (μ := μ) X hX with ⟨ s, hs ⟩
328333
use s
329334
apply LE.le.antisymm
330-
· rw [← IsProbabilityMeasure.measureReal_univ (μ := μ)]
335+
· rw [← measureReal_univ_eq_one (μ := μ)]
331336
exact measureReal_mono (subset_univ _) (by finiteness)
332337
refine le_trans ?_ hs
333338
simp [hent]
@@ -381,10 +386,10 @@ section
381386
variable [MeasurableSingletonClass T]
382387

383388
lemma condEntropy_eq_zero (hY : Measurable Y) (μ : Measure Ω) [IsFiniteMeasure μ] (t : T)
384-
(ht : (μ.map Y {t}).toReal = 0) : H[X | Y ← t ; μ] = 0 := by
389+
(ht : (μ.map Y).real {t} = 0) : H[X | Y ← t ; μ] = 0 := by
385390
convert entropy_zero_measure X
386391
apply cond_eq_zero_of_meas_eq_zero
387-
rw [Measure.map_apply hY (MeasurableSet.singleton t)] at ht
392+
rw [map_measureReal_apply hY (.singleton t)] at ht
388393
rw [← measureReal_eq_zero_iff]
389394
exact ht
390395

@@ -443,39 +448,39 @@ lemma condEntropy_le_log_card [MeasurableSingletonClass S] [Fintype S]
443448
/-- `H[X|Y] = ∑_y P[Y=y] H[X|Y=y]`.-/
444449
lemma condEntropy_eq_sum [MeasurableSingletonClass T] (X : Ω → S) (Y : Ω → T) (μ : Measure Ω)
445450
[IsFiniteMeasure μ] (hY : Measurable Y) [FiniteRange Y]:
446-
H[X | Y ; μ] = ∑ y ∈ FiniteRange.toFinset Y, (μ.map Y {y}).toReal * H[X | Y ← y ; μ] := by
447-
rw [condEntropy_def, integral_eq_setIntegral (full_measure_of_finiteRange hY), integral_finset _ _ IntegrableOn.finset]
451+
H[X | Y ; μ] = ∑ y ∈ FiniteRange.toFinset Y, ((μ.map Y).real {y}) * H[X | Y ← y ; μ] := by
452+
rw [condEntropy_def, integral_eq_setIntegral (full_measure_of_finiteRange hY),
453+
integral_finset' _ .finset]
448454
simp_rw [smul_eq_mul]
449455

450456
/-- `H[X|Y] = ∑_y P[Y=y] H[X|Y=y]`$.-/
451457
lemma condEntropy_eq_sum_fintype
452458
[MeasurableSingletonClass T] (X : Ω → S) (Y : Ω → T) (μ : Measure Ω)
453459
[IsFiniteMeasure μ] (hY : Measurable Y) [Fintype T] :
454-
H[X | Y ; μ] = ∑ y, (Y ⁻¹' {y})).toReal * H[X | Y ← y ; μ] := by
455-
rw [condEntropy_def, integral_fintype _ .of_finite]
456-
simp_rw [smul_eq_mul, Measure.map_apply hY (.singleton _)]
460+
H[X | Y ; μ] = ∑ y, μ.real (Y ⁻¹' {y}) * H[X | Y ← y ; μ] := by
461+
rw [condEntropy_def, integral_fintype' .of_finite]
462+
simp_rw [smul_eq_mul, map_measureReal_apply hY (.singleton _)]
457463

458464
variable [MeasurableSingletonClass T]
459465

460466
lemma condEntropy_prod_eq_sum {X : Ω → S} {Y : Ω → T} {Z : Ω → T'} [MeasurableSpace T']
461467
[MeasurableSingletonClass T']
462468
(μ : Measure Ω) (hY : Measurable Y) (hZ : Measurable Z)
463469
[IsFiniteMeasure μ] [Fintype T] [Fintype T'] :
464-
H[X | ⟨Y, Z⟩ ; μ]
465-
= ∑ z, (μ (Z ⁻¹' {z})).toReal * H[X | Y ; μ[|Z ⁻¹' {z}]] := by
470+
H[X | ⟨Y, Z⟩ ; μ] = ∑ z, μ.real (Z ⁻¹' {z}) * H[X | Y ; μ[|Z ⁻¹' {z}]] := by
466471
simp_rw [condEntropy_eq_sum_fintype _ _ _ (hY.prodMk hZ), condEntropy_eq_sum_fintype _ _ _ hY,
467-
Fintype.sum_prod_type_right, Finset.mul_sum, ← mul_assoc, ← ENNReal.toReal_mul]
472+
Fintype.sum_prod_type_right, Finset.mul_sum, ← mul_assoc]
468473
congr with y
469474
congr with x
470475
have A : (fun a ↦ (Y a, Z a)) ⁻¹' {(x, y)} = Z ⁻¹' {y} ∩ Y ⁻¹' {x} := by
471476
ext p; simp [and_comm]
472477
congr 2
473-
· rw [cond_apply (hZ (.singleton y)), ← mul_assoc, A]
474-
rcases eq_or_ne (μ (Z ⁻¹' {y})) 0 with hy|hy
475-
· have : μ (Z ⁻¹' {y} ∩ Y ⁻¹' {x}) = 0 :=
476-
le_antisymm ((measure_mono Set.inter_subset_left).trans hy.le) bot_le
478+
· rw [cond_real_apply (hZ (.singleton y)), A]
479+
obtain hy | hy := eq_or_ne (μ.real (Z ⁻¹' {y})) 0
480+
· have : μ.real (Z ⁻¹' {y} ∩ Y ⁻¹' {x}) = 0 :=
481+
measureReal_mono_null Set.inter_subset_left hy (by finiteness)
477482
simp [this, hy]
478-
· rw [ENNReal.mul_inv_cancel hy (by finiteness), one_mul]
483+
· rw [mul_inv_cancel_left₀ hy]
479484
· rw [A, cond_cond_eq_cond_inter (hZ (.singleton y)) (hY (.singleton x))]
480485

481486
variable [MeasurableSingletonClass S]
@@ -485,7 +490,7 @@ lemma condEntropy_eq_sum_sum (hX : Measurable X) {Y : Ω → T} (hY : Measurable
485490
(μ : Measure Ω) [IsProbabilityMeasure μ] [FiniteRange X] [FiniteRange Y] :
486491
H[X | Y ; μ]
487492
= ∑ y ∈ FiniteRange.toFinset Y, ∑ x ∈ FiniteRange.toFinset X,
488-
(μ.map Y {y}).toReal * negMulLog ((μ[|Y ← y]).map X {x}).toReal := by
493+
((μ.map Y).real {y}) * negMulLog (((μ[|Y ← y]).map X).real {x}) := by
489494
rw [condEntropy_eq_sum _ _ _ hY]
490495
congr with y
491496
rw [entropy_cond_eq_sum_finiteRange hX, Finset.mul_sum]
@@ -494,19 +499,17 @@ omit [MeasurableSingletonClass S] in
494499
/-- `H[X|Y] = ∑_y ∑_x P[Y=y] P[X=x|Y=y] log ⧸(P[X=x|Y=y])`$.-/
495500
lemma condEntropy_eq_sum_sum_fintype {Y : Ω → T} (hY : Measurable Y)
496501
(μ : Measure Ω) [IsProbabilityMeasure μ] [Fintype S] [Fintype T] :
497-
H[X | Y ; μ] = ∑ y, ∑ x,
498-
(μ.map Y {y}).toReal * negMulLog ((μ[|Y ← y]).map X {x}).toReal := by
502+
H[X | Y ; μ] = ∑ y, ∑ x, (μ.map Y).real {y} * negMulLog (((μ[|Y ← y]).map X).real {x}) := by
499503
rw [condEntropy_eq_sum_fintype _ _ _ hY]
500504
congr with y
501-
rw [entropy_cond_eq_sum, tsum_fintype, Finset.mul_sum,
502-
Measure.map_apply hY (measurableSet_singleton _)]
505+
rw [entropy_cond_eq_sum, tsum_fintype, Finset.mul_sum, map_measureReal_apply hY (.singleton _)]
503506

504507
/-- Same as previous lemma, but with a sum over a product space rather than a double sum. -/
505508
lemma condEntropy_eq_sum_prod (hX : Measurable X) {Y : Ω → T}
506509
(hY : Measurable Y)
507510
(μ : Measure Ω) [IsProbabilityMeasure μ] [FiniteRange X] [FiniteRange Y]:
508511
H[X | Y ; μ] = ∑ p ∈ (FiniteRange.toFinset X) ×ˢ (FiniteRange.toFinset Y),
509-
(μ.map Y {p.2}).toReal * negMulLog ((μ[|Y ⁻¹' {p.2}]).map X {p.1}).toReal := by
512+
(μ.map Y).real {p.2} * negMulLog (((μ[|Y ⁻¹' {p.2}]).map X).real {p.1}) := by
510513
rw [condEntropy_eq_sum_sum hX hY, Finset.sum_product_right]
511514

512515
variable [Countable S]
@@ -961,12 +964,12 @@ lemma condEntropy_prod_eq_of_indepFun [Fintype T] [Fintype U] [IsZeroOrProbabili
961964
rcases eq_zero_or_isProbabilityMeasure μ with rfl | hμ
962965
· simp
963966
rw [condEntropy_prod_eq_sum _ hY hZ]
964-
have : H[X | Y ; μ] = ∑ z, (μ (Z ⁻¹' {z})).toReal * H[X | Y ; μ] := by
965-
rw [← Finset.sum_mul, sum_measure_preimage_singleton' μ hZ, one_mul]
967+
have : H[X | Y ; μ] = ∑ z, (μ.real (Z ⁻¹' {z})) * H[X | Y ; μ] := by
968+
rw [← Finset.sum_mul, sum_measureReal_preimage_singleton _ fun z _ ↦ hZ <| .singleton z]; simp
966969
rw [this]
967970
congr with w
968971
rcases eq_or_ne (μ (Z ⁻¹' {w})) 0 with hw|hw
969-
· simp [hw]
972+
· simp [hw, Measure.real]
970973
congr 1
971974
have : IsProbabilityMeasure (μ[|Z ⁻¹' {w}]) := cond_isProbabilityMeasure hw
972975
apply IdentDistrib.condEntropy_eq hX hY hX hY

PFR/ForMathlib/Entropy/Kernel/Basic.lean

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Mathlib.MeasureTheory.Integral.Prod
22
import PFR.ForMathlib.Entropy.Measure
3-
import PFR.Mathlib.MeasureTheory.Integral.SetIntegral
3+
import PFR.Mathlib.MeasureTheory.Integral.Bochner.Set
44
import PFR.Mathlib.Probability.Kernel.Disintegration
55

66
/-!
@@ -113,7 +113,7 @@ lemma entropy_le_log_card
113113
· simp
114114

115115
lemma entropy_eq_integral_sum (κ : Kernel T S) [IsZeroOrMarkovKernel κ] (μ : Measure T) :
116-
Hk[κ, μ] = μ[fun y ↦ ∑' x, negMulLog (κ y {x}).toReal] := by
116+
Hk[κ, μ] = μ[fun y ↦ ∑' x, negMulLog ((κ y).real {x})] := by
117117
simp_rw [entropy, measureEntropy_of_isProbabilityMeasure]
118118

119119
-- entropy_map_of_injective is a special case of this (see def of map)
@@ -246,14 +246,14 @@ lemma entropy_compProd_aux [MeasurableSingletonClass S] [MeasurableSingletonClas
246246
simp at hu ⊢
247247
exact hu hs
248248
exact MeasurableSet.compl (Finset.measurableSet _)
249-
rw [measureEntropy_def_finite' hκη, measureEntropy_def_finite' (hB t ht),
249+
rw [measureEntropy_eq_sum hκη, measureEntropy_eq_sum (hB t ht),
250250
integral_finset _ _ IntegrableOn.finset,
251251
← Finset.sum_add_distrib, Finset.sum_product]
252252
apply Finset.sum_congr rfl
253253
intro s hs
254254
simp
255255
have hts : (t, s) ∈ A ×ˢ B := by simp [ht, hs]
256-
rw [measureEntropy_def_finite' (hC (t, s) hts)]
256+
rw [measureEntropy_eq_sum (hC (t, s) hts)]
257257
simp
258258
have : negMulLog ((κ t).real {s}) = ∑ u ∈ C, negMulLog ((κ t).real {s}) *
259259
((comap η (Prod.mk t) measurable_prodMk_left) s).real {u} := by

PFR/ForMathlib/Entropy/Kernel/RuzsaDist.lean

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import PFR.ForMathlib.Entropy.Kernel.Group
2+
import PFR.Mathlib.MeasureTheory.Integral.Bochner.Basic
23

34
/-!
45
# Ruzsa distance between kernels
@@ -294,9 +295,9 @@ lemma rdist_triangle_aux1 (κ : Kernel T G) (η : Kernel T' G)
294295
(((μ.support ×ˢ μ''.support) ×ˢ μ'.support : Finset ((T × T'') × T')) : Set ((T × T'') × T'))ᶜ
295296
= 0 :=
296297
Measure.prod_of_full_measure_finset hAC (measure_compl_support μ')
297-
simp_rw [entropy, integral_eq_setIntegral hAB, integral_eq_setIntegral hACB, integral_finset _ _ IntegrableOn.finset,
298-
smul_eq_mul, Measure.prod_apply_singleton, Finset.sum_product, ENNReal.toReal_mul, mul_assoc,
299-
← Finset.mul_sum]
298+
simp_rw [entropy, integral_eq_setIntegral hAB, integral_eq_setIntegral hACB,
299+
integral_finset' _ .finset, smul_eq_mul, Measure.prod_real_singleton, Finset.sum_product,
300+
mul_assoc, ← Finset.mul_sum]
300301
congr with x
301302
have : ∀ z y, map (prodMkRight T' (prodMkRight T'' κ) ×ₖ prodMkLeft (T × T'') η)
302303
(fun p ↦ p.1 - p.2) ((x, z), y)
@@ -305,7 +306,7 @@ lemma rdist_triangle_aux1 (κ : Kernel T G) (η : Kernel T' G)
305306
ext s hs
306307
rw [map_apply' _ (by fun_prop) _ hs, map_apply' _ (by fun_prop) _ hs, prod_apply, prod_apply]
307308
simp
308-
simp_rw [this, ← Finset.sum_mul, Finset.sum_toReal_measure_singleton,
309+
simp_rw [this, ← Finset.sum_mul, sum_measureReal_singleton, Measure.real,
309310
measure_of_measure_compl_eq_zero (measure_compl_support μ'')]
310311
simp
311312

@@ -325,11 +326,11 @@ lemma rdist_triangle_aux2 (η : Kernel T' G) (ξ : Kernel T'' G)
325326
(((μ.support ×ˢ μ''.support) ×ˢ μ'.support : Finset ((T × T'') × T')) : Set ((T × T'') × T'))ᶜ
326327
= 0 :=
327328
Measure.prod_of_full_measure_finset hAC (measure_compl_support μ')
328-
simp_rw [entropy, integral_eq_setIntegral hACB, integral_eq_setIntegral hBC, integral_finset _ _ IntegrableOn.finset,
329-
smul_eq_mul, Measure.prod_apply_singleton]
329+
simp_rw [entropy, integral_eq_setIntegral hACB, integral_eq_setIntegral hBC,
330+
integral_finset' _ .finset, smul_eq_mul, Measure.prod_real_singleton]
330331
conv_rhs => rw [Finset.sum_product_right]
331332
conv_lhs => rw [Finset.sum_product, Finset.sum_product_right]
332-
simp_rw [ENNReal.toReal_mul, mul_assoc, ← Finset.mul_sum]
333+
simp_rw [mul_assoc, ← Finset.mul_sum]
333334
congr with z
334335
have : ∀ x y, map (prodMkLeft (T × T'') η ×ₖ prodMkRight T' (prodMkLeft T ξ))
335336
(fun p ↦ p.1 - p.2) ((x, z), y)
@@ -338,7 +339,7 @@ lemma rdist_triangle_aux2 (η : Kernel T' G) (ξ : Kernel T'' G)
338339
ext s hs
339340
rw [map_apply' _ (by fun_prop) _ hs, map_apply' _ (by fun_prop) _ hs, prod_apply, prod_apply]
340341
simp
341-
simp_rw [this, ← Finset.sum_mul, Finset.sum_toReal_measure_singleton,
342+
simp_rw [this, ← Finset.sum_mul, sum_measureReal_singleton, Measure.real,
342343
measure_of_measure_compl_eq_zero (measure_compl_support μ),
343344
measure_univ, ENNReal.toReal_one, one_mul, ← mul_assoc, mul_comm _ (μ'' {z}).toReal, mul_assoc,
344345
← Finset.mul_sum]

0 commit comments

Comments
 (0)