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

tactic: refine Subset.antisymm ?_ (subset_mul_closure_one tᶜ)
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
⊢ tᶜ * closure {1} = tᶜ
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
⊢ tᶜ * closure {1} ⊆ tᶜ

tactic: rintro - ⟨x, hx, g, hg, rfl⟩
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
⊢ tᶜ * closure {1} ⊆ tᶜ
state_after: case intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ closure {1}
⊢ (fun x x_1 => x * x_1) x g ∈ tᶜ

tactic: by_contra H
state_before: case intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ closure {1}
⊢ (fun x x_1 => x * x_1) x g ∈ tᶜ
state_after: case intro.intro.intro.intro
G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ closure {1}
H : (fun x x_1 => x * x_1) x g ∉ tᶜ
⊢ False

tactic: have : x ∈ t * (closure {1} : Set G) := by
  rw [← Subgroup.coe_topologicalClosure_bot G] at hg ⊢
  simp only [smul_eq_mul, mem_compl_iff, not_not] at H
  exact ⟨x * g, H, g⁻¹, Subgroup.inv_mem _ hg, by simp⟩
state_before: case intro.intro.intro.intro
G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ closure {1}
H : (fun x x_1 => x * x_1) x g ∉ tᶜ
⊢ False
state_after: case intro.intro.intro.intro
G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ closure {1}
H : (fun x x_1 => x * x_1) x g ∉ tᶜ
this : x ∈ t * closure {1}
⊢ False

tactic: rw [ht] at this
state_before: case intro.intro.intro.intro
G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ closure {1}
H : (fun x x_1 => x * x_1) x g ∉ tᶜ
this : x ∈ t * closure {1}
⊢ False
state_after: case intro.intro.intro.intro
G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ closure {1}
H : (fun x x_1 => x * x_1) x g ∉ tᶜ
this : x ∈ t
⊢ False

tactic: exact hx this
state_before: case intro.intro.intro.intro
G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ closure {1}
H : (fun x x_1 => x * x_1) x g ∉ tᶜ
this : x ∈ t
⊢ False
state_after: no goals

tactic: rw [← Subgroup.coe_topologicalClosure_bot G] at hg ⊢
state_before: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ closure {1}
H : (fun x x_1 => x * x_1) x g ∉ tᶜ
⊢ x ∈ t * closure {1}
state_after: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ ↑⊥.topologicalClosure
H : (fun x x_1 => x * x_1) x g ∉ tᶜ
⊢ x ∈ t * ↑⊥.topologicalClosure

tactic: simp only [smul_eq_mul, mem_compl_iff, not_not] at H
state_before: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ ↑⊥.topologicalClosure
H : (fun x x_1 => x * x_1) x g ∉ tᶜ
⊢ x ∈ t * ↑⊥.topologicalClosure
state_after: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ ↑⊥.topologicalClosure
H : x * g ∈ t
⊢ x ∈ t * ↑⊥.topologicalClosure

tactic: exact ⟨x * g, H, g⁻¹, Subgroup.inv_mem _ hg, by simp⟩
state_before: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ ↑⊥.topologicalClosure
H : x * g ∈ t
⊢ x ∈ t * ↑⊥.topologicalClosure
state_after: no goals

tactic: simp
state_before: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ t : Set G
ht : t * closure {1} = t
x : G
hx : x ∈ tᶜ
g : G
hg : g ∈ ↑⊥.topologicalClosure
H : x * g ∈ t
⊢ (fun x x_1 => x * x_1) (x * g) g⁻¹ = x
state_after: no goals