Theorem: Equiv.Perm.IsCycle.isConj
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: refine
  isConj_of_support_equiv
    (hσ.zpowersEquivSupport.symm.trans <|
      (zpowersEquivZPowers <| by rw [hσ.orderOf, h, hτ.orderOf]).trans hτ.zpowersEquivSupport)
    ?_
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
⊢ IsConj σ τ
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
⊢ ∀ (x : α) (hx : x ∈ ↑σ.support),
    ↑((hσ.zpowersEquivSupport.symm.trans ((zpowersEquivZPowers ⋯).trans hτ.zpowersEquivSupport)) ⟨σ x, ⋯⟩) =
      τ ↑((hσ.zpowersEquivSupport.symm.trans ((zpowersEquivZPowers ⋯).trans hτ.zpowersEquivSupport)) ⟨x, hx⟩)

tactic: intro x hx
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
⊢ ∀ (x : α) (hx : x ∈ ↑σ.support),
    ↑((hσ.zpowersEquivSupport.symm.trans ((zpowersEquivZPowers ⋯).trans hτ.zpowersEquivSupport)) ⟨σ x, ⋯⟩) =
      τ ↑((hσ.zpowersEquivSupport.symm.trans ((zpowersEquivZPowers ⋯).trans hτ.zpowersEquivSupport)) ⟨x, hx⟩)
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
x : α
hx : x ∈ ↑σ.support
⊢ ↑((hσ.zpowersEquivSupport.symm.trans ((zpowersEquivZPowers ⋯).trans hτ.zpowersEquivSupport)) ⟨σ x, ⋯⟩) =
    τ ↑((hσ.zpowersEquivSupport.symm.trans ((zpowersEquivZPowers ⋯).trans hτ.zpowersEquivSupport)) ⟨x, hx⟩)

tactic: simp only [Perm.mul_apply, Equiv.trans_apply, Equiv.sumCongr_apply]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
x : α
hx : x ∈ ↑σ.support
⊢ ↑((hσ.zpowersEquivSupport.symm.trans ((zpowersEquivZPowers ⋯).trans hτ.zpowersEquivSupport)) ⟨σ x, ⋯⟩) =
    τ ↑((hσ.zpowersEquivSupport.symm.trans ((zpowersEquivZPowers ⋯).trans hτ.zpowersEquivSupport)) ⟨x, hx⟩)
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
x : α
hx : x ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨σ x, ⋯⟩))) =
    τ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨x, hx⟩)))

tactic: obtain ⟨n, rfl⟩ := hσ.exists_pow_eq (Classical.choose_spec hσ).1 (mem_support.1 hx)
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
x : α
hx : x ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨σ x, ⋯⟩))) =
    τ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨x, hx⟩)))
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport
        ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨σ ((σ ^ n) (Classical.choose hσ)), ⋯⟩))) =
    τ
      ↑(hτ.zpowersEquivSupport
          ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨(σ ^ n) (Classical.choose hσ), hx⟩)))

tactic: erw [hσ.zpowersEquivSupport_symm_apply n]
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport
        ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨σ ((σ ^ n) (Classical.choose hσ)), ⋯⟩))) =
    τ
      ↑(hτ.zpowersEquivSupport
          ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨(σ ^ n) (Classical.choose hσ), hx⟩)))
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport
        ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨σ ((σ ^ n) (Classical.choose hσ)), ⋯⟩))) =
    τ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) ⟨σ ^ n, ⋯⟩))

tactic: simp only [← Perm.mul_apply, ← pow_succ']
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport
        ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨σ ((σ ^ n) (Classical.choose hσ)), ⋯⟩))) =
    τ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) ⟨σ ^ n, ⋯⟩))
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport
        ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨(σ ^ (n + 1)) (Classical.choose hσ), ⋯⟩))) =
    τ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) ⟨σ ^ n, ⋯⟩))

tactic: erw [hσ.zpowersEquivSupport_symm_apply (n + 1)]
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport
        ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨(σ ^ (n + 1)) (Classical.choose hσ), ⋯⟩))) =
    τ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) ⟨σ ^ n, ⋯⟩))
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) ⟨σ ^ (n + 1), ⋯⟩)) =
    τ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) ⟨σ ^ n, ⋯⟩))

tactic: erw [zpowersEquivZPowers_apply, zpowersEquivZPowers_apply, zpowersEquivSupport_apply]
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) ⟨σ ^ (n + 1), ⋯⟩)) =
    τ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) ⟨σ ^ n, ⋯⟩))
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑⟨(τ ^ (n + 1)) (Classical.choose hτ), ⋯⟩ = τ ↑(hτ.zpowersEquivSupport ⟨τ ^ n, ⋯⟩)

tactic: simp_rw [pow_succ', Perm.mul_apply]
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ ↑⟨(τ ^ (n + 1)) (Classical.choose hτ), ⋯⟩ = τ ↑(hτ.zpowersEquivSupport ⟨τ ^ n, ⋯⟩)
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ τ ((τ ^ n) (Classical.choose hτ)) = τ ↑(hτ.zpowersEquivSupport ⟨τ ^ n, ⋯⟩)

tactic: rfl
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
n : ℕ
hx : (σ ^ n) (Classical.choose hσ) ∈ ↑σ.support
⊢ τ ((τ ^ n) (Classical.choose hτ)) = τ ↑(hτ.zpowersEquivSupport ⟨τ ^ n, ⋯⟩)
state_after: no goals

tactic: rw [hσ.orderOf, h, hτ.orderOf]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hσ : σ.IsCycle
hτ : τ.IsCycle
h : σ.support.card = τ.support.card
⊢ orderOf σ = orderOf τ
state_after: no goals