Skip to content

Commit 51625e9

Browse files
urkuderic-wieser
andcommitted
refactor(Measure): use FunLike (#12684)
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
1 parent e50d410 commit 51625e9

23 files changed

+91
-128
lines changed

Mathlib/MeasureTheory/Constructions/Pi.lean

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,12 @@ instance sigmaFinite_tprod (l : List δ) (μ : ∀ i, Measure (π i)) [∀ i, Si
249249
theorem tprod_tprod (l : List δ) (μ : ∀ i, Measure (π i)) [∀ i, SigmaFinite (μ i)]
250250
(s : ∀ i, Set (π i)) :
251251
Measure.tprod l μ (Set.tprod l s) = (l.map fun i => (μ i) (s i)).prod := by
252-
induction' l with i l ih; · simp
253-
rw [tprod_cons, Set.tprod]
254-
erw [prod_prod] -- TODO: why `rw` fails?
255-
rw [map_cons, prod_cons, ih]
252+
induction l with
253+
| nil => simp
254+
| cons a l ih =>
255+
rw [tprod_cons, Set.tprod]
256+
erw [prod_prod] -- TODO: why `rw` fails?
257+
rw [map_cons, prod_cons, ih]
256258
#align measure_theory.measure.tprod_tprod MeasureTheory.Measure.tprod_tprod
257259

258260
end Tprod
@@ -843,10 +845,10 @@ theorem measurePreserving_piUnique {π : ι → Type*} [Unique ι] {m : ∀ i, M
843845
set e := MeasurableEquiv.piUnique π
844846
have : (piPremeasure fun i => (μ i).toOuterMeasure) = Measure.map e.symm (μ default) := by
845847
ext1 s
846-
rw [piPremeasure, Fintype.prod_unique, e.symm.map_apply]
848+
rw [piPremeasure, Fintype.prod_unique, e.symm.map_apply, coe_toOuterMeasure]
847849
congr 1; exact e.toEquiv.image_eq_preimage s
848-
simp_rw [Measure.pi, OuterMeasure.pi, this, boundedBy_eq_self, toOuterMeasure_toMeasure,
849-
MeasurableEquiv.map_map_symm]
850+
simp_rw [Measure.pi, OuterMeasure.pi, this, ← coe_toOuterMeasure, boundedBy_eq_self,
851+
toOuterMeasure_toMeasure, MeasurableEquiv.map_map_symm]
850852

851853
theorem volume_preserving_piUnique (π : ι → Type*) [Unique ι] [∀ i, MeasureSpace (π i)] :
852854
MeasurePreserving (MeasurableEquiv.piUnique π) volume volume :=

Mathlib/MeasureTheory/Decomposition/Jordan.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,8 @@ theorem toSignedMeasure_smul (r : ℝ≥0) : (r • j).toSignedMeasure = r • j
189189
-- Porting note: removed `rfl` after the `rw` by adding further steps.
190190
rw [VectorMeasure.smul_apply, toSignedMeasure, toSignedMeasure,
191191
toSignedMeasure_sub_apply hi, toSignedMeasure_sub_apply hi, smul_sub, smul_posPart,
192-
smul_negPart, ← ENNReal.toReal_smul, ← ENNReal.toReal_smul, smul_toOuterMeasure,
193-
OuterMeasure.coe_smul, Pi.smul_apply, smul_toOuterMeasure, OuterMeasure.coe_smul, Pi.smul_apply]
192+
smul_negPart, ← ENNReal.toReal_smul, ← ENNReal.toReal_smul, Measure.smul_apply,
193+
Measure.smul_apply]
194194
#align measure_theory.jordan_decomposition.to_signed_measure_smul MeasureTheory.JordanDecomposition.toSignedMeasure_smul
195195

196196
/-- A Jordan decomposition provides a Hahn decomposition. -/

Mathlib/MeasureTheory/Decomposition/Lebesgue.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ lemma absolutelyContinuous_withDensity_rnDeriv [HaveLebesgueDecomposition ν μ]
221221
simp only [nonpos_iff_eq_zero, add_eq_zero]
222222
constructor
223223
· refine hμν ?_
224-
simp only [add_toOuterMeasure, OuterMeasure.coe_add, Pi.add_apply, add_eq_zero]
224+
simp only [coe_add, Pi.add_apply, add_eq_zero]
225225
constructor
226226
· exact measure_mono_null (Set.inter_subset_right _ _) ht1
227227
· exact measure_mono_null (Set.inter_subset_left _ _) hνs

Mathlib/MeasureTheory/Group/FundamentalDomain.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -942,7 +942,7 @@ theorem IsFundamentalDomain.quotientMeasureEqMeasurePreimage_of_zero
942942
QuotientMeasureEqMeasurePreimage ν (0 : Measure (Quotient α_mod_G)) := by
943943
apply fund_dom_s.quotientMeasureEqMeasurePreimage
944944
ext U meas_U
945-
simp only [zero_toOuterMeasure, OuterMeasure.coe_zero, Pi.zero_apply]
945+
simp only [Measure.coe_zero, Pi.zero_apply]
946946
convert (measure_inter_null_of_null_right (h := vol_s) (Quotient.mk α_mod_G ⁻¹' U)).symm
947947
rw [measure_map_restrict_apply (meas_U := meas_U)]
948948

Mathlib/MeasureTheory/Measure/Dirac.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ theorem map_dirac {f : α → β} (hf : Measurable f) (a : α) : (dirac a).map f
6565

6666
lemma map_const (μ : Measure α) (c : β) : μ.map (fun _ ↦ c) = (μ Set.univ) • dirac c := by
6767
ext s hs
68-
simp only [aemeasurable_const, measurable_const, smul_toOuterMeasure, OuterMeasure.coe_smul,
69-
Pi.smul_apply, dirac_apply' _ hs, smul_eq_mul]
68+
simp only [aemeasurable_const, measurable_const, Measure.coe_smul, Pi.smul_apply,
69+
dirac_apply' _ hs, smul_eq_mul]
7070
classical
7171
rw [Measure.map_apply measurable_const hs, Set.preimage_const]
7272
by_cases hsc : c ∈ s

Mathlib/MeasureTheory/Measure/EverywherePos.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ lemma measure_eq_zero_of_subset_diff_everywherePosSubset
109109
its everywhere positive subset. -/
110110
lemma everywherePosSubset_ae_eq [OpensMeasurableSpace α] [InnerRegular μ] (hs : MeasurableSet s) :
111111
μ.everywherePosSubset s =ᵐ[μ] s := by
112-
simp only [ae_eq_set, diff_eq_empty.mpr (everywherePosSubset_subset μ s), OuterMeasure.empty',
112+
simp only [ae_eq_set, diff_eq_empty.mpr (everywherePosSubset_subset μ s), measure_empty,
113113
true_and, (hs.diff hs.everywherePosSubset).measure_eq_iSup_isCompact, ENNReal.iSup_eq_zero]
114114
intro k hk h'k
115115
exact measure_eq_zero_of_subset_diff_everywherePosSubset h'k hk
@@ -121,7 +121,7 @@ lemma everywherePosSubset_ae_eq_of_measure_ne_top
121121
μ.everywherePosSubset s =ᵐ[μ] s := by
122122
have A : μ (s \ μ.everywherePosSubset s) ≠ ∞ :=
123123
((measure_mono (diff_subset _ _ )).trans_lt h's.lt_top).ne
124-
simp only [ae_eq_set, diff_eq_empty.mpr (everywherePosSubset_subset μ s), OuterMeasure.empty',
124+
simp only [ae_eq_set, diff_eq_empty.mpr (everywherePosSubset_subset μ s), measure_empty,
125125
true_and, (hs.diff hs.everywherePosSubset).measure_eq_iSup_isCompact_of_ne_top A,
126126
ENNReal.iSup_eq_zero]
127127
intro k hk h'k

Mathlib/MeasureTheory/Measure/FiniteMeasure.lean

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,7 @@ variable {R : Type*} [SMul R ℝ≥0] [SMul R ℝ≥0∞] [IsScalarTower R ℝ
222222
instance instSMul : SMul R (FiniteMeasure Ω) where
223223
smul (c : R) μ := ⟨c • (μ : Measure Ω), MeasureTheory.isFiniteMeasureSMulOfNNRealTower⟩
224224

225-
-- Porting note: with `simp` here the `coeFn` lemmas below fall prey to `simpNF`: the LHS simplifies
226-
@[norm_cast]
225+
@[simp, norm_cast]
227226
theorem toMeasure_zero : ((↑) : FiniteMeasure Ω → Measure Ω) 0 = 0 :=
228227
rfl
229228
#align measure_theory.finite_measure.coe_zero MeasureTheory.FiniteMeasure.toMeasure_zero
@@ -240,9 +239,8 @@ theorem toMeasure_smul (c : R) (μ : FiniteMeasure Ω) : ↑(c • μ) = c • (
240239
rfl
241240
#align measure_theory.finite_measure.coe_smul MeasureTheory.FiniteMeasure.toMeasure_smul
242241

243-
@[simp, norm_cast]
244-
theorem coeFn_zero : (⇑(0 : FiniteMeasure Ω) : Set Ω → ℝ≥0) = (0 : Set Ω → ℝ≥0) := by
245-
funext; rfl
242+
@[norm_cast]
243+
theorem coeFn_zero : (⇑(0 : FiniteMeasure Ω) : Set Ω → ℝ≥0) = (0 : Set Ω → ℝ≥0) := rfl
246244
#align measure_theory.finite_measure.coe_fn_zero MeasureTheory.FiniteMeasure.coeFn_zero
247245

248246
@[simp, norm_cast]

Mathlib/MeasureTheory/Measure/FiniteMeasureProd.lean

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,15 @@ lemma prod_prod (s : Set α) (t : Set β) : μ.prod ν (s ×ˢ t) = μ s * ν t
7171
apply Subtype.ext
7272
simp only [val_eq_toMeasure, toMeasure_map, toMeasure_prod, Measure.map_fst_prod]
7373
ext s _
74-
simp only [Measure.smul_toOuterMeasure, OuterMeasure.coe_smul, Pi.smul_apply, smul_eq_mul]
74+
simp only [Measure.coe_smul, Pi.smul_apply, smul_eq_mul]
7575
have aux := coeFn_smul_apply (ν univ) μ s
7676
simpa using congr_arg ENNReal.ofNNReal aux.symm
7777

7878
@[simp] lemma map_snd_prod : (μ.prod ν).map Prod.snd = μ univ • ν := by
7979
apply Subtype.ext
8080
simp only [val_eq_toMeasure, toMeasure_map, toMeasure_prod, Measure.map_fst_prod]
8181
ext s _
82-
simp only [Measure.map_snd_prod, Measure.smul_toOuterMeasure, OuterMeasure.coe_smul,
83-
Pi.smul_apply, smul_eq_mul]
82+
simp only [Measure.map_snd_prod, Measure.coe_smul, Pi.smul_apply, smul_eq_mul]
8483
have aux := coeFn_smul_apply (μ univ) ν s
8584
simpa using congr_arg ENNReal.ofNNReal aux.symm
8685

Mathlib/MeasureTheory/Measure/Haar/Basic.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -636,8 +636,7 @@ instance isMulLeftInvariant_haarMeasure (K₀ : PositiveCompacts G) :
636636
@[to_additive]
637637
theorem haarMeasure_self {K₀ : PositiveCompacts G} : haarMeasure K₀ K₀ = 1 := by
638638
haveI : LocallyCompactSpace G := K₀.locallyCompactSpace_of_group
639-
simp only [haarMeasure, smul_toOuterMeasure, OuterMeasure.coe_smul, Pi.smul_apply,
640-
smul_eq_mul]
639+
simp only [haarMeasure, coe_smul, Pi.smul_apply, smul_eq_mul]
641640
rw [← OuterRegular.measure_closure_eq_of_isCompact K₀.isCompact,
642641
Content.measure_apply _ isClosed_closure.measurableSet, ENNReal.inv_mul_cancel]
643642
· exact (haarContent_outerMeasure_closure_pos K₀).ne'

Mathlib/MeasureTheory/Measure/Hausdorff.lean

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ end Measure
468468

469469
theorem OuterMeasure.coe_mkMetric [MeasurableSpace X] [BorelSpace X] (m : ℝ≥0∞ → ℝ≥0∞) :
470470
⇑(OuterMeasure.mkMetric m : OuterMeasure X) = Measure.mkMetric m := by
471-
rw [← Measure.mkMetric_toOuterMeasure]
471+
rw [← Measure.mkMetric_toOuterMeasure, Measure.coe_toOuterMeasure]
472472
#align measure_theory.outer_measure.coe_mk_metric MeasureTheory.OuterMeasure.coe_mkMetric
473473

474474
namespace Measure
@@ -870,12 +870,8 @@ variable {f : X → Y} {d : ℝ}
870870
theorem hausdorffMeasure_image (hf : Isometry f) (hd : 0 ≤ d ∨ Surjective f) (s : Set X) :
871871
μH[d] (f '' s) = μH[d] s := by
872872
simp only [hausdorffMeasure, ← OuterMeasure.coe_mkMetric, ← OuterMeasure.comap_apply]
873-
-- Porting note: this proof was slightly nicer before the port
874-
simp only [mkMetric_toOuterMeasure]
875-
have : 0 ≤ d → Monotone fun r : ℝ≥0∞ ↦ r ^ d := by
876-
exact fun hd x y hxy => ENNReal.rpow_le_rpow hxy hd
877-
have := OuterMeasure.isometry_comap_mkMetric (fun (r : ℝ≥0∞) => r ^ d) hf (hd.imp_left this)
878-
congr
873+
rw [OuterMeasure.isometry_comap_mkMetric _ hf (hd.imp_left _)]
874+
exact ENNReal.monotone_rpow_of_nonneg
879875
#align isometry.hausdorff_measure_image Isometry.hausdorffMeasure_image
880876

881877
theorem hausdorffMeasure_preimage (hf : Isometry f) (hd : 0 ≤ d ∨ Surjective f) (s : Set Y) :

0 commit comments

Comments
 (0)