Theorem: AddSubgroup.map_equiv_normalizer_eq
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
⊢ map f.toMonoidHom H.normalizer = (map f.toMonoidHom H).normalizer
state_after: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
⊢ x ∈ map f.toMonoidHom H.normalizer ↔ x ∈ (map f.toMonoidHom H).normalizer
tactic: ext x
state_before: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
⊢ x ∈ map f.toMonoidHom H.normalizer ↔ x ∈ (map f.toMonoidHom H).normalizer
state_after: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
⊢ (∀ (h : G), h ∈ H ↔ f.symm x * h * (f.symm x)⁻¹ ∈ H) ↔ ∀ (h : N), f.symm h ∈ H ↔ f.symm (x * h * x⁻¹) ∈ H
tactic: simp only [mem_normalizer_iff, mem_map_equiv]
state_before: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
⊢ (∀ (h : G), h ∈ H ↔ f.symm x * h * (f.symm x)⁻¹ ∈ H) ↔ ∀ (h : N), f.symm h ∈ H ↔ f.symm (x * h * x⁻¹) ∈ H
state_after: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
⊢ ∀ (a : G), (a ∈ H ↔ f.symm x * a * (f.symm x)⁻¹ ∈ H) ↔ (f.symm (f.toEquiv a) ∈ H ↔ f.symm (x * f.toEquiv a * x⁻¹) ∈ H)
tactic: rw [f.toEquiv.forall_congr]
state_before: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
⊢ ∀ (a : G), (a ∈ H ↔ f.symm x * a * (f.symm x)⁻¹ ∈ H) ↔ (f.symm (f.toEquiv a) ∈ H ↔ f.symm (x * f.toEquiv a * x⁻¹) ∈ H)
state_after: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
a✝ : G
⊢ (a✝ ∈ H ↔ f.symm x * a✝ * (f.symm x)⁻¹ ∈ H) ↔ (f.symm (f.toEquiv a✝) ∈ H ↔ f.symm (x * f.toEquiv a✝ * x⁻¹) ∈ H)
tactic: intro
state_before: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
a✝ : G
⊢ (a✝ ∈ H ↔ f.symm x * a✝ * (f.symm x)⁻¹ ∈ H) ↔ (f.symm (f.toEquiv a✝) ∈ H ↔ f.symm (x * f.toEquiv a✝ * x⁻¹) ∈ H)
state_after: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
a✝ : G
⊢ (a✝ ∈ H ↔ f.symm x * a✝ * (f.symm x)⁻¹ ∈ H) ↔ (a✝ ∈ H ↔ f.symm (x * f.toEquiv a✝ * x⁻¹) ∈ H)
tactic: erw [f.toEquiv.symm_apply_apply]
state_before: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
a✝ : G
⊢ (a✝ ∈ H ↔ f.symm x * a✝ * (f.symm x)⁻¹ ∈ H) ↔ (a✝ ∈ H ↔ f.symm (x * f.toEquiv a✝ * x⁻¹) ∈ H)
state_after: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
a✝ : G
⊢ (a✝ ∈ H ↔ f.symm x * a✝ * (f.symm x)⁻¹ ∈ H) ↔ (a✝ ∈ H ↔ f.symm x * f.symm (f.toEquiv a✝) * (f.symm x)⁻¹ ∈ H)
tactic: simp only [map_mul, map_inv]
state_before: case h
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
N : Type u_5
inst✝ : Group N
f✝ : G →* N
H : Subgroup G
f : G ≃* N
x : N
a✝ : G
⊢ (a✝ ∈ H ↔ f.symm x * a✝ * (f.symm x)⁻¹ ∈ H) ↔ (a✝ ∈ H ↔ f.symm x * f.symm (f.toEquiv a✝) * (f.symm x)⁻¹ ∈ H)
state_after: no goals
tactic: erw [f.toEquiv.symm_apply_apply]