@@ -702,6 +702,8 @@ but `E / E` does not contain a neighborhood of zero. On the other hand, it is al
702702inner 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 `μ`,
706708for 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