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

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha : g ∈ alternatingGroup (Fin 5)
h1 : g ≠ 1
h2 : ∀ n ∈ g.cycleType, n = 2
⊢ IsConj (swap 0 4 * swap 1 3) g
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha : g ∈ alternatingGroup (Fin 5)
h1 : g ≠ 1
h2 : ∀ n ∈ g.cycleType, n = 2
h : g.support.card ≤ card (Fin 5)
⊢ IsConj (swap 0 4 * swap 1 3) g
tactic: have h := g.support.card_le_univ
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha : g ∈ alternatingGroup (Fin 5)
h1 : g ≠ 1
h2 : ∀ n ∈ g.cycleType, n = 2
h : g.support.card ≤ card (Fin 5)
⊢ IsConj (swap 0 4 * swap 1 3) g
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha : g ∈ alternatingGroup (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h : g.support.card ≤ card (Fin 5)
⊢ IsConj (swap 0 4 * swap 1 3) g
tactic: rw [← Multiset.eq_replicate_card] at h2
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha : g ∈ alternatingGroup (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h : g.support.card ≤ card (Fin 5)
⊢ IsConj (swap 0 4 * swap 1 3) g
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha : g ∈ alternatingGroup (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
⊢ IsConj (swap 0 4 * swap 1 3) g
tactic: rw [← sum_cycleType, h2, Multiset.sum_replicate, smul_eq_mul] at h
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha : g ∈ alternatingGroup (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
⊢ IsConj (swap 0 4 * swap 1 3) g
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha : g ∈ alternatingGroup (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
⊢ IsConj (swap 0 4 * swap 1 3) g
tactic: have h : Multiset.card g.cycleType ≤ 3 :=
    le_of_mul_le_mul_right (le_trans h (by simp only [card_fin]; ring_nf; decide)) (by simp)
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha : g ∈ alternatingGroup (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
⊢ IsConj (swap 0 4 * swap 1 3) g
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha :
  (-1) ^
      ((Multiset.replicate (Multiset.card g.cycleType) 2).sum +
        Multiset.card (Multiset.replicate (Multiset.card g.cycleType) 2)) =
    1
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
⊢ IsConj (swap 0 4 * swap 1 3) g
tactic: rw [mem_alternatingGroup, sign_of_cycleType, h2] at ha
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
ha :
  (-1) ^
      ((Multiset.replicate (Multiset.card g.cycleType) 2).sum +
        Multiset.card (Multiset.replicate (Multiset.card g.cycleType) 2)) =
    1
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
⊢ IsConj (swap 0 4 * swap 1 3) g
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : (-1) ^ (Multiset.card g.cycleType * 2 + Multiset.card g.cycleType) = 1
⊢ IsConj (swap 0 4 * swap 1 3) g
tactic: norm_num at ha
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : (-1) ^ (Multiset.card g.cycleType * 2 + Multiset.card g.cycleType) = 1
⊢ IsConj (swap 0 4 * swap 1 3) g
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : Even (Multiset.card g.cycleType)
⊢ IsConj (swap 0 4 * swap 1 3) g

α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : (-1) ^ Multiset.card g.cycleType = 1
⊢ -1 ≠ 1
tactic: rw [pow_add, pow_mul, Int.units_pow_two, one_mul, neg_one_pow_eq_one_iff_even] at ha
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : Even (Multiset.card g.cycleType)
⊢ IsConj (swap 0 4 * swap 1 3) g

α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : (-1) ^ Multiset.card g.cycleType = 1
⊢ -1 ≠ 1
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : (-1) ^ Multiset.card g.cycleType = 1
⊢ -1 ≠ 1

α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : Even (Multiset.card g.cycleType)
⊢ IsConj (swap 0 4 * swap 1 3) g
tactic: swap
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : Even (Multiset.card g.cycleType)
⊢ IsConj (swap 0 4 * swap 1 3) g
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : Even (Multiset.card g.cycleType)
⊢ (swap 0 4 * swap 1 3).cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
tactic: rw [isConj_iff_cycleType_eq, h2]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h2 : g.cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
h✝ : Multiset.card g.cycleType * 2 ≤ card (Fin 5)
h : Multiset.card g.cycleType ≤ 3
ha : Even (Multiset.card g.cycleType)
⊢ (swap 0 4 * swap 1 3).cycleType = Multiset.replicate (Multiset.card g.cycleType) 2
state_after: case «0»
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h_1 : Multiset.card g.cycleType = 0
h2 : g.cycleType = Multiset.replicate 0 2
h✝ : 0 * 2 ≤ card (Fin 5)
h : 0 ≤ 3
ha : Even 0
⊢ (swap 0 4 * swap 1 3).cycleType = Multiset.replicate 0 2

case «1»
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h_1 : Multiset.card g.cycleType = 1
h2 : g.cycleType = Multiset.replicate 1 2
h✝ : 1 * 2 ≤ card (Fin 5)
h : 1 ≤ 3
ha : Even 1
⊢ (swap 0 4 * swap 1 3).cycleType = Multiset.replicate 1 2

case «2»
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h_1 : Multiset.card g.cycleType = 2
h2 : g.cycleType = Multiset.replicate 2 2
h✝ : 2 * 2 ≤ card (Fin 5)
h : 2 ≤ 3
ha : Even 2
⊢ (swap 0 4 * swap 1 3).cycleType = Multiset.replicate 2 2

case «3»
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h1 : g ≠ 1
h_1 : Multiset.card g.cycleType = 3
h2 : g.cycleType = Multiset.replicate 3 2
h✝ : 3 * 2 ≤ card (Fin 5)
h : 3 ≤ 3
ha : Even 3
⊢ (swap 0 4 * swap 1 3).cycleType = Multiset.replicate 3 2
tactic: interval_cases h_1 : Multiset.card g.cycleType