Theorem: Equiv.Perm.IsThreeCycle.alternating_normalClosure
File: Mathlib/GroupTheory/SpecificGroups/Alternating.lean

tactic: have hi : Function.Injective (alternatingGroup α).subtype := Subtype.coe_injective
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
⊢ ⊤ ≤ normalClosure {⟨f, ⋯⟩}
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
⊢ ⊤ ≤ normalClosure {⟨f, ⋯⟩}

tactic: refine eq_top_iff.1 (map_injective hi (le_antisymm (map_mono le_top) ?_))
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
⊢ ⊤ ≤ normalClosure {⟨f, ⋯⟩}
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
⊢ map (alternatingGroup α).subtype ⊤ ≤ map (alternatingGroup α).subtype (normalClosure {⟨f, ⋯⟩})

tactic: rw [← MonoidHom.range_eq_map, subtype_range, normalClosure, MonoidHom.map_closure]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
⊢ map (alternatingGroup α).subtype ⊤ ≤ map (alternatingGroup α).subtype (normalClosure {⟨f, ⋯⟩})
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
⊢ alternatingGroup α ≤ closure (⇑(alternatingGroup α).subtype '' Group.conjugatesOfSet {⟨f, ⋯⟩})

tactic: refine (le_of_eq closure_three_cycles_eq_alternating.symm).trans (closure_mono ?_)
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
⊢ alternatingGroup α ≤ closure (⇑(alternatingGroup α).subtype '' Group.conjugatesOfSet {⟨f, ⋯⟩})
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
⊢ {σ | σ.IsThreeCycle} ⊆ ⇑(alternatingGroup α).subtype '' Group.conjugatesOfSet {⟨f, ⋯⟩}

tactic: intro g h
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
⊢ {σ | σ.IsThreeCycle} ⊆ ⇑(alternatingGroup α).subtype '' Group.conjugatesOfSet {⟨f, ⋯⟩}
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
g : Perm α
h : g ∈ {σ | σ.IsThreeCycle}
⊢ g ∈ ⇑(alternatingGroup α).subtype '' Group.conjugatesOfSet {⟨f, ⋯⟩}

tactic: obtain ⟨c, rfl⟩ := isConj_iff.1 (isConj_iff_cycleType_eq.2 (hf.trans h.symm))
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
g : Perm α
h : g ∈ {σ | σ.IsThreeCycle}
⊢ g ∈ ⇑(alternatingGroup α).subtype '' Group.conjugatesOfSet {⟨f, ⋯⟩}
state_after: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
c : Perm α
h : c * f * c⁻¹ ∈ {σ | σ.IsThreeCycle}
⊢ c * f * c⁻¹ ∈ ⇑(alternatingGroup α).subtype '' Group.conjugatesOfSet {⟨f, ⋯⟩}

tactic: refine ⟨⟨c * f * c⁻¹, h.mem_alternatingGroup⟩, ?_, rfl⟩
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
c : Perm α
h : c * f * c⁻¹ ∈ {σ | σ.IsThreeCycle}
⊢ c * f * c⁻¹ ∈ ⇑(alternatingGroup α).subtype '' Group.conjugatesOfSet {⟨f, ⋯⟩}
state_after: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
c : Perm α
h : c * f * c⁻¹ ∈ {σ | σ.IsThreeCycle}
⊢ ⟨c * f * c⁻¹, ⋯⟩ ∈ Group.conjugatesOfSet {⟨f, ⋯⟩}

tactic: rw [Group.mem_conjugatesOfSet_iff]
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
c : Perm α
h : c * f * c⁻¹ ∈ {σ | σ.IsThreeCycle}
⊢ ⟨c * f * c⁻¹, ⋯⟩ ∈ Group.conjugatesOfSet {⟨f, ⋯⟩}
state_after: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
c : Perm α
h : c * f * c⁻¹ ∈ {σ | σ.IsThreeCycle}
⊢ ∃ a ∈ {⟨f, ⋯⟩}, IsConj a ⟨c * f * c⁻¹, ⋯⟩

tactic: exact ⟨⟨f, hf.mem_alternatingGroup⟩, Set.mem_singleton _, isThreeCycle_isConj h5 hf h⟩
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : f.IsThreeCycle
hi : Function.Injective ⇑(alternatingGroup α).subtype
c : Perm α
h : c * f * c⁻¹ ∈ {σ | σ.IsThreeCycle}
⊢ ∃ a ∈ {⟨f, ⋯⟩}, IsConj a ⟨c * f * c⁻¹, ⋯⟩
state_after: no goals