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

tactic: decide
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
⊢ sign (swap 0 4 * swap 1 3) = 1
state_after: no goals

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 α
⊢ 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 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, ⋯⟩
⊢ 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: 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, ⋯⟩
⊢ 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: 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 {⟨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: 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, ⋯⟩
⊢ 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: 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, ⋯⟩
⊢ {⟨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: 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, ⋯⟩
⊢ 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: exact mul_mem (Subgroup.normalClosure_normal.conj_mem _ h g1) (inv_mem h)
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: decide
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
⊢ sign (swap 0 2 * swap 0 1) = 1
state_after: no goals

tactic: decide
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g1 : ↥(alternatingGroup (Fin 5)) := ⟨swap 0 2 * swap 0 1, ⋯⟩
⊢ sign (swap 0 4 * swap 1 3) = 1
state_after: no goals

tactic: rw [Subtype.ext_iff]
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, ⋯⟩
⊢ g1 * g2 * g1⁻¹ * g2⁻¹ = ⟨finRotate 5, ⋯⟩
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, ⋯⟩
⊢ ↑(g1 * g2 * g1⁻¹ * g2⁻¹) = ↑⟨finRotate 5, ⋯⟩

tactic: simp only [Fin.val_mk, Subgroup.coe_mul, Subgroup.coe_inv, Fin.val_mk]
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, ⋯⟩
⊢ ↑(g1 * g2 * g1⁻¹ * g2⁻¹) = ↑⟨finRotate 5, ⋯⟩
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, ⋯⟩
⊢ swap 0 2 * swap 0 1 * (swap 0 4 * swap 1 3) * (swap 0 2 * swap 0 1)⁻¹ * (swap 0 4 * swap 1 3)⁻¹ = finRotate 5

tactic: 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, ⋯⟩
⊢ swap 0 2 * swap 0 1 * (swap 0 4 * swap 1 3) * (swap 0 2 * swap 0 1)⁻¹ * (swap 0 4 * swap 1 3)⁻¹ = finRotate 5
state_after: no goals