Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit f80c18b

Browse files
committed
feat(measure_theory/measure/haar_lebesgue): Lebesgue measure of the image of a set under a linear map (#11038)
The image of a set `s` under a linear map `f` has measure equal to `μ s` times the absolute value of the determinant of `f`.
1 parent aa66909 commit f80c18b

File tree

1 file changed

+168
-5
lines changed

1 file changed

+168
-5
lines changed

src/measure_theory/measure/haar_lebesgue.lean

Lines changed: 168 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ We prove that the Haar measure and Lebesgue measure are equal on `ℝ` and on `
1717
We deduce basic properties of any Haar measure on a finite dimensional real vector space:
1818
* `map_linear_map_add_haar_eq_smul_add_haar`: a linear map rescales the Haar measure by the
1919
absolute value of its determinant.
20+
* `add_haar_preimage_linear_map` : when `f` is a linear map with nonzero determinant, the measure
21+
of `f ⁻¹' s` is the measure of `s` multiplied by the absolute value of the inverse of the
22+
determinant of `f`.
23+
* `add_haar_image_linear_map` : when `f` is a linear map, the measure of `f '' s` is the
24+
measure of `s` multiplied by the absolute value of the determinant of `f`.
25+
* `add_haar_submodule` : a strict submodule has measure `0`.
2026
* `add_haar_smul` : the measure of `r • s` is `|r| ^ dim * μ s`.
2127
* `add_haar_ball`: the measure of `ball x r` is `r ^ dim * μ (ball 0 1)`.
2228
* `add_haar_closed_ball`: the measure of `closed_ball x r` is `r ^ dim * μ (ball 0 1)`.
@@ -84,6 +90,89 @@ by { rw ← add_haar_measure_eq_volume_pi, apply_instance }
8490

8591
namespace measure
8692

93+
/-!
94+
### Strict subspaces have zero measure
95+
-/
96+
97+
/-- If a set is disjoint of its translates by infinitely many bounded vectors, then it has measure
98+
zero. This auxiliary lemma proves this assuming additionally that the set is bounded. -/
99+
lemma add_haar_eq_zero_of_disjoint_translates_aux
100+
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
101+
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
102+
{s : set E} (u : ℕ → E) (sb : bounded s) (hu : bounded (range u))
103+
(hs : pairwise (disjoint on (λ n, {u n} + s))) (h's : measurable_set s) :
104+
μ s = 0 :=
105+
begin
106+
by_contra h,
107+
apply lt_irrefl ∞,
108+
calc
109+
∞ = ∑' (n : ℕ), μ s : (ennreal.tsum_const_eq_top_of_ne_zero h).symm
110+
... = ∑' (n : ℕ), μ ({u n} + s) :
111+
by { congr' 1, ext1 n, simp only [image_add_left, add_haar_preimage_add, singleton_add] }
112+
... = μ (⋃ n, {u n} + s) :
113+
by rw measure_Union hs
114+
(λ n, by simpa only [image_add_left, singleton_add] using measurable_id.const_add _ h's)
115+
... = μ (range u + s) : by rw [← Union_add, Union_singleton_eq_range]
116+
... < ∞ : bounded.measure_lt_top (hu.add sb)
117+
end
118+
119+
/-- If a set is disjoint of its translates by infinitely many bounded vectors, then it has measure
120+
zero. -/
121+
lemma add_haar_eq_zero_of_disjoint_translates
122+
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
123+
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
124+
{s : set E} (u : ℕ → E) (hu : bounded (range u))
125+
(hs : pairwise (disjoint on (λ n, {u n} + s))) (h's : measurable_set s) :
126+
μ s = 0 :=
127+
begin
128+
suffices H : ∀ R, μ (s ∩ closed_ball 0 R) = 0,
129+
{ apply le_antisymm _ (zero_le _),
130+
have : s ⊆ ⋃ (n : ℕ), s ∩ closed_ball 0 n,
131+
{ assume x hx,
132+
obtain ⟨n, hn⟩ : ∃ (n : ℕ), ∥x∥ ≤ n := exists_nat_ge (∥x∥),
133+
exact mem_Union.2 ⟨n, ⟨hx, mem_closed_ball_zero_iff.2 hn⟩⟩ },
134+
calc μ s ≤ μ (⋃ (n : ℕ), s ∩ closed_ball 0 n) : measure_mono this
135+
... ≤ ∑' (n : ℕ), μ (s ∩ closed_ball 0 n) : measure_Union_le _
136+
... = 0 : by simp only [H, tsum_zero] },
137+
assume R,
138+
apply add_haar_eq_zero_of_disjoint_translates_aux μ u
139+
(bounded.mono (inter_subset_right _ _) bounded_closed_ball) hu _
140+
(h's.inter (measurable_set_closed_ball)),
141+
rw ← pairwise_univ at ⊢ hs,
142+
apply pairwise_disjoint.mono hs (λ n, _),
143+
exact add_subset_add (subset.refl _) (inter_subset_left _ _)
144+
end
145+
146+
/-- A strict vector subspace has measure zero. -/
147+
lemma add_haar_submodule
148+
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
149+
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
150+
(s : submodule ℝ E) (hs : s ≠ ⊤) : μ s = 0 :=
151+
begin
152+
obtain ⟨x, hx⟩ : ∃ x, x ∉ s,
153+
by simpa only [submodule.eq_top_iff', not_exists, ne.def, not_forall] using hs,
154+
obtain ⟨c, cpos, cone⟩ : ∃ (c : ℝ), 0 < c ∧ c < 1 := ⟨1/2, by norm_num, by norm_num⟩,
155+
have A : bounded (range (λ (n : ℕ), (c ^ n) • x)),
156+
{ have : tendsto (λ (n : ℕ), (c ^ n) • x) at_top (𝓝 ((0 : ℝ) • x)) :=
157+
(tendsto_pow_at_top_nhds_0_of_lt_1 cpos.le cone).smul_const x,
158+
exact bounded_range_of_tendsto _ this },
159+
apply add_haar_eq_zero_of_disjoint_translates μ _ A _
160+
(submodule.closed_of_finite_dimensional s).measurable_set,
161+
assume m n hmn,
162+
simp only [function.on_fun, image_add_left, singleton_add, disjoint_left, mem_preimage,
163+
set_like.mem_coe],
164+
assume y hym hyn,
165+
have A : (c ^ n - c ^ m) • x ∈ s,
166+
{ convert s.sub_mem hym hyn,
167+
simp only [sub_smul, neg_sub_neg, add_sub_add_right_eq_sub] },
168+
have H : c ^ n - c ^ m ≠ 0,
169+
by simpa only [sub_eq_zero, ne.def] using (strict_anti_pow cpos cone).injective.ne hmn.symm,
170+
have : x ∈ s,
171+
{ convert s.smul_mem (c ^ n - c ^ m)⁻¹ A,
172+
rw [smul_smul, inv_mul_cancel H, one_smul] },
173+
exact hx this
174+
end
175+
87176
/-!
88177
### Applying a linear map rescales Haar measure by the determinant
89178
@@ -101,7 +190,7 @@ begin
101190
/- We have already proved the result for the Lebesgue product measure, using matrices.
102191
We deduce it for any Haar measure by uniqueness (up to scalar multiplication). -/
103192
have := add_haar_measure_unique (is_add_left_invariant_add_haar μ) (pi_Icc01 ι),
104-
conv_lhs { rw this }, conv_rhs { rw this },
193+
rw this,
105194
simp [add_haar_measure_eq_volume_pi, real.map_linear_map_volume_pi_eq_smul_volume_pi hf,
106195
smul_smul, mul_comm],
107196
end
@@ -113,7 +202,7 @@ lemma map_linear_map_add_haar_eq_smul_add_haar
113202
measure.map f μ = ennreal.of_real (abs (f.det)⁻¹) • μ :=
114203
begin
115204
-- we reduce to the case of `E = ι → ℝ`, for which we have already proved the result using
116-
-- matrices in `map_linear_map_haar_pi_eq_smul_haar`.
205+
-- matrices in `map_linear_map_add_haar_pi_eq_smul_add_haar`.
117206
let ι := fin (finrank ℝ E),
118207
haveI : finite_dimensional ℝ (ι → ℝ) := by apply_instance,
119208
have : finrank ℝ E = finrank ℝ (ι → ℝ), by simp,
@@ -139,7 +228,9 @@ begin
139228
map_map Cesymm.measurable Ce.measurable, ecomp, measure.map_id]
140229
end
141230

142-
@[simp] lemma haar_preimage_linear_map
231+
/-- The preimage of a set `s` under a linear map `f` with nonzero determinant has measure
232+
equal to `μ s` times the absolute value of the inverse of the determinant of `f`. -/
233+
@[simp] lemma add_haar_preimage_linear_map
143234
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
144235
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
145236
{f : E →ₗ[ℝ] E} (hf : f.det ≠ 0) (s : set E) :
@@ -150,6 +241,78 @@ calc μ (f ⁻¹' s) = measure.map f μ s :
150241
... = ennreal.of_real (abs (f.det)⁻¹) * μ s :
151242
by { rw map_linear_map_add_haar_eq_smul_add_haar μ hf, refl }
152243

244+
/-- The preimage of a set `s` under a continuous linear map `f` with nonzero determinant has measure
245+
equal to `μ s` times the absolute value of the inverse of the determinant of `f`. -/
246+
@[simp] lemma add_haar_preimage_continuous_linear_map
247+
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
248+
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
249+
{f : E →L[ℝ] E} (hf : linear_map.det (f : E →ₗ[ℝ] E) ≠ 0) (s : set E) :
250+
μ (f ⁻¹' s) = ennreal.of_real (abs (linear_map.det (f : E →ₗ[ℝ] E))⁻¹) * μ s :=
251+
add_haar_preimage_linear_map μ hf s
252+
253+
/-- The preimage of a set `s` under a linear equiv `f` has measure
254+
equal to `μ s` times the absolute value of the inverse of the determinant of `f`. -/
255+
@[simp] lemma add_haar_preimage_linear_equiv
256+
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
257+
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
258+
(f : E ≃ₗ[ℝ] E) (s : set E) :
259+
μ (f ⁻¹' s) = ennreal.of_real (abs (f.symm : E →ₗ[ℝ] E).det) * μ s :=
260+
begin
261+
have A : (f : E →ₗ[ℝ] E).det ≠ 0 := (linear_equiv.is_unit_det' f).ne_zero,
262+
convert add_haar_preimage_linear_map μ A s,
263+
simp only [linear_equiv.det_coe_symm]
264+
end
265+
266+
/-- The preimage of a set `s` under a continuous linear equiv `f` has measure
267+
equal to `μ s` times the absolute value of the inverse of the determinant of `f`. -/
268+
@[simp] lemma add_haar_preimage_continuous_linear_equiv
269+
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
270+
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
271+
(f : E ≃L[ℝ] E) (s : set E) :
272+
μ (f ⁻¹' s) = ennreal.of_real (abs (f.symm : E →ₗ[ℝ] E).det) * μ s :=
273+
add_haar_preimage_linear_equiv μ _ s
274+
275+
/-- The image of a set `s` under a linear map `f` has measure
276+
equal to `μ s` times the absolute value of the determinant of `f`. -/
277+
@[simp] lemma add_haar_image_linear_map
278+
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
279+
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
280+
(f : E →ₗ[ℝ] E) (s : set E) :
281+
μ (f '' s) = ennreal.of_real (abs f.det) * μ s :=
282+
begin
283+
rcases ne_or_eq f.det 0 with hf|hf,
284+
{ let g := (f.equiv_of_det_ne_zero hf).to_continuous_linear_equiv,
285+
change μ (g '' s) = _,
286+
rw [continuous_linear_equiv.image_eq_preimage g s, add_haar_preimage_continuous_linear_equiv],
287+
congr,
288+
ext x,
289+
simp only [linear_equiv.of_is_unit_det_apply, linear_equiv.to_continuous_linear_equiv_apply,
290+
continuous_linear_equiv.symm_symm, continuous_linear_equiv.coe_coe,
291+
continuous_linear_map.coe_coe, linear_equiv.to_fun_eq_coe, coe_coe] },
292+
{ simp only [hf, zero_mul, ennreal.of_real_zero, abs_zero],
293+
have : μ f.range = 0 :=
294+
add_haar_submodule μ _ (linear_map.range_lt_top_of_det_eq_zero hf).ne,
295+
exact le_antisymm (le_trans (measure_mono (image_subset_range _ _)) this.le) (zero_le _) }
296+
end
297+
298+
/-- The image of a set `s` under a continuous linear map `f` has measure
299+
equal to `μ s` times the absolute value of the determinant of `f`. -/
300+
@[simp] lemma add_haar_image_continuous_linear_map
301+
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
302+
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
303+
(f : E →L[ℝ] E) (s : set E) :
304+
μ (f '' s) = ennreal.of_real (abs (f : E →ₗ[ℝ] E).det) * μ s :=
305+
add_haar_image_linear_map μ _ s
306+
307+
/-- The image of a set `s` under a continuous linear equiv `f` has measure
308+
equal to `μ s` times the absolute value of the determinant of `f`. -/
309+
@[simp] lemma add_haar_image_continuous_linear_equiv
310+
{E : Type*} [normed_group E] [normed_space ℝ E] [measurable_space E] [borel_space E]
311+
[finite_dimensional ℝ E] (μ : measure E) [is_add_haar_measure μ]
312+
(f : E ≃L[ℝ] E) (s : set E) :
313+
μ (f '' s) = ennreal.of_real (abs (f : E →ₗ[ℝ] E).det) * μ s :=
314+
add_haar_image_linear_map μ _ s
315+
153316
/-!
154317
### Basic properties of Haar measures on real vector spaces
155318
-/
@@ -170,14 +333,14 @@ begin
170333
monoid_hom.map_one],
171334
end
172335

173-
lemma add_haar_preimage_smul {r : ℝ} (hr : r ≠ 0) (s : set E) :
336+
@[simp] lemma add_haar_preimage_smul {r : ℝ} (hr : r ≠ 0) (s : set E) :
174337
μ (((•) r) ⁻¹' s) = ennreal.of_real (abs (r ^ (finrank ℝ E))⁻¹) * μ s :=
175338
calc μ (((•) r) ⁻¹' s) = measure.map ((•) r) μ s :
176339
((homeomorph.smul (is_unit_iff_ne_zero.2 hr).unit).to_measurable_equiv.map_apply s).symm
177340
... = ennreal.of_real (abs (r^(finrank ℝ E))⁻¹) * μ s : by { rw map_add_haar_smul μ hr, refl }
178341

179342
/-- Rescaling a set by a factor `r` multiplies its measure by `abs (r ^ dim)`. -/
180-
lemma add_haar_smul (r : ℝ) (s : set E) :
343+
@[simp] lemma add_haar_smul (r : ℝ) (s : set E) :
181344
μ (r • s) = ennreal.of_real (abs (r ^ (finrank ℝ E))) * μ s :=
182345
begin
183346
rcases ne_or_eq r 0 with h|rfl,

0 commit comments

Comments
 (0)