measure_theory.group.prod
⟷
Mathlib.MeasureTheory.Group.Prod
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -325,7 +325,7 @@ theorem absolutelyContinuous_of_isMulLeftInvariant [IsMulLeftInvariant ν] (hν
refine' absolutely_continuous.mk fun s sm hνs => _
have h1 := measure_mul_lintegral_eq μ ν sm 1 measurable_one
simp_rw [Pi.one_apply, lintegral_one, mul_one, (measure_mul_right_null ν _).mpr hνs,
- lintegral_zero, mul_eq_zero, measure_univ_eq_zero.not.mpr hν, or_false_iff] at h1
+ lintegral_zero, mul_eq_zero, measure_univ_eq_zero.not.mpr hν, or_false_iff] at h1
exact h1
#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_isMulLeftInvariant
#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_isAddLeftInvariant
@@ -338,13 +338,13 @@ theorem ae_measure_preimage_mul_right_lt_top [IsMulLeftInvariant ν] (sm : Measu
by
refine' ae_of_forall_measure_lt_top_ae_restrict' ν.inv _ _
intro A hA h2A h3A
- simp only [ν.inv_apply] at h3A
+ simp only [ν.inv_apply] at h3A
apply ae_lt_top (measurable_measure_mul_right ν sm)
have h1 := measure_mul_lintegral_eq μ ν sm (A⁻¹.indicator 1) (measurable_one.indicator hA.inv)
- rw [lintegral_indicator _ hA.inv] at h1
+ rw [lintegral_indicator _ hA.inv] at h1
simp_rw [Pi.one_apply, set_lintegral_one, ← image_inv, indicator_image inv_injective, image_inv, ←
indicator_mul_right _ fun x => ν ((fun y => y * x) ⁻¹' s), Function.comp, Pi.one_apply,
- mul_one] at h1
+ mul_one] at h1
rw [← lintegral_indicator _ hA, ← h1]
exact ENNReal.mul_ne_top hμs h3A.ne
#align measure_theory.ae_measure_preimage_mul_right_lt_top MeasureTheory.ae_measure_preimage_mul_right_lt_top
@@ -404,7 +404,7 @@ theorem measure_mul_measure_eq [IsMulLeftInvariant ν] {s t : Set G} (hs : Measu
have h2 :=
measure_lintegral_div_measure μ ν hs h2s h3s (t.indicator fun x => 1)
(measurable_const.indicator ht)
- rw [lintegral_indicator _ ht, set_lintegral_one] at h1 h2
+ rw [lintegral_indicator _ ht, set_lintegral_one] at h1 h2
rw [← h1, mul_left_comm, h2]
#align measure_theory.measure_mul_measure_eq MeasureTheory.measure_mul_measure_eq
#align measure_theory.measure_add_measure_eq MeasureTheory.measure_add_measure_eq
@@ -597,11 +597,11 @@ theorem quasiMeasurePreserving_mul_left [IsMulRightInvariant μ] (g : G) :
have :=
(quasi_measure_preserving_mul_right μ.inv g⁻¹).mono (inv_absolutely_continuous μ.inv)
(absolutely_continuous_inv μ.inv)
- rw [μ.inv_inv] at this
+ rw [μ.inv_inv] at this
have :=
(quasi_measure_preserving_inv_of_right_invariant μ).comp
(this.comp (quasi_measure_preserving_inv_of_right_invariant μ))
- simp_rw [Function.comp, mul_inv_rev, inv_inv] at this
+ simp_rw [Function.comp, mul_inv_rev, inv_inv] at this
exact this
#align measure_theory.quasi_measure_preserving_mul_left MeasureTheory.quasiMeasurePreserving_mul_left
#align measure_theory.quasi_measure_preserving_add_left MeasureTheory.quasiMeasurePreserving_add_left
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2021 Floris van Doorn. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn
-/
-import Mathbin.MeasureTheory.Constructions.Prod.Basic
-import Mathbin.MeasureTheory.Group.Measure
+import MeasureTheory.Constructions.Prod.Basic
+import MeasureTheory.Group.Measure
#align_import measure_theory.group.prod from "leanprover-community/mathlib"@"599fffe78f0e11eb6a034e834ec51882167b9688"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2021 Floris van Doorn. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn
-
-! This file was ported from Lean 3 source module measure_theory.group.prod
-! leanprover-community/mathlib commit 599fffe78f0e11eb6a034e834ec51882167b9688
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.MeasureTheory.Constructions.Prod.Basic
import Mathbin.MeasureTheory.Group.Measure
+#align_import measure_theory.group.prod from "leanprover-community/mathlib"@"599fffe78f0e11eb6a034e834ec51882167b9688"
+
/-!
# Measure theory in the product of groups
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -57,6 +57,7 @@ variable [Group G] [MeasurableMul₂ G]
variable (μ ν : Measure G) [SigmaFinite ν] [SigmaFinite μ] {s : Set G}
+#print MeasurableEquiv.shearMulRight /-
/-- The map `(x, y) ↦ (x, xy)` as a `measurable_equiv`. -/
@[to_additive "The map `(x, y) ↦ (x, x + y)` as a `measurable_equiv`."]
protected def MeasurableEquiv.shearMulRight [MeasurableInv G] : G × G ≃ᵐ G × G :=
@@ -67,7 +68,9 @@ protected def MeasurableEquiv.shearMulRight [MeasurableInv G] : G × G ≃ᵐ G
measurable_inv_fun := measurable_fst.prod_mk <| measurable_fst.inv.mul measurable_snd }
#align measurable_equiv.shear_mul_right MeasurableEquiv.shearMulRight
#align measurable_equiv.shear_add_right MeasurableEquiv.shearAddRight
+-/
+#print MeasurableEquiv.shearDivRight /-
/-- The map `(x, y) ↦ (x, y / x)` as a `measurable_equiv` with as inverse `(x, y) ↦ (x, yx)` -/
@[to_additive
"The map `(x, y) ↦ (x, y - x)` as a `measurable_equiv` with as inverse `(x, y) ↦ (x, y + x)`."]
@@ -79,6 +82,7 @@ protected def MeasurableEquiv.shearDivRight [MeasurableInv G] : G × G ≃ᵐ G
measurable_inv_fun := measurable_fst.prod_mk <| measurable_snd.mul measurable_fst }
#align measurable_equiv.shear_div_right MeasurableEquiv.shearDivRight
#align measurable_equiv.shear_sub_right MeasurableEquiv.shearSubRight
+-/
variable {G}
@@ -88,6 +92,7 @@ open Measure
section LeftInvariant
+#print MeasureTheory.measurePreserving_prod_mul /-
/-- The multiplicative shear mapping `(x, y) ↦ (x, xy)` preserves the measure `μ × ν`.
This condition is part of the definition of a measurable group in [Halmos, §59].
There, the map in this lemma is called `S`. -/
@@ -99,7 +104,9 @@ theorem measurePreserving_prod_mul [IsMulLeftInvariant ν] :
Filter.eventually_of_forall <| map_mul_left_eq_self ν
#align measure_theory.measure_preserving_prod_mul MeasureTheory.measurePreserving_prod_mul
#align measure_theory.measure_preserving_prod_add MeasureTheory.measurePreserving_prod_add
+-/
+#print MeasureTheory.measurePreserving_prod_mul_swap /-
/-- The map `(x, y) ↦ (y, yx)` sends the measure `μ × ν` to `ν × μ`.
This is the map `SR` in [Halmos, §59].
`S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@@ -110,8 +117,10 @@ theorem measurePreserving_prod_mul_swap [IsMulLeftInvariant μ] :
(measurePreserving_prod_mul ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_mul_swap MeasureTheory.measurePreserving_prod_mul_swap
#align measure_theory.measure_preserving_prod_add_swap MeasureTheory.measurePreserving_prod_add_swap
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print MeasureTheory.measurable_measure_mul_right /-
@[to_additive]
theorem measurable_measure_mul_right (hs : MeasurableSet s) :
Measurable fun x => μ ((fun y => y * x) ⁻¹' s) :=
@@ -124,9 +133,11 @@ theorem measurable_measure_mul_right (hs : MeasurableSet s) :
exact measurable_const.prod_mk measurable_mul (measurable_set.univ.prod hs)
#align measure_theory.measurable_measure_mul_right MeasureTheory.measurable_measure_mul_right
#align measure_theory.measurable_measure_add_right MeasureTheory.measurable_measure_add_right
+-/
variable [MeasurableInv G]
+#print MeasureTheory.measurePreserving_prod_inv_mul /-
/-- The map `(x, y) ↦ (x, x⁻¹y)` is measure-preserving.
This is the function `S⁻¹` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)`. -/
@@ -137,9 +148,11 @@ theorem measurePreserving_prod_inv_mul [IsMulLeftInvariant ν] :
(measurePreserving_prod_mul μ ν).symm <| MeasurableEquiv.shearMulRight G
#align measure_theory.measure_preserving_prod_inv_mul MeasureTheory.measurePreserving_prod_inv_mul
#align measure_theory.measure_preserving_prod_neg_add MeasureTheory.measurePreserving_prod_neg_add
+-/
variable [IsMulLeftInvariant μ]
+#print MeasureTheory.measurePreserving_prod_inv_mul_swap /-
/-- The map `(x, y) ↦ (y, y⁻¹x)` sends `μ × ν` to `ν × μ`.
This is the function `S⁻¹R` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@@ -150,7 +163,9 @@ theorem measurePreserving_prod_inv_mul_swap :
(measurePreserving_prod_inv_mul ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_inv_mul_swap MeasureTheory.measurePreserving_prod_inv_mul_swap
#align measure_theory.measure_preserving_prod_neg_add_swap MeasureTheory.measurePreserving_prod_neg_add_swap
+-/
+#print MeasureTheory.measurePreserving_mul_prod_inv /-
/-- The map `(x, y) ↦ (yx, x⁻¹)` is measure-preserving.
This is the function `S⁻¹RSR` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@@ -164,9 +179,11 @@ theorem measurePreserving_mul_prod_inv [IsMulLeftInvariant ν] :
simp_rw [Function.comp_apply, mul_inv_rev, inv_mul_cancel_right]
#align measure_theory.measure_preserving_mul_prod_inv MeasureTheory.measurePreserving_mul_prod_inv
#align measure_theory.measure_preserving_add_prod_neg MeasureTheory.measurePreserving_add_prod_neg
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print MeasureTheory.quasiMeasurePreserving_inv /-
@[to_additive]
theorem quasiMeasurePreserving_inv : QuasiMeasurePreserving (Inv.inv : G → G) μ μ :=
by
@@ -182,7 +199,9 @@ theorem quasiMeasurePreserving_inv : QuasiMeasurePreserving (Inv.inv : G → G)
inv_preimage, inv_inv, measure_mono_null (inter_subset_right _ _) hμs, lintegral_zero]
#align measure_theory.quasi_measure_preserving_inv MeasureTheory.quasiMeasurePreserving_inv
#align measure_theory.quasi_measure_preserving_neg MeasureTheory.quasiMeasurePreserving_neg
+-/
+#print MeasureTheory.measure_inv_null /-
@[to_additive]
theorem measure_inv_null : μ s⁻¹ = 0 ↔ μ s = 0 :=
by
@@ -191,13 +210,17 @@ theorem measure_inv_null : μ s⁻¹ = 0 ↔ μ s = 0 :=
exact (quasi_measure_preserving_inv μ).preimage_null hs
#align measure_theory.measure_inv_null MeasureTheory.measure_inv_null
#align measure_theory.measure_neg_null MeasureTheory.measure_neg_null
+-/
+#print MeasureTheory.inv_absolutelyContinuous /-
@[to_additive]
theorem inv_absolutelyContinuous : μ.inv ≪ μ :=
(quasiMeasurePreserving_inv μ).AbsolutelyContinuous
#align measure_theory.inv_absolutely_continuous MeasureTheory.inv_absolutelyContinuous
#align measure_theory.neg_absolutely_continuous MeasureTheory.neg_absolutelyContinuous
+-/
+#print MeasureTheory.absolutelyContinuous_inv /-
@[to_additive]
theorem absolutelyContinuous_inv : μ ≪ μ.inv :=
by
@@ -205,7 +228,9 @@ theorem absolutelyContinuous_inv : μ ≪ μ.inv :=
simp_rw [inv_apply μ s, measure_inv_null, imp_self]
#align measure_theory.absolutely_continuous_inv MeasureTheory.absolutelyContinuous_inv
#align measure_theory.absolutely_continuous_neg MeasureTheory.absolutelyContinuous_neg
+-/
+#print MeasureTheory.lintegral_lintegral_mul_inv /-
@[to_additive]
theorem lintegral_lintegral_mul_inv [IsMulLeftInvariant ν] (f : G → G → ℝ≥0∞)
(hf : AEMeasurable (uncurry f) (μ.Prod ν)) :
@@ -223,7 +248,9 @@ theorem lintegral_lintegral_mul_inv [IsMulLeftInvariant ν] (f : G → G → ℝ
h.ae_measurable
#align measure_theory.lintegral_lintegral_mul_inv MeasureTheory.lintegral_lintegral_mul_inv
#align measure_theory.lintegral_lintegral_add_neg MeasureTheory.lintegral_lintegral_add_neg
+-/
+#print MeasureTheory.measure_mul_right_null /-
@[to_additive]
theorem measure_mul_right_null (y : G) : μ ((fun x => x * y) ⁻¹' s) = 0 ↔ μ s = 0 :=
calc
@@ -232,13 +259,17 @@ theorem measure_mul_right_null (y : G) : μ ((fun x => x * y) ⁻¹' s) = 0 ↔
_ ↔ μ s = 0 := by simp only [measure_inv_null μ, measure_preimage_mul]
#align measure_theory.measure_mul_right_null MeasureTheory.measure_mul_right_null
#align measure_theory.measure_add_right_null MeasureTheory.measure_add_right_null
+-/
+#print MeasureTheory.measure_mul_right_ne_zero /-
@[to_additive]
theorem measure_mul_right_ne_zero (h2s : μ s ≠ 0) (y : G) : μ ((fun x => x * y) ⁻¹' s) ≠ 0 :=
(not_congr (measure_mul_right_null μ y)).mpr h2s
#align measure_theory.measure_mul_right_ne_zero MeasureTheory.measure_mul_right_ne_zero
#align measure_theory.measure_add_right_ne_zero MeasureTheory.measure_add_right_ne_zero
+-/
+#print MeasureTheory.absolutelyContinuous_map_mul_right /-
@[to_additive]
theorem absolutelyContinuous_map_mul_right (g : G) : μ ≪ map (· * g) μ :=
by
@@ -246,7 +277,9 @@ theorem absolutelyContinuous_map_mul_right (g : G) : μ ≪ map (· * g) μ :=
rw [map_apply (measurable_mul_const g) hs, measure_mul_right_null]; exact id
#align measure_theory.absolutely_continuous_map_mul_right MeasureTheory.absolutelyContinuous_map_mul_right
#align measure_theory.absolutely_continuous_map_add_right MeasureTheory.absolutelyContinuous_map_add_right
+-/
+#print MeasureTheory.absolutelyContinuous_map_div_left /-
@[to_additive]
theorem absolutelyContinuous_map_div_left (g : G) : μ ≪ map (fun h => g / h) μ :=
by
@@ -256,7 +289,9 @@ theorem absolutelyContinuous_map_div_left (g : G) : μ ≪ map (fun h => g / h)
exact (absolutely_continuous_inv μ).map (measurable_const_mul g)
#align measure_theory.absolutely_continuous_map_div_left MeasureTheory.absolutelyContinuous_map_div_left
#align measure_theory.absolutely_continuous_map_sub_left MeasureTheory.absolutelyContinuous_map_sub_left
+-/
+#print MeasureTheory.measure_mul_lintegral_eq /-
/-- This is the computation performed in the proof of [Halmos, §60 Th. A]. -/
@[to_additive "This is the computation performed in the proof of [Halmos, §60 Th. A]."]
theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s) (f : G → ℝ≥0∞)
@@ -282,7 +317,9 @@ theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s)
set_lintegral_one]
#align measure_theory.measure_mul_lintegral_eq MeasureTheory.measure_mul_lintegral_eq
#align measure_theory.measure_add_lintegral_eq MeasureTheory.measure_add_lintegral_eq
+-/
+#print MeasureTheory.absolutelyContinuous_of_isMulLeftInvariant /-
/-- Any two nonzero left-invariant measures are absolutely continuous w.r.t. each other. -/
@[to_additive
" Any two nonzero left-invariant measures are absolutely continuous w.r.t. each\nother. "]
@@ -295,7 +332,9 @@ theorem absolutelyContinuous_of_isMulLeftInvariant [IsMulLeftInvariant ν] (hν
exact h1
#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_isMulLeftInvariant
#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_isAddLeftInvariant
+-/
+#print MeasureTheory.ae_measure_preimage_mul_right_lt_top /-
@[to_additive]
theorem ae_measure_preimage_mul_right_lt_top [IsMulLeftInvariant ν] (sm : MeasurableSet s)
(hμs : μ s ≠ ∞) : ∀ᵐ x ∂μ, ν ((fun y => y * x) ⁻¹' s) < ∞ :=
@@ -313,7 +352,9 @@ theorem ae_measure_preimage_mul_right_lt_top [IsMulLeftInvariant ν] (sm : Measu
exact ENNReal.mul_ne_top hμs h3A.ne
#align measure_theory.ae_measure_preimage_mul_right_lt_top MeasureTheory.ae_measure_preimage_mul_right_lt_top
#align measure_theory.ae_measure_preimage_add_right_lt_top MeasureTheory.ae_measure_preimage_add_right_lt_top
+-/
+#print MeasureTheory.ae_measure_preimage_mul_right_lt_top_of_ne_zero /-
@[to_additive]
theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [IsMulLeftInvariant ν]
(sm : MeasurableSet s) (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) :
@@ -326,7 +367,9 @@ theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [IsMulLeftInvariant ν]
rw [hν, measure.coe_zero, Pi.zero_apply]
#align measure_theory.ae_measure_preimage_mul_right_lt_top_of_ne_zero MeasureTheory.ae_measure_preimage_mul_right_lt_top_of_ne_zero
#align measure_theory.ae_measure_preimage_add_right_lt_top_of_ne_zero MeasureTheory.ae_measure_preimage_add_right_lt_top_of_ne_zero
+-/
+#print MeasureTheory.measure_lintegral_div_measure /-
/-- A technical lemma relating two different measures. This is basically [Halmos, §60 Th. A].
Note that if `f` is the characteristic function of a measurable set `t` this states that
`μ t = c * μ s` for a constant `c` that does not depend on `μ`.
@@ -351,7 +394,9 @@ theorem measure_lintegral_div_measure [IsMulLeftInvariant ν] (sm : MeasurableSe
simp_rw [ENNReal.mul_div_cancel' (measure_mul_right_ne_zero ν h2s _) hx.ne]
#align measure_theory.measure_lintegral_div_measure MeasureTheory.measure_lintegral_div_measure
#align measure_theory.measure_lintegral_sub_measure MeasureTheory.measure_lintegral_sub_measure
+-/
+#print MeasureTheory.measure_mul_measure_eq /-
@[to_additive]
theorem measure_mul_measure_eq [IsMulLeftInvariant ν] {s t : Set G} (hs : MeasurableSet s)
(ht : MeasurableSet t) (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) : μ s * ν t = ν s * μ t :=
@@ -366,7 +411,9 @@ theorem measure_mul_measure_eq [IsMulLeftInvariant ν] {s t : Set G} (hs : Measu
rw [← h1, mul_left_comm, h2]
#align measure_theory.measure_mul_measure_eq MeasureTheory.measure_mul_measure_eq
#align measure_theory.measure_add_measure_eq MeasureTheory.measure_add_measure_eq
+-/
+#print MeasureTheory.measure_eq_div_smul /-
/-- Left invariant Borel measures on a measurable group are unique (up to a scalar). -/
@[to_additive
" Left invariant Borel measures on an additive measurable group are unique\n (up to a scalar). "]
@@ -377,11 +424,13 @@ theorem measure_eq_div_smul [IsMulLeftInvariant ν] (hs : MeasurableSet s) (h2s
measure_mul_measure_eq μ ν hs ht h2s h3s, mul_div_assoc, ENNReal.mul_div_cancel' h2s h3s]
#align measure_theory.measure_eq_div_smul MeasureTheory.measure_eq_div_smul
#align measure_theory.measure_eq_sub_vadd MeasureTheory.measure_eq_sub_vadd
+-/
end LeftInvariant
section RightInvariant
+#print MeasureTheory.measurePreserving_prod_mul_right /-
@[to_additive measure_preserving_prod_add_right]
theorem measurePreserving_prod_mul_right [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.2 * z.1)) (μ.Prod ν) (μ.Prod ν) :=
@@ -389,7 +438,9 @@ theorem measurePreserving_prod_mul_right [IsMulRightInvariant ν] :
Filter.eventually_of_forall <| map_mul_right_eq_self ν
#align measure_theory.measure_preserving_prod_mul_right MeasureTheory.measurePreserving_prod_mul_right
#align measure_theory.measure_preserving_prod_add_right MeasureTheory.measurePreserving_prod_add_right
+-/
+#print MeasureTheory.measurePreserving_prod_mul_swap_right /-
/-- The map `(x, y) ↦ (y, xy)` sends the measure `μ × ν` to `ν × μ`. -/
@[to_additive measure_preserving_prod_add_swap_right
" The map `(x, y) ↦ (y, x + y)` sends the measure `μ × ν` to `ν × μ`. "]
@@ -398,7 +449,9 @@ theorem measurePreserving_prod_mul_swap_right [IsMulRightInvariant μ] :
(measurePreserving_prod_mul_right ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_mul_swap_right MeasureTheory.measurePreserving_prod_mul_swap_right
#align measure_theory.measure_preserving_prod_add_swap_right MeasureTheory.measurePreserving_prod_add_swap_right
+-/
+#print MeasureTheory.measurePreserving_mul_prod /-
/-- The map `(x, y) ↦ (xy, y)` preserves the measure `μ × ν`. -/
@[to_additive measure_preserving_add_prod
" The map `(x, y) ↦ (x + y, y)` preserves the measure `μ × ν`. "]
@@ -407,9 +460,11 @@ theorem measurePreserving_mul_prod [IsMulRightInvariant μ] :
measurePreserving_swap.comp <| by apply measure_preserving_prod_mul_swap_right μ ν
#align measure_theory.measure_preserving_mul_prod MeasureTheory.measurePreserving_mul_prod
#align measure_theory.measure_preserving_add_prod MeasureTheory.measurePreserving_add_prod
+-/
variable [MeasurableInv G]
+#print MeasureTheory.measurePreserving_prod_div /-
/-- The map `(x, y) ↦ (x, y / x)` is measure-preserving. -/
@[to_additive measure_preserving_prod_sub "The map `(x, y) ↦ (x, y - x)` is measure-preserving."]
theorem measurePreserving_prod_div [IsMulRightInvariant ν] :
@@ -417,7 +472,9 @@ theorem measurePreserving_prod_div [IsMulRightInvariant ν] :
(measurePreserving_prod_mul_right μ ν).symm (MeasurableEquiv.shearDivRight G).symm
#align measure_theory.measure_preserving_prod_div MeasureTheory.measurePreserving_prod_div
#align measure_theory.measure_preserving_prod_sub MeasureTheory.measurePreserving_prod_sub
+-/
+#print MeasureTheory.measurePreserving_prod_div_swap /-
/-- The map `(x, y) ↦ (y, x / y)` sends `μ × ν` to `ν × μ`. -/
@[to_additive measure_preserving_prod_sub_swap
"The map `(x, y) ↦ (y, x - y)` sends `μ × ν` to `ν × μ`."]
@@ -426,7 +483,9 @@ theorem measurePreserving_prod_div_swap [IsMulRightInvariant μ] :
(measurePreserving_prod_div ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_div_swap MeasureTheory.measurePreserving_prod_div_swap
#align measure_theory.measure_preserving_prod_sub_swap MeasureTheory.measurePreserving_prod_sub_swap
+-/
+#print MeasureTheory.measurePreserving_div_prod /-
/-- The map `(x, y) ↦ (x / y, y)` preserves the measure `μ × ν`. -/
@[to_additive measure_preserving_sub_prod
" The map `(x, y) ↦ (x - y, y)` preserves the measure `μ × ν`. "]
@@ -435,7 +494,9 @@ theorem measurePreserving_div_prod [IsMulRightInvariant μ] :
measurePreserving_swap.comp <| by apply measure_preserving_prod_div_swap μ ν
#align measure_theory.measure_preserving_div_prod MeasureTheory.measurePreserving_div_prod
#align measure_theory.measure_preserving_sub_prod MeasureTheory.measurePreserving_sub_prod
+-/
+#print MeasureTheory.measurePreserving_mul_prod_inv_right /-
/-- The map `(x, y) ↦ (xy, x⁻¹)` is measure-preserving. -/
@[to_additive measure_preserving_add_prod_neg_right
"The map `(x, y) ↦ (x + y, - x)` is measure-preserving."]
@@ -447,6 +508,7 @@ theorem measurePreserving_mul_prod_inv_right [IsMulRightInvariant μ] [IsMulRigh
simp_rw [Function.comp_apply, div_mul_eq_div_div_swap, div_self', one_div]
#align measure_theory.measure_preserving_mul_prod_inv_right MeasureTheory.measurePreserving_mul_prod_inv_right
#align measure_theory.measure_preserving_add_prod_neg_right MeasureTheory.measurePreserving_add_prod_neg_right
+-/
end RightInvariant
@@ -454,6 +516,7 @@ section QuasiMeasurePreserving
variable [MeasurableInv G]
+#print MeasureTheory.quasiMeasurePreserving_inv_of_right_invariant /-
@[to_additive]
theorem quasiMeasurePreserving_inv_of_right_invariant [IsMulRightInvariant μ] :
QuasiMeasurePreserving (Inv.inv : G → G) μ μ :=
@@ -464,7 +527,9 @@ theorem quasiMeasurePreserving_inv_of_right_invariant [IsMulRightInvariant μ] :
(absolutely_continuous_inv μ.inv)
#align measure_theory.quasi_measure_preserving_inv_of_right_invariant MeasureTheory.quasiMeasurePreserving_inv_of_right_invariant
#align measure_theory.quasi_measure_preserving_neg_of_right_invariant MeasureTheory.quasiMeasurePreserving_neg_of_right_invariant
+-/
+#print MeasureTheory.quasiMeasurePreserving_div_left /-
@[to_additive]
theorem quasiMeasurePreserving_div_left [IsMulLeftInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ :=
@@ -474,7 +539,9 @@ theorem quasiMeasurePreserving_div_left [IsMulLeftInvariant μ] (g : G) :
(measure_preserving_mul_left μ g).QuasiMeasurePreserving.comp (quasi_measure_preserving_inv μ)
#align measure_theory.quasi_measure_preserving_div_left MeasureTheory.quasiMeasurePreserving_div_left
#align measure_theory.quasi_measure_preserving_sub_left MeasureTheory.quasiMeasurePreserving_sub_left
+-/
+#print MeasureTheory.quasiMeasurePreserving_div_left_of_right_invariant /-
@[to_additive]
theorem quasiMeasurePreserving_div_left_of_right_invariant [IsMulRightInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ :=
@@ -485,7 +552,9 @@ theorem quasiMeasurePreserving_div_left_of_right_invariant [IsMulRightInvariant
(absolutely_continuous_inv μ.inv)
#align measure_theory.quasi_measure_preserving_div_left_of_right_invariant MeasureTheory.quasiMeasurePreserving_div_left_of_right_invariant
#align measure_theory.quasi_measure_preserving_sub_left_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_left_of_right_invariant
+-/
+#print MeasureTheory.quasiMeasurePreserving_div_of_right_invariant /-
@[to_additive]
theorem quasiMeasurePreserving_div_of_right_invariant [IsMulRightInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.Prod ν) μ :=
@@ -494,7 +563,9 @@ theorem quasiMeasurePreserving_div_of_right_invariant [IsMulRightInvariant μ] :
exact (measure_preserving_div_right μ y).QuasiMeasurePreserving
#align measure_theory.quasi_measure_preserving_div_of_right_invariant MeasureTheory.quasiMeasurePreserving_div_of_right_invariant
#align measure_theory.quasi_measure_preserving_sub_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_of_right_invariant
+-/
+#print MeasureTheory.quasiMeasurePreserving_div /-
@[to_additive]
theorem quasiMeasurePreserving_div [IsMulLeftInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.Prod ν) μ :=
@@ -502,7 +573,9 @@ theorem quasiMeasurePreserving_div [IsMulLeftInvariant μ] :
((absolutelyContinuous_inv μ).Prod AbsolutelyContinuous.rfl) (inv_absolutelyContinuous μ)
#align measure_theory.quasi_measure_preserving_div MeasureTheory.quasiMeasurePreserving_div
#align measure_theory.quasi_measure_preserving_sub MeasureTheory.quasiMeasurePreserving_sub
+-/
+#print MeasureTheory.quasiMeasurePreserving_mul_right /-
/-- A *left*-invariant measure is quasi-preserved by *right*-multiplication.
This should not be confused with `(measure_preserving_mul_right μ g).quasi_measure_preserving`. -/
@[to_additive
@@ -514,7 +587,9 @@ theorem quasiMeasurePreserving_mul_right [IsMulLeftInvariant μ] (g : G) :
rw [map_apply (measurable_mul_const g) hs, measure_mul_right_null]; exact id
#align measure_theory.quasi_measure_preserving_mul_right MeasureTheory.quasiMeasurePreserving_mul_right
#align measure_theory.quasi_measure_preserving_add_right MeasureTheory.quasiMeasurePreserving_add_right
+-/
+#print MeasureTheory.quasiMeasurePreserving_mul_left /-
/-- A *right*-invariant measure is quasi-preserved by *left*-multiplication.
This should not be confused with `(measure_preserving_mul_left μ g).quasi_measure_preserving`. -/
@[to_additive
@@ -533,6 +608,7 @@ theorem quasiMeasurePreserving_mul_left [IsMulRightInvariant μ] (g : G) :
exact this
#align measure_theory.quasi_measure_preserving_mul_left MeasureTheory.quasiMeasurePreserving_mul_left
#align measure_theory.quasi_measure_preserving_add_left MeasureTheory.quasiMeasurePreserving_add_left
+-/
end QuasiMeasurePreserving
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -209,7 +209,7 @@ theorem absolutelyContinuous_inv : μ ≪ μ.inv :=
@[to_additive]
theorem lintegral_lintegral_mul_inv [IsMulLeftInvariant ν] (f : G → G → ℝ≥0∞)
(hf : AEMeasurable (uncurry f) (μ.Prod ν)) :
- (∫⁻ x, ∫⁻ y, f (y * x) x⁻¹ ∂ν ∂μ) = ∫⁻ x, ∫⁻ y, f x y ∂ν ∂μ :=
+ ∫⁻ x, ∫⁻ y, f (y * x) x⁻¹ ∂ν ∂μ = ∫⁻ x, ∫⁻ y, f x y ∂ν ∂μ :=
by
have h : Measurable fun z : G × G => (z.2 * z.1, z.1⁻¹) :=
(measurable_snd.mul measurable_fst).prod_mk measurable_fst.inv
@@ -260,7 +260,7 @@ theorem absolutelyContinuous_map_div_left (g : G) : μ ≪ map (fun h => g / h)
/-- This is the computation performed in the proof of [Halmos, §60 Th. A]. -/
@[to_additive "This is the computation performed in the proof of [Halmos, §60 Th. A]."]
theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s) (f : G → ℝ≥0∞)
- (hf : Measurable f) : (μ s * ∫⁻ y, f y ∂ν) = ∫⁻ x, ν ((fun z => z * x) ⁻¹' s) * f x⁻¹ ∂μ :=
+ (hf : Measurable f) : μ s * ∫⁻ y, f y ∂ν = ∫⁻ x, ν ((fun z => z * x) ⁻¹' s) * f x⁻¹ ∂μ :=
by
rw [← set_lintegral_one, ← lintegral_indicator _ sm, ←
lintegral_lintegral_mul (measurable_const.indicator sm).AEMeasurable hf.ae_measurable, ←
@@ -340,7 +340,7 @@ theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [IsMulLeftInvariant ν]
"A technical lemma relating two different measures. This is basically\n[Halmos, §60 Th. A]. Note that if `f` is the characteristic function of a measurable set `t` this\nstates that `μ t = c * μ s` for a constant `c` that does not depend on `μ`.\n\nNote: There is a gap in the last step of the proof in [Halmos]. In the last line, the equality\n`g(-x) + ν(s - x) = f(x)` holds if we can prove that `0 < ν(s - x) < ∞`. The first inequality\nfollows from §59, Th. D, but the second inequality is not justified. We prove this inequality for\nalmost all `x` in `measure_theory.ae_measure_preimage_add_right_lt_top_of_ne_zero`."]
theorem measure_lintegral_div_measure [IsMulLeftInvariant ν] (sm : MeasurableSet s) (h2s : ν s ≠ 0)
(h3s : ν s ≠ ∞) (f : G → ℝ≥0∞) (hf : Measurable f) :
- (μ s * ∫⁻ y, f y⁻¹ / ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν) = ∫⁻ x, f x ∂μ :=
+ μ s * ∫⁻ y, f y⁻¹ / ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν = ∫⁻ x, f x ∂μ :=
by
set g := fun y => f y⁻¹ / ν ((fun x => x * y⁻¹) ⁻¹' s)
have hg : Measurable g :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -230,7 +230,6 @@ theorem measure_mul_right_null (y : G) : μ ((fun x => x * y) ⁻¹' s) = 0 ↔
μ ((fun x => x * y) ⁻¹' s) = 0 ↔ μ ((fun x => y⁻¹ * x) ⁻¹' s⁻¹)⁻¹ = 0 := by
simp_rw [← inv_preimage, preimage_preimage, mul_inv_rev, inv_inv]
_ ↔ μ s = 0 := by simp only [measure_inv_null μ, measure_preimage_mul]
-
#align measure_theory.measure_mul_right_null MeasureTheory.measure_mul_right_null
#align measure_theory.measure_add_right_null MeasureTheory.measure_add_right_null
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -93,7 +93,7 @@ This condition is part of the definition of a measurable group in [Halmos, §59]
There, the map in this lemma is called `S`. -/
@[to_additive measure_preserving_prod_add
" The shear mapping `(x, y) ↦ (x, x + y)` preserves the measure `μ × ν`. "]
-theorem measurePreserving_prod_mul [MulLeftInvariant ν] :
+theorem measurePreserving_prod_mul [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.1 * z.2)) (μ.Prod ν) (μ.Prod ν) :=
(MeasurePreserving.id μ).skew_product measurable_mul <|
Filter.eventually_of_forall <| map_mul_left_eq_self ν
@@ -105,7 +105,7 @@ This is the map `SR` in [Halmos, §59].
`S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@[to_additive measure_preserving_prod_add_swap
" The map `(x, y) ↦ (y, y + x)` sends the measure `μ × ν` to `ν × μ`. "]
-theorem measurePreserving_prod_mul_swap [MulLeftInvariant μ] :
+theorem measurePreserving_prod_mul_swap [IsMulLeftInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.2 * z.1)) (μ.Prod ν) (ν.Prod μ) :=
(measurePreserving_prod_mul ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_mul_swap MeasureTheory.measurePreserving_prod_mul_swap
@@ -132,13 +132,13 @@ This is the function `S⁻¹` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)`. -/
@[to_additive measure_preserving_prod_neg_add
"The map `(x, y) ↦ (x, - x + y)` is measure-preserving."]
-theorem measurePreserving_prod_inv_mul [MulLeftInvariant ν] :
+theorem measurePreserving_prod_inv_mul [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.1⁻¹ * z.2)) (μ.Prod ν) (μ.Prod ν) :=
(measurePreserving_prod_mul μ ν).symm <| MeasurableEquiv.shearMulRight G
#align measure_theory.measure_preserving_prod_inv_mul MeasureTheory.measurePreserving_prod_inv_mul
#align measure_theory.measure_preserving_prod_neg_add MeasureTheory.measurePreserving_prod_neg_add
-variable [MulLeftInvariant μ]
+variable [IsMulLeftInvariant μ]
/-- The map `(x, y) ↦ (y, y⁻¹x)` sends `μ × ν` to `ν × μ`.
This is the function `S⁻¹R` in [Halmos, §59],
@@ -156,10 +156,10 @@ This is the function `S⁻¹RSR` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@[to_additive measure_preserving_add_prod_neg
"The map `(x, y) ↦ (y + x, - x)` is measure-preserving."]
-theorem measurePreserving_mul_prod_inv [MulLeftInvariant ν] :
+theorem measurePreserving_mul_prod_inv [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.2 * z.1, z.1⁻¹)) (μ.Prod ν) (μ.Prod ν) :=
by
- convert(measure_preserving_prod_inv_mul_swap ν μ).comp (measure_preserving_prod_mul_swap μ ν)
+ convert (measure_preserving_prod_inv_mul_swap ν μ).comp (measure_preserving_prod_mul_swap μ ν)
ext1 ⟨x, y⟩
simp_rw [Function.comp_apply, mul_inv_rev, inv_mul_cancel_right]
#align measure_theory.measure_preserving_mul_prod_inv MeasureTheory.measurePreserving_mul_prod_inv
@@ -207,7 +207,7 @@ theorem absolutelyContinuous_inv : μ ≪ μ.inv :=
#align measure_theory.absolutely_continuous_neg MeasureTheory.absolutelyContinuous_neg
@[to_additive]
-theorem lintegral_lintegral_mul_inv [MulLeftInvariant ν] (f : G → G → ℝ≥0∞)
+theorem lintegral_lintegral_mul_inv [IsMulLeftInvariant ν] (f : G → G → ℝ≥0∞)
(hf : AEMeasurable (uncurry f) (μ.Prod ν)) :
(∫⁻ x, ∫⁻ y, f (y * x) x⁻¹ ∂ν ∂μ) = ∫⁻ x, ∫⁻ y, f x y ∂ν ∂μ :=
by
@@ -260,7 +260,7 @@ theorem absolutelyContinuous_map_div_left (g : G) : μ ≪ map (fun h => g / h)
/-- This is the computation performed in the proof of [Halmos, §60 Th. A]. -/
@[to_additive "This is the computation performed in the proof of [Halmos, §60 Th. A]."]
-theorem measure_mul_lintegral_eq [MulLeftInvariant ν] (sm : MeasurableSet s) (f : G → ℝ≥0∞)
+theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s) (f : G → ℝ≥0∞)
(hf : Measurable f) : (μ s * ∫⁻ y, f y ∂ν) = ∫⁻ x, ν ((fun z => z * x) ⁻¹' s) * f x⁻¹ ∂μ :=
by
rw [← set_lintegral_one, ← lintegral_indicator _ sm, ←
@@ -287,18 +287,18 @@ theorem measure_mul_lintegral_eq [MulLeftInvariant ν] (sm : MeasurableSet s) (f
/-- Any two nonzero left-invariant measures are absolutely continuous w.r.t. each other. -/
@[to_additive
" Any two nonzero left-invariant measures are absolutely continuous w.r.t. each\nother. "]
-theorem absolutelyContinuous_of_mulLeftInvariant [MulLeftInvariant ν] (hν : ν ≠ 0) : μ ≪ ν :=
+theorem absolutelyContinuous_of_isMulLeftInvariant [IsMulLeftInvariant ν] (hν : ν ≠ 0) : μ ≪ ν :=
by
refine' absolutely_continuous.mk fun s sm hνs => _
have h1 := measure_mul_lintegral_eq μ ν sm 1 measurable_one
simp_rw [Pi.one_apply, lintegral_one, mul_one, (measure_mul_right_null ν _).mpr hνs,
lintegral_zero, mul_eq_zero, measure_univ_eq_zero.not.mpr hν, or_false_iff] at h1
exact h1
-#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_mulLeftInvariant
-#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_addLeftInvariant
+#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_isMulLeftInvariant
+#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_isAddLeftInvariant
@[to_additive]
-theorem ae_measure_preimage_mul_right_lt_top [MulLeftInvariant ν] (sm : MeasurableSet s)
+theorem ae_measure_preimage_mul_right_lt_top [IsMulLeftInvariant ν] (sm : MeasurableSet s)
(hμs : μ s ≠ ∞) : ∀ᵐ x ∂μ, ν ((fun y => y * x) ⁻¹' s) < ∞ :=
by
refine' ae_of_forall_measure_lt_top_ae_restrict' ν.inv _ _
@@ -316,8 +316,9 @@ theorem ae_measure_preimage_mul_right_lt_top [MulLeftInvariant ν] (sm : Measura
#align measure_theory.ae_measure_preimage_add_right_lt_top MeasureTheory.ae_measure_preimage_add_right_lt_top
@[to_additive]
-theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [MulLeftInvariant ν] (sm : MeasurableSet s)
- (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) : ∀ᵐ x ∂μ, ν ((fun y => y * x) ⁻¹' s) < ∞ :=
+theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [IsMulLeftInvariant ν]
+ (sm : MeasurableSet s) (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) :
+ ∀ᵐ x ∂μ, ν ((fun y => y * x) ⁻¹' s) < ∞ :=
by
refine' (ae_measure_preimage_mul_right_lt_top ν ν sm h3s).filter_mono _
refine' (absolutely_continuous_of_is_mul_left_invariant μ ν _).ae_le
@@ -338,7 +339,7 @@ theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [MulLeftInvariant ν] (s
`measure_theory.ae_measure_preimage_mul_right_lt_top_of_ne_zero`. -/
@[to_additive
"A technical lemma relating two different measures. This is basically\n[Halmos, §60 Th. A]. Note that if `f` is the characteristic function of a measurable set `t` this\nstates that `μ t = c * μ s` for a constant `c` that does not depend on `μ`.\n\nNote: There is a gap in the last step of the proof in [Halmos]. In the last line, the equality\n`g(-x) + ν(s - x) = f(x)` holds if we can prove that `0 < ν(s - x) < ∞`. The first inequality\nfollows from §59, Th. D, but the second inequality is not justified. We prove this inequality for\nalmost all `x` in `measure_theory.ae_measure_preimage_add_right_lt_top_of_ne_zero`."]
-theorem measure_lintegral_div_measure [MulLeftInvariant ν] (sm : MeasurableSet s) (h2s : ν s ≠ 0)
+theorem measure_lintegral_div_measure [IsMulLeftInvariant ν] (sm : MeasurableSet s) (h2s : ν s ≠ 0)
(h3s : ν s ≠ ∞) (f : G → ℝ≥0∞) (hf : Measurable f) :
(μ s * ∫⁻ y, f y⁻¹ / ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν) = ∫⁻ x, f x ∂μ :=
by
@@ -353,7 +354,7 @@ theorem measure_lintegral_div_measure [MulLeftInvariant ν] (sm : MeasurableSet
#align measure_theory.measure_lintegral_sub_measure MeasureTheory.measure_lintegral_sub_measure
@[to_additive]
-theorem measure_mul_measure_eq [MulLeftInvariant ν] {s t : Set G} (hs : MeasurableSet s)
+theorem measure_mul_measure_eq [IsMulLeftInvariant ν] {s t : Set G} (hs : MeasurableSet s)
(ht : MeasurableSet t) (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) : μ s * ν t = ν s * μ t :=
by
have h1 :=
@@ -370,7 +371,7 @@ theorem measure_mul_measure_eq [MulLeftInvariant ν] {s t : Set G} (hs : Measura
/-- Left invariant Borel measures on a measurable group are unique (up to a scalar). -/
@[to_additive
" Left invariant Borel measures on an additive measurable group are unique\n (up to a scalar). "]
-theorem measure_eq_div_smul [MulLeftInvariant ν] (hs : MeasurableSet s) (h2s : ν s ≠ 0)
+theorem measure_eq_div_smul [IsMulLeftInvariant ν] (hs : MeasurableSet s) (h2s : ν s ≠ 0)
(h3s : ν s ≠ ∞) : μ = (μ s / ν s) • ν := by
ext1 t ht
rw [smul_apply, smul_eq_mul, mul_comm, ← mul_div_assoc, mul_comm,
@@ -383,7 +384,7 @@ end LeftInvariant
section RightInvariant
@[to_additive measure_preserving_prod_add_right]
-theorem measurePreserving_prod_mul_right [MulRightInvariant ν] :
+theorem measurePreserving_prod_mul_right [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.2 * z.1)) (μ.Prod ν) (μ.Prod ν) :=
(MeasurePreserving.id μ).skew_product (measurable_snd.mul measurable_fst) <|
Filter.eventually_of_forall <| map_mul_right_eq_self ν
@@ -393,7 +394,7 @@ theorem measurePreserving_prod_mul_right [MulRightInvariant ν] :
/-- The map `(x, y) ↦ (y, xy)` sends the measure `μ × ν` to `ν × μ`. -/
@[to_additive measure_preserving_prod_add_swap_right
" The map `(x, y) ↦ (y, x + y)` sends the measure `μ × ν` to `ν × μ`. "]
-theorem measurePreserving_prod_mul_swap_right [MulRightInvariant μ] :
+theorem measurePreserving_prod_mul_swap_right [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.1 * z.2)) (μ.Prod ν) (ν.Prod μ) :=
(measurePreserving_prod_mul_right ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_mul_swap_right MeasureTheory.measurePreserving_prod_mul_swap_right
@@ -402,7 +403,7 @@ theorem measurePreserving_prod_mul_swap_right [MulRightInvariant μ] :
/-- The map `(x, y) ↦ (xy, y)` preserves the measure `μ × ν`. -/
@[to_additive measure_preserving_add_prod
" The map `(x, y) ↦ (x + y, y)` preserves the measure `μ × ν`. "]
-theorem measurePreserving_mul_prod [MulRightInvariant μ] :
+theorem measurePreserving_mul_prod [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.1 * z.2, z.2)) (μ.Prod ν) (μ.Prod ν) :=
measurePreserving_swap.comp <| by apply measure_preserving_prod_mul_swap_right μ ν
#align measure_theory.measure_preserving_mul_prod MeasureTheory.measurePreserving_mul_prod
@@ -412,7 +413,7 @@ variable [MeasurableInv G]
/-- The map `(x, y) ↦ (x, y / x)` is measure-preserving. -/
@[to_additive measure_preserving_prod_sub "The map `(x, y) ↦ (x, y - x)` is measure-preserving."]
-theorem measurePreserving_prod_div [MulRightInvariant ν] :
+theorem measurePreserving_prod_div [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.2 / z.1)) (μ.Prod ν) (μ.Prod ν) :=
(measurePreserving_prod_mul_right μ ν).symm (MeasurableEquiv.shearDivRight G).symm
#align measure_theory.measure_preserving_prod_div MeasureTheory.measurePreserving_prod_div
@@ -421,7 +422,7 @@ theorem measurePreserving_prod_div [MulRightInvariant ν] :
/-- The map `(x, y) ↦ (y, x / y)` sends `μ × ν` to `ν × μ`. -/
@[to_additive measure_preserving_prod_sub_swap
"The map `(x, y) ↦ (y, x - y)` sends `μ × ν` to `ν × μ`."]
-theorem measurePreserving_prod_div_swap [MulRightInvariant μ] :
+theorem measurePreserving_prod_div_swap [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.1 / z.2)) (μ.Prod ν) (ν.Prod μ) :=
(measurePreserving_prod_div ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_div_swap MeasureTheory.measurePreserving_prod_div_swap
@@ -430,7 +431,7 @@ theorem measurePreserving_prod_div_swap [MulRightInvariant μ] :
/-- The map `(x, y) ↦ (x / y, y)` preserves the measure `μ × ν`. -/
@[to_additive measure_preserving_sub_prod
" The map `(x, y) ↦ (x - y, y)` preserves the measure `μ × ν`. "]
-theorem measurePreserving_div_prod [MulRightInvariant μ] :
+theorem measurePreserving_div_prod [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.1 / z.2, z.2)) (μ.Prod ν) (μ.Prod ν) :=
measurePreserving_swap.comp <| by apply measure_preserving_prod_div_swap μ ν
#align measure_theory.measure_preserving_div_prod MeasureTheory.measurePreserving_div_prod
@@ -439,10 +440,10 @@ theorem measurePreserving_div_prod [MulRightInvariant μ] :
/-- The map `(x, y) ↦ (xy, x⁻¹)` is measure-preserving. -/
@[to_additive measure_preserving_add_prod_neg_right
"The map `(x, y) ↦ (x + y, - x)` is measure-preserving."]
-theorem measurePreserving_mul_prod_inv_right [MulRightInvariant μ] [MulRightInvariant ν] :
+theorem measurePreserving_mul_prod_inv_right [IsMulRightInvariant μ] [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1 * z.2, z.1⁻¹)) (μ.Prod ν) (μ.Prod ν) :=
by
- convert(measure_preserving_prod_div_swap ν μ).comp (measure_preserving_prod_mul_swap_right μ ν)
+ convert (measure_preserving_prod_div_swap ν μ).comp (measure_preserving_prod_mul_swap_right μ ν)
ext1 ⟨x, y⟩
simp_rw [Function.comp_apply, div_mul_eq_div_div_swap, div_self', one_div]
#align measure_theory.measure_preserving_mul_prod_inv_right MeasureTheory.measurePreserving_mul_prod_inv_right
@@ -455,7 +456,7 @@ section QuasiMeasurePreserving
variable [MeasurableInv G]
@[to_additive]
-theorem quasiMeasurePreserving_inv_of_right_invariant [MulRightInvariant μ] :
+theorem quasiMeasurePreserving_inv_of_right_invariant [IsMulRightInvariant μ] :
QuasiMeasurePreserving (Inv.inv : G → G) μ μ :=
by
rw [← μ.inv_inv]
@@ -466,7 +467,7 @@ theorem quasiMeasurePreserving_inv_of_right_invariant [MulRightInvariant μ] :
#align measure_theory.quasi_measure_preserving_neg_of_right_invariant MeasureTheory.quasiMeasurePreserving_neg_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreserving_div_left [MulLeftInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_div_left [IsMulLeftInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ :=
by
simp_rw [div_eq_mul_inv]
@@ -476,7 +477,7 @@ theorem quasiMeasurePreserving_div_left [MulLeftInvariant μ] (g : G) :
#align measure_theory.quasi_measure_preserving_sub_left MeasureTheory.quasiMeasurePreserving_sub_left
@[to_additive]
-theorem quasiMeasurePreserving_div_left_of_right_invariant [MulRightInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_div_left_of_right_invariant [IsMulRightInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ :=
by
rw [← μ.inv_inv]
@@ -487,7 +488,7 @@ theorem quasiMeasurePreserving_div_left_of_right_invariant [MulRightInvariant μ
#align measure_theory.quasi_measure_preserving_sub_left_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_left_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreserving_div_of_right_invariant [MulRightInvariant μ] :
+theorem quasiMeasurePreserving_div_of_right_invariant [IsMulRightInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.Prod ν) μ :=
by
refine' quasi_measure_preserving.prod_of_left measurable_div (eventually_of_forall fun y => _)
@@ -496,7 +497,7 @@ theorem quasiMeasurePreserving_div_of_right_invariant [MulRightInvariant μ] :
#align measure_theory.quasi_measure_preserving_sub_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreserving_div [MulLeftInvariant μ] :
+theorem quasiMeasurePreserving_div [IsMulLeftInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.Prod ν) μ :=
(quasiMeasurePreserving_div_of_right_invariant μ.inv ν).mono
((absolutelyContinuous_inv μ).Prod AbsolutelyContinuous.rfl) (inv_absolutelyContinuous μ)
@@ -507,7 +508,7 @@ theorem quasiMeasurePreserving_div [MulLeftInvariant μ] :
This should not be confused with `(measure_preserving_mul_right μ g).quasi_measure_preserving`. -/
@[to_additive
"A *left*-invariant measure is quasi-preserved by *right*-addition.\nThis should not be confused with `(measure_preserving_add_right μ g).quasi_measure_preserving`. "]
-theorem quasiMeasurePreserving_mul_right [MulLeftInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_mul_right [IsMulLeftInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => h * g) μ μ :=
by
refine' ⟨measurable_mul_const g, absolutely_continuous.mk fun s hs => _⟩
@@ -519,7 +520,7 @@ theorem quasiMeasurePreserving_mul_right [MulLeftInvariant μ] (g : G) :
This should not be confused with `(measure_preserving_mul_left μ g).quasi_measure_preserving`. -/
@[to_additive
"A *right*-invariant measure is quasi-preserved by *left*-addition.\nThis should not be confused with `(measure_preserving_add_left μ g).quasi_measure_preserving`. "]
-theorem quasiMeasurePreserving_mul_left [MulRightInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_mul_left [IsMulRightInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g * h) μ μ :=
by
have :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/34ebaffc1d1e8e783fc05438ec2e70af87275ac9
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn
! This file was ported from Lean 3 source module measure_theory.group.prod
-! leanprover-community/mathlib commit fd5edc43dc4f10b85abfe544b88f82cf13c5f844
+! leanprover-community/mathlib commit 599fffe78f0e11eb6a034e834ec51882167b9688
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.MeasureTheory.Group.Measure
/-!
# Measure theory in the product of groups
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
In this file we show properties about measure theory in products of measurable groups
and properties of iterated integrals in measurable groups.
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -289,7 +289,7 @@ theorem absolutelyContinuous_of_mulLeftInvariant [MulLeftInvariant ν] (hν : ν
refine' absolutely_continuous.mk fun s sm hνs => _
have h1 := measure_mul_lintegral_eq μ ν sm 1 measurable_one
simp_rw [Pi.one_apply, lintegral_one, mul_one, (measure_mul_right_null ν _).mpr hνs,
- lintegral_zero, mul_eq_zero, measure_univ_eq_zero.not.mpr hν, or_false_iff] at h1
+ lintegral_zero, mul_eq_zero, measure_univ_eq_zero.not.mpr hν, or_false_iff] at h1
exact h1
#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_mulLeftInvariant
#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_addLeftInvariant
@@ -300,13 +300,13 @@ theorem ae_measure_preimage_mul_right_lt_top [MulLeftInvariant ν] (sm : Measura
by
refine' ae_of_forall_measure_lt_top_ae_restrict' ν.inv _ _
intro A hA h2A h3A
- simp only [ν.inv_apply] at h3A
+ simp only [ν.inv_apply] at h3A
apply ae_lt_top (measurable_measure_mul_right ν sm)
have h1 := measure_mul_lintegral_eq μ ν sm (A⁻¹.indicator 1) (measurable_one.indicator hA.inv)
- rw [lintegral_indicator _ hA.inv] at h1
+ rw [lintegral_indicator _ hA.inv] at h1
simp_rw [Pi.one_apply, set_lintegral_one, ← image_inv, indicator_image inv_injective, image_inv, ←
indicator_mul_right _ fun x => ν ((fun y => y * x) ⁻¹' s), Function.comp, Pi.one_apply,
- mul_one] at h1
+ mul_one] at h1
rw [← lintegral_indicator _ hA, ← h1]
exact ENNReal.mul_ne_top hμs h3A.ne
#align measure_theory.ae_measure_preimage_mul_right_lt_top MeasureTheory.ae_measure_preimage_mul_right_lt_top
@@ -359,7 +359,7 @@ theorem measure_mul_measure_eq [MulLeftInvariant ν] {s t : Set G} (hs : Measura
have h2 :=
measure_lintegral_div_measure μ ν hs h2s h3s (t.indicator fun x => 1)
(measurable_const.indicator ht)
- rw [lintegral_indicator _ ht, set_lintegral_one] at h1 h2
+ rw [lintegral_indicator _ ht, set_lintegral_one] at h1 h2
rw [← h1, mul_left_comm, h2]
#align measure_theory.measure_mul_measure_eq MeasureTheory.measure_mul_measure_eq
#align measure_theory.measure_add_measure_eq MeasureTheory.measure_add_measure_eq
@@ -522,11 +522,11 @@ theorem quasiMeasurePreserving_mul_left [MulRightInvariant μ] (g : G) :
have :=
(quasi_measure_preserving_mul_right μ.inv g⁻¹).mono (inv_absolutely_continuous μ.inv)
(absolutely_continuous_inv μ.inv)
- rw [μ.inv_inv] at this
+ rw [μ.inv_inv] at this
have :=
(quasi_measure_preserving_inv_of_right_invariant μ).comp
(this.comp (quasi_measure_preserving_inv_of_right_invariant μ))
- simp_rw [Function.comp, mul_inv_rev, inv_inv] at this
+ simp_rw [Function.comp, mul_inv_rev, inv_inv] at this
exact this
#align measure_theory.quasi_measure_preserving_mul_left MeasureTheory.quasiMeasurePreserving_mul_left
#align measure_theory.quasi_measure_preserving_add_left MeasureTheory.quasiMeasurePreserving_add_left
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -90,7 +90,7 @@ This condition is part of the definition of a measurable group in [Halmos, §59]
There, the map in this lemma is called `S`. -/
@[to_additive measure_preserving_prod_add
" The shear mapping `(x, y) ↦ (x, x + y)` preserves the measure `μ × ν`. "]
-theorem measurePreserving_prod_mul [IsMulLeftInvariant ν] :
+theorem measurePreserving_prod_mul [MulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.1 * z.2)) (μ.Prod ν) (μ.Prod ν) :=
(MeasurePreserving.id μ).skew_product measurable_mul <|
Filter.eventually_of_forall <| map_mul_left_eq_self ν
@@ -102,7 +102,7 @@ This is the map `SR` in [Halmos, §59].
`S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@[to_additive measure_preserving_prod_add_swap
" The map `(x, y) ↦ (y, y + x)` sends the measure `μ × ν` to `ν × μ`. "]
-theorem measurePreserving_prod_mul_swap [IsMulLeftInvariant μ] :
+theorem measurePreserving_prod_mul_swap [MulLeftInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.2 * z.1)) (μ.Prod ν) (ν.Prod μ) :=
(measurePreserving_prod_mul ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_mul_swap MeasureTheory.measurePreserving_prod_mul_swap
@@ -129,13 +129,13 @@ This is the function `S⁻¹` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)`. -/
@[to_additive measure_preserving_prod_neg_add
"The map `(x, y) ↦ (x, - x + y)` is measure-preserving."]
-theorem measurePreserving_prod_inv_mul [IsMulLeftInvariant ν] :
+theorem measurePreserving_prod_inv_mul [MulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.1⁻¹ * z.2)) (μ.Prod ν) (μ.Prod ν) :=
(measurePreserving_prod_mul μ ν).symm <| MeasurableEquiv.shearMulRight G
#align measure_theory.measure_preserving_prod_inv_mul MeasureTheory.measurePreserving_prod_inv_mul
#align measure_theory.measure_preserving_prod_neg_add MeasureTheory.measurePreserving_prod_neg_add
-variable [IsMulLeftInvariant μ]
+variable [MulLeftInvariant μ]
/-- The map `(x, y) ↦ (y, y⁻¹x)` sends `μ × ν` to `ν × μ`.
This is the function `S⁻¹R` in [Halmos, §59],
@@ -153,7 +153,7 @@ This is the function `S⁻¹RSR` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@[to_additive measure_preserving_add_prod_neg
"The map `(x, y) ↦ (y + x, - x)` is measure-preserving."]
-theorem measurePreserving_mul_prod_inv [IsMulLeftInvariant ν] :
+theorem measurePreserving_mul_prod_inv [MulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.2 * z.1, z.1⁻¹)) (μ.Prod ν) (μ.Prod ν) :=
by
convert(measure_preserving_prod_inv_mul_swap ν μ).comp (measure_preserving_prod_mul_swap μ ν)
@@ -204,7 +204,7 @@ theorem absolutelyContinuous_inv : μ ≪ μ.inv :=
#align measure_theory.absolutely_continuous_neg MeasureTheory.absolutelyContinuous_neg
@[to_additive]
-theorem lintegral_lintegral_mul_inv [IsMulLeftInvariant ν] (f : G → G → ℝ≥0∞)
+theorem lintegral_lintegral_mul_inv [MulLeftInvariant ν] (f : G → G → ℝ≥0∞)
(hf : AEMeasurable (uncurry f) (μ.Prod ν)) :
(∫⁻ x, ∫⁻ y, f (y * x) x⁻¹ ∂ν ∂μ) = ∫⁻ x, ∫⁻ y, f x y ∂ν ∂μ :=
by
@@ -257,7 +257,7 @@ theorem absolutelyContinuous_map_div_left (g : G) : μ ≪ map (fun h => g / h)
/-- This is the computation performed in the proof of [Halmos, §60 Th. A]. -/
@[to_additive "This is the computation performed in the proof of [Halmos, §60 Th. A]."]
-theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s) (f : G → ℝ≥0∞)
+theorem measure_mul_lintegral_eq [MulLeftInvariant ν] (sm : MeasurableSet s) (f : G → ℝ≥0∞)
(hf : Measurable f) : (μ s * ∫⁻ y, f y ∂ν) = ∫⁻ x, ν ((fun z => z * x) ⁻¹' s) * f x⁻¹ ∂μ :=
by
rw [← set_lintegral_one, ← lintegral_indicator _ sm, ←
@@ -284,18 +284,18 @@ theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s)
/-- Any two nonzero left-invariant measures are absolutely continuous w.r.t. each other. -/
@[to_additive
" Any two nonzero left-invariant measures are absolutely continuous w.r.t. each\nother. "]
-theorem absolutelyContinuous_of_isMulLeftInvariant [IsMulLeftInvariant ν] (hν : ν ≠ 0) : μ ≪ ν :=
+theorem absolutelyContinuous_of_mulLeftInvariant [MulLeftInvariant ν] (hν : ν ≠ 0) : μ ≪ ν :=
by
refine' absolutely_continuous.mk fun s sm hνs => _
have h1 := measure_mul_lintegral_eq μ ν sm 1 measurable_one
simp_rw [Pi.one_apply, lintegral_one, mul_one, (measure_mul_right_null ν _).mpr hνs,
lintegral_zero, mul_eq_zero, measure_univ_eq_zero.not.mpr hν, or_false_iff] at h1
exact h1
-#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_isMulLeftInvariant
-#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_is_add_left_invariant
+#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_mulLeftInvariant
+#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_addLeftInvariant
@[to_additive]
-theorem ae_measure_preimage_mul_right_lt_top [IsMulLeftInvariant ν] (sm : MeasurableSet s)
+theorem ae_measure_preimage_mul_right_lt_top [MulLeftInvariant ν] (sm : MeasurableSet s)
(hμs : μ s ≠ ∞) : ∀ᵐ x ∂μ, ν ((fun y => y * x) ⁻¹' s) < ∞ :=
by
refine' ae_of_forall_measure_lt_top_ae_restrict' ν.inv _ _
@@ -313,9 +313,8 @@ theorem ae_measure_preimage_mul_right_lt_top [IsMulLeftInvariant ν] (sm : Measu
#align measure_theory.ae_measure_preimage_add_right_lt_top MeasureTheory.ae_measure_preimage_add_right_lt_top
@[to_additive]
-theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [IsMulLeftInvariant ν]
- (sm : MeasurableSet s) (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) :
- ∀ᵐ x ∂μ, ν ((fun y => y * x) ⁻¹' s) < ∞ :=
+theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [MulLeftInvariant ν] (sm : MeasurableSet s)
+ (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) : ∀ᵐ x ∂μ, ν ((fun y => y * x) ⁻¹' s) < ∞ :=
by
refine' (ae_measure_preimage_mul_right_lt_top ν ν sm h3s).filter_mono _
refine' (absolutely_continuous_of_is_mul_left_invariant μ ν _).ae_le
@@ -336,7 +335,7 @@ theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [IsMulLeftInvariant ν]
`measure_theory.ae_measure_preimage_mul_right_lt_top_of_ne_zero`. -/
@[to_additive
"A technical lemma relating two different measures. This is basically\n[Halmos, §60 Th. A]. Note that if `f` is the characteristic function of a measurable set `t` this\nstates that `μ t = c * μ s` for a constant `c` that does not depend on `μ`.\n\nNote: There is a gap in the last step of the proof in [Halmos]. In the last line, the equality\n`g(-x) + ν(s - x) = f(x)` holds if we can prove that `0 < ν(s - x) < ∞`. The first inequality\nfollows from §59, Th. D, but the second inequality is not justified. We prove this inequality for\nalmost all `x` in `measure_theory.ae_measure_preimage_add_right_lt_top_of_ne_zero`."]
-theorem measure_lintegral_div_measure [IsMulLeftInvariant ν] (sm : MeasurableSet s) (h2s : ν s ≠ 0)
+theorem measure_lintegral_div_measure [MulLeftInvariant ν] (sm : MeasurableSet s) (h2s : ν s ≠ 0)
(h3s : ν s ≠ ∞) (f : G → ℝ≥0∞) (hf : Measurable f) :
(μ s * ∫⁻ y, f y⁻¹ / ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν) = ∫⁻ x, f x ∂μ :=
by
@@ -351,7 +350,7 @@ theorem measure_lintegral_div_measure [IsMulLeftInvariant ν] (sm : MeasurableSe
#align measure_theory.measure_lintegral_sub_measure MeasureTheory.measure_lintegral_sub_measure
@[to_additive]
-theorem measure_mul_measure_eq [IsMulLeftInvariant ν] {s t : Set G} (hs : MeasurableSet s)
+theorem measure_mul_measure_eq [MulLeftInvariant ν] {s t : Set G} (hs : MeasurableSet s)
(ht : MeasurableSet t) (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) : μ s * ν t = ν s * μ t :=
by
have h1 :=
@@ -368,7 +367,7 @@ theorem measure_mul_measure_eq [IsMulLeftInvariant ν] {s t : Set G} (hs : Measu
/-- Left invariant Borel measures on a measurable group are unique (up to a scalar). -/
@[to_additive
" Left invariant Borel measures on an additive measurable group are unique\n (up to a scalar). "]
-theorem measure_eq_div_smul [IsMulLeftInvariant ν] (hs : MeasurableSet s) (h2s : ν s ≠ 0)
+theorem measure_eq_div_smul [MulLeftInvariant ν] (hs : MeasurableSet s) (h2s : ν s ≠ 0)
(h3s : ν s ≠ ∞) : μ = (μ s / ν s) • ν := by
ext1 t ht
rw [smul_apply, smul_eq_mul, mul_comm, ← mul_div_assoc, mul_comm,
@@ -381,7 +380,7 @@ end LeftInvariant
section RightInvariant
@[to_additive measure_preserving_prod_add_right]
-theorem measurePreserving_prod_mul_right [IsMulRightInvariant ν] :
+theorem measurePreserving_prod_mul_right [MulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.2 * z.1)) (μ.Prod ν) (μ.Prod ν) :=
(MeasurePreserving.id μ).skew_product (measurable_snd.mul measurable_fst) <|
Filter.eventually_of_forall <| map_mul_right_eq_self ν
@@ -391,7 +390,7 @@ theorem measurePreserving_prod_mul_right [IsMulRightInvariant ν] :
/-- The map `(x, y) ↦ (y, xy)` sends the measure `μ × ν` to `ν × μ`. -/
@[to_additive measure_preserving_prod_add_swap_right
" The map `(x, y) ↦ (y, x + y)` sends the measure `μ × ν` to `ν × μ`. "]
-theorem measurePreserving_prod_mul_swap_right [IsMulRightInvariant μ] :
+theorem measurePreserving_prod_mul_swap_right [MulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.1 * z.2)) (μ.Prod ν) (ν.Prod μ) :=
(measurePreserving_prod_mul_right ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_mul_swap_right MeasureTheory.measurePreserving_prod_mul_swap_right
@@ -400,7 +399,7 @@ theorem measurePreserving_prod_mul_swap_right [IsMulRightInvariant μ] :
/-- The map `(x, y) ↦ (xy, y)` preserves the measure `μ × ν`. -/
@[to_additive measure_preserving_add_prod
" The map `(x, y) ↦ (x + y, y)` preserves the measure `μ × ν`. "]
-theorem measurePreserving_mul_prod [IsMulRightInvariant μ] :
+theorem measurePreserving_mul_prod [MulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.1 * z.2, z.2)) (μ.Prod ν) (μ.Prod ν) :=
measurePreserving_swap.comp <| by apply measure_preserving_prod_mul_swap_right μ ν
#align measure_theory.measure_preserving_mul_prod MeasureTheory.measurePreserving_mul_prod
@@ -410,7 +409,7 @@ variable [MeasurableInv G]
/-- The map `(x, y) ↦ (x, y / x)` is measure-preserving. -/
@[to_additive measure_preserving_prod_sub "The map `(x, y) ↦ (x, y - x)` is measure-preserving."]
-theorem measurePreserving_prod_div [IsMulRightInvariant ν] :
+theorem measurePreserving_prod_div [MulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.2 / z.1)) (μ.Prod ν) (μ.Prod ν) :=
(measurePreserving_prod_mul_right μ ν).symm (MeasurableEquiv.shearDivRight G).symm
#align measure_theory.measure_preserving_prod_div MeasureTheory.measurePreserving_prod_div
@@ -419,7 +418,7 @@ theorem measurePreserving_prod_div [IsMulRightInvariant ν] :
/-- The map `(x, y) ↦ (y, x / y)` sends `μ × ν` to `ν × μ`. -/
@[to_additive measure_preserving_prod_sub_swap
"The map `(x, y) ↦ (y, x - y)` sends `μ × ν` to `ν × μ`."]
-theorem measurePreserving_prod_div_swap [IsMulRightInvariant μ] :
+theorem measurePreserving_prod_div_swap [MulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.1 / z.2)) (μ.Prod ν) (ν.Prod μ) :=
(measurePreserving_prod_div ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_div_swap MeasureTheory.measurePreserving_prod_div_swap
@@ -428,7 +427,7 @@ theorem measurePreserving_prod_div_swap [IsMulRightInvariant μ] :
/-- The map `(x, y) ↦ (x / y, y)` preserves the measure `μ × ν`. -/
@[to_additive measure_preserving_sub_prod
" The map `(x, y) ↦ (x - y, y)` preserves the measure `μ × ν`. "]
-theorem measurePreserving_div_prod [IsMulRightInvariant μ] :
+theorem measurePreserving_div_prod [MulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.1 / z.2, z.2)) (μ.Prod ν) (μ.Prod ν) :=
measurePreserving_swap.comp <| by apply measure_preserving_prod_div_swap μ ν
#align measure_theory.measure_preserving_div_prod MeasureTheory.measurePreserving_div_prod
@@ -437,7 +436,7 @@ theorem measurePreserving_div_prod [IsMulRightInvariant μ] :
/-- The map `(x, y) ↦ (xy, x⁻¹)` is measure-preserving. -/
@[to_additive measure_preserving_add_prod_neg_right
"The map `(x, y) ↦ (x + y, - x)` is measure-preserving."]
-theorem measurePreserving_mul_prod_inv_right [IsMulRightInvariant μ] [IsMulRightInvariant ν] :
+theorem measurePreserving_mul_prod_inv_right [MulRightInvariant μ] [MulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1 * z.2, z.1⁻¹)) (μ.Prod ν) (μ.Prod ν) :=
by
convert(measure_preserving_prod_div_swap ν μ).comp (measure_preserving_prod_mul_swap_right μ ν)
@@ -453,7 +452,7 @@ section QuasiMeasurePreserving
variable [MeasurableInv G]
@[to_additive]
-theorem quasiMeasurePreserving_inv_of_right_invariant [IsMulRightInvariant μ] :
+theorem quasiMeasurePreserving_inv_of_right_invariant [MulRightInvariant μ] :
QuasiMeasurePreserving (Inv.inv : G → G) μ μ :=
by
rw [← μ.inv_inv]
@@ -464,7 +463,7 @@ theorem quasiMeasurePreserving_inv_of_right_invariant [IsMulRightInvariant μ] :
#align measure_theory.quasi_measure_preserving_neg_of_right_invariant MeasureTheory.quasiMeasurePreserving_neg_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreserving_div_left [IsMulLeftInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_div_left [MulLeftInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ :=
by
simp_rw [div_eq_mul_inv]
@@ -474,7 +473,7 @@ theorem quasiMeasurePreserving_div_left [IsMulLeftInvariant μ] (g : G) :
#align measure_theory.quasi_measure_preserving_sub_left MeasureTheory.quasiMeasurePreserving_sub_left
@[to_additive]
-theorem quasiMeasurePreserving_div_left_of_right_invariant [IsMulRightInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_div_left_of_right_invariant [MulRightInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ :=
by
rw [← μ.inv_inv]
@@ -485,7 +484,7 @@ theorem quasiMeasurePreserving_div_left_of_right_invariant [IsMulRightInvariant
#align measure_theory.quasi_measure_preserving_sub_left_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_left_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreserving_div_of_right_invariant [IsMulRightInvariant μ] :
+theorem quasiMeasurePreserving_div_of_right_invariant [MulRightInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.Prod ν) μ :=
by
refine' quasi_measure_preserving.prod_of_left measurable_div (eventually_of_forall fun y => _)
@@ -494,7 +493,7 @@ theorem quasiMeasurePreserving_div_of_right_invariant [IsMulRightInvariant μ] :
#align measure_theory.quasi_measure_preserving_sub_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreserving_div [IsMulLeftInvariant μ] :
+theorem quasiMeasurePreserving_div [MulLeftInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.Prod ν) μ :=
(quasiMeasurePreserving_div_of_right_invariant μ.inv ν).mono
((absolutelyContinuous_inv μ).Prod AbsolutelyContinuous.rfl) (inv_absolutelyContinuous μ)
@@ -505,7 +504,7 @@ theorem quasiMeasurePreserving_div [IsMulLeftInvariant μ] :
This should not be confused with `(measure_preserving_mul_right μ g).quasi_measure_preserving`. -/
@[to_additive
"A *left*-invariant measure is quasi-preserved by *right*-addition.\nThis should not be confused with `(measure_preserving_add_right μ g).quasi_measure_preserving`. "]
-theorem quasiMeasurePreserving_mul_right [IsMulLeftInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_mul_right [MulLeftInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => h * g) μ μ :=
by
refine' ⟨measurable_mul_const g, absolutely_continuous.mk fun s hs => _⟩
@@ -517,7 +516,7 @@ theorem quasiMeasurePreserving_mul_right [IsMulLeftInvariant μ] (g : G) :
This should not be confused with `(measure_preserving_mul_left μ g).quasi_measure_preserving`. -/
@[to_additive
"A *right*-invariant measure is quasi-preserved by *left*-addition.\nThis should not be confused with `(measure_preserving_add_left μ g).quasi_measure_preserving`. "]
-theorem quasiMeasurePreserving_mul_left [IsMulRightInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_mul_left [MulRightInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g * h) μ μ :=
by
have :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -46,7 +46,7 @@ open Function MeasureTheory
open Filter hiding map
-open Classical ENNReal Pointwise MeasureTheory
+open scoped Classical ENNReal Pointwise MeasureTheory
variable (G : Type _) [MeasurableSpace G]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -116,11 +116,7 @@ theorem measurable_measure_mul_right (hs : MeasurableSet s) :
suffices
Measurable fun y =>
μ ((fun x => (x, y)) ⁻¹' ((fun z : G × G => ((1 : G), z.1 * z.2)) ⁻¹' univ ×ˢ s))
- by
- convert this
- ext1 x
- congr 1 with y : 1
- simp
+ by convert this; ext1 x; congr 1 with y : 1; simp
apply measurable_measure_prod_mk_right
exact measurable_const.prod_mk measurable_mul (measurable_set.univ.prod hs)
#align measure_theory.measurable_measure_mul_right MeasureTheory.measurable_measure_mul_right
@@ -267,7 +263,7 @@ theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s)
rw [← set_lintegral_one, ← lintegral_indicator _ sm, ←
lintegral_lintegral_mul (measurable_const.indicator sm).AEMeasurable hf.ae_measurable, ←
lintegral_lintegral_mul_inv μ ν]
- swap
+ swap;
·
exact
(((measurable_const.indicator sm).comp measurable_fst).mul
@@ -279,12 +275,7 @@ theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s)
∀ x y,
s.indicator (fun z : G => (1 : ℝ≥0∞)) (y * x) =
((fun z => z * x) ⁻¹' s).indicator (fun b : G => 1) y :=
- by
- intro x y
- symm
- convert indicator_comp_right fun y => y * x
- ext1 z
- rfl
+ by intro x y; symm; convert indicator_comp_right fun y => y * x; ext1 z; rfl
simp_rw [this, lintegral_mul_const _ (ms _), lintegral_indicator _ (measurable_mul_const _ sm),
set_lintegral_one]
#align measure_theory.measure_mul_lintegral_eq MeasureTheory.measure_mul_lintegral_eq
mathlib commit https://github.com/leanprover-community/mathlib/commit/f51de8769c34652d82d1c8e5f8f18f8374782bed
@@ -4,11 +4,11 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn
! This file was ported from Lean 3 source module measure_theory.group.prod
-! leanprover-community/mathlib commit ec247d43814751ffceb33b758e8820df2372bf6f
+! leanprover-community/mathlib commit fd5edc43dc4f10b85abfe544b88f82cf13c5f844
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
-import Mathbin.MeasureTheory.Constructions.Prod
+import Mathbin.MeasureTheory.Constructions.Prod.Basic
import Mathbin.MeasureTheory.Group.Measure
/-!
mathlib commit https://github.com/leanprover-community/mathlib/commit/cc5dd6244981976cc9da7afc4eee5682b037a013
@@ -50,13 +50,13 @@ open Classical ENNReal Pointwise MeasureTheory
variable (G : Type _) [MeasurableSpace G]
-variable [Group G] [HasMeasurableMul₂ G]
+variable [Group G] [MeasurableMul₂ G]
variable (μ ν : Measure G) [SigmaFinite ν] [SigmaFinite μ] {s : Set G}
/-- The map `(x, y) ↦ (x, xy)` as a `measurable_equiv`. -/
@[to_additive "The map `(x, y) ↦ (x, x + y)` as a `measurable_equiv`."]
-protected def MeasurableEquiv.shearMulRight [HasMeasurableInv G] : G × G ≃ᵐ G × G :=
+protected def MeasurableEquiv.shearMulRight [MeasurableInv G] : G × G ≃ᵐ G × G :=
{
Equiv.prodShear (Equiv.refl _)
Equiv.mulLeft with
@@ -68,7 +68,7 @@ protected def MeasurableEquiv.shearMulRight [HasMeasurableInv G] : G × G ≃ᵐ
/-- The map `(x, y) ↦ (x, y / x)` as a `measurable_equiv` with as inverse `(x, y) ↦ (x, yx)` -/
@[to_additive
"The map `(x, y) ↦ (x, y - x)` as a `measurable_equiv` with as inverse `(x, y) ↦ (x, y + x)`."]
-protected def MeasurableEquiv.shearDivRight [HasMeasurableInv G] : G × G ≃ᵐ G × G :=
+protected def MeasurableEquiv.shearDivRight [MeasurableInv G] : G × G ≃ᵐ G × G :=
{
Equiv.prodShear (Equiv.refl _)
Equiv.divRight with
@@ -126,7 +126,7 @@ theorem measurable_measure_mul_right (hs : MeasurableSet s) :
#align measure_theory.measurable_measure_mul_right MeasureTheory.measurable_measure_mul_right
#align measure_theory.measurable_measure_add_right MeasureTheory.measurable_measure_add_right
-variable [HasMeasurableInv G]
+variable [MeasurableInv G]
/-- The map `(x, y) ↦ (x, x⁻¹y)` is measure-preserving.
This is the function `S⁻¹` in [Halmos, §59],
@@ -415,7 +415,7 @@ theorem measurePreserving_mul_prod [IsMulRightInvariant μ] :
#align measure_theory.measure_preserving_mul_prod MeasureTheory.measurePreserving_mul_prod
#align measure_theory.measure_preserving_add_prod MeasureTheory.measurePreserving_add_prod
-variable [HasMeasurableInv G]
+variable [MeasurableInv G]
/-- The map `(x, y) ↦ (x, y / x)` is measure-preserving. -/
@[to_additive measure_preserving_prod_sub "The map `(x, y) ↦ (x, y - x)` is measure-preserving."]
@@ -459,7 +459,7 @@ end RightInvariant
section QuasiMeasurePreserving
-variable [HasMeasurableInv G]
+variable [MeasurableInv G]
@[to_additive]
theorem quasiMeasurePreserving_inv_of_right_invariant [IsMulRightInvariant μ] :
mathlib commit https://github.com/leanprover-community/mathlib/commit/92c69b77c5a7dc0f7eeddb552508633305157caa
@@ -90,23 +90,23 @@ This condition is part of the definition of a measurable group in [Halmos, §59]
There, the map in this lemma is called `S`. -/
@[to_additive measure_preserving_prod_add
" The shear mapping `(x, y) ↦ (x, x + y)` preserves the measure `μ × ν`. "]
-theorem measurePreservingProdMul [IsMulLeftInvariant ν] :
+theorem measurePreserving_prod_mul [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.1 * z.2)) (μ.Prod ν) (μ.Prod ν) :=
- (MeasurePreserving.id μ).skewProduct measurable_mul <|
+ (MeasurePreserving.id μ).skew_product measurable_mul <|
Filter.eventually_of_forall <| map_mul_left_eq_self ν
-#align measure_theory.measure_preserving_prod_mul MeasureTheory.measurePreservingProdMul
-#align measure_theory.measure_preserving_prod_add MeasureTheory.measure_preserving_prod_add
+#align measure_theory.measure_preserving_prod_mul MeasureTheory.measurePreserving_prod_mul
+#align measure_theory.measure_preserving_prod_add MeasureTheory.measurePreserving_prod_add
/-- The map `(x, y) ↦ (y, yx)` sends the measure `μ × ν` to `ν × μ`.
This is the map `SR` in [Halmos, §59].
`S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@[to_additive measure_preserving_prod_add_swap
" The map `(x, y) ↦ (y, y + x)` sends the measure `μ × ν` to `ν × μ`. "]
-theorem measurePreservingProdMulSwap [IsMulLeftInvariant μ] :
+theorem measurePreserving_prod_mul_swap [IsMulLeftInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.2 * z.1)) (μ.Prod ν) (ν.Prod μ) :=
- (measurePreservingProdMul ν μ).comp measurePreservingSwap
-#align measure_theory.measure_preserving_prod_mul_swap MeasureTheory.measurePreservingProdMulSwap
-#align measure_theory.measure_preserving_prod_add_swap MeasureTheory.measure_preserving_prod_add_swap
+ (measurePreserving_prod_mul ν μ).comp measurePreserving_swap
+#align measure_theory.measure_preserving_prod_mul_swap MeasureTheory.measurePreserving_prod_mul_swap
+#align measure_theory.measure_preserving_prod_add_swap MeasureTheory.measurePreserving_prod_add_swap
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@[to_additive]
@@ -133,11 +133,11 @@ This is the function `S⁻¹` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)`. -/
@[to_additive measure_preserving_prod_neg_add
"The map `(x, y) ↦ (x, - x + y)` is measure-preserving."]
-theorem measurePreservingProdInvMul [IsMulLeftInvariant ν] :
+theorem measurePreserving_prod_inv_mul [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.1⁻¹ * z.2)) (μ.Prod ν) (μ.Prod ν) :=
- (measurePreservingProdMul μ ν).symm <| MeasurableEquiv.shearMulRight G
-#align measure_theory.measure_preserving_prod_inv_mul MeasureTheory.measurePreservingProdInvMul
-#align measure_theory.measure_preserving_prod_neg_add MeasureTheory.measure_preserving_prod_neg_add
+ (measurePreserving_prod_mul μ ν).symm <| MeasurableEquiv.shearMulRight G
+#align measure_theory.measure_preserving_prod_inv_mul MeasureTheory.measurePreserving_prod_inv_mul
+#align measure_theory.measure_preserving_prod_neg_add MeasureTheory.measurePreserving_prod_neg_add
variable [IsMulLeftInvariant μ]
@@ -146,30 +146,30 @@ This is the function `S⁻¹R` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@[to_additive measure_preserving_prod_neg_add_swap
"The map `(x, y) ↦ (y, - y + x)` sends `μ × ν` to `ν × μ`."]
-theorem measurePreservingProdInvMulSwap :
+theorem measurePreserving_prod_inv_mul_swap :
MeasurePreserving (fun z : G × G => (z.2, z.2⁻¹ * z.1)) (μ.Prod ν) (ν.Prod μ) :=
- (measurePreservingProdInvMul ν μ).comp measurePreservingSwap
-#align measure_theory.measure_preserving_prod_inv_mul_swap MeasureTheory.measurePreservingProdInvMulSwap
-#align measure_theory.measure_preserving_prod_neg_add_swap MeasureTheory.measure_preserving_prod_neg_add_swap
+ (measurePreserving_prod_inv_mul ν μ).comp measurePreserving_swap
+#align measure_theory.measure_preserving_prod_inv_mul_swap MeasureTheory.measurePreserving_prod_inv_mul_swap
+#align measure_theory.measure_preserving_prod_neg_add_swap MeasureTheory.measurePreserving_prod_neg_add_swap
/-- The map `(x, y) ↦ (yx, x⁻¹)` is measure-preserving.
This is the function `S⁻¹RSR` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
@[to_additive measure_preserving_add_prod_neg
"The map `(x, y) ↦ (y + x, - x)` is measure-preserving."]
-theorem measurePreservingMulProdInv [IsMulLeftInvariant ν] :
+theorem measurePreserving_mul_prod_inv [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.2 * z.1, z.1⁻¹)) (μ.Prod ν) (μ.Prod ν) :=
by
convert(measure_preserving_prod_inv_mul_swap ν μ).comp (measure_preserving_prod_mul_swap μ ν)
ext1 ⟨x, y⟩
simp_rw [Function.comp_apply, mul_inv_rev, inv_mul_cancel_right]
-#align measure_theory.measure_preserving_mul_prod_inv MeasureTheory.measurePreservingMulProdInv
-#align measure_theory.measure_preserving_add_prod_neg MeasureTheory.measure_preserving_add_prod_neg
+#align measure_theory.measure_preserving_mul_prod_inv MeasureTheory.measurePreserving_mul_prod_inv
+#align measure_theory.measure_preserving_add_prod_neg MeasureTheory.measurePreserving_add_prod_neg
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@[to_additive]
-theorem quasiMeasurePreservingInv : QuasiMeasurePreserving (Inv.inv : G → G) μ μ :=
+theorem quasiMeasurePreserving_inv : QuasiMeasurePreserving (Inv.inv : G → G) μ μ :=
by
refine' ⟨measurable_inv, absolutely_continuous.mk fun s hsm hμs => _⟩
rw [map_apply measurable_inv hsm, inv_preimage]
@@ -181,8 +181,8 @@ theorem quasiMeasurePreservingInv : QuasiMeasurePreserving (Inv.inv : G → G)
have hsm' : MeasurableSet (s⁻¹ ×ˢ s⁻¹) := hsm.inv.prod hsm.inv
simp_rw [map_apply hf hsm', prod_apply_symm (hf hsm'), preimage_preimage, mk_preimage_prod,
inv_preimage, inv_inv, measure_mono_null (inter_subset_right _ _) hμs, lintegral_zero]
-#align measure_theory.quasi_measure_preserving_inv MeasureTheory.quasiMeasurePreservingInv
-#align measure_theory.quasi_measure_preserving_neg MeasureTheory.quasi_measure_preserving_neg
+#align measure_theory.quasi_measure_preserving_inv MeasureTheory.quasiMeasurePreserving_inv
+#align measure_theory.quasi_measure_preserving_neg MeasureTheory.quasiMeasurePreserving_neg
@[to_additive]
theorem measure_inv_null : μ s⁻¹ = 0 ↔ μ s = 0 :=
@@ -194,27 +194,27 @@ theorem measure_inv_null : μ s⁻¹ = 0 ↔ μ s = 0 :=
#align measure_theory.measure_neg_null MeasureTheory.measure_neg_null
@[to_additive]
-theorem invAbsolutelyContinuous : μ.inv ≪ μ :=
- (quasiMeasurePreservingInv μ).AbsolutelyContinuous
-#align measure_theory.inv_absolutely_continuous MeasureTheory.invAbsolutelyContinuous
-#align measure_theory.neg_absolutely_continuous MeasureTheory.neg_absolutely_continuous
+theorem inv_absolutelyContinuous : μ.inv ≪ μ :=
+ (quasiMeasurePreserving_inv μ).AbsolutelyContinuous
+#align measure_theory.inv_absolutely_continuous MeasureTheory.inv_absolutelyContinuous
+#align measure_theory.neg_absolutely_continuous MeasureTheory.neg_absolutelyContinuous
@[to_additive]
-theorem absolutelyContinuousInv : μ ≪ μ.inv :=
+theorem absolutelyContinuous_inv : μ ≪ μ.inv :=
by
refine' absolutely_continuous.mk fun s hs => _
simp_rw [inv_apply μ s, measure_inv_null, imp_self]
-#align measure_theory.absolutely_continuous_inv MeasureTheory.absolutelyContinuousInv
-#align measure_theory.absolutely_continuous_neg MeasureTheory.absolutely_continuous_neg
+#align measure_theory.absolutely_continuous_inv MeasureTheory.absolutelyContinuous_inv
+#align measure_theory.absolutely_continuous_neg MeasureTheory.absolutelyContinuous_neg
@[to_additive]
theorem lintegral_lintegral_mul_inv [IsMulLeftInvariant ν] (f : G → G → ℝ≥0∞)
- (hf : AeMeasurable (uncurry f) (μ.Prod ν)) :
+ (hf : AEMeasurable (uncurry f) (μ.Prod ν)) :
(∫⁻ x, ∫⁻ y, f (y * x) x⁻¹ ∂ν ∂μ) = ∫⁻ x, ∫⁻ y, f x y ∂ν ∂μ :=
by
have h : Measurable fun z : G × G => (z.2 * z.1, z.1⁻¹) :=
(measurable_snd.mul measurable_fst).prod_mk measurable_fst.inv
- have h2f : AeMeasurable (uncurry fun x y => f (y * x) x⁻¹) (μ.prod ν) :=
+ have h2f : AEMeasurable (uncurry fun x y => f (y * x) x⁻¹) (μ.prod ν) :=
hf.comp_quasi_measure_preserving (measure_preserving_mul_prod_inv μ ν).QuasiMeasurePreserving
simp_rw [lintegral_lintegral h2f, lintegral_lintegral hf]
conv_rhs => rw [← (measure_preserving_mul_prod_inv μ ν).map_eq]
@@ -242,22 +242,22 @@ theorem measure_mul_right_ne_zero (h2s : μ s ≠ 0) (y : G) : μ ((fun x => x *
#align measure_theory.measure_add_right_ne_zero MeasureTheory.measure_add_right_ne_zero
@[to_additive]
-theorem absolutelyContinuousMapMulRight (g : G) : μ ≪ map (· * g) μ :=
+theorem absolutelyContinuous_map_mul_right (g : G) : μ ≪ map (· * g) μ :=
by
refine' absolutely_continuous.mk fun s hs => _
rw [map_apply (measurable_mul_const g) hs, measure_mul_right_null]; exact id
-#align measure_theory.absolutely_continuous_map_mul_right MeasureTheory.absolutelyContinuousMapMulRight
-#align measure_theory.absolutely_continuous_map_add_right MeasureTheory.absolutely_continuous_map_add_right
+#align measure_theory.absolutely_continuous_map_mul_right MeasureTheory.absolutelyContinuous_map_mul_right
+#align measure_theory.absolutely_continuous_map_add_right MeasureTheory.absolutelyContinuous_map_add_right
@[to_additive]
-theorem absolutelyContinuousMapDivLeft (g : G) : μ ≪ map (fun h => g / h) μ :=
+theorem absolutelyContinuous_map_div_left (g : G) : μ ≪ map (fun h => g / h) μ :=
by
simp_rw [div_eq_mul_inv]
rw [← map_map (measurable_const_mul g) measurable_inv]
conv_lhs => rw [← map_mul_left_eq_self μ g]
exact (absolutely_continuous_inv μ).map (measurable_const_mul g)
-#align measure_theory.absolutely_continuous_map_div_left MeasureTheory.absolutelyContinuousMapDivLeft
-#align measure_theory.absolutely_continuous_map_sub_left MeasureTheory.absolutely_continuous_map_sub_left
+#align measure_theory.absolutely_continuous_map_div_left MeasureTheory.absolutelyContinuous_map_div_left
+#align measure_theory.absolutely_continuous_map_sub_left MeasureTheory.absolutelyContinuous_map_sub_left
/-- This is the computation performed in the proof of [Halmos, §60 Th. A]. -/
@[to_additive "This is the computation performed in the proof of [Halmos, §60 Th. A]."]
@@ -265,13 +265,13 @@ theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s)
(hf : Measurable f) : (μ s * ∫⁻ y, f y ∂ν) = ∫⁻ x, ν ((fun z => z * x) ⁻¹' s) * f x⁻¹ ∂μ :=
by
rw [← set_lintegral_one, ← lintegral_indicator _ sm, ←
- lintegral_lintegral_mul (measurable_const.indicator sm).AeMeasurable hf.ae_measurable, ←
+ lintegral_lintegral_mul (measurable_const.indicator sm).AEMeasurable hf.ae_measurable, ←
lintegral_lintegral_mul_inv μ ν]
swap
·
exact
(((measurable_const.indicator sm).comp measurable_fst).mul
- (hf.comp measurable_snd)).AeMeasurable
+ (hf.comp measurable_snd)).AEMeasurable
have ms :
∀ x : G, Measurable fun y => ((fun z => z * x) ⁻¹' s).indicator (fun z => (1 : ℝ≥0∞)) y :=
fun x => measurable_const.indicator (measurable_mul_const _ sm)
@@ -293,15 +293,15 @@ theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s)
/-- Any two nonzero left-invariant measures are absolutely continuous w.r.t. each other. -/
@[to_additive
" Any two nonzero left-invariant measures are absolutely continuous w.r.t. each\nother. "]
-theorem absolutelyContinuousOfIsMulLeftInvariant [IsMulLeftInvariant ν] (hν : ν ≠ 0) : μ ≪ ν :=
+theorem absolutelyContinuous_of_isMulLeftInvariant [IsMulLeftInvariant ν] (hν : ν ≠ 0) : μ ≪ ν :=
by
refine' absolutely_continuous.mk fun s sm hνs => _
have h1 := measure_mul_lintegral_eq μ ν sm 1 measurable_one
simp_rw [Pi.one_apply, lintegral_one, mul_one, (measure_mul_right_null ν _).mpr hνs,
lintegral_zero, mul_eq_zero, measure_univ_eq_zero.not.mpr hν, or_false_iff] at h1
exact h1
-#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuousOfIsMulLeftInvariant
-#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutely_continuous_of_is_add_left_invariant
+#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_isMulLeftInvariant
+#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_is_add_left_invariant
@[to_additive]
theorem ae_measure_preimage_mul_right_lt_top [IsMulLeftInvariant ν] (sm : MeasurableSet s)
@@ -390,70 +390,70 @@ end LeftInvariant
section RightInvariant
@[to_additive measure_preserving_prod_add_right]
-theorem measurePreservingProdMulRight [IsMulRightInvariant ν] :
+theorem measurePreserving_prod_mul_right [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.2 * z.1)) (μ.Prod ν) (μ.Prod ν) :=
- (MeasurePreserving.id μ).skewProduct (measurable_snd.mul measurable_fst) <|
+ (MeasurePreserving.id μ).skew_product (measurable_snd.mul measurable_fst) <|
Filter.eventually_of_forall <| map_mul_right_eq_self ν
-#align measure_theory.measure_preserving_prod_mul_right MeasureTheory.measurePreservingProdMulRight
-#align measure_theory.measure_preserving_prod_add_right MeasureTheory.measure_preserving_prod_add_right
+#align measure_theory.measure_preserving_prod_mul_right MeasureTheory.measurePreserving_prod_mul_right
+#align measure_theory.measure_preserving_prod_add_right MeasureTheory.measurePreserving_prod_add_right
/-- The map `(x, y) ↦ (y, xy)` sends the measure `μ × ν` to `ν × μ`. -/
@[to_additive measure_preserving_prod_add_swap_right
" The map `(x, y) ↦ (y, x + y)` sends the measure `μ × ν` to `ν × μ`. "]
-theorem measurePreservingProdMulSwapRight [IsMulRightInvariant μ] :
+theorem measurePreserving_prod_mul_swap_right [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.1 * z.2)) (μ.Prod ν) (ν.Prod μ) :=
- (measurePreservingProdMulRight ν μ).comp measurePreservingSwap
-#align measure_theory.measure_preserving_prod_mul_swap_right MeasureTheory.measurePreservingProdMulSwapRight
-#align measure_theory.measure_preserving_prod_add_swap_right MeasureTheory.measure_preserving_prod_add_swap_right
+ (measurePreserving_prod_mul_right ν μ).comp measurePreserving_swap
+#align measure_theory.measure_preserving_prod_mul_swap_right MeasureTheory.measurePreserving_prod_mul_swap_right
+#align measure_theory.measure_preserving_prod_add_swap_right MeasureTheory.measurePreserving_prod_add_swap_right
/-- The map `(x, y) ↦ (xy, y)` preserves the measure `μ × ν`. -/
@[to_additive measure_preserving_add_prod
" The map `(x, y) ↦ (x + y, y)` preserves the measure `μ × ν`. "]
-theorem measurePreservingMulProd [IsMulRightInvariant μ] :
+theorem measurePreserving_mul_prod [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.1 * z.2, z.2)) (μ.Prod ν) (μ.Prod ν) :=
- measurePreservingSwap.comp <| by apply measure_preserving_prod_mul_swap_right μ ν
-#align measure_theory.measure_preserving_mul_prod MeasureTheory.measurePreservingMulProd
-#align measure_theory.measure_preserving_add_prod MeasureTheory.measure_preserving_add_prod
+ measurePreserving_swap.comp <| by apply measure_preserving_prod_mul_swap_right μ ν
+#align measure_theory.measure_preserving_mul_prod MeasureTheory.measurePreserving_mul_prod
+#align measure_theory.measure_preserving_add_prod MeasureTheory.measurePreserving_add_prod
variable [HasMeasurableInv G]
/-- The map `(x, y) ↦ (x, y / x)` is measure-preserving. -/
@[to_additive measure_preserving_prod_sub "The map `(x, y) ↦ (x, y - x)` is measure-preserving."]
-theorem measurePreservingProdDiv [IsMulRightInvariant ν] :
+theorem measurePreserving_prod_div [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.2 / z.1)) (μ.Prod ν) (μ.Prod ν) :=
- (measurePreservingProdMulRight μ ν).symm (MeasurableEquiv.shearDivRight G).symm
-#align measure_theory.measure_preserving_prod_div MeasureTheory.measurePreservingProdDiv
-#align measure_theory.measure_preserving_prod_sub MeasureTheory.measure_preserving_prod_sub
+ (measurePreserving_prod_mul_right μ ν).symm (MeasurableEquiv.shearDivRight G).symm
+#align measure_theory.measure_preserving_prod_div MeasureTheory.measurePreserving_prod_div
+#align measure_theory.measure_preserving_prod_sub MeasureTheory.measurePreserving_prod_sub
/-- The map `(x, y) ↦ (y, x / y)` sends `μ × ν` to `ν × μ`. -/
@[to_additive measure_preserving_prod_sub_swap
"The map `(x, y) ↦ (y, x - y)` sends `μ × ν` to `ν × μ`."]
-theorem measurePreservingProdDivSwap [IsMulRightInvariant μ] :
+theorem measurePreserving_prod_div_swap [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.1 / z.2)) (μ.Prod ν) (ν.Prod μ) :=
- (measurePreservingProdDiv ν μ).comp measurePreservingSwap
-#align measure_theory.measure_preserving_prod_div_swap MeasureTheory.measurePreservingProdDivSwap
-#align measure_theory.measure_preserving_prod_sub_swap MeasureTheory.measure_preserving_prod_sub_swap
+ (measurePreserving_prod_div ν μ).comp measurePreserving_swap
+#align measure_theory.measure_preserving_prod_div_swap MeasureTheory.measurePreserving_prod_div_swap
+#align measure_theory.measure_preserving_prod_sub_swap MeasureTheory.measurePreserving_prod_sub_swap
/-- The map `(x, y) ↦ (x / y, y)` preserves the measure `μ × ν`. -/
@[to_additive measure_preserving_sub_prod
" The map `(x, y) ↦ (x - y, y)` preserves the measure `μ × ν`. "]
-theorem measurePreservingDivProd [IsMulRightInvariant μ] :
+theorem measurePreserving_div_prod [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.1 / z.2, z.2)) (μ.Prod ν) (μ.Prod ν) :=
- measurePreservingSwap.comp <| by apply measure_preserving_prod_div_swap μ ν
-#align measure_theory.measure_preserving_div_prod MeasureTheory.measurePreservingDivProd
-#align measure_theory.measure_preserving_sub_prod MeasureTheory.measure_preserving_sub_prod
+ measurePreserving_swap.comp <| by apply measure_preserving_prod_div_swap μ ν
+#align measure_theory.measure_preserving_div_prod MeasureTheory.measurePreserving_div_prod
+#align measure_theory.measure_preserving_sub_prod MeasureTheory.measurePreserving_sub_prod
/-- The map `(x, y) ↦ (xy, x⁻¹)` is measure-preserving. -/
@[to_additive measure_preserving_add_prod_neg_right
"The map `(x, y) ↦ (x + y, - x)` is measure-preserving."]
-theorem measurePreservingMulProdInvRight [IsMulRightInvariant μ] [IsMulRightInvariant ν] :
+theorem measurePreserving_mul_prod_inv_right [IsMulRightInvariant μ] [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1 * z.2, z.1⁻¹)) (μ.Prod ν) (μ.Prod ν) :=
by
convert(measure_preserving_prod_div_swap ν μ).comp (measure_preserving_prod_mul_swap_right μ ν)
ext1 ⟨x, y⟩
simp_rw [Function.comp_apply, div_mul_eq_div_div_swap, div_self', one_div]
-#align measure_theory.measure_preserving_mul_prod_inv_right MeasureTheory.measurePreservingMulProdInvRight
-#align measure_theory.measure_preserving_add_prod_neg_right MeasureTheory.measure_preserving_add_prod_neg_right
+#align measure_theory.measure_preserving_mul_prod_inv_right MeasureTheory.measurePreserving_mul_prod_inv_right
+#align measure_theory.measure_preserving_add_prod_neg_right MeasureTheory.measurePreserving_add_prod_neg_right
end RightInvariant
@@ -462,71 +462,71 @@ section QuasiMeasurePreserving
variable [HasMeasurableInv G]
@[to_additive]
-theorem quasiMeasurePreservingInvOfRightInvariant [IsMulRightInvariant μ] :
+theorem quasiMeasurePreserving_inv_of_right_invariant [IsMulRightInvariant μ] :
QuasiMeasurePreserving (Inv.inv : G → G) μ μ :=
by
rw [← μ.inv_inv]
exact
(quasi_measure_preserving_inv μ.inv).mono (inv_absolutely_continuous μ.inv)
(absolutely_continuous_inv μ.inv)
-#align measure_theory.quasi_measure_preserving_inv_of_right_invariant MeasureTheory.quasiMeasurePreservingInvOfRightInvariant
-#align measure_theory.quasi_measure_preserving_neg_of_right_invariant MeasureTheory.quasi_measure_preserving_neg_of_right_invariant
+#align measure_theory.quasi_measure_preserving_inv_of_right_invariant MeasureTheory.quasiMeasurePreserving_inv_of_right_invariant
+#align measure_theory.quasi_measure_preserving_neg_of_right_invariant MeasureTheory.quasiMeasurePreserving_neg_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreservingDivLeft [IsMulLeftInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_div_left [IsMulLeftInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ :=
by
simp_rw [div_eq_mul_inv]
exact
(measure_preserving_mul_left μ g).QuasiMeasurePreserving.comp (quasi_measure_preserving_inv μ)
-#align measure_theory.quasi_measure_preserving_div_left MeasureTheory.quasiMeasurePreservingDivLeft
-#align measure_theory.quasi_measure_preserving_sub_left MeasureTheory.quasi_measure_preserving_sub_left
+#align measure_theory.quasi_measure_preserving_div_left MeasureTheory.quasiMeasurePreserving_div_left
+#align measure_theory.quasi_measure_preserving_sub_left MeasureTheory.quasiMeasurePreserving_sub_left
@[to_additive]
-theorem quasiMeasurePreservingDivLeftOfRightInvariant [IsMulRightInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_div_left_of_right_invariant [IsMulRightInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ :=
by
rw [← μ.inv_inv]
exact
(quasi_measure_preserving_div_left μ.inv g).mono (inv_absolutely_continuous μ.inv)
(absolutely_continuous_inv μ.inv)
-#align measure_theory.quasi_measure_preserving_div_left_of_right_invariant MeasureTheory.quasiMeasurePreservingDivLeftOfRightInvariant
-#align measure_theory.quasi_measure_preserving_sub_left_of_right_invariant MeasureTheory.quasi_measure_preserving_sub_left_of_right_invariant
+#align measure_theory.quasi_measure_preserving_div_left_of_right_invariant MeasureTheory.quasiMeasurePreserving_div_left_of_right_invariant
+#align measure_theory.quasi_measure_preserving_sub_left_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_left_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreservingDivOfRightInvariant [IsMulRightInvariant μ] :
+theorem quasiMeasurePreserving_div_of_right_invariant [IsMulRightInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.Prod ν) μ :=
by
refine' quasi_measure_preserving.prod_of_left measurable_div (eventually_of_forall fun y => _)
exact (measure_preserving_div_right μ y).QuasiMeasurePreserving
-#align measure_theory.quasi_measure_preserving_div_of_right_invariant MeasureTheory.quasiMeasurePreservingDivOfRightInvariant
-#align measure_theory.quasi_measure_preserving_sub_of_right_invariant MeasureTheory.quasi_measure_preserving_sub_of_right_invariant
+#align measure_theory.quasi_measure_preserving_div_of_right_invariant MeasureTheory.quasiMeasurePreserving_div_of_right_invariant
+#align measure_theory.quasi_measure_preserving_sub_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreservingDiv [IsMulLeftInvariant μ] :
+theorem quasiMeasurePreserving_div [IsMulLeftInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.Prod ν) μ :=
- (quasiMeasurePreservingDivOfRightInvariant μ.inv ν).mono
- ((absolutelyContinuousInv μ).Prod AbsolutelyContinuous.rfl) (invAbsolutelyContinuous μ)
-#align measure_theory.quasi_measure_preserving_div MeasureTheory.quasiMeasurePreservingDiv
-#align measure_theory.quasi_measure_preserving_sub MeasureTheory.quasi_measure_preserving_sub
+ (quasiMeasurePreserving_div_of_right_invariant μ.inv ν).mono
+ ((absolutelyContinuous_inv μ).Prod AbsolutelyContinuous.rfl) (inv_absolutelyContinuous μ)
+#align measure_theory.quasi_measure_preserving_div MeasureTheory.quasiMeasurePreserving_div
+#align measure_theory.quasi_measure_preserving_sub MeasureTheory.quasiMeasurePreserving_sub
/-- A *left*-invariant measure is quasi-preserved by *right*-multiplication.
This should not be confused with `(measure_preserving_mul_right μ g).quasi_measure_preserving`. -/
@[to_additive
"A *left*-invariant measure is quasi-preserved by *right*-addition.\nThis should not be confused with `(measure_preserving_add_right μ g).quasi_measure_preserving`. "]
-theorem quasiMeasurePreservingMulRight [IsMulLeftInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_mul_right [IsMulLeftInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => h * g) μ μ :=
by
refine' ⟨measurable_mul_const g, absolutely_continuous.mk fun s hs => _⟩
rw [map_apply (measurable_mul_const g) hs, measure_mul_right_null]; exact id
-#align measure_theory.quasi_measure_preserving_mul_right MeasureTheory.quasiMeasurePreservingMulRight
-#align measure_theory.quasi_measure_preserving_add_right MeasureTheory.quasi_measure_preserving_add_right
+#align measure_theory.quasi_measure_preserving_mul_right MeasureTheory.quasiMeasurePreserving_mul_right
+#align measure_theory.quasi_measure_preserving_add_right MeasureTheory.quasiMeasurePreserving_add_right
/-- A *right*-invariant measure is quasi-preserved by *left*-multiplication.
This should not be confused with `(measure_preserving_mul_left μ g).quasi_measure_preserving`. -/
@[to_additive
"A *right*-invariant measure is quasi-preserved by *left*-addition.\nThis should not be confused with `(measure_preserving_add_left μ g).quasi_measure_preserving`. "]
-theorem quasiMeasurePreservingMulLeft [IsMulRightInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_mul_left [IsMulRightInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g * h) μ μ :=
by
have :=
@@ -538,8 +538,8 @@ theorem quasiMeasurePreservingMulLeft [IsMulRightInvariant μ] (g : G) :
(this.comp (quasi_measure_preserving_inv_of_right_invariant μ))
simp_rw [Function.comp, mul_inv_rev, inv_inv] at this
exact this
-#align measure_theory.quasi_measure_preserving_mul_left MeasureTheory.quasiMeasurePreservingMulLeft
-#align measure_theory.quasi_measure_preserving_add_left MeasureTheory.quasi_measure_preserving_add_left
+#align measure_theory.quasi_measure_preserving_mul_left MeasureTheory.quasiMeasurePreserving_mul_left
+#align measure_theory.quasi_measure_preserving_add_left MeasureTheory.quasiMeasurePreserving_add_left
end QuasiMeasurePreserving
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -160,7 +160,7 @@ where `S` is the map `(x, y) ↦ (x, xy)` and `R` is `prod.swap`. -/
theorem measurePreservingMulProdInv [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.2 * z.1, z.1⁻¹)) (μ.Prod ν) (μ.Prod ν) :=
by
- convert (measure_preserving_prod_inv_mul_swap ν μ).comp (measure_preserving_prod_mul_swap μ ν)
+ convert(measure_preserving_prod_inv_mul_swap ν μ).comp (measure_preserving_prod_mul_swap μ ν)
ext1 ⟨x, y⟩
simp_rw [Function.comp_apply, mul_inv_rev, inv_mul_cancel_right]
#align measure_theory.measure_preserving_mul_prod_inv MeasureTheory.measurePreservingMulProdInv
@@ -449,7 +449,7 @@ theorem measurePreservingDivProd [IsMulRightInvariant μ] :
theorem measurePreservingMulProdInvRight [IsMulRightInvariant μ] [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1 * z.2, z.1⁻¹)) (μ.Prod ν) (μ.Prod ν) :=
by
- convert (measure_preserving_prod_div_swap ν μ).comp (measure_preserving_prod_mul_swap_right μ ν)
+ convert(measure_preserving_prod_div_swap ν μ).comp (measure_preserving_prod_mul_swap_right μ ν)
ext1 ⟨x, y⟩
simp_rw [Function.comp_apply, div_mul_eq_div_div_swap, div_self', one_div]
#align measure_theory.measure_preserving_mul_prod_inv_right MeasureTheory.measurePreservingMulProdInvRight
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -46,7 +46,7 @@ open Function MeasureTheory
open Filter hiding map
-open Classical Ennreal Pointwise MeasureTheory
+open Classical ENNReal Pointwise MeasureTheory
variable (G : Type _) [MeasurableSpace G]
@@ -317,7 +317,7 @@ theorem ae_measure_preimage_mul_right_lt_top [IsMulLeftInvariant ν] (sm : Measu
indicator_mul_right _ fun x => ν ((fun y => y * x) ⁻¹' s), Function.comp, Pi.one_apply,
mul_one] at h1
rw [← lintegral_indicator _ hA, ← h1]
- exact Ennreal.mul_ne_top hμs h3A.ne
+ exact ENNReal.mul_ne_top hμs h3A.ne
#align measure_theory.ae_measure_preimage_mul_right_lt_top MeasureTheory.ae_measure_preimage_mul_right_lt_top
#align measure_theory.ae_measure_preimage_add_right_lt_top MeasureTheory.ae_measure_preimage_add_right_lt_top
@@ -355,7 +355,7 @@ theorem measure_lintegral_div_measure [IsMulLeftInvariant ν] (sm : MeasurableSe
simp_rw [measure_mul_lintegral_eq μ ν sm g hg, g, inv_inv]
refine' lintegral_congr_ae _
refine' (ae_measure_preimage_mul_right_lt_top_of_ne_zero μ ν sm h2s h3s).mono fun x hx => _
- simp_rw [Ennreal.mul_div_cancel' (measure_mul_right_ne_zero ν h2s _) hx.ne]
+ simp_rw [ENNReal.mul_div_cancel' (measure_mul_right_ne_zero ν h2s _) hx.ne]
#align measure_theory.measure_lintegral_div_measure MeasureTheory.measure_lintegral_div_measure
#align measure_theory.measure_lintegral_sub_measure MeasureTheory.measure_lintegral_sub_measure
@@ -381,7 +381,7 @@ theorem measure_eq_div_smul [IsMulLeftInvariant ν] (hs : MeasurableSet s) (h2s
(h3s : ν s ≠ ∞) : μ = (μ s / ν s) • ν := by
ext1 t ht
rw [smul_apply, smul_eq_mul, mul_comm, ← mul_div_assoc, mul_comm,
- measure_mul_measure_eq μ ν hs ht h2s h3s, mul_div_assoc, Ennreal.mul_div_cancel' h2s h3s]
+ measure_mul_measure_eq μ ν hs ht h2s h3s, mul_div_assoc, ENNReal.mul_div_cancel' h2s h3s]
#align measure_theory.measure_eq_div_smul MeasureTheory.measure_eq_div_smul
#align measure_theory.measure_eq_sub_vadd MeasureTheory.measure_eq_sub_vadd
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -51,9 +51,7 @@ open Filter hiding map
open scoped Classical ENNReal Pointwise MeasureTheory
variable (G : Type*) [MeasurableSpace G]
-
variable [Group G] [MeasurableMul₂ G]
-
variable (μ ν : Measure G) [SigmaFinite ν] [SigmaFinite μ] {s : Set G}
/-- The map `(x, y) ↦ (x, xy)` as a `MeasurableEquiv`. -/
This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0
branch as we update to intermediate nightlies.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>
@@ -330,7 +330,7 @@ theorem measure_lintegral_div_measure [IsMulLeftInvariant ν] (sm : MeasurableSe
set g := fun y => f y⁻¹ / ν ((fun x => x * y⁻¹) ⁻¹' s)
have hg : Measurable g :=
(hf.comp measurable_inv).div ((measurable_measure_mul_right ν sm).comp measurable_inv)
- simp_rw [measure_mul_lintegral_eq μ ν sm g hg, inv_inv]
+ simp_rw [measure_mul_lintegral_eq μ ν sm g hg, g, inv_inv]
refine' lintegral_congr_ae _
refine' (ae_measure_preimage_mul_right_lt_top_of_ne_zero μ ν sm h2s h3s).mono fun x hx => _
simp_rw [ENNReal.mul_div_cancel' (measure_mul_right_ne_zero ν h2s _) hx.ne]
We prove that two regular Haar measures in a locally compact group coincide up to scalar multiplication, and the same thing for inner regular Haar measures. This is implemented in a new file MeasureTheory.Measure.Haar.Unique
. A few results that used to be in the MeasureTheory.Measure.Haar.Basic
are moved to this file (and extended) so several imports have to be changed.
@@ -32,6 +32,11 @@ scalar multiplication.
The proof in [Halmos] seems to contain an omission in §60 Th. A, see
`MeasureTheory.measure_lintegral_div_measure`.
+Note that this theory only applies in measurable groups, i.e., when multiplication and inversion
+are measurable. This is not the case in general in locally compact groups, or even in compact
+groups, when the topology is not second-countable. For arguments along the same line, but using
+continuous functions instead of measurable sets and working in the general locally compact
+setting, see the file `MeasureTheory.Measure.Haar.Unique.lean`.
-/
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -45,7 +45,7 @@ open Filter hiding map
open scoped Classical ENNReal Pointwise MeasureTheory
-variable (G : Type _) [MeasurableSpace G]
+variable (G : Type*) [MeasurableSpace G]
variable [Group G] [MeasurableMul₂ G]
@@ -2,15 +2,12 @@
Copyright (c) 2021 Floris van Doorn. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn
-
-! This file was ported from Lean 3 source module measure_theory.group.prod
-! leanprover-community/mathlib commit fd5edc43dc4f10b85abfe544b88f82cf13c5f844
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.MeasureTheory.Constructions.Prod.Basic
import Mathlib.MeasureTheory.Group.Measure
+#align_import measure_theory.group.prod from "leanprover-community/mathlib"@"fd5edc43dc4f10b85abfe544b88f82cf13c5f844"
+
/-!
# Measure theory in the product of groups
In this file we show properties about measure theory in products of measurable groups
@@ -27,7 +27,7 @@ preserves the measure `μ × ν`, which means that
```
∫ x, ∫ y, h x y ∂ν ∂μ = ∫ x, ∫ y, h (y * x) x⁻¹ ∂ν ∂μ
```
-If we apply this to `h x y := e x * f y⁻¹ / ν ((λ h, h * y⁻¹) ⁻¹' s)`, we can rewrite the RHS to
+If we apply this to `h x y := e x * f y⁻¹ / ν ((fun h ↦ h * y⁻¹) ⁻¹' s)`, we can rewrite the RHS to
`μ(t)`, and the LHS to `c * μ(s)`, where `c = c(ν)` does not depend on `μ`.
Applying this to `μ` and to `ν` gives `μ (t) / μ (s) = ν (t) / ν (s)`, which is the uniqueness up to
scalar multiplication.
Is
of Foo
which is ported from is_foo
(#4639)
I have misported is_foo
to Foo
because I misunderstood the rule for IsLawfulFoo
.
This PR recover Is
of Foo
which is ported from is_foo
.
This PR also renames some misported theorems.
@@ -86,7 +86,7 @@ This condition is part of the definition of a measurable group in [Halmos, §59]
There, the map in this lemma is called `S`. -/
@[to_additive measurePreserving_prod_add
" The shear mapping `(x, y) ↦ (x, x + y)` preserves the measure `μ × ν`. "]
-theorem measurePreserving_prod_mul [MulLeftInvariant ν] :
+theorem measurePreserving_prod_mul [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.1 * z.2)) (μ.prod ν) (μ.prod ν) :=
(MeasurePreserving.id μ).skew_product measurable_mul <|
Filter.eventually_of_forall <| map_mul_left_eq_self ν
@@ -98,7 +98,7 @@ This is the map `SR` in [Halmos, §59].
`S` is the map `(x, y) ↦ (x, xy)` and `R` is `Prod.swap`. -/
@[to_additive measurePreserving_prod_add_swap
" The map `(x, y) ↦ (y, y + x)` sends the measure `μ × ν` to `ν × μ`. "]
-theorem measurePreserving_prod_mul_swap [MulLeftInvariant μ] :
+theorem measurePreserving_prod_mul_swap [IsMulLeftInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.2 * z.1)) (μ.prod ν) (ν.prod μ) :=
(measurePreserving_prod_mul ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_mul_swap MeasureTheory.measurePreserving_prod_mul_swap
@@ -124,13 +124,13 @@ This is the function `S⁻¹` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)`. -/
@[to_additive measurePreserving_prod_neg_add
"The map `(x, y) ↦ (x, - x + y)` is measure-preserving."]
-theorem measurePreserving_prod_inv_mul [MulLeftInvariant ν] :
+theorem measurePreserving_prod_inv_mul [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.1⁻¹ * z.2)) (μ.prod ν) (μ.prod ν) :=
(measurePreserving_prod_mul μ ν).symm <| MeasurableEquiv.shearMulRight G
#align measure_theory.measure_preserving_prod_inv_mul MeasureTheory.measurePreserving_prod_inv_mul
#align measure_theory.measure_preserving_prod_neg_add MeasureTheory.measurePreserving_prod_neg_add
-variable [MulLeftInvariant μ]
+variable [IsMulLeftInvariant μ]
/-- The map `(x, y) ↦ (y, y⁻¹x)` sends `μ × ν` to `ν × μ`.
This is the function `S⁻¹R` in [Halmos, §59],
@@ -148,7 +148,7 @@ This is the function `S⁻¹RSR` in [Halmos, §59],
where `S` is the map `(x, y) ↦ (x, xy)` and `R` is `Prod.swap`. -/
@[to_additive measurePreserving_add_prod_neg
"The map `(x, y) ↦ (y + x, - x)` is measure-preserving."]
-theorem measurePreserving_mul_prod_inv [MulLeftInvariant ν] :
+theorem measurePreserving_mul_prod_inv [IsMulLeftInvariant ν] :
MeasurePreserving (fun z : G × G => (z.2 * z.1, z.1⁻¹)) (μ.prod ν) (μ.prod ν) := by
convert (measurePreserving_prod_inv_mul_swap ν μ).comp (measurePreserving_prod_mul_swap μ ν)
using 1
@@ -195,7 +195,7 @@ theorem absolutelyContinuous_inv : μ ≪ μ.inv := by
#align measure_theory.absolutely_continuous_neg MeasureTheory.absolutelyContinuous_neg
@[to_additive]
-theorem lintegral_lintegral_mul_inv [MulLeftInvariant ν] (f : G → G → ℝ≥0∞)
+theorem lintegral_lintegral_mul_inv [IsMulLeftInvariant ν] (f : G → G → ℝ≥0∞)
(hf : AEMeasurable (uncurry f) (μ.prod ν)) :
(∫⁻ x, ∫⁻ y, f (y * x) x⁻¹ ∂ν ∂μ) = ∫⁻ x, ∫⁻ y, f x y ∂ν ∂μ := by
have h : Measurable fun z : G × G => (z.2 * z.1, z.1⁻¹) :=
@@ -244,7 +244,7 @@ theorem absolutelyContinuous_map_div_left (g : G) : μ ≪ map (fun h => g / h)
/-- This is the computation performed in the proof of [Halmos, §60 Th. A]. -/
@[to_additive "This is the computation performed in the proof of [Halmos, §60 Th. A]."]
-theorem measure_mul_lintegral_eq [MulLeftInvariant ν] (sm : MeasurableSet s) (f : G → ℝ≥0∞)
+theorem measure_mul_lintegral_eq [IsMulLeftInvariant ν] (sm : MeasurableSet s) (f : G → ℝ≥0∞)
(hf : Measurable f) : (μ s * ∫⁻ y, f y ∂ν) = ∫⁻ x, ν ((fun z => z * x) ⁻¹' s) * f x⁻¹ ∂μ := by
rw [← set_lintegral_one, ← lintegral_indicator _ sm,
← lintegral_lintegral_mul (measurable_const.indicator sm).aemeasurable hf.aemeasurable,
@@ -266,17 +266,17 @@ theorem measure_mul_lintegral_eq [MulLeftInvariant ν] (sm : MeasurableSet s) (f
/-- Any two nonzero left-invariant measures are absolutely continuous w.r.t. each other. -/
@[to_additive
" Any two nonzero left-invariant measures are absolutely continuous w.r.t. each other. "]
-theorem absolutelyContinuous_of_mulLeftInvariant [MulLeftInvariant ν] (hν : ν ≠ 0) : μ ≪ ν := by
+theorem absolutelyContinuous_of_isMulLeftInvariant [IsMulLeftInvariant ν] (hν : ν ≠ 0) : μ ≪ ν := by
refine' AbsolutelyContinuous.mk fun s sm hνs => _
have h1 := measure_mul_lintegral_eq μ ν sm 1 measurable_one
simp_rw [Pi.one_apply, lintegral_one, mul_one, (measure_mul_right_null ν _).mpr hνs,
lintegral_zero, mul_eq_zero (M₀ := ℝ≥0∞), measure_univ_eq_zero.not.mpr hν, or_false_iff] at h1
exact h1
-#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_mulLeftInvariant
-#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_addLeftInvariant
+#align measure_theory.absolutely_continuous_of_is_mul_left_invariant MeasureTheory.absolutelyContinuous_of_isMulLeftInvariant
+#align measure_theory.absolutely_continuous_of_is_add_left_invariant MeasureTheory.absolutelyContinuous_of_isAddLeftInvariant
@[to_additive]
-theorem ae_measure_preimage_mul_right_lt_top [MulLeftInvariant ν] (sm : MeasurableSet s)
+theorem ae_measure_preimage_mul_right_lt_top [IsMulLeftInvariant ν] (sm : MeasurableSet s)
(hμs : μ s ≠ ∞) : ∀ᵐ x ∂μ, ν ((fun y => y * x) ⁻¹' s) < ∞ := by
refine' ae_of_forall_measure_lt_top_ae_restrict' ν.inv _ _
intro A hA _ h3A
@@ -293,11 +293,11 @@ theorem ae_measure_preimage_mul_right_lt_top [MulLeftInvariant ν] (sm : Measura
#align measure_theory.ae_measure_preimage_add_right_lt_top MeasureTheory.ae_measure_preimage_add_right_lt_top
@[to_additive]
-theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [MulLeftInvariant ν]
+theorem ae_measure_preimage_mul_right_lt_top_of_ne_zero [IsMulLeftInvariant ν]
(sm : MeasurableSet s) (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) :
∀ᵐ x ∂μ, ν ((fun y => y * x) ⁻¹' s) < ∞ := by
refine' (ae_measure_preimage_mul_right_lt_top ν ν sm h3s).filter_mono _
- refine' (absolutelyContinuous_of_mulLeftInvariant μ ν _).ae_le
+ refine' (absolutelyContinuous_of_isMulLeftInvariant μ ν _).ae_le
refine' mt _ h2s
intro hν
rw [hν, Measure.coe_zero, Pi.zero_apply]
@@ -322,7 +322,7 @@ Note: There is a gap in the last step of the proof in [Halmos]. In the last line
`g(-x) + ν(s - x) = f(x)` holds if we can prove that `0 < ν(s - x) < ∞`. The first inequality
follows from §59, Th. D, but the second inequality is not justified. We prove this inequality for
almost all `x` in `MeasureTheory.ae_measure_preimage_add_right_lt_top_of_ne_zero`."]
-theorem measure_lintegral_div_measure [MulLeftInvariant ν] (sm : MeasurableSet s) (h2s : ν s ≠ 0)
+theorem measure_lintegral_div_measure [IsMulLeftInvariant ν] (sm : MeasurableSet s) (h2s : ν s ≠ 0)
(h3s : ν s ≠ ∞) (f : G → ℝ≥0∞) (hf : Measurable f) :
(μ s * ∫⁻ y, f y⁻¹ / ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν) = ∫⁻ x, f x ∂μ := by
set g := fun y => f y⁻¹ / ν ((fun x => x * y⁻¹) ⁻¹' s)
@@ -336,7 +336,7 @@ theorem measure_lintegral_div_measure [MulLeftInvariant ν] (sm : MeasurableSet
#align measure_theory.measure_lintegral_sub_measure MeasureTheory.measure_lintegral_sub_measure
@[to_additive]
-theorem measure_mul_measure_eq [MulLeftInvariant ν] {s t : Set G} (hs : MeasurableSet s)
+theorem measure_mul_measure_eq [IsMulLeftInvariant ν] {s t : Set G} (hs : MeasurableSet s)
(ht : MeasurableSet t) (h2s : ν s ≠ 0) (h3s : ν s ≠ ∞) : μ s * ν t = ν s * μ t := by
have h1 :=
measure_lintegral_div_measure ν ν hs h2s h3s (t.indicator fun _ => 1)
@@ -352,7 +352,7 @@ theorem measure_mul_measure_eq [MulLeftInvariant ν] {s t : Set G} (hs : Measura
/-- Left invariant Borel measures on a measurable group are unique (up to a scalar). -/
@[to_additive
" Left invariant Borel measures on an additive measurable group are unique (up to a scalar). "]
-theorem measure_eq_div_smul [MulLeftInvariant ν] (hs : MeasurableSet s) (h2s : ν s ≠ 0)
+theorem measure_eq_div_smul [IsMulLeftInvariant ν] (hs : MeasurableSet s) (h2s : ν s ≠ 0)
(h3s : ν s ≠ ∞) : μ = (μ s / ν s) • ν := by
ext1 t ht
rw [smul_apply, smul_eq_mul, mul_comm, ← mul_div_assoc, mul_comm,
@@ -365,7 +365,7 @@ end LeftInvariant
section RightInvariant
@[to_additive measurePreserving_prod_add_right]
-theorem measurePreserving_prod_mul_right [MulRightInvariant ν] :
+theorem measurePreserving_prod_mul_right [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.2 * z.1)) (μ.prod ν) (μ.prod ν) :=
MeasurePreserving.skew_product (g := fun x y => y * x) (MeasurePreserving.id μ)
(measurable_snd.mul measurable_fst) <| Filter.eventually_of_forall <| map_mul_right_eq_self ν
@@ -375,7 +375,7 @@ theorem measurePreserving_prod_mul_right [MulRightInvariant ν] :
/-- The map `(x, y) ↦ (y, xy)` sends the measure `μ × ν` to `ν × μ`. -/
@[to_additive measurePreserving_prod_add_swap_right
" The map `(x, y) ↦ (y, x + y)` sends the measure `μ × ν` to `ν × μ`. "]
-theorem measurePreserving_prod_mul_swap_right [MulRightInvariant μ] :
+theorem measurePreserving_prod_mul_swap_right [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.1 * z.2)) (μ.prod ν) (ν.prod μ) :=
(measurePreserving_prod_mul_right ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_mul_swap_right MeasureTheory.measurePreserving_prod_mul_swap_right
@@ -384,7 +384,7 @@ theorem measurePreserving_prod_mul_swap_right [MulRightInvariant μ] :
/-- The map `(x, y) ↦ (xy, y)` preserves the measure `μ × ν`. -/
@[to_additive measurePreserving_add_prod
" The map `(x, y) ↦ (x + y, y)` preserves the measure `μ × ν`. "]
-theorem measurePreserving_mul_prod [MulRightInvariant μ] :
+theorem measurePreserving_mul_prod [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.1 * z.2, z.2)) (μ.prod ν) (μ.prod ν) :=
measurePreserving_swap.comp <| by apply measurePreserving_prod_mul_swap_right μ ν
#align measure_theory.measure_preserving_mul_prod MeasureTheory.measurePreserving_mul_prod
@@ -394,7 +394,7 @@ variable [MeasurableInv G]
/-- The map `(x, y) ↦ (x, y / x)` is measure-preserving. -/
@[to_additive measurePreserving_prod_sub "The map `(x, y) ↦ (x, y - x)` is measure-preserving."]
-theorem measurePreserving_prod_div [MulRightInvariant ν] :
+theorem measurePreserving_prod_div [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1, z.2 / z.1)) (μ.prod ν) (μ.prod ν) :=
(measurePreserving_prod_mul_right μ ν).symm (MeasurableEquiv.shearDivRight G).symm
#align measure_theory.measure_preserving_prod_div MeasureTheory.measurePreserving_prod_div
@@ -403,7 +403,7 @@ theorem measurePreserving_prod_div [MulRightInvariant ν] :
/-- The map `(x, y) ↦ (y, x / y)` sends `μ × ν` to `ν × μ`. -/
@[to_additive measurePreserving_prod_sub_swap
"The map `(x, y) ↦ (y, x - y)` sends `μ × ν` to `ν × μ`."]
-theorem measurePreserving_prod_div_swap [MulRightInvariant μ] :
+theorem measurePreserving_prod_div_swap [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.2, z.1 / z.2)) (μ.prod ν) (ν.prod μ) :=
(measurePreserving_prod_div ν μ).comp measurePreserving_swap
#align measure_theory.measure_preserving_prod_div_swap MeasureTheory.measurePreserving_prod_div_swap
@@ -412,7 +412,7 @@ theorem measurePreserving_prod_div_swap [MulRightInvariant μ] :
/-- The map `(x, y) ↦ (x / y, y)` preserves the measure `μ × ν`. -/
@[to_additive measurePreserving_sub_prod
" The map `(x, y) ↦ (x - y, y)` preserves the measure `μ × ν`. "]
-theorem measurePreserving_div_prod [MulRightInvariant μ] :
+theorem measurePreserving_div_prod [IsMulRightInvariant μ] :
MeasurePreserving (fun z : G × G => (z.1 / z.2, z.2)) (μ.prod ν) (μ.prod ν) :=
measurePreserving_swap.comp <| by apply measurePreserving_prod_div_swap μ ν
#align measure_theory.measure_preserving_div_prod MeasureTheory.measurePreserving_div_prod
@@ -421,7 +421,7 @@ theorem measurePreserving_div_prod [MulRightInvariant μ] :
/-- The map `(x, y) ↦ (xy, x⁻¹)` is measure-preserving. -/
@[to_additive measurePreserving_add_prod_neg_right
"The map `(x, y) ↦ (x + y, - x)` is measure-preserving."]
-theorem measurePreserving_mul_prod_inv_right [MulRightInvariant μ] [MulRightInvariant ν] :
+theorem measurePreserving_mul_prod_inv_right [IsMulRightInvariant μ] [IsMulRightInvariant ν] :
MeasurePreserving (fun z : G × G => (z.1 * z.2, z.1⁻¹)) (μ.prod ν) (μ.prod ν) := by
convert (measurePreserving_prod_div_swap ν μ).comp (measurePreserving_prod_mul_swap_right μ ν)
using 1
@@ -437,7 +437,7 @@ section QuasiMeasurePreserving
variable [MeasurableInv G]
@[to_additive]
-theorem quasiMeasurePreserving_inv_of_right_invariant [MulRightInvariant μ] :
+theorem quasiMeasurePreserving_inv_of_right_invariant [IsMulRightInvariant μ] :
QuasiMeasurePreserving (Inv.inv : G → G) μ μ := by
rw [← μ.inv_inv]
exact
@@ -447,7 +447,7 @@ theorem quasiMeasurePreserving_inv_of_right_invariant [MulRightInvariant μ] :
#align measure_theory.quasi_measure_preserving_neg_of_right_invariant MeasureTheory.quasiMeasurePreserving_neg_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreserving_div_left [MulLeftInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_div_left [IsMulLeftInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ := by
simp_rw [div_eq_mul_inv]
exact
@@ -456,7 +456,7 @@ theorem quasiMeasurePreserving_div_left [MulLeftInvariant μ] (g : G) :
#align measure_theory.quasi_measure_preserving_sub_left MeasureTheory.quasiMeasurePreserving_sub_left
@[to_additive]
-theorem quasiMeasurePreserving_div_left_of_right_invariant [MulRightInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_div_left_of_right_invariant [IsMulRightInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g / h) μ μ := by
rw [← μ.inv_inv]
exact
@@ -466,7 +466,7 @@ theorem quasiMeasurePreserving_div_left_of_right_invariant [MulRightInvariant μ
#align measure_theory.quasi_measure_preserving_sub_left_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_left_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreserving_div_of_right_invariant [MulRightInvariant μ] :
+theorem quasiMeasurePreserving_div_of_right_invariant [IsMulRightInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.prod ν) μ := by
refine' QuasiMeasurePreserving.prod_of_left measurable_div (eventually_of_forall fun y => _)
exact (measurePreserving_div_right μ y).quasiMeasurePreserving
@@ -474,7 +474,7 @@ theorem quasiMeasurePreserving_div_of_right_invariant [MulRightInvariant μ] :
#align measure_theory.quasi_measure_preserving_sub_of_right_invariant MeasureTheory.quasiMeasurePreserving_sub_of_right_invariant
@[to_additive]
-theorem quasiMeasurePreserving_div [MulLeftInvariant μ] :
+theorem quasiMeasurePreserving_div [IsMulLeftInvariant μ] :
QuasiMeasurePreserving (fun p : G × G => p.1 / p.2) (μ.prod ν) μ :=
(quasiMeasurePreserving_div_of_right_invariant μ.inv ν).mono
((absolutelyContinuous_inv μ).prod AbsolutelyContinuous.rfl) (inv_absolutelyContinuous μ)
@@ -486,7 +486,7 @@ This should not be confused with `(measurePreserving_mul_right μ g).quasiMeasur
@[to_additive
"A *left*-invariant measure is quasi-preserved by *right*-addition.
This should not be confused with `(measurePreserving_add_right μ g).quasiMeasurePreserving`. "]
-theorem quasiMeasurePreserving_mul_right [MulLeftInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_mul_right [IsMulLeftInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => h * g) μ μ := by
refine' ⟨measurable_mul_const g, AbsolutelyContinuous.mk fun s hs => _⟩
rw [map_apply (measurable_mul_const g) hs, measure_mul_right_null]; exact id
@@ -498,7 +498,7 @@ This should not be confused with `(measurePreserving_mul_left μ g).quasiMeasure
@[to_additive
"A *right*-invariant measure is quasi-preserved by *left*-addition.
This should not be confused with `(measurePreserving_add_left μ g).quasiMeasurePreserving`. "]
-theorem quasiMeasurePreserving_mul_left [MulRightInvariant μ] (g : G) :
+theorem quasiMeasurePreserving_mul_left [IsMulRightInvariant μ] (g : G) :
QuasiMeasurePreserving (fun h : G => g * h) μ μ := by
have :=
(quasiMeasurePreserving_mul_right μ.inv g⁻¹).mono (inv_absolutelyContinuous μ.inv)
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file