@@ -3,19 +3,21 @@ Copyright (c) 2020 Floris van Doorn. All rights reserved.
3
3
Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Floris van Doorn
5
5
-/
6
- import measure_theory.borel_space
6
+ import measure_theory.integration
7
+
7
8
/-!
8
9
# Measures on Groups
9
10
10
11
We develop some properties of measures on (topological) groups
11
12
12
- * We define properties on measures: left and right invariant measures
13
- * We define the conjugate ` A ↦ μ (A⁻¹)` of a measure `μ`, and show that it is right invariant iff
14
- `μ` is left invariant
13
+ * We define properties on measures: left and right invariant measures.
14
+ * We define the measure `μ.inv : A ↦ μ(A⁻¹)` and show that it is right invariant iff
15
+ `μ` is left invariant.
15
16
-/
17
+
16
18
noncomputable theory
17
19
18
- open has_inv set function
20
+ open has_inv set function measure_theory.measure
19
21
20
22
namespace measure_theory
21
23
@@ -25,16 +27,26 @@ section
25
27
26
28
variables [measurable_space G] [has_mul G]
27
29
28
- /-- A measure `μ` on a topological group is left invariant if
29
- for all measurable sets `s` and all `g`, we have `μ (gs) = μ s`,
30
- where `gs` denotes the translate of `s` by left multiplication with `g`. -/
31
- def is_left_invariant (μ : set G → ennreal) : Prop :=
30
+ /-- A measure `μ` on a topological group is left invariant
31
+ if the measure of left translations of a set are equal to the measure of the set itself.
32
+ To left translate sets we use preimage under left multiplication,
33
+ since preimages are nicer to work with than images. -/
34
+ @[to_additive " A measure on a topological group is left invariant
35
+ if the measure of left translations of a set are equal to the measure of the set itself.
36
+ To left translate sets we use preimage under left addition,
37
+ since preimages are nicer to work with than images." ]
38
+ def is_mul_left_invariant (μ : set G → ennreal) : Prop :=
32
39
∀ (g : G) {A : set G} (h : is_measurable A), μ ((λ h, g * h) ⁻¹' A) = μ A
33
40
34
- /-- A measure `μ` on a topological group is right invariant if
35
- for all measurable sets `s` and all `g`, we have `μ (sg) = μ s`,
36
- where `sg` denotes the translate of `s` by right multiplication with `g`. -/
37
- def is_right_invariant (μ : set G → ennreal) : Prop :=
41
+ /-- A measure `μ` on a topological group is right invariant
42
+ if the measure of right translations of a set are equal to the measure of the set itself.
43
+ To right translate sets we use preimage under right multiplication,
44
+ since preimages are nicer to work with than images. -/
45
+ @[to_additive " A measure on a topological group is right invariant
46
+ if the measure of right translations of a set are equal to the measure of the set itself.
47
+ To right translate sets we use preimage under right addition,
48
+ since preimages are nicer to work with than images." ]
49
+ def is_mul_right_invariant (μ : set G → ennreal) : Prop :=
38
50
∀ (g : G) {A : set G} (h : is_measurable A), μ ((λ h, h * g) ⁻¹' A) = μ A
39
51
40
52
end
@@ -43,73 +55,160 @@ namespace measure
43
55
44
56
variables [measurable_space G]
45
57
58
+ @[to_additive]
46
59
lemma map_mul_left_eq_self [topological_space G] [has_mul G] [has_continuous_mul G] [borel_space G]
47
- {μ : measure G} : (∀ g, measure.map ((*) g) μ = μ) ↔ is_left_invariant μ :=
60
+ {μ : measure G} : (∀ g, measure.map ((*) g) μ = μ) ↔ is_mul_left_invariant μ :=
48
61
begin
49
62
apply forall_congr, intro g, rw [measure.ext_iff], apply forall_congr, intro A,
50
63
apply forall_congr, intro hA, rw [map_apply (measurable_mul_left g) hA]
51
64
end
52
65
66
+ @[to_additive]
53
67
lemma map_mul_right_eq_self [topological_space G] [has_mul G] [has_continuous_mul G] [borel_space G]
54
- {μ : measure G} : (∀ g, measure.map (λ h, h * g) μ = μ) ↔ is_right_invariant μ :=
68
+ {μ : measure G} : (∀ g, measure.map (λ h, h * g) μ = μ) ↔ is_mul_right_invariant μ :=
55
69
begin
56
70
apply forall_congr, intro g, rw [measure.ext_iff], apply forall_congr, intro A,
57
71
apply forall_congr, intro hA, rw [map_apply (measurable_mul_right g) hA]
58
72
end
59
73
60
- /-- The conjugate of a measure on a topological group.
61
- Defined to be `A ↦ μ (A⁻¹ )`, where `A⁻¹ ` is the pointwise inverse of `A`. -/
62
- protected def conj [group G] (μ : measure G) : measure G :=
74
+ /-- The measure `A ↦ μ (A⁻¹)`, where `A⁻¹` is the pointwise inverse of `A`. -/
75
+ @[to_additive " The measure `A ↦ μ (- A )`, where `- A ` is the pointwise negation of `A`." ]
76
+ protected def inv [has_inv G] (μ : measure G) : measure G :=
63
77
measure.map inv μ
64
78
65
79
variables [group G] [topological_space G] [topological_group G] [borel_space G]
66
80
67
- lemma conj_apply (μ : measure G) {s : set G} (hs : is_measurable s) :
68
- μ.conj s = μ s⁻¹ :=
69
- by { unfold measure.conj, rw [measure.map_apply measurable_inv hs, inv_preimage] }
81
+ @[to_additive]
82
+ lemma inv_apply (μ : measure G) {s : set G} (hs : is_measurable s) :
83
+ μ.inv s = μ s⁻¹ :=
84
+ by { unfold measure.inv, rw [measure.map_apply measurable_inv hs, inv_preimage] }
70
85
71
- @[simp] lemma conj_conj (μ : measure G) : μ.conj.conj = μ :=
86
+ @[simp, to_additive] protected lemma inv_inv (μ : measure G) : μ.inv.inv = μ :=
72
87
begin
73
- ext1 s hs, rw [μ.conj.conj_apply hs, μ.conj_apply, set.inv_inv], exact measurable_inv hs
88
+ ext1 s hs, rw [μ.inv.inv_apply hs, μ.inv_apply, set.inv_inv],
89
+ exact measurable_inv hs
74
90
end
75
91
76
92
variables {μ : measure G}
77
93
78
- lemma regular.conj [t2_space G] (hμ : μ.regular) : μ.conj.regular :=
94
+ @[to_additive]
95
+ lemma regular.inv [t2_space G] (hμ : μ.regular) : μ.inv.regular :=
79
96
hμ.map (homeomorph.inv G)
80
97
81
98
end measure
82
99
83
- section conj
100
+ section inv
84
101
variables [measurable_space G] [group G] [topological_space G] [topological_group G] [borel_space G]
85
102
{μ : measure G}
86
103
87
- @[simp] lemma regular_conj_iff [t2_space G] : μ.conj .regular ↔ μ.regular :=
88
- by { refine ⟨λ h, _, measure.regular.conj ⟩, rw ←μ.conj_conj , exact measure.regular.conj h }
104
+ @[simp, to_additive ] lemma regular_inv_iff [t2_space G] : μ.inv .regular ↔ μ.regular :=
105
+ by { refine ⟨λ h, _, measure.regular.inv ⟩, rw ←μ.inv_inv , exact measure.regular.inv h }
89
106
90
- lemma is_right_invariant_conj' (h : is_left_invariant μ) :
91
- is_right_invariant μ.conj :=
107
+ @[to_additive]
108
+ lemma is_mul_left_invariant.inv (h : is_mul_left_invariant μ) :
109
+ is_mul_right_invariant μ.inv :=
92
110
begin
93
- intros g A hA, rw [μ.conj_apply (measurable_mul_right g hA), μ.conj_apply hA],
111
+ intros g A hA,
112
+ rw [μ.inv_apply (measurable_mul_right g hA), μ.inv_apply hA],
94
113
convert h g⁻¹ (measurable_inv hA) using 2 ,
95
114
simp only [←preimage_comp, ← inv_preimage],
96
- apply preimage_congr, intro h, simp only [mul_inv_rev, comp_app, inv_inv]
115
+ apply preimage_congr,
116
+ intro h,
117
+ simp only [mul_inv_rev, comp_app, inv_inv]
97
118
end
98
119
99
- lemma is_left_invariant_conj' (h : is_right_invariant μ) : is_left_invariant μ.conj :=
120
+ @[to_additive]
121
+ lemma is_mul_right_invariant.inv (h : is_mul_right_invariant μ) : is_mul_left_invariant μ.inv :=
100
122
begin
101
- intros g A hA, rw [μ.conj_apply (measurable_mul_left g hA), μ.conj_apply hA],
123
+ intros g A hA,
124
+ rw [μ.inv_apply (measurable_mul_left g hA), μ.inv_apply hA],
102
125
convert h g⁻¹ (measurable_inv hA) using 2 ,
103
126
simp only [←preimage_comp, ← inv_preimage],
104
- apply preimage_congr, intro h, simp only [mul_inv_rev, comp_app, inv_inv]
127
+ apply preimage_congr,
128
+ intro h,
129
+ simp only [mul_inv_rev, comp_app, inv_inv]
105
130
end
106
131
107
- @[simp] lemma is_right_invariant_conj : is_right_invariant μ.conj ↔ is_left_invariant μ :=
108
- by { refine ⟨λ h, _, is_right_invariant_conj'⟩, rw ←μ.conj_conj, exact is_left_invariant_conj' h }
132
+ @[simp, to_additive]
133
+ lemma is_mul_right_invariant_inv : is_mul_right_invariant μ.inv ↔ is_mul_left_invariant μ :=
134
+ ⟨λ h, by { rw ← μ.inv_inv, exact h.inv }, λ h, h.inv⟩
135
+
136
+ @[simp, to_additive]
137
+ lemma is_mul_left_invariant_inv : is_mul_left_invariant μ.inv ↔ is_mul_right_invariant μ :=
138
+ ⟨λ h, by { rw ← μ.inv_inv, exact h.inv }, λ h, h.inv⟩
139
+
140
+ end inv
109
141
110
- @[simp] lemma is_left_invariant_conj : is_left_invariant μ.conj ↔ is_right_invariant μ :=
111
- by { refine ⟨λ h, _, is_left_invariant_conj'⟩, rw ←μ.conj_conj, exact is_right_invariant_conj' h }
142
+ variables [measurable_space G] [topological_space G] [borel_space G] {μ : measure G}
143
+
144
+ section group
145
+
146
+ variables [group G] [topological_group G]
147
+
148
+ /-! Properties of regular left invariant measures -/
149
+ @[to_additive measure_theory.measure.is_add_left_invariant.null_iff_empty]
150
+ lemma is_mul_left_invariant.null_iff_empty (hμ : μ.regular) (h2μ : is_mul_left_invariant μ)
151
+ (h3μ : μ ≠ 0 ) {s : set G} (hs : is_open s) : μ s = 0 ↔ s = ∅ :=
152
+ begin
153
+ obtain ⟨K, hK, h2K⟩ := hμ.exists_compact_not_null.mpr h3μ,
154
+ refine ⟨λ h, _, λ h, by simp [h]⟩,
155
+ apply classical.by_contradiction, -- `by_contradiction` is very slow
156
+ refine mt (λ h2s, _) h2K,
157
+ rw [← ne.def, ne_empty_iff_nonempty] at h2s, cases h2s with y hy,
158
+ obtain ⟨t, -, h1t, h2t⟩ := hK.elim_finite_subcover_image
159
+ (show ∀ x ∈ @univ G, is_open ((λ y, x * y) ⁻¹' s),
160
+ from λ x _, (continuous_mul_left x).is_open_preimage _ hs) _,
161
+ { rw [← nonpos_iff_eq_zero],
162
+ refine (measure_mono h2t).trans _,
163
+ refine (measure_bUnion_le h1t.countable _).trans_eq _,
164
+ simp_rw [h2μ _ hs.is_measurable], rw [h, tsum_zero] },
165
+ { intros x _,
166
+ simp_rw [mem_Union, mem_preimage],
167
+ use [y * x⁻¹, mem_univ _],
168
+ rwa [inv_mul_cancel_right] }
169
+ end
170
+
171
+ @[to_additive measure_theory.measure.is_add_left_invariant.null_iff]
172
+ lemma is_mul_left_invariant.null_iff (hμ : regular μ) (h2μ : is_mul_left_invariant μ)
173
+ {s : set G} (hs : is_open s) : μ s = 0 ↔ s = ∅ ∨ μ = 0 :=
174
+ begin
175
+ by_cases h3μ : μ = 0 , { simp [h3μ] },
176
+ simp only [h3μ, or_false],
177
+ exact h2μ.null_iff_empty hμ h3μ hs,
178
+ end
179
+
180
+ @[to_additive measure_theory.measure.is_add_left_invariant.measure_ne_zero_iff_nonempty]
181
+ lemma is_mul_left_invariant.measure_ne_zero_iff_nonempty (hμ : regular μ)
182
+ (h2μ : is_mul_left_invariant μ) (h3μ : μ ≠ 0 ) {s : set G} (hs : is_open s) :
183
+ μ s ≠ 0 ↔ s.nonempty :=
184
+ by simp_rw [← ne_empty_iff_nonempty, ne.def, h2μ.null_iff_empty hμ h3μ hs]
185
+
186
+ /-- For nonzero regular left invariant measures, the integral of a continuous nonnegative function
187
+ `f` is 0 iff `f` is 0. -/
188
+ -- @[ to_additive ] (fails for now)
189
+ lemma lintegral_eq_zero_of_is_mul_left_invariant (hμ : regular μ)
190
+ (h2μ : is_mul_left_invariant μ) (h3μ : μ ≠ 0 ) {f : G → ennreal} (hf : continuous f) :
191
+ ∫⁻ x, f x ∂μ = 0 ↔ f = 0 :=
192
+ begin
193
+ split, swap, { rintro rfl, simp_rw [pi.zero_apply, lintegral_zero] },
194
+ intro h, contrapose h,
195
+ simp_rw [funext_iff, not_forall, pi.zero_apply] at h, cases h with x hx,
196
+ obtain ⟨r, h1r, h2r⟩ : ∃ r : ennreal, 0 < r ∧ r < f x :=
197
+ exists_between (pos_iff_ne_zero.mpr hx),
198
+ have h3r := hf.is_open_preimage (Ioi r) is_open_Ioi,
199
+ let s := Ioi r,
200
+ rw [← ne.def, ← pos_iff_ne_zero],
201
+ have : 0 < r * μ (f ⁻¹' Ioi r),
202
+ { rw ennreal.mul_pos,
203
+ refine ⟨h1r, _⟩,
204
+ rw [pos_iff_ne_zero, h2μ.measure_ne_zero_iff_nonempty hμ h3μ h3r],
205
+ exact ⟨x, h2r⟩ },
206
+ refine this.trans_le _,
207
+ rw [← set_lintegral_const, ← lintegral_indicator _ h3r.is_measurable],
208
+ apply lintegral_mono,
209
+ refine indicator_le (λ y, le_of_lt),
210
+ end
112
211
113
- end conj
212
+ end group
114
213
115
214
end measure_theory
0 commit comments