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

Proof steps:
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: 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
⊢ ∀ (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: 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 ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨σ x, ⋯⟩))) =
    τ ↑(hτ.zpowersEquivSupport ((zpowersEquivZPowers ⋯) (hσ.zpowersEquivSupport.symm ⟨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 ((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: obtain ⟨n, rfl⟩ := hσ.exists_pow_eq (Classical.choose_spec hσ).1 (mem_support.1 hx)
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: 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 ⋯) ⟨σ ^ 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: 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 + 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 [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 ⋯) ⟨σ ^ (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: 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
⊢ ↑⟨(τ ^ (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: 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) (Classical.choose hτ)) = τ ↑(hτ.zpowersEquivSupport ⟨τ ^ n, ⋯⟩)
state_after: no goals
tactic: rfl