Theorem: Equiv.Perm.isThreeCycle_sq_of_three_mem_cycleType_five
File: Mathlib/GroupTheory/SpecificGroups/Alternating.lean

tactic: obtain ⟨c, g', rfl, hd, _, h3⟩ := mem_cycleType_iff.1 h
state_before: α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
g : Perm (Fin 5)
h : 3 ∈ cycleType g
⊢ IsThreeCycle (g * g)

tactic: simp only [mul_assoc]
state_before: case intro.intro.intro.intro.intro
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
⊢ IsThreeCycle (c * g' * (c * g'))

tactic: rw [hd.commute.eq, ← mul_assoc g']
state_before: case intro.intro.intro.intro.intro
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
⊢ IsThreeCycle (c * (g' * (c * g')))

tactic: suffices hg' : orderOf g' ∣ 2
state_before: case intro.intro.intro.intro.intro
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
⊢ IsThreeCycle (c * (g' * g' * c))

tactic: rw [← lcm_cycleType, Multiset.lcm_dvd]
state_before: case hg'
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
⊢ orderOf g' ∣ 2

tactic: intro n hn
state_before: case hg'
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
⊢ ∀ (b : ℕ), b ∈ cycleType g' → b ∣ 2

tactic: rw [le_antisymm (two_le_of_mem_cycleType hn) (le_trans (le_card_support_of_mem_cycleType hn) _)]
state_before: case hg'
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
n : ℕ
hn : n ∈ cycleType g'
⊢ n ∣ 2

tactic: apply le_of_add_le_add_left
state_before: α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
n : ℕ
hn : n ∈ cycleType g'
⊢ Finset.card (support g') ≤ 2

tactic: rw [← hd.card_support_mul, h3]
state_before: case bc
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
n : ℕ
hn : n ∈ cycleType g'
⊢ ?a + Finset.card (support g') ≤ ?a + 2

case a
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
n : ℕ
hn : n ∈ cycleType g'
⊢ ℕ

tactic: exact (c * g').support.card_le_univ
state_before: case bc
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
n : ℕ
hn : n ∈ cycleType g'
⊢ Finset.card (support (c * g')) ≤ 3 + 2

tactic: rw [← pow_two, orderOf_dvd_iff_pow_eq_one.1 hg', one_mul]
state_before: case intro.intro.intro.intro.intro
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
hg' : orderOf g' ∣ 2
⊢ IsThreeCycle (c * (g' * g' * c))

tactic: exact (card_support_eq_three_iff.1 h3).isThreeCycle_sq
state_before: case intro.intro.intro.intro.intro
α : Type ?u.96658
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm (Fin 5)
h : 3 ∈ cycleType (c * g')
hd : Disjoint c g'
left✝ : IsCycle c
h3 : Finset.card (support c) = 3
hg' : orderOf g' ∣ 2
⊢ IsThreeCycle (c * c)