Theorem: Equiv.Perm.cycleType_of_card_le_mem_cycleType_add_two
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: obtain ⟨c, g', rfl, hd, hc, rfl⟩ := mem_cycleType_iff.1 hng
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
n : ℕ
g : Perm α
hn2 : Fintype.card α < n + 2
hng : n ∈ g.cycleType
⊢ g.cycleType = {n}
state_after: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hn2 : Fintype.card α < c.support.card + 2
hng : c.support.card ∈ (c * g').cycleType
⊢ (c * g').cycleType = {c.support.card}

tactic: suffices g'1 : g' = 1 by
  rw [hd.cycleType, hc.cycleType, coe_singleton, g'1, cycleType_one, add_zero]
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hn2 : Fintype.card α < c.support.card + 2
hng : c.support.card ∈ (c * g').cycleType
⊢ (c * g').cycleType = {c.support.card}
state_after: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hn2 : Fintype.card α < c.support.card + 2
hng : c.support.card ∈ (c * g').cycleType
⊢ g' = 1

tactic: contrapose! hn2 with g'1
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hn2 : Fintype.card α < c.support.card + 2
hng : c.support.card ∈ (c * g').cycleType
⊢ g' = 1
state_after: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hng : c.support.card ∈ (c * g').cycleType
g'1 : g' ≠ 1
⊢ c.support.card + 2 ≤ Fintype.card α

tactic: apply le_trans _ (c * g').support.card_le_univ
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hng : c.support.card ∈ (c * g').cycleType
g'1 : g' ≠ 1
⊢ c.support.card + 2 ≤ Fintype.card α
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hng : c.support.card ∈ (c * g').cycleType
g'1 : g' ≠ 1
⊢ c.support.card + 2 ≤ (c * g').support.card

tactic: rw [hd.card_support_mul]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hng : c.support.card ∈ (c * g').cycleType
g'1 : g' ≠ 1
⊢ c.support.card + 2 ≤ (c * g').support.card
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hng : c.support.card ∈ (c * g').cycleType
g'1 : g' ≠ 1
⊢ c.support.card + 2 ≤ c.support.card + g'.support.card

tactic: exact add_le_add_left (two_le_card_support_of_ne_one g'1) _
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hng : c.support.card ∈ (c * g').cycleType
g'1 : g' ≠ 1
⊢ c.support.card + 2 ≤ c.support.card + g'.support.card
state_after: no goals

tactic: rw [hd.cycleType, hc.cycleType, coe_singleton, g'1, cycleType_one, add_zero]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
c g' : Perm α
hd : c.Disjoint g'
hc : c.IsCycle
hn2 : Fintype.card α < c.support.card + 2
hng : c.support.card ∈ (c * g').cycleType
g'1 : g' = 1
⊢ (c * g').cycleType = {c.support.card}
state_after: no goals