/-- **Steinhaus Theorem** In any locally compact group `G` with an inner regular Haar measure `μ`,
for any measurable set `E` of positive measure, the set `E / E` is a neighbourhood of `1`. -/
@[to_additive
"**Steinhaus Theorem** In any locally compact group `G` with an inner regular Haar measure `μ`,
for any measurable set `E` of positive measure, the set `E - E` is a neighbourhood of `0`."]
theorem div_mem_nhds_one_of_haar_pos (μ : Measure G) [IsHaarMeasure μ] [LocallyCompactSpace G]
    [InnerRegular μ] (E : Set G) (hE : MeasurableSet E) (hEpos : 0 < μ E) :
    E / E ∈ 𝓝 (1 : G) := by
  /- For any inner regular measure `μ` and set `E` of positive measure, we can find a compact
       set `K` of positive measure inside `E`. Further, there exists an open
       set `U` containing `K` with measure arbitrarily close to `K` (here `μ U < 2 * μ K` suffices).
       Then, we can pick an open neighborhood of `1`, say `V` such that such that `V * K` is
       contained in `U`. Now note that for any `v` in `V`, the sets `K` and `{v} * K` can not be
       disjoint because they are both of measure `μ K` (since `μ` is left invariant) and also
       contained in `U`, yet we have that `μ U < 2 * μ K`. This show that `K / K` contains the
       neighborhood `V` of `1`, and therefore that it is itself such a neighborhood. -/
  obtain ⟨K, hKE, hK, K_closed, hKpos⟩ :
      ∃ (K : Set G), K ⊆ E ∧ IsCompact K ∧ IsClosed K ∧ 0 < μ K := by
    rcases MeasurableSet.exists_lt_isCompact hE hEpos with ⟨K, KE, K_comp, K_meas⟩
    refine ⟨closure K, ?_, K_comp.closure, isClosed_closure, ?_⟩
    · exact IsCompact.closure_subset_of_measurableSet_of_group K_comp hE KE
    · rwa [K_comp.measure_closure_eq_of_group]
  obtain ⟨U, hUK, hU, hμUK⟩ : ∃ (U : Set G), K ⊆ U ∧ IsOpen U ∧ μ U < μ K + μ K :=
    hK.exists_isOpen_lt_add hKpos.ne'
  obtain ⟨V, hV1, hVKU⟩ : ∃ V ∈ 𝓝 (1 : G), V * K ⊆ U :=
    compact_open_separated_mul_left hK hU hUK
  have hv : ∀ v : G, v ∈ V → ¬Disjoint ({v} * K) K := by
    intro v hv hKv
    have hKvsub : {v} * K ∪ K ⊆ U := by
      apply Set.union_subset _ hUK
      apply _root_.subset_trans _ hVKU
      apply Set.mul_subset_mul _ (Set.Subset.refl K)
      simp only [Set.singleton_subset_iff, hv]
    replace hKvsub := @measure_mono _ _ μ _ _ hKvsub
    have hcontr := lt_of_le_of_lt hKvsub hμUK
    rw [measure_union hKv K_closed.measurableSet] at hcontr
    have hKtranslate : μ ({v} * K) = μ K := by
      simp only [singleton_mul, image_mul_left, measure_preimage_mul]
    rw [hKtranslate, lt_self_iff_false] at hcontr
    assumption
  

Proof state:
case intro.intro.intro.intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝⁸ : Group G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : T2Space G
inst✝⁵ : TopologicalGroup G
inst✝⁴ : MeasurableSpace G
inst✝³ : BorelSpace G
μ : Measure G
inst✝² : IsHaarMeasure μ
inst✝¹ : LocallyCompactSpace G
inst✝ : InnerRegular μ
E : Set G
hE : MeasurableSet E
hEpos : 0 < ↑↑μ E
K : Set G
hKE : K ⊆ E
hK : IsCompact K
K_closed : IsClosed K
hKpos : 0 < ↑↑μ K
U : Set G
hUK : K ⊆ U
hU : IsOpen U
hμUK : ↑↑μ U < ↑↑μ K + ↑↑μ K
V : Set G
hV1 : V ∈ 𝓝 1
hVKU : V * K ⊆ U
hv : ∀ v ∈ V, ¬Disjoint ({v} * K) K
⊢ E / E ∈ 𝓝 1

Next tactic:
suffices V ⊆ E / E from Filter.mem_of_superset hV1 this