Theorem: local_isCompact_isClosed_nhds_of_group
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: obtain ⟨L, Lint, LU, Lcomp⟩ : ∃ (L : Set G), L ∈ 𝓝 (1 : G) ∧ L ⊆ U ∧ IsCompact L :=
  local_compact_nhds hU
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
⊢ ∃ K, IsCompact K ∧ IsClosed K ∧ K ⊆ U ∧ 1 ∈ interior K

tactic: obtain ⟨V, Vnhds, hV⟩ : ∃ V ∈ 𝓝 (1 : G), ∀ v ∈ V, ∀ w ∈ V, v * w ∈ L := by
  have : (fun p : G × G => p.1 * p.2) ⁻¹' L ∈ 𝓝 ((1, 1) : G × G) := by
    refine' continuousAt_fst.mul continuousAt_snd _
    simpa only [mul_one] using Lint
  simpa only [div_eq_mul_inv, nhds_prod_eq, mem_prod_self_iff, prod_subset_iff, mem_preimage]
    using this
state_before: case intro.intro.intro
α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
⊢ ∃ K, IsCompact K ∧ IsClosed K ∧ K ⊆ U ∧ 1 ∈ interior K

tactic: have VL : closure V ⊆ L :=
  calc
    closure V = {(1 : G)} * closure V := by simp only [singleton_mul, one_mul, image_id']
    _ ⊆ interior V * closure V :=
      mul_subset_mul_right
        (by simpa only [singleton_subset_iff] using mem_interior_iff_mem_nhds.2 Vnhds)
    _ = interior V * V := isOpen_interior.mul_closure _
    _ ⊆ V * V := mul_subset_mul_right interior_subset
    _ ⊆ L := by
      rintro x ⟨y, z, yv, zv, rfl⟩
      exact hV _ yv _ zv
state_before: case intro.intro.intro.intro.intro
α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
V : Set G
Vnhds : V ∈ 𝓝 1
hV : ∀ (v : G), v ∈ V → ∀ (w : G), w ∈ V → v * w ∈ L
⊢ ∃ K, IsCompact K ∧ IsClosed K ∧ K ⊆ U ∧ 1 ∈ interior K

tactic: exact
  ⟨closure V, isCompact_of_isClosed_subset Lcomp isClosed_closure VL, isClosed_closure,
    VL.trans LU, interior_mono subset_closure (mem_interior_iff_mem_nhds.2 Vnhds)⟩
state_before: case intro.intro.intro.intro.intro
α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
V : Set G
Vnhds : V ∈ 𝓝 1
hV : ∀ (v : G), v ∈ V → ∀ (w : G), w ∈ V → v * w ∈ L
VL : closure V ⊆ L
⊢ ∃ K, IsCompact K ∧ IsClosed K ∧ K ⊆ U ∧ 1 ∈ interior K

tactic: have : (fun p : G × G => p.1 * p.2) ⁻¹' L ∈ 𝓝 ((1, 1) : G × G) := by
  refine' continuousAt_fst.mul continuousAt_snd _
  simpa only [mul_one] using Lint
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
⊢ ∃ V, V ∈ 𝓝 1 ∧ ∀ (v : G), v ∈ V → ∀ (w : G), w ∈ V → v * w ∈ L

tactic: simpa only [div_eq_mul_inv, nhds_prod_eq, mem_prod_self_iff, prod_subset_iff, mem_preimage]
  using this
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
this : (fun p => p.fst * p.snd) ⁻¹' L ∈ 𝓝 (1, 1)
⊢ ∃ V, V ∈ 𝓝 1 ∧ ∀ (v : G), v ∈ V → ∀ (w : G), w ∈ V → v * w ∈ L

tactic: refine' continuousAt_fst.mul continuousAt_snd _
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
⊢ (fun p => p.fst * p.snd) ⁻¹' L ∈ 𝓝 (1, 1)

tactic: simpa only [mul_one] using Lint
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
⊢ L ∈ 𝓝 ((fun x => x.fst * x.snd) (1, 1))

tactic: simp only [singleton_mul, one_mul, image_id']
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
V : Set G
Vnhds : V ∈ 𝓝 1
hV : ∀ (v : G), v ∈ V → ∀ (w : G), w ∈ V → v * w ∈ L
⊢ closure V = {1} * closure V

tactic: simpa only [singleton_subset_iff] using mem_interior_iff_mem_nhds.2 Vnhds
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
V : Set G
Vnhds : V ∈ 𝓝 1
hV : ∀ (v : G), v ∈ V → ∀ (w : G), w ∈ V → v * w ∈ L
⊢ {1} ⊆ interior V

tactic: rintro x ⟨y, z, yv, zv, rfl⟩
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
V : Set G
Vnhds : V ∈ 𝓝 1
hV : ∀ (v : G), v ∈ V → ∀ (w : G), w ∈ V → v * w ∈ L
⊢ V * V ⊆ L

tactic: exact hV _ yv _ zv
state_before: case intro.intro.intro.intro
α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : LocallyCompactSpace G
U : Set G
hU : U ∈ 𝓝 1
L : Set G
Lint : L ∈ 𝓝 1
LU : L ⊆ U
Lcomp : IsCompact L
V : Set G
Vnhds : V ∈ 𝓝 1
hV : ∀ (v : G), v ∈ V → ∀ (w : G), w ∈ V → v * w ∈ L
y z : G
yv : y ∈ V
zv : z ∈ V
⊢ (fun x x_1 => x * x_1) y z ∈ L