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 : IsThreeCycle f
⊢ ⊤ ≤ normalClosure {{ val := f, property := (_ : f ∈ alternatingGroup α) }}

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 : IsThreeCycle f
hi : Function.Injective ↑(Subgroup.subtype (alternatingGroup α))
⊢ ⊤ ≤ normalClosure {{ val := f, property := (_ : f ∈ alternatingGroup α) }}

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 : IsThreeCycle f
hi : Function.Injective ↑(Subgroup.subtype (alternatingGroup α))
⊢ map (Subgroup.subtype (alternatingGroup α)) ⊤ ≤
    map (Subgroup.subtype (alternatingGroup α)) (normalClosure {{ val := f, property := (_ : f ∈ alternatingGroup α) }})

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 : IsThreeCycle f
hi : Function.Injective ↑(Subgroup.subtype (alternatingGroup α))
⊢ alternatingGroup α ≤
    closure
      (↑(Subgroup.subtype (alternatingGroup α)) ''
        Group.conjugatesOfSet {{ val := f, property := (_ : f ∈ alternatingGroup α) }})

tactic: intro g h
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : IsThreeCycle f
hi : Function.Injective ↑(Subgroup.subtype (alternatingGroup α))
⊢ {σ | IsThreeCycle σ} ⊆
    ↑(Subgroup.subtype (alternatingGroup α)) ''
      Group.conjugatesOfSet {{ val := f, property := (_ : f ∈ alternatingGroup α) }}

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 : IsThreeCycle f
hi : Function.Injective ↑(Subgroup.subtype (alternatingGroup α))
g : Perm α
h : g ∈ {σ | IsThreeCycle σ}
⊢ g ∈
    ↑(Subgroup.subtype (alternatingGroup α)) ''
      Group.conjugatesOfSet {{ val := f, property := (_ : f ∈ alternatingGroup α) }}

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 : IsThreeCycle f
hi : Function.Injective ↑(Subgroup.subtype (alternatingGroup α))
c : Perm α
h : c * f * c⁻¹ ∈ {σ | IsThreeCycle σ}
⊢ c * f * c⁻¹ ∈
    ↑(Subgroup.subtype (alternatingGroup α)) ''
      Group.conjugatesOfSet {{ val := f, property := (_ : f ∈ alternatingGroup α) }}

tactic: rw [Group.mem_conjugatesOfSet_iff]
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h5 : 5 ≤ card α
f : Perm α
hf : IsThreeCycle f
hi : Function.Injective ↑(Subgroup.subtype (alternatingGroup α))
c : Perm α
h : c * f * c⁻¹ ∈ {σ | IsThreeCycle σ}
⊢ { val := c * f * c⁻¹, property := (_ : c * f * c⁻¹ ∈ alternatingGroup α) } ∈
    Group.conjugatesOfSet {{ val := f, property := (_ : f ∈ alternatingGroup α) }}

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 : IsThreeCycle f
hi : Function.Injective ↑(Subgroup.subtype (alternatingGroup α))
c : Perm α
h : c * f * c⁻¹ ∈ {σ | IsThreeCycle σ}
⊢ ∃ a,
    a ∈ {{ val := f, property := (_ : f ∈ alternatingGroup α) }} ∧
      IsConj a { val := c * f * c⁻¹, property := (_ : c * f * c⁻¹ ∈ alternatingGroup α) }