Theorem: Subgroup.closure_closure_coe_preimage
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: refine closure_induction' (fun g hg => ?_) ?_ (fun g₁ g₂ hg₁ hg₂ => ?_) (fun g hg => ?_) hx
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
k✝ k : Set G
x✝¹ : { x // x ∈ ↑(closure k) }
x : G
hx : x ∈ ↑(closure k)
x✝ : ⟨x, hx⟩ ∈ ⊤
⊢ ⟨x, hx⟩ ∈ closure (Subtype.val ⁻¹' k)
state_after: case refine_1
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
k✝ k : Set G
x✝¹ : { x // x ∈ ↑(closure k) }
x : G
hx : x ∈ ↑(closure k)
x✝ : ⟨x, hx⟩ ∈ ⊤
g : G
hg : g ∈ k
⊢ ⟨g, ⋯⟩ ∈ closure (Subtype.val ⁻¹' k)

case refine_2
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
k✝ k : Set G
x✝¹ : { x // x ∈ ↑(closure k) }
x : G
hx : x ∈ ↑(closure k)
x✝ : ⟨x, hx⟩ ∈ ⊤
⊢ ⟨1, ⋯⟩ ∈ closure (Subtype.val ⁻¹' k)

case refine_3
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
k✝ k : Set G
x✝¹ : { x // x ∈ ↑(closure k) }
x : G
hx : x ∈ ↑(closure k)
x✝ : ⟨x, hx⟩ ∈ ⊤
g₁ : G
g₂ : g₁ ∈ closure k
hg₁ : G
hg₂ : hg₁ ∈ closure k
⊢ ⟨g₁, g₂⟩ ∈ closure (Subtype.val ⁻¹' k) →
    ⟨hg₁, hg₂⟩ ∈ closure (Subtype.val ⁻¹' k) → ⟨g₁ * hg₁, ⋯⟩ ∈ closure (Subtype.val ⁻¹' k)

case refine_4
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
k✝ k : Set G
x✝¹ : { x // x ∈ ↑(closure k) }
x : G
hx : x ∈ ↑(closure k)
x✝ : ⟨x, hx⟩ ∈ ⊤
g : G
hg : g ∈ closure k
⊢ ⟨g, hg⟩ ∈ closure (Subtype.val ⁻¹' k) → ⟨g⁻¹, ⋯⟩ ∈ closure (Subtype.val ⁻¹' k)

tactic: exact subset_closure hg
state_before: case refine_1
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
k✝ k : Set G
x✝¹ : { x // x ∈ ↑(closure k) }
x : G
hx : x ∈ ↑(closure k)
x✝ : ⟨x, hx⟩ ∈ ⊤
g : G
hg : g ∈ k
⊢ ⟨g, ⋯⟩ ∈ closure (Subtype.val ⁻¹' k)
state_after: no goals

tactic: exact one_mem _
state_before: case refine_2
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
k✝ k : Set G
x✝¹ : { x // x ∈ ↑(closure k) }
x : G
hx : x ∈ ↑(closure k)
x✝ : ⟨x, hx⟩ ∈ ⊤
⊢ ⟨1, ⋯⟩ ∈ closure (Subtype.val ⁻¹' k)
state_after: no goals

tactic: exact mul_mem
state_before: case refine_3
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
k✝ k : Set G
x✝¹ : { x // x ∈ ↑(closure k) }
x : G
hx : x ∈ ↑(closure k)
x✝ : ⟨x, hx⟩ ∈ ⊤
g₁ : G
g₂ : g₁ ∈ closure k
hg₁ : G
hg₂ : hg₁ ∈ closure k
⊢ ⟨g₁, g₂⟩ ∈ closure (Subtype.val ⁻¹' k) →
    ⟨hg₁, hg₂⟩ ∈ closure (Subtype.val ⁻¹' k) → ⟨g₁ * hg₁, ⋯⟩ ∈ closure (Subtype.val ⁻¹' k)
state_after: no goals

tactic: exact inv_mem
state_before: case refine_4
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
k✝ k : Set G
x✝¹ : { x // x ∈ ↑(closure k) }
x : G
hx : x ∈ ↑(closure k)
x✝ : ⟨x, hx⟩ ∈ ⊤
g : G
hg : g ∈ closure k
⊢ ⟨g, hg⟩ ∈ closure (Subtype.val ⁻¹' k) → ⟨g⁻¹, ⋯⟩ ∈ closure (Subtype.val ⁻¹' k)
state_after: no goals