Skip to content

Commit 7f19636

Browse files
committed
chore: factor out a lemma from the proof of Steinhaus theorem (#9907)
Given a measure in a locally compact group, and a compact set `k`, then for `g` close enough to the identity, the set `g • k \ k` has arbitrarily small measure. A slightly weaker version of this fact is used implicitly in our current proof of Steinhaus theorem that `E - E` is a neighborhood of the identity if `E` has positive measure. Since I will need this lemma later on, I extract it from the proof of Steinhaus theorem in this PR.
1 parent cb8ebaf commit 7f19636

2 files changed

Lines changed: 51 additions & 26 deletions

File tree

Mathlib/MeasureTheory/Group/Measure.lean

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,32 @@ theorem regular_inv_iff : μ.inv.Regular ↔ μ.Regular :=
580580
theorem innerRegular_inv_iff : μ.inv.InnerRegular ↔ μ.InnerRegular :=
581581
InnerRegular.map_iff (Homeomorph.inv G)
582582

583+
/-- Continuity of the measure of translates of a compact set: Given a compact set `k` in a
584+
topological group, for `g` close enough to the origin, `μ (g • k \ k)` is arbitrarily small. -/
585+
@[to_additive]
586+
lemma exists_nhds_measure_smul_diff_lt [LocallyCompactSpace G]
587+
[IsFiniteMeasureOnCompacts μ] [InnerRegularCompactLTTop μ] {k : Set G}
588+
(hk : IsCompact k) (h'k : IsClosed k) {ε : ℝ≥0∞} (hε : ε ≠ 0) :
589+
∃ V ∈ 𝓝 (1 : G), ∀ g ∈ V, μ (g • k \ k) < ε := by
590+
obtain ⟨δ, δpos, δε⟩ : ∃ δ, 0 < δ ∧ δ < ε := DenselyOrdered.dense 0 ε hε.bot_lt
591+
obtain ⟨U, hUk, hU, hμUk⟩ : ∃ (U : Set G), k ⊆ U ∧ IsOpen U ∧ μ U < μ k + δ :=
592+
hk.exists_isOpen_lt_add δpos.ne'
593+
obtain ⟨V, hV1, hVkU⟩ : ∃ V ∈ 𝓝 (1 : G), V * k ⊆ U := compact_open_separated_mul_left hk hU hUk
594+
refine ⟨V, hV1, fun g hg ↦ ?_⟩
595+
calc
596+
μ (g • k \ k)
597+
_ ≤ μ (U \ k) := by
598+
refine measure_mono (diff_subset_diff_left ?_)
599+
exact (smul_set_subset_smul hg).trans hVkU
600+
_ = μ U - μ k := by
601+
rw [measure_diff _ h'k.measurableSet hk.measure_lt_top.ne]
602+
calc k = (1 : G) • k := by simp
603+
_ ⊆ V • k := smul_set_subset_smul (mem_of_mem_nhds hV1)
604+
_ ⊆ U := hVkU
605+
_ ≤ (μ k + δ ) - μ k := by gcongr
606+
_ = δ := ENNReal.add_sub_cancel_left hk.measure_lt_top.ne
607+
_ < ε := δε
608+
583609
variable [IsMulLeftInvariant μ]
584610

585611
/-- If a left-invariant measure gives positive mass to a compact set, then it gives positive mass to
@@ -756,6 +782,16 @@ lemma _root_.IsCompact.measure_closure_eq_of_group {k : Set G} (hk : IsCompact k
756782
μ (closure k) = μ k := by
757783
rw [← hk.mul_closure_one_eq_closure, measure_mul_closure_one]
758784

785+
@[to_additive]
786+
lemma innerRegularWRT_isCompact_isClosed_measure_ne_top_of_group [LocallyCompactSpace G]
787+
[h : InnerRegularCompactLTTop μ] :
788+
InnerRegularWRT μ (fun s ↦ IsCompact s ∧ IsClosed s) (fun s ↦ MeasurableSet s ∧ μ s ≠ ∞) := by
789+
intro s ⟨s_meas, μs⟩ r hr
790+
rcases h.innerRegular ⟨s_meas, μs⟩ r hr with ⟨K, Ks, K_comp, hK⟩
791+
refine ⟨closure K, ?_, ⟨K_comp.closure, isClosed_closure⟩, ?_⟩
792+
· exact IsCompact.closure_subset_of_measurableSet_of_group K_comp s_meas Ks
793+
· rwa [K_comp.measure_closure_eq_of_group]
794+
759795
end TopologicalGroup
760796

761797
section CommSemigroup

Mathlib/MeasureTheory/Measure/Haar/Basic.lean

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,8 @@ but `E / E` does not contain a neighborhood of zero. On the other hand, it is al
702702
inner regular Haar measures (and in particular for any Haar measure on a second countable group).
703703
-/
704704

705+
open Pointwise
706+
705707
/-- **Steinhaus Theorem** In any locally compact group `G` with an inner regular Haar measure `μ`,
706708
for any measurable set `E` of positive measure, the set `E / E` is a neighbourhood of `1`. -/
707709
@[to_additive
@@ -711,42 +713,29 @@ theorem div_mem_nhds_one_of_haar_pos (μ : Measure G) [IsHaarMeasure μ] [Locall
711713
[InnerRegular μ] (E : Set G) (hE : MeasurableSet E) (hEpos : 0 < μ E) :
712714
E / E ∈ 𝓝 (1 : G) := by
713715
/- For any inner regular measure `μ` and set `E` of positive measure, we can find a compact
714-
set `K` of positive measure inside `E`. Further, there exists an open
715-
set `U` containing `K` with measure arbitrarily close to `K` (here `μ U < 2 * μ K` suffices).
716-
Then, we can pick an open neighborhood of `1`, say `V` such that such that `V * K` is
717-
contained in `U`. Now note that for any `v` in `V`, the sets `K` and `{v} * K` can not be
718-
disjoint because they are both of measure `μ K` (since `μ` is left invariant) and also
719-
contained in `U`, yet we have that `μ U < 2 * μ K`. This show that `K / K` contains the
720-
neighborhood `V` of `1`, and therefore that it is itself such a neighborhood. -/
716+
set `K` of positive measure inside `E`. Further, there exists a neighborhood `V` of the
717+
identity such that `v • K \ K` has small measure for all `v ∈ V`, say `< μ K`.
718+
Then `v • K` and `K` can not be disjoint, as otherwise `μ (v • K \ K) = μ (v • K) = μ K`.
719+
This show that `K / K` contains the neighborhood `V` of `1`, and therefore that it is
720+
itself such a neighborhood. -/
721721
obtain ⟨K, hKE, hK, K_closed, hKpos⟩ :
722722
∃ (K : Set G), K ⊆ E ∧ IsCompact K ∧ IsClosed K ∧ 0 < μ K := by
723723
rcases MeasurableSet.exists_lt_isCompact hE hEpos with ⟨K, KE, K_comp, K_meas⟩
724724
refine ⟨closure K, ?_, K_comp.closure, isClosed_closure, ?_⟩
725725
· exact IsCompact.closure_subset_of_measurableSet_of_group K_comp hE KE
726726
· rwa [K_comp.measure_closure_eq_of_group]
727-
obtain ⟨U, hUK, hU, hμUK⟩ : ∃ (U : Set G), K ⊆ U ∧ IsOpen U ∧ μ U < μ K + μ K :=
728-
hK.exists_isOpen_lt_add hKpos.ne'
729-
obtain ⟨V, hV1, hVKU⟩ : ∃ V ∈ 𝓝 (1 : G), V * K ⊆ U :=
730-
compact_open_separated_mul_left hK hU hUK
731-
have hv : ∀ v : G, v ∈ V → ¬Disjoint ({v} * K) K := by
727+
obtain ⟨V, hV1, hV⟩ : ∃ V ∈ 𝓝 (1 : G), ∀ g ∈ V, μ (g • K \ K) < μ K :=
728+
exists_nhds_measure_smul_diff_lt hK K_closed hKpos.ne'
729+
have hv : ∀ v : G, v ∈ V → ¬Disjoint (v • K) K := by
732730
intro v hv hKv
733-
have hKvsub : {v} * K ∪ K ⊆ U := by
734-
apply Set.union_subset _ hUK
735-
apply _root_.subset_trans _ hVKU
736-
apply Set.mul_subset_mul _ (Set.Subset.refl K)
737-
simp only [Set.singleton_subset_iff, hv]
738-
replace hKvsub := @measure_mono _ _ μ _ _ hKvsub
739-
have hcontr := lt_of_le_of_lt hKvsub hμUK
740-
rw [measure_union hKv K_closed.measurableSet] at hcontr
741-
have hKtranslate : μ ({v} * K) = μ K := by
742-
simp only [singleton_mul, image_mul_left, measure_preimage_mul]
743-
rw [hKtranslate, lt_self_iff_false] at hcontr
744-
assumption
731+
have Z := hV v hv
732+
rw [hKv.symm.sdiff_eq_right, measure_smul] at Z
733+
exact lt_irrefl _ Z
745734
suffices V ⊆ E / E from Filter.mem_of_superset hV1 this
746735
intro v hvV
747-
obtain ⟨x, hxK, hxvK⟩ : ∃ x : G, x ∈ {v} * K ∧ x ∈ K := Set.not_disjoint_iff.1 (hv v hvV)
736+
obtain ⟨x, hxK, hxvK⟩ : ∃ x : G, x ∈ v • K ∧ x ∈ K := Set.not_disjoint_iff.1 (hv v hvV)
748737
refine ⟨x, hKE hxvK, v⁻¹ * x, hKE ?_, ?_⟩
749-
· simpa only [singleton_mul, image_mul_left, mem_preimage] using hxK
738+
· simpa [mem_smul_set_iff_inv_smul_mem] using hxK
750739
· simp only [div_eq_iff_eq_mul, ← mul_assoc, mul_right_inv, one_mul]
751740
#align measure_theory.measure.div_mem_nhds_one_of_haar_pos MeasureTheory.Measure.div_mem_nhds_one_of_haar_pos
752741
#align measure_theory.measure.sub_mem_nhds_zero_of_add_haar_pos MeasureTheory.Measure.sub_mem_nhds_zero_of_addHaar_pos

0 commit comments

Comments
 (0)