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

tactic: apply Subgroup.map_injective hf
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ comap f H.normalizer = (comap f H).normalizer
state_after: case a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ map f (comap f H.normalizer) = map f (comap f H).normalizer

tactic: rw [map_comap_eq_self h]
state_before: case a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ map f (comap f H.normalizer) = map f (comap f H).normalizer
state_after: case a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ H.normalizer = map f (comap f H).normalizer

tactic: apply le_antisymm
state_before: case a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ H.normalizer = map f (comap f H).normalizer
state_after: case a.a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ H.normalizer ≤ map f (comap f H).normalizer

case a.a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ map f (comap f H).normalizer ≤ H.normalizer

tactic: refine le_trans (le_of_eq ?_) (map_mono (le_normalizer_comap _))
state_before: case a.a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ H.normalizer ≤ map f (comap f H).normalizer
state_after: case a.a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ H.normalizer = map f (comap f H.normalizer)

tactic: rw [map_comap_eq_self h]
state_before: case a.a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ H.normalizer = map f (comap f H.normalizer)
state_after: no goals

tactic: refine le_trans (le_normalizer_map f) (le_of_eq ?_)
state_before: case a.a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ map f (comap f H).normalizer ≤ H.normalizer
state_after: case a.a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ (map f (comap f H)).normalizer = H.normalizer

tactic: rw [map_comap_eq_self (le_trans le_normalizer h)]
state_before: case a.a
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✝
N : Type u_6
inst✝ : Group N
H : Subgroup G
f : N →* G
hf : Injective ⇑f
h : H.normalizer ≤ f.range
⊢ (map f (comap f H)).normalizer = H.normalizer
state_after: no goals