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

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
⊢ sign (swap 0 4 * swap 1 3) = 1
state_after: no goals
tactic: decide
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
⊢ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩} = ⊤
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
⊢ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩} = ⊤
tactic: let g1 := (⟨swap 0 2 * swap 0 1, mem_alternatingGroup.2 (by decide)⟩ : alternatingGroup (Fin 5))
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
⊢ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩} = ⊤
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
⊢ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩} = ⊤
tactic: let g2 := (⟨swap 0 4 * swap 1 3, mem_alternatingGroup.2 (by decide)⟩ : alternatingGroup (Fin 5))
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
⊢ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩} = ⊤
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
⊢ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩} = ⊤
tactic: have h5 : g1 * g2 * g1⁻¹ * g2⁻¹ =
      ⟨finRotate 5, finRotate_bit1_mem_alternatingGroup (n := 2)⟩ := by
    rw [Subtype.ext_iff]
    simp only [Fin.val_mk, Subgroup.coe_mul, Subgroup.coe_inv, Fin.val_mk]
    decide
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
⊢ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩} = ⊤
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
⊢ normalClosure {⟨finRotate 5, ⋯⟩} ≤ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩}
tactic: rw [eq_top_iff, ← normalClosure_finRotate_five]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
⊢ normalClosure {⟨finRotate 5, ⋯⟩} ≤ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩}
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
⊢ {⟨finRotate 5, ⋯⟩} ⊆ ↑(normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩})
tactic: refine normalClosure_le_normal ?_
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
⊢ {⟨finRotate 5, ⋯⟩} ⊆ ↑(normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩})
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
⊢ g1 * g2 * g1⁻¹ * g2⁻¹ ∈ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩}
tactic: rw [Set.singleton_subset_iff, SetLike.mem_coe, ← h5]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
⊢ g1 * g2 * g1⁻¹ * g2⁻¹ ∈ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩}
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
h : g2 ∈ normalClosure {g2}
⊢ g1 * g2 * g1⁻¹ * g2⁻¹ ∈ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩}
tactic: have h : g2 ∈ normalClosure {g2} :=
    SetLike.mem_coe.1 (subset_normalClosure (Set.mem_singleton _))
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
g2 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 4 * swap 1 3, ⋯⟩
h5 : g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
h : g2 ∈ normalClosure {g2}
⊢ g1 * g2 * g1⁻¹ * g2⁻¹ ∈ normalClosure {⟨swap 0 4 * swap 1 3, ⋯⟩}
state_after: no goals
tactic: exact mul_mem (Subgroup.normalClosure_normal.conj_mem _ h g1) (inv_mem h)