Theorem: Equiv.Perm.SameCycle.toList_isRotated
File: Mathlib/GroupTheory/Perm/Cycle/Concrete.lean

tactic: by_cases hx : x ∈ f.support
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
⊢ f.toList x ~r f.toList y
state_after: case pos
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
⊢ f.toList x ~r f.toList y

case neg
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∉ f.support
⊢ f.toList x ~r f.toList y

tactic: obtain ⟨_ | k, _, hy⟩ := h.exists_pow_eq_of_mem_support hx
state_before: case pos
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
⊢ f.toList x ~r f.toList y
state_after: case pos.intro.zero.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
left✝ : 0 < (f.cycleOf x).support.card
hy : (f ^ 0) x = y
⊢ f.toList x ~r f.toList y

case pos.intro.succ.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
k : ℕ
left✝ : k + 1 < (f.cycleOf x).support.card
hy : (f ^ (k + 1)) x = y
⊢ f.toList x ~r f.toList y

tactic: use k.succ
state_before: case pos.intro.succ.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
k : ℕ
left✝ : k + 1 < (f.cycleOf x).support.card
hy : (f ^ (k + 1)) x = y
⊢ f.toList x ~r f.toList y
state_after: case h
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
k : ℕ
left✝ : k + 1 < (f.cycleOf x).support.card
hy : (f ^ (k + 1)) x = y
⊢ (f.toList x).rotate k.succ = f.toList y

tactic: rw [← toList_pow_apply_eq_rotate, hy]
state_before: case h
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
k : ℕ
left✝ : k + 1 < (f.cycleOf x).support.card
hy : (f ^ (k + 1)) x = y
⊢ (f.toList x).rotate k.succ = f.toList y
state_after: no goals

tactic: simp only [coe_one, id, pow_zero, Nat.zero_eq] at hy
state_before: case pos.intro.zero.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
left✝ : 0 < (f.cycleOf x).support.card
hy : (f ^ 0) x = y
⊢ f.toList x ~r f.toList y
state_after: case pos.intro.zero.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
left✝ : 0 < (f.cycleOf x).support.card
hy : x = y
⊢ f.toList x ~r f.toList y

tactic: simp [hy, IsRotated.refl]
state_before: case pos.intro.zero.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∈ f.support
left✝ : 0 < (f.cycleOf x).support.card
hy : x = y
⊢ f.toList x ~r f.toList y
state_after: no goals

tactic: rw [toList_eq_nil_iff.mpr hx, isRotated_nil_iff', eq_comm, toList_eq_nil_iff]
state_before: case neg
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∉ f.support
⊢ f.toList x ~r f.toList y
state_after: case neg
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∉ f.support
⊢ y ∉ f.support

tactic: rwa [← h.mem_support_iff]
state_before: case neg
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ : α
f : Perm α
x y : α
h : f.SameCycle x y
hx : x ∉ f.support
⊢ y ∉ f.support
state_after: no goals