# mathlib3documentation

measure_theory.group.measure

# Measures on Groups #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

We develop some properties of measures on (topological) groups

• We define properties on measures: measures that are left or right invariant w.r.t. multiplication.
• We define the measure `μ.inv : A ↦ μ(A⁻¹)` and show that it is right invariant iff `μ` is left invariant.
• We define a class `is_haar_measure μ`, requiring that the measure `μ` is left-invariant, finite on compact sets, and positive on open sets.

We also give analogues of all these notions in the additive world.

@[class]
• map_add_left_eq_self : (g : G),

A measure `μ` on a measurable additive group is left invariant if the measure of left translations of a set are equal to the measure of the set itself.

Instances of this typeclass
@[class]
• map_mul_left_eq_self : (g : G),

A measure `μ` on a measurable group is left invariant if the measure of left translations of a set are equal to the measure of the set itself.

Instances of this typeclass
@[class]

A measure `μ` on a measurable additive group is right invariant if the measure of right translations of a set are equal to the measure of the set itself.

Instances of this typeclass
@[class]

A measure `μ` on a measurable group is right invariant if the measure of right translations of a set are equal to the measure of the set itself.

Instances of this typeclass
theorem measure_theory.map_add_right_eq_self {G : Type u_2} [has_add G] (μ : measure_theory.measure G) (g : G) :
measure_theory.measure.map (λ (_x : G), _x + g) μ = μ
theorem measure_theory.map_mul_right_eq_self {G : Type u_2} [has_mul G] (μ : measure_theory.measure G) (g : G) :
measure_theory.measure.map (λ (_x : G), _x * g) μ = μ
@[protected, instance]
@[protected, instance]
theorem measure_theory.measure_preserving.mul_left {G : Type u_2} [has_mul G] (μ : measure_theory.measure G) (g : G) {X : Type u_1} {μ' : measure_theory.measure X} {f : X G} (hf : μ) :
measure_theory.measure_preserving (λ (x : X), g * f x) μ' μ
theorem measure_theory.measure_preserving.add_left {G : Type u_2} [has_add G] (μ : measure_theory.measure G) (g : G) {X : Type u_1} {μ' : measure_theory.measure X} {f : X G} (hf : μ) :
measure_theory.measure_preserving (λ (x : X), g + f x) μ' μ
theorem measure_theory.measure_preserving.add_right {G : Type u_2} [has_add G] (μ : measure_theory.measure G) (g : G) {X : Type u_1} {μ' : measure_theory.measure X} {f : X G} (hf : μ) :
measure_theory.measure_preserving (λ (x : X), f x + g) μ' μ
theorem measure_theory.measure_preserving.mul_right {G : Type u_2} [has_mul G] (μ : measure_theory.measure G) (g : G) {X : Type u_1} {μ' : measure_theory.measure X} {f : X G} (hf : μ) :
measure_theory.measure_preserving (λ (x : X), f x * g) μ' μ
@[protected, instance]
@[protected, instance]
@[protected, instance]
@[protected, instance]
@[protected, instance]
@[protected, instance]
def measure_theory.subgroup.smul_invariant_measure {G : Type u_1} {α : Type u_2} [group G] [ α] {μ : measure_theory.measure α} (H : subgroup G) :
theorem measure_theory.forall_measure_preimage_add_iff {G : Type u_2} [has_add G] (μ : measure_theory.measure G) :
( (g : G) (A : set G), μ ((λ (h : G), g + h) ⁻¹' A) = μ A) μ.is_add_left_invariant

An alternative way to prove that `μ` is left invariant under addition.

theorem measure_theory.forall_measure_preimage_mul_iff {G : Type u_2} [has_mul G] (μ : measure_theory.measure G) :
( (g : G) (A : set G), μ ((λ (h : G), g * h) ⁻¹' A) = μ A) μ.is_mul_left_invariant

An alternative way to prove that `μ` is left invariant under multiplication.

theorem measure_theory.forall_measure_preimage_mul_right_iff {G : Type u_2} [has_mul G] (μ : measure_theory.measure G) :
( (g : G) (A : set G), μ ((λ (h : G), h * g) ⁻¹' A) = μ A) μ.is_mul_right_invariant

An alternative way to prove that `μ` is right invariant under multiplication.

theorem measure_theory.forall_measure_preimage_add_right_iff {G : Type u_2} [has_add G] (μ : measure_theory.measure G) :
( (g : G) (A : set G), μ ((λ (h : G), h + g) ⁻¹' A) = μ A) μ.is_add_right_invariant

An alternative way to prove that `μ` is right invariant under addition.

theorem measure_theory.is_mul_left_invariant_map {G : Type u_2} [has_mul G] {μ : measure_theory.measure G} {H : Type u_1} [has_mul H] (f : G →ₙ* H) (hf : measurable f) (h_surj : function.surjective f) :
theorem measure_theory.is_add_left_invariant_map {G : Type u_2} [has_add G] {μ : measure_theory.measure G} {H : Type u_1} [has_add H] (f : H) (hf : measurable f) (h_surj : function.surjective f) :
theorem measure_theory.map_sub_right_eq_self {G : Type u_2} (μ : measure_theory.measure G) (g : G) :
measure_theory.measure.map (λ (_x : G), _x - g) μ = μ
theorem measure_theory.map_div_right_eq_self {G : Type u_2} (μ : measure_theory.measure G) (g : G) :
measure_theory.measure.map (λ (_x : G), _x / g) μ = μ
theorem measure_theory.measure_preserving_div_right {G : Type u_2} [group G] (μ : measure_theory.measure G) (g : G) :
measure_theory.measure_preserving (λ (_x : G), _x / g) μ μ
@[simp]
theorem measure_theory.measure_preimage_add {G : Type u_2} [add_group G] (μ : measure_theory.measure G) (g : G) (A : set G) :
μ ((λ (h : G), g + h) ⁻¹' A) = μ A

We shorten this from `measure_preimage_add_left`, since left invariant is the preferred option for measures in this formalization.

@[simp]
theorem measure_theory.measure_preimage_mul {G : Type u_2} [group G] (μ : measure_theory.measure G) (g : G) (A : set G) :
μ ((λ (h : G), g * h) ⁻¹' A) = μ A

We shorten this from `measure_preimage_mul_left`, since left invariant is the preferred option for measures in this formalization.

@[simp]
theorem measure_theory.measure_preimage_add_right {G : Type u_2} [add_group G] (μ : measure_theory.measure G) (g : G) (A : set G) :
μ ((λ (h : G), h + g) ⁻¹' A) = μ A
@[simp]
theorem measure_theory.measure_preimage_mul_right {G : Type u_2} [group G] (μ : measure_theory.measure G) (g : G) (A : set G) :
μ ((λ (h : G), h * g) ⁻¹' A) = μ A
theorem measure_theory.map_mul_left_ae {G : Type u_2} [group G] (μ : measure_theory.measure G) (x : G) :
filter.map (λ (h : G), x * h) μ.ae = μ.ae
theorem measure_theory.map_add_left_ae {G : Type u_2} [add_group G] (μ : measure_theory.measure G) (x : G) :
filter.map (λ (h : G), x + h) μ.ae = μ.ae
theorem measure_theory.map_mul_right_ae {G : Type u_2} [group G] (μ : measure_theory.measure G) (x : G) :
filter.map (λ (h : G), h * x) μ.ae = μ.ae
theorem measure_theory.map_add_right_ae {G : Type u_2} [add_group G] (μ : measure_theory.measure G) (x : G) :
filter.map (λ (h : G), h + x) μ.ae = μ.ae
theorem measure_theory.map_sub_right_ae {G : Type u_2} [add_group G] (μ : measure_theory.measure G) (x : G) :
filter.map (λ (t : G), t - x) μ.ae = μ.ae
theorem measure_theory.map_div_right_ae {G : Type u_2} [group G] (μ : measure_theory.measure G) (x : G) :
filter.map (λ (t : G), t / x) μ.ae = μ.ae
theorem measure_theory.eventually_mul_left_iff {G : Type u_2} [group G] (μ : measure_theory.measure G) (t : G) {p : G Prop} :
(∀ᵐ (x : G) μ, p (t * x)) ∀ᵐ (x : G) μ, p x
theorem measure_theory.eventually_add_left_iff {G : Type u_2} [add_group G] (μ : measure_theory.measure G) (t : G) {p : G Prop} :
(∀ᵐ (x : G) μ, p (t + x)) ∀ᵐ (x : G) μ, p x
theorem measure_theory.eventually_mul_right_iff {G : Type u_2} [group G] (μ : measure_theory.measure G) (t : G) {p : G Prop} :
(∀ᵐ (x : G) μ, p (x * t)) ∀ᵐ (x : G) μ, p x
theorem measure_theory.eventually_add_right_iff {G : Type u_2} [add_group G] (μ : measure_theory.measure G) (t : G) {p : G Prop} :
(∀ᵐ (x : G) μ, p (x + t)) ∀ᵐ (x : G) μ, p x
theorem measure_theory.eventually_sub_right_iff {G : Type u_2} [add_group G] (μ : measure_theory.measure G) (t : G) {p : G Prop} :
(∀ᵐ (x : G) μ, p (x - t)) ∀ᵐ (x : G) μ, p x
theorem measure_theory.eventually_div_right_iff {G : Type u_2} [group G] (μ : measure_theory.measure G) (t : G) {p : G Prop} :
(∀ᵐ (x : G) μ, p (x / t)) ∀ᵐ (x : G) μ, p x
@[protected]
noncomputable def measure_theory.measure.inv {G : Type u_2} [has_inv G] (μ : measure_theory.measure G) :

The measure `A ↦ μ (A⁻¹)`, where `A⁻¹` is the pointwise inverse of `A`.

Equations
Instances for `measure_theory.measure.inv`
@[protected]
noncomputable def measure_theory.measure.neg {G : Type u_2} [has_neg G] (μ : measure_theory.measure G) :

The measure `A ↦ μ (- A)`, where `- A` is the pointwise negation of `A`.

Equations
Instances for `measure_theory.measure.neg`
@[class]
• neg_eq_self : μ.neg = μ

A measure is invariant under negation if `- μ = μ`. Equivalently, this means that for all measurable `A` we have `μ (- A) = μ A`, where `- A` is the pointwise negation of `A`.

Instances of this typeclass
@[class]
• inv_eq_self : μ.inv = μ

A measure is invariant under inversion if `μ⁻¹ = μ`. Equivalently, this means that for all measurable `A` we have `μ (A⁻¹) = μ A`, where `A⁻¹` is the pointwise inverse of `A`.

Instances of this typeclass
@[simp]
@[simp]
@[simp]
theorem measure_theory.measure.neg_apply {G : Type u_2} (μ : measure_theory.measure G) (s : set G) :
(μ.neg) s = μ (-s)
@[simp]
theorem measure_theory.measure.inv_apply {G : Type u_2} (μ : measure_theory.measure G) (s : set G) :
(μ.inv) s = μ s⁻¹
@[protected, simp]
theorem measure_theory.measure.inv_inv {G : Type u_2} (μ : measure_theory.measure G) :
μ.inv.inv = μ
@[protected, simp]
theorem measure_theory.measure.neg_neg {G : Type u_2} (μ : measure_theory.measure G) :
μ.neg.neg = μ
@[simp]
@[simp]
theorem measure_theory.measure.measure_neg {G : Type u_2} (μ : measure_theory.measure G) [μ.is_neg_invariant] (A : set G) :
μ (-A) = μ A
@[protected, instance]
@[protected, instance]
@[protected, instance]
@[protected, instance]
@[protected, instance]
@[protected, instance]
theorem measure_theory.measure.map_sub_left_ae {G : Type u_2} [add_group G] (μ : measure_theory.measure G) [μ.is_neg_invariant] (x : G) :
filter.map (λ (t : G), x - t) μ.ae = μ.ae
theorem measure_theory.measure.map_div_left_ae {G : Type u_2} [group G] (μ : measure_theory.measure G) [μ.is_inv_invariant] (x : G) :
filter.map (λ (t : G), x / t) μ.ae = μ.ae
@[protected, instance]
@[protected, instance]

If a left-invariant measure gives positive mass to a compact set, then it gives positive mass to any open set.

If a left-invariant measure gives positive mass to a compact set, then it gives positive mass to any open set.

A nonzero left-invariant regular measure gives positive mass to any open set.

A nonzero left-invariant regular measure gives positive mass to any open set.

theorem measure_theory.null_iff_of_is_add_left_invariant {G : Type u_2} [borel_space G] {μ : measure_theory.measure G} [add_group G] [μ.regular] {s : set G} (hs : is_open s) :
μ s = 0 s = μ = 0
theorem measure_theory.null_iff_of_is_mul_left_invariant {G : Type u_2} [borel_space G] {μ : measure_theory.measure G} [group G] [μ.regular] {s : set G} (hs : is_open s) :
μ s = 0 s = μ = 0
theorem measure_theory.measure_lt_top_of_is_compact_of_is_mul_left_invariant {G : Type u_2} [borel_space G] {μ : measure_theory.measure G} [group G] (U : set G) (hU : is_open U) (h'U : U.nonempty) (h : μ U ) {K : set G} (hK : is_compact K) :
μ K <

If a left-invariant measure gives finite mass to a nonempty open set, then it gives finite mass to any compact set.

theorem measure_theory.measure_lt_top_of_is_compact_of_is_add_left_invariant {G : Type u_2} [borel_space G] {μ : measure_theory.measure G} [add_group G] (U : set G) (hU : is_open U) (h'U : U.nonempty) (h : μ U ) {K : set G} (hK : is_compact K) :
μ K <

If a left-invariant measure gives finite mass to a nonempty open set, then it gives finite mass to any compact set.

If a left-invariant measure gives finite mass to a set with nonempty interior, then it gives finite mass to any compact set.

If a left-invariant measure gives finite mass to a set with nonempty interior, then it gives finite mass to any compact set.

@[simp]

In a noncompact locally compact group, a left-invariant measure which is positive on open sets has infinite mass.

@[simp]

In a noncompact locally compact additive group, a left-invariant measure which is positive on open sets has infinite mass.

@[protected, instance]

In an abelian additive group every left invariant measure is also right-invariant. We don't declare the converse as an instance, since that would loop type-class inference, and we use `is_add_left_invariant` as the default hypothesis in abelian groups.

@[protected, instance]

In an abelian group every left invariant measure is also right-invariant. We don't declare the converse as an instance, since that would loop type-class inference, and we use `is_mul_left_invariant` as the default hypothesis in abelian groups.

@[class]
• to_is_finite_measure_on_compacts :
• to_is_open_pos_measure :

A measure on an additive group is an additive Haar measure if it is left-invariant, and gives finite mass to compact sets and positive mass to open sets.

Instances of this typeclass
@[class]
structure measure_theory.measure.is_haar_measure {G : Type u_4} [group G] (μ : measure_theory.measure G) :
Prop
• to_is_finite_measure_on_compacts :
• to_is_mul_left_invariant :
• to_is_open_pos_measure :

A measure on a group is a Haar measure if it is left-invariant, and gives finite mass to compact sets and positive mass to open sets.

Instances of this typeclass
@[protected, instance]

Record that a Haar measure on a locally compact space is locally finite. This is needed as the fact that a measure which is finite on compacts is locally finite is not registered as an instance, to avoid an instance loop.

@[protected, instance]

Record that an additive Haar measure on a locally compact space is locally finite. This is needed as the fact that a measure which is finite on compacts is locally finite is not registered as an instance, to avoid an instance loop.

@[simp]
theorem measure_theory.measure.haar_singleton {G : Type u_2} [group G] (μ : measure_theory.measure G) [μ.is_haar_measure] [borel_space G] (g : G) :
μ {g} = μ {1}
@[simp]
theorem measure_theory.measure.add_haar_singleton {G : Type u_2} [add_group G] (μ : measure_theory.measure G) [borel_space G] (g : G) :
μ {g} = μ {0}
theorem measure_theory.measure.is_haar_measure.smul {G : Type u_2} [group G] (μ : measure_theory.measure G) [μ.is_haar_measure] {c : ennreal} (cpos : c 0) (ctop : c ) :
theorem measure_theory.measure.is_haar_measure_of_is_compact_nonempty_interior {G : Type u_2} [group G] [borel_space G] (μ : measure_theory.measure G) (K : set G) (hK : is_compact K) (h'K : (interior K).nonempty) (h : μ K 0) (h' : μ K ) :

If a left-invariant measure gives positive mass to some compact set with nonempty interior, then it is a Haar measure.

If a left-invariant measure gives positive mass to some compact set with nonempty interior, then it is an additive Haar measure.

theorem measure_theory.measure.is_haar_measure_map {G : Type u_2} [group G] (μ : measure_theory.measure G) [μ.is_haar_measure] [borel_space G] {H : Type u_1} [group H] [borel_space H] [t2_space H] (f : G →* H) (hf : continuous f) (h_surj : function.surjective f) (h_prop : ) :

The image of a Haar measure under a continuous surjective proper group homomorphism is again a Haar measure. See also `mul_equiv.is_haar_measure_map`.

theorem measure_theory.measure.is_add_haar_measure_map {G : Type u_2} [add_group G] (μ : measure_theory.measure G) [borel_space G] {H : Type u_1} [add_group H] [borel_space H] [t2_space H] (f : G →+ H) (hf : continuous f) (h_surj : function.surjective f) (h_prop : ) :

The image of an additive Haar measure under a continuous surjective proper additive group homomorphism is again an additive Haar measure. See also `add_equiv.is_add_haar_measure_map`.

theorem mul_equiv.is_haar_measure_map {G : Type u_2} [group G] (μ : measure_theory.measure G) [μ.is_haar_measure] [borel_space G] {H : Type u_1} [group H] [borel_space H] [t2_space H] (e : G ≃* H) (he : continuous e) (hesymm : continuous (e.symm)) :

A convenience wrapper for `measure_theory.measure.is_haar_measure_map`.

theorem add_equiv.is_add_haar_measure_map {G : Type u_2} [add_group G] (μ : measure_theory.measure G) [borel_space G] {H : Type u_1} [add_group H] [borel_space H] [t2_space H] (e : G ≃+ H) (he : continuous e) (hesymm : continuous (e.symm)) :

A convenience wrapper for `measure_theory.measure.is_add_haar_measure_map`.

@[protected, instance]

A Haar measure on a σ-compact space is σ-finite.

@[protected, instance]

A Haar measure on a σ-compact space is σ-finite.

@[protected, instance]
@[protected, instance]

If the neutral element of a group is not isolated, then a Haar measure on this group has no atoms.

The additive version of this instance applies in particular to show that an additive Haar measure on a nontrivial finite-dimensional real vector space has no atom.

@[protected, instance]

If the zero element of an additive group is not isolated, then an additive Haar measure on this group has no atoms.

This applies in particular to show that an additive Haar measure on a nontrivial finite-dimensional real vector space has no atom.