# mathlib3documentation

measure_theory.group.prod

# 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.

These lemmas show the uniqueness of left invariant measures on measurable groups, up to scaling. In this file we follow the proof and refer to the book Measure Theory by Paul Halmos.

The idea of the proof is to use the translation invariance of measures to prove μ(t) = c * μ(s) for two sets s and t, where c is a constant that does not depend on μ. Let e and f be the characteristic functions of s and t. Assume that μ and ν are left-invariant measures. Then the map (x, y) ↦ (y * x, x⁻¹) 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 μ(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.

The proof in [Halmos] seems to contain an omission in §60 Th. A, see measure_theory.measure_lintegral_div_measure.

@[protected]
def measurable_equiv.shear_mul_right (G : Type u_1) [group G]  :
G × G ≃ᵐ G × G

The map (x, y) ↦ (x, xy) as a measurable_equiv.

Equations
@[protected]
G × G ≃ᵐ G × G

The map (x, y) ↦ (x, x + y) as a measurable_equiv.

Equations
@[protected]
def measurable_equiv.shear_div_right (G : Type u_1) [group G]  :
G × G ≃ᵐ G × G

The map (x, y) ↦ (x, y / x) as a measurable_equiv with as inverse (x, y) ↦ (x, yx)

Equations
@[protected]
def measurable_equiv.shear_sub_right (G : Type u_1) [add_group G]  :
G × G ≃ᵐ G × G

The map (x, y) ↦ (x, y - x) as a measurable_equiv with as inverse (x, y) ↦ (x, y + x).

Equations
theorem measure_theory.measure_preserving_prod_add {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst, z.fst + z.snd)) (μ.prod ν) (μ.prod ν)

The shear mapping (x, y) ↦ (x, x + y) preserves the measure μ × ν.

theorem measure_theory.measure_preserving_prod_mul {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst, z.fst * z.snd)) (μ.prod ν) (μ.prod ν)

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.

theorem measure_theory.measure_preserving_prod_add_swap {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.snd, z.snd + z.fst)) (μ.prod ν) (ν.prod μ)

The map (x, y) ↦ (y, y + x) sends the measure μ × ν to ν × μ.

theorem measure_theory.measure_preserving_prod_mul_swap {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.snd, z.snd * z.fst)) (μ.prod ν) (ν.prod μ)

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.

theorem measure_theory.measurable_measure_add_right {G : Type u_1} [add_group G] (μ : measure_theory.measure G) {s : set G} (hs : measurable_set s) :
measurable (λ (x : G), μ ((λ (y : G), y + x) ⁻¹' s))
theorem measure_theory.measurable_measure_mul_right {G : Type u_1} [group G] (μ : measure_theory.measure G) {s : set G} (hs : measurable_set s) :
measurable (λ (x : G), μ ((λ (y : G), y * x) ⁻¹' s))
theorem measure_theory.measure_preserving_prod_neg_add {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst, -z.fst + z.snd)) (μ.prod ν) (μ.prod ν)

The map (x, y) ↦ (x, - x + y) is measure-preserving.

theorem measure_theory.measure_preserving_prod_inv_mul {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst, (z.fst)⁻¹ * z.snd)) (μ.prod ν) (μ.prod ν)

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).

theorem measure_theory.measure_preserving_prod_inv_mul_swap {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.snd, (z.snd)⁻¹ * z.fst)) (μ.prod ν) (ν.prod μ)

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.

The map (x, y) ↦ (y, - y + x) sends μ × ν to ν × μ.

theorem measure_theory.measure_preserving_add_prod_neg {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.snd + z.fst, -z.fst)) (μ.prod ν) (μ.prod ν)

The map (x, y) ↦ (y + x, - x) is measure-preserving.

theorem measure_theory.measure_preserving_mul_prod_inv {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.snd * z.fst, (z.fst)⁻¹)) (μ.prod ν) (μ.prod ν)

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.

theorem measure_theory.measure_neg_null {G : Type u_1} [add_group G] (μ : measure_theory.measure G) {s : set G}  :
μ (-s) = 0 μ s = 0
theorem measure_theory.measure_inv_null {G : Type u_1} [group G] (μ : measure_theory.measure G) {s : set G}  :
μ s⁻¹ = 0 μ s = 0
theorem measure_theory.lintegral_lintegral_mul_inv {G : Type u_1} [group G] (μ ν : measure_theory.measure G) (f : G ) (hf : (μ.prod ν)) :
∫⁻ (x : G), ∫⁻ (y : G), f (y * x) x⁻¹ ν μ = ∫⁻ (x : G), ∫⁻ (y : G), f x y ν μ
theorem measure_theory.lintegral_lintegral_add_neg {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G) (f : G ) (hf : (μ.prod ν)) :
∫⁻ (x : G), ∫⁻ (y : G), f (y + x) (-x) ν μ = ∫⁻ (x : G), ∫⁻ (y : G), f x y ν μ
theorem measure_theory.measure_mul_right_null {G : Type u_1} [group G] (μ : measure_theory.measure G) {s : set G} (y : G) :
μ ((λ (x : G), x * y) ⁻¹' s) = 0 μ s = 0
theorem measure_theory.measure_add_right_null {G : Type u_1} [add_group G] (μ : measure_theory.measure G) {s : set G} (y : G) :
μ ((λ (x : G), x + y) ⁻¹' s) = 0 μ s = 0
theorem measure_theory.measure_add_right_ne_zero {G : Type u_1} [add_group G] (μ : measure_theory.measure G) {s : set G} (h2s : μ s 0) (y : G) :
μ ((λ (x : G), x + y) ⁻¹' s) 0
theorem measure_theory.measure_mul_right_ne_zero {G : Type u_1} [group G] (μ : measure_theory.measure G) {s : set G} (h2s : μ s 0) (y : G) :
μ ((λ (x : G), x * y) ⁻¹' s) 0
theorem measure_theory.measure_add_lintegral_eq {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G) {s : set G} (sm : measurable_set s) (f : G ennreal) (hf : measurable f) :
μ s * ∫⁻ (y : G), f y ν = ∫⁻ (x : G), ν ((λ (z : G), z + x) ⁻¹' s) * f (-x) μ

This is the computation performed in the proof of [Halmos, §60 Th. A].

theorem measure_theory.measure_mul_lintegral_eq {G : Type u_1} [group G] (μ ν : measure_theory.measure G) {s : set G} (sm : measurable_set s) (f : G ennreal) (hf : measurable f) :
μ s * ∫⁻ (y : G), f y ν = ∫⁻ (x : G), ν ((λ (z : G), z * x) ⁻¹' s) * f x⁻¹ μ

This is the computation performed in the proof of [Halmos, §60 Th. A].

Any two nonzero left-invariant measures are absolutely continuous w.r.t. each other.

Any two nonzero left-invariant measures are absolutely continuous w.r.t. each other.

theorem measure_theory.ae_measure_preimage_add_right_lt_top {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G) {s : set G} (sm : measurable_set s) (hμs : μ s ) :
∀ᵐ (x : G) μ, ν ((λ (y : G), y + x) ⁻¹' s) <
theorem measure_theory.ae_measure_preimage_mul_right_lt_top {G : Type u_1} [group G] (μ ν : measure_theory.measure G) {s : set G} (sm : measurable_set s) (hμs : μ s ) :
∀ᵐ (x : G) μ, ν ((λ (y : G), y * x) ⁻¹' s) <
theorem measure_theory.ae_measure_preimage_mul_right_lt_top_of_ne_zero {G : Type u_1} [group G] (μ ν : measure_theory.measure G) {s : set G} (sm : measurable_set s) (h2s : ν s 0) (h3s : ν s ) :
∀ᵐ (x : G) μ, ν ((λ (y : G), y * x) ⁻¹' s) <
theorem measure_theory.ae_measure_preimage_add_right_lt_top_of_ne_zero {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G) {s : set G} (sm : measurable_set s) (h2s : ν s 0) (h3s : ν s ) :
∀ᵐ (x : G) μ, ν ((λ (y : G), y + x) ⁻¹' s) <
theorem measure_theory.measure_lintegral_div_measure {G : Type u_1} [group G] (μ ν : measure_theory.measure G) {s : set G} (sm : measurable_set s) (h2s : ν s 0) (h3s : ν s ) (f : G ennreal) (hf : measurable f) :
μ s * ∫⁻ (y : G), f y⁻¹ / ν ((λ (x : G), x * y⁻¹) ⁻¹' s) ν = ∫⁻ (x : G), f x μ

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 μ.

Note: There is a gap in the last step of the proof in [Halmos]. In the last line, the equality g(x⁻¹)ν(sx⁻¹) = f(x) holds if we can prove that 0 < ν(sx⁻¹) < ∞. The first inequality follows from §59, Th. D, but the second inequality is not justified. We prove this inequality for almost all x in measure_theory.ae_measure_preimage_mul_right_lt_top_of_ne_zero.

theorem measure_theory.measure_lintegral_sub_measure {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G) {s : set G} (sm : measurable_set s) (h2s : ν s 0) (h3s : ν s ) (f : G ennreal) (hf : measurable f) :
μ s * ∫⁻ (y : G), f (-y) / ν ((λ (x : G), x + -y) ⁻¹' s) ν = ∫⁻ (x : G), f x μ

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 μ.

Note: There is a gap in the last step of the proof in [Halmos]. In the last line, the equality 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 measure_theory.ae_measure_preimage_add_right_lt_top_of_ne_zero.

theorem measure_theory.measure_mul_measure_eq {G : Type u_1} [group G] (μ ν : measure_theory.measure G) {s t : set G} (hs : measurable_set s) (ht : measurable_set t) (h2s : ν s 0) (h3s : ν s ) :
μ s * ν t = ν s * μ t
theorem measure_theory.measure_add_measure_eq {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G) {s t : set G} (hs : measurable_set s) (ht : measurable_set t) (h2s : ν s 0) (h3s : ν s ) :
μ s * ν t = ν s * μ t
theorem measure_theory.measure_eq_sub_vadd {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G) {s : set G} (hs : measurable_set s) (h2s : ν s 0) (h3s : ν s ) :
μ = (μ s / ν s) ν

Left invariant Borel measures on an additive measurable group are unique (up to a scalar).

theorem measure_theory.measure_eq_div_smul {G : Type u_1} [group G] (μ ν : measure_theory.measure G) {s : set G} (hs : measurable_set s) (h2s : ν s 0) (h3s : ν s ) :
μ = (μ s / ν s) ν

Left invariant Borel measures on a measurable group are unique (up to a scalar).

theorem measure_theory.measure_preserving_prod_mul_right {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst, z.snd * z.fst)) (μ.prod ν) (μ.prod ν)
theorem measure_theory.measure_preserving_prod_mul_swap_right {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.snd, z.fst * z.snd)) (μ.prod ν) (ν.prod μ)

The map (x, y) ↦ (y, xy) sends the measure μ × ν to ν × μ.

The map (x, y) ↦ (y, x + y) sends the measure μ × ν to ν × μ.

theorem measure_theory.measure_preserving_mul_prod {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst * z.snd, z.snd)) (μ.prod ν) (μ.prod ν)

The map (x, y) ↦ (xy, y) preserves the measure μ × ν.

theorem measure_theory.measure_preserving_add_prod {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst + z.snd, z.snd)) (μ.prod ν) (μ.prod ν)

The map (x, y) ↦ (x + y, y) preserves the measure μ × ν.

theorem measure_theory.measure_preserving_prod_div {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst, z.snd / z.fst)) (μ.prod ν) (μ.prod ν)

The map (x, y) ↦ (x, y / x) is measure-preserving.

theorem measure_theory.measure_preserving_prod_sub {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst, z.snd - z.fst)) (μ.prod ν) (μ.prod ν)

The map (x, y) ↦ (x, y - x) is measure-preserving.

theorem measure_theory.measure_preserving_prod_sub_swap {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.snd, z.fst - z.snd)) (μ.prod ν) (ν.prod μ)

The map (x, y) ↦ (y, x - y) sends μ × ν to ν × μ.

theorem measure_theory.measure_preserving_prod_div_swap {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.snd, z.fst / z.snd)) (μ.prod ν) (ν.prod μ)

The map (x, y) ↦ (y, x / y) sends μ × ν to ν × μ.

theorem measure_theory.measure_preserving_div_prod {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst / z.snd, z.snd)) (μ.prod ν) (μ.prod ν)

The map (x, y) ↦ (x / y, y) preserves the measure μ × ν.

theorem measure_theory.measure_preserving_sub_prod {G : Type u_1} [add_group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst - z.snd, z.snd)) (μ.prod ν) (μ.prod ν)

The map (x, y) ↦ (x - y, y) preserves the measure μ × ν.

theorem measure_theory.measure_preserving_mul_prod_inv_right {G : Type u_1} [group G] (μ ν : measure_theory.measure G)  :
measure_theory.measure_preserving (λ (z : G × G), (z.fst * z.snd, (z.fst)⁻¹)) (μ.prod ν) (μ.prod ν)

The map (x, y) ↦ (xy, x⁻¹) is measure-preserving.

The map (x, y) ↦ (x + y, - x) is measure-preserving.

A left-invariant measure is quasi-preserved by right-multiplication. This should not be confused with (measure_preserving_mul_right μ g).quasi_measure_preserving.

A left-invariant measure is quasi-preserved by right-addition. This should not be confused with (measure_preserving_add_right μ g).quasi_measure_preserving.

A right-invariant measure is quasi-preserved by left-multiplication. This should not be confused with (measure_preserving_mul_left μ g).quasi_measure_preserving.

A right-invariant measure is quasi-preserved by left-addition. This should not be confused with (measure_preserving_add_left μ g).quasi_measure_preserving.