Theorem: alternatingGroup.normalClosure_finRotate_five
File: Mathlib/GroupTheory/SpecificGroups/Alternating.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
⊢ ⊤ ≤ normalClosure {⟨finRotate 5, ⋯⟩}
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
⊢ ⊤ ≤ normalClosure {⟨finRotate 5, ⋯⟩}
tactic: have h3 :
        IsThreeCycle (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹) :=
        card_support_eq_three_iff.1 (by decide)
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
⊢ ⊤ ≤ normalClosure {⟨finRotate 5, ⋯⟩}
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
⊢ normalClosure {⟨Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹, ⋯⟩} ≤
    normalClosure {⟨finRotate 5, ⋯⟩}
tactic: rw [← h3.alternating_normalClosure (by rw [card_fin])]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
⊢ normalClosure {⟨Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹, ⋯⟩} ≤
    normalClosure {⟨finRotate 5, ⋯⟩}
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
⊢ {⟨Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹, ⋯⟩} ⊆ ↑(normalClosure {⟨finRotate 5, ⋯⟩})
tactic: refine normalClosure_le_normal ?_
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
⊢ {⟨Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹, ⋯⟩} ⊆ ↑(normalClosure {⟨finRotate 5, ⋯⟩})
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
⊢ ⟨Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹, ⋯⟩ ∈ normalClosure {⟨finRotate 5, ⋯⟩}
tactic: rw [Set.singleton_subset_iff, SetLike.mem_coe]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
⊢ ⟨Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹, ⋯⟩ ∈ normalClosure {⟨finRotate 5, ⋯⟩}
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
h : ⟨finRotate 5, ⋯⟩ ∈ normalClosure {⟨finRotate 5, ⋯⟩}
⊢ ⟨Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹, ⋯⟩ ∈ normalClosure {⟨finRotate 5, ⋯⟩}
tactic: have h :
        (⟨finRotate 5, finRotate_bit1_mem_alternatingGroup (n := 2)⟩ : alternatingGroup (Fin 5)) ∈
          normalClosure _ :=
        SetLike.mem_coe.1 (subset_normalClosure (Set.mem_singleton _))
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : (Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹).IsThreeCycle
h : ⟨finRotate 5, ⋯⟩ ∈ normalClosure {⟨finRotate 5, ⋯⟩}
⊢ ⟨Fin.cycleRange 2 * finRotate 5 * (Fin.cycleRange 2)⁻¹ * (finRotate 5)⁻¹, ⋯⟩ ∈ normalClosure {⟨finRotate 5, ⋯⟩}
state_after: no goals
tactic: exact (mul_mem (Subgroup.normalClosure_normal.conj_mem _ h
        -- Porting note: added `: _`
        ⟨Fin.cycleRange 2, Fin.isThreeCycle_cycleRange_two.mem_alternatingGroup⟩) (inv_mem h) : _)