# mathlibdocumentation

measure_theory.haar_measure

# Haar measure

In this file we prove the existence of Haar measure for a locally compact Hausdorff topological group.

For the construction, we follow the write-up by Jonathan Gleason, Existence and Uniqueness of Haar Measure. This is essentially the same argument as in https://en.wikipedia.org/wiki/Haar_measure#A_construction_using_compact_subsets.

We construct the Haar measure first on compact sets. For this we define (K : U) as the (smallest) number of left-translates of U are needed to cover K (index in the formalization). Then we define a function h on compact sets as lim_U (K : U) / (K₀ : U), where U becomes a smaller and smaller open neighborhood of 1, and K₀ is a fixed compact set with nonempty interior. This function is chaar in the formalization, and we define the limit formally using Tychonoff's theorem.

This function h forms a content, which we can extend to an outer measure μ (haar_outer_measure), and obtain the Haar measure from that (haar_measure). We normalize the Haar measure so that the measure of K₀ is 1.

Note that μ need not coincide with h on compact sets, according to [halmos1950measure, ch. X, §53 p.233]. However, we know that h(K) lies between μ(Kᵒ) and μ(K), where ᵒ denotes the interior.

## Main Declarations

• haar_measure: the Haar measure on a locally compact Hausdorff group. This is a left invariant regular measure. It takes as argument a compact set of the group (with non-empty interior), and is normalized so that the measure of the given set is 1.
• haar_measure_self: the Haar measure is normalized.
• is_left_invariant_haar_measure: the Haar measure is left invariant.
• regular_haar_measure: the Haar measure is a regular measure.

## References

• Paul Halmos (1950), Measure Theory, §53
• Jonathan Gleason, Existence and Uniqueness of Haar Measure
• Note: step 9, page 8 contains a mistake: the last defined μ does not extend the μ on compact sets, see Halmos (1950) p. 233, bottom of the page. This makes some other steps (like step 11) invalid.
• https://en.wikipedia.org/wiki/Haar_measure

We put the internal functions in the construction of the Haar measure in a namespace, so that the chosen names don't clash with other declarations. We first define a couple of the functions before proving the properties (that require that G is a topological group).

def measure_theory.measure.haar.index {G : Type u_1} [group G] :
set Gset G

The index or Haar covering number or ratio of K w.r.t. V, denoted (K : V): it is the smallest number of (left) translates of V that is necessary to cover K. It is defined to be 0 if no finite number of translates cover K.

Equations
theorem measure_theory.measure.haar.index_empty {G : Type u_1} [group G] {V : set G} :

def measure_theory.measure.haar.prehaar {G : Type u_1} [group G]  :
set Gset G

prehaar K₀ U K is a weighted version of the index, defined as (K : U)/(K₀ : U). In the applications K₀ is compact with non-empty interior, U is open containing 1, and K is any compact set. The argument K is a (bundled) compact set, so that we can consider prehaar K₀ U as an element of haar_product (below).

Equations
theorem measure_theory.measure.haar.prehaar_empty {G : Type u_1} [group G] {U : set G} :

theorem measure_theory.measure.haar.prehaar_nonneg {G : Type u_1} [group G] {U : set G}  :

def measure_theory.measure.haar.haar_product {G : Type u_1} [group G]  :
set G

haar_product K₀ is the product of intervals [0, (K : K₀)], for all compact sets K. For all U, we can show that prehaar K₀ U ∈ haar_product K₀.

Equations
@[simp]
theorem measure_theory.measure.haar.mem_prehaar_empty {G : Type u_1} [group G] {K₀ : set G} {f : } :
∀ (K : , f K

def measure_theory.measure.haar.cl_prehaar {G : Type u_1} [group G]  :
set G

The closure of the collection of elements of the form prehaar K₀ U, for U open neighbourhoods of 1, contained in V. The closure is taken in the space compacts G → ℝ, with the topology of pointwise convergence. We show that the intersection of all these sets is nonempty, and the Haar measure on compact sets is defined to be an element in the closure of this intersection.

Equations

### Lemmas about index

theorem measure_theory.measure.haar.index_defined {G : Type u_1} [group G] {K V : set G} :
(interior V).nonempty(∃ (n : ), n finset.card '' {t : | K ⋃ (g : G) (H : g t), (λ (h : G), g * h) ⁻¹' V})

If K is compact and V has nonempty interior, then the index (K : V) is well-defined, there is a finite set t satisfying the desired properties.

theorem measure_theory.measure.haar.index_elim {G : Type u_1} [group G] {K V : set G} :
(interior V).nonempty(∃ (t : finset G), (K ⋃ (g : G) (H : g t), (λ (h : G), g * h) ⁻¹' V)

theorem measure_theory.measure.haar.le_index_mul {G : Type u_1} [group G] {V : set G} :

theorem measure_theory.measure.haar.index_pos {G : Type u_1} [group G] {V : set G} :

theorem measure_theory.measure.haar.index_mono {G : Type u_1} [group G] {K K' V : set G} :
K K'

theorem measure_theory.measure.haar.index_union_le {G : Type u_1} [group G] (K₁ K₂ : topological_space.compacts G) {V : set G} :

theorem measure_theory.measure.haar.index_union_eq {G : Type u_1} [group G] (K₁ K₂ : topological_space.compacts G) {V : set G} :
(interior V).nonemptydisjoint ((K₁.val) * V⁻¹) ((K₂.val) * V⁻¹)

theorem measure_theory.measure.haar.mul_left_index_le {G : Type u_1} [group G] {K : set G} (hK : is_compact K) {V : set G} (hV : (interior V).nonempty) (g : G) :
measure_theory.measure.haar.index ((λ (h : G), g * h) '' K) V

theorem measure_theory.measure.haar.is_left_invariant_index {G : Type u_1} [group G] {K : set G} (hK : is_compact K) (g : G) {V : set G} :
(interior V).nonemptymeasure_theory.measure.haar.index ((λ (h : G), g * h) '' K) V =

### Lemmas about prehaar

theorem measure_theory.measure.haar.prehaar_le_index {G : Type u_1} [group G] {U : set G}  :

theorem measure_theory.measure.haar.prehaar_pos {G : Type u_1} [group G] {U : set G} (hU : (interior U).nonempty) {K : set G} (h1K : is_compact K) :
(interior K).nonempty0 < K, h1K⟩

theorem measure_theory.measure.haar.prehaar_mono {G : Type u_1} [group G] {U : set G} (hU : (interior U).nonempty) {K₁ K₂ : topological_space.compacts G} :
K₁.val K₂.val

theorem measure_theory.measure.haar.prehaar_self {G : Type u_1} [group G] {U : set G} :
(interior U).nonempty K₀.val, _⟩ = 1

theorem measure_theory.measure.haar.prehaar_sup_le {G : Type u_1} [group G] {U : set G} (K₁ K₂ : topological_space.compacts G) :
(interior U).nonempty (K₁ K₂)

theorem measure_theory.measure.haar.prehaar_sup_eq {G : Type u_1} [group G] {U : set G} {K₁ K₂ : topological_space.compacts G} :
(interior U).nonemptydisjoint ((K₁.val) * U⁻¹) ((K₂.val) * U⁻¹) (K₁ K₂) =

theorem measure_theory.measure.haar.is_left_invariant_prehaar {G : Type u_1} [group G] {U : set G} (hU : (interior U).nonempty) (g : G)  :
(topological_space.compacts.map (λ (b : G), g * b) _ K) =

### The Haar measure on compact sets

def measure_theory.measure.haar.chaar {G : Type u_1} [group G]  :

The Haar measure on compact sets, defined to be an arbitrary element in the intersection of all the sets cl_prehaar K₀ V in haar_product K₀.

Equations
theorem measure_theory.measure.haar.chaar_nonneg {G : Type u_1} [group G]  :

theorem measure_theory.measure.haar.chaar_empty {G : Type u_1} [group G]  :

theorem measure_theory.measure.haar.chaar_self {G : Type u_1} [group G]  :
K₀.val, _⟩ = 1

theorem measure_theory.measure.haar.chaar_mono {G : Type u_1} [group G] {K₁ K₂ : topological_space.compacts G} :
K₁.val K₂.val

theorem measure_theory.measure.haar.chaar_sup_le {G : Type u_1} [group G] (K₁ K₂ : topological_space.compacts G) :
(K₁ K₂)

theorem measure_theory.measure.haar.chaar_sup_eq {G : Type u_1} [group G] [t2_space G] {K₁ K₂ : topological_space.compacts G} :
disjoint K₁.val K₂.val (K₁ K₂) =

theorem measure_theory.measure.haar.is_left_invariant_chaar {G : Type u_1} [group G] (g : G)  :
(topological_space.compacts.map (λ (b : G), g * b) _ K) =

def measure_theory.measure.haar.echaar {G : Type u_1} [group G]  :

The function chaar interpreted in ennreal

Equations

We only prove the properties for echaar that we use at least twice below.

theorem measure_theory.measure.haar.echaar_sup_le {G : Type u_1} [group G] (K₁ K₂ : topological_space.compacts G) :

The variant of chaar_sup_le for echaar

theorem measure_theory.measure.haar.echaar_mono {G : Type u_1} [group G] ⦃K₁ K₂ : topological_space.compacts G⦄ :
K₁.val K₂.val

The variant of chaar_mono for echaar

theorem measure_theory.measure.haar.echaar_self {G : Type u_1} [group G]  :
K₀.val, _⟩ = 1

The variant of chaar_self for echaar

theorem measure_theory.measure.haar.is_left_invariant_echaar {G : Type u_1} [group G] (g : G)  :
(topological_space.compacts.map (λ (b : G), g * b) _ K) =

The variant of is_left_invariant_chaar for echaar

### The Haar outer measure

The Haar outer measure on G. It is not normalized, and is mainly used to construct haar_measure, which is a normalized measure.

Equations
theorem measure_theory.measure.haar_outer_measure_eq_infi {G : Type u_1} [group G] [t2_space G] (A : set G) :
= ⨅ (U : set G) (hU : is_open U) (h : A U),

theorem measure_theory.measure.haar_outer_measure_of_is_open {G : Type u_1} [group G] [t2_space G] (U : set G) (hU : is_open U) :

theorem measure_theory.measure.haar_outer_measure_le_echaar {G : Type u_1} [group G] [t2_space G] {U : set G} (hU : is_open U)  :

theorem measure_theory.measure.haar_outer_measure_exists_open {G : Type u_1} [group G] [t2_space G] {A : set G} (hA : < ) {ε : ℝ≥0} :
0 < ε(∃ (U : , A U

theorem measure_theory.measure.haar_outer_measure_exists_compact {G : Type u_1} [group G] [t2_space G] {U : topological_space.opens G} (hU : < ) {ε : ℝ≥0} :
0 < ε(∃ (K : , K.val U

theorem measure_theory.measure.haar_outer_measure_caratheodory {G : Type u_1} [group G] [t2_space G] (A : set G) :
∀ (U : ,

theorem measure_theory.measure.haar_outer_measure_pos_of_is_open {G : Type u_1} [group G] [t2_space G] {U : set G} :
U.nonempty

### The Haar measure

the Haar measure on G, scaled so that haar_measure K₀ K₀ = 1.

Equations
theorem measure_theory.measure.haar_measure_apply {G : Type u_1} [group G] [t2_space G] [S : measurable_space G] [borel_space G] {s : set G} :

theorem measure_theory.measure.haar_measure_pos_of_is_open {G : Type u_1} [group G] [t2_space G] [S : measurable_space G] [borel_space G] {U : set G} :
U.nonempty