Theorem: TopologicalGroup.t2Space_iff_one_closed
File: Mathlib/Topology/Algebra/UniformGroup.lean

tactic: haveI : UniformGroup G := comm_topologicalGroup_is_uniform
state_before: G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
⊢ T2Space G ↔ IsClosed {1}

tactic: rw [← separated_iff_t2, separatedSpace_iff, ← closure_eq_iff_isClosed]
state_before: G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
⊢ T2Space G ↔ IsClosed {1}

tactic: constructor <;> intro h
state_before: G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
⊢ 𝓢 G = idRel ↔ closure {1} = {1}

tactic: apply Subset.antisymm
state_before: case mp
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
h : 𝓢 G = idRel
⊢ closure {1} = {1}

tactic: intro x x_in
state_before: case mp.h₁
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
h : 𝓢 G = idRel
⊢ closure {1} ⊆ {1}

tactic: have := group_separationRel x 1
state_before: case mp.h₁
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
h : 𝓢 G = idRel
x : G
x_in : x ∈ closure {1}
⊢ x ∈ {1}

tactic: rw [div_one] at this
state_before: case mp.h₁
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this✝ : UniformGroup G
h : 𝓢 G = idRel
x : G
x_in : x ∈ closure {1}
this : (x, 1) ∈ 𝓢 G ↔ x / 1 ∈ closure {1}
⊢ x ∈ {1}

tactic: rw [← this, h] at x_in
state_before: case mp.h₁
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this✝ : UniformGroup G
h : 𝓢 G = idRel
x : G
x_in : x ∈ closure {1}
this : (x, 1) ∈ 𝓢 G ↔ x ∈ closure {1}
⊢ x ∈ {1}

tactic: rwa [mem_singleton_iff]
state_before: case mp.h₁
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this✝ : UniformGroup G
h : 𝓢 G = idRel
x : G
x_in : (x, 1) ∈ idRel
this : (x, 1) ∈ 𝓢 G ↔ x ∈ closure {1}
⊢ x ∈ {1}

tactic: exact subset_closure
state_before: case mp.h₂
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
h : 𝓢 G = idRel
⊢ {1} ⊆ closure {1}

tactic: ext p
state_before: case mpr
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
h : closure {1} = {1}
⊢ 𝓢 G = idRel

tactic: cases' p with x y
state_before: case mpr.h
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
h : closure {1} = {1}
p : G × G
⊢ p ∈ 𝓢 G ↔ p ∈ idRel

tactic: rw [group_separationRel x, h, mem_singleton_iff, div_eq_one]
state_before: case mpr.h.mk
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
h : closure {1} = {1}
x y : G
⊢ (x, y) ∈ 𝓢 G ↔ (x, y) ∈ idRel

tactic: rfl
state_before: case mpr.h.mk
G : Type u_1
inst✝² : CommGroup G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
this : UniformGroup G
h : closure {1} = {1}
x y : G
⊢ x = y ↔ (x, y) ∈ idRel