Theorem: List.cycleType_formPerm
File: Mathlib/GroupTheory/Perm/Cycle/Concrete.lean

tactic: rw [← length_attach] at hn
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.Nodup
hn : 2 ≤ l.length
⊢ l.attach.formPerm.cycleType = {l.length}
state_after: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.Nodup
hn : 2 ≤ l.attach.length
⊢ l.attach.formPerm.cycleType = {l.length}

tactic: rw [← nodup_attach] at hl
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.Nodup
hn : 2 ≤ l.attach.length
⊢ l.attach.formPerm.cycleType = {l.length}
state_after: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ l.attach.formPerm.cycleType = {l.length}

tactic: rw [cycleType_eq [l.attach.formPerm]]
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ l.attach.formPerm.cycleType = {l.length}
state_after: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ↑(map (Finset.card ∘ support) [l.attach.formPerm]) = {l.length}

case h0
α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ [l.attach.formPerm].prod = l.attach.formPerm

case h1
α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ∀ σ ∈ [l.attach.formPerm], σ.IsCycle

case h2
α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ Pairwise Perm.Disjoint [l.attach.formPerm]

tactic: simp only [map, Function.comp_apply]
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ↑(map (Finset.card ∘ support) [l.attach.formPerm]) = {l.length}
state_after: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ↑[l.attach.formPerm.support.card] = {l.length}

tactic: rw [support_formPerm_of_nodup _ hl, card_toFinset, dedup_eq_self.mpr hl]
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ↑[l.attach.formPerm.support.card] = {l.length}
state_after: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ↑[l.attach.length] = {l.length}

α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ∀ (x : { x // x ∈ l }), l.attach ≠ [x]

tactic: simp
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ↑[l.attach.length] = {l.length}
state_after: no goals

tactic: intro x h
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ∀ (x : { x // x ∈ l }), l.attach ≠ [x]
state_after: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
x : { x // x ∈ l }
h : l.attach = [x]
⊢ False

tactic: simp [h, Nat.succ_le_succ_iff] at hn
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
x : { x // x ∈ l }
h : l.attach = [x]
⊢ False
state_after: no goals

tactic: simp
state_before: case h0
α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ [l.attach.formPerm].prod = l.attach.formPerm
state_after: no goals

tactic: simpa using isCycle_formPerm hl hn
state_before: case h1
α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ ∀ σ ∈ [l.attach.formPerm], σ.IsCycle
state_after: no goals

tactic: simp
state_before: case h2
α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.attach.Nodup
hn : 2 ≤ l.attach.length
⊢ Pairwise Perm.Disjoint [l.attach.formPerm]
state_after: no goals