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.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
⊢ IsConj σ τ

tactic: intro x hx
state_before: ι : Type ?u.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
⊢ ∀ (x : α) (hx : x ∈ ↑(support σ)),
    ↑(↑((zpowersEquivSupport hσ).symm.trans
              ((zpowersEquivZpowers (_ : orderOf σ = orderOf τ)).trans (zpowersEquivSupport hτ)))
          { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) =
      ↑τ
        ↑(↑((zpowersEquivSupport hσ).symm.trans
                ((zpowersEquivZpowers (_ : orderOf σ = orderOf τ)).trans (zpowersEquivSupport hτ)))
            { val := x, property := hx })

tactic: simp only [Perm.mul_apply, Equiv.trans_apply, Equiv.sumCongr_apply]
state_before: ι : Type ?u.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
x : α
hx : x ∈ ↑(support σ)
⊢ ↑(↑((zpowersEquivSupport hσ).symm.trans
            ((zpowersEquivZpowers (_ : orderOf σ = orderOf τ)).trans (zpowersEquivSupport hτ)))
        { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) =
    ↑τ
      ↑(↑((zpowersEquivSupport hσ).symm.trans
              ((zpowersEquivZpowers (_ : orderOf σ = orderOf τ)).trans (zpowersEquivSupport hτ)))
          { val := x, property := hx })

tactic: obtain ⟨n, rfl⟩ := hσ.exists_pow_eq (Classical.choose_spec hσ).1 (mem_support.1 hx)
state_before: ι : Type ?u.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
x : α
hx : x ∈ ↑(support σ)
⊢ ↑(↑(zpowersEquivSupport hτ)
        (↑(zpowersEquivZpowers (_ : orderOf σ = orderOf τ))
          (↑(zpowersEquivSupport hσ).symm { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }))) =
    ↑τ
      ↑(↑(zpowersEquivSupport hτ)
          (↑(zpowersEquivZpowers (_ : orderOf σ = orderOf τ))
            (↑(zpowersEquivSupport hσ).symm { val := x, property := hx })))

tactic: apply
  Eq.trans _
    (congr rfl (congr rfl (congr rfl (congr rfl (hσ.zpowersEquivSupport_symm_apply n).symm))))
state_before: case intro
ι : Type ?u.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
n : ℕ
hx : ↑(σ ^ n) (Classical.choose hσ) ∈ ↑(support σ)
⊢ ↑(↑(zpowersEquivSupport hτ)
        (↑(zpowersEquivZpowers (_ : orderOf σ = orderOf τ))
          (↑(zpowersEquivSupport hσ).symm
            { val := ↑σ (↑(σ ^ n) (Classical.choose hσ)),
              property := (_ : ↑σ (↑(σ ^ n) (Classical.choose hσ)) ∈ support σ) }))) =
    ↑τ
      ↑(↑(zpowersEquivSupport hτ)
          (↑(zpowersEquivZpowers (_ : orderOf σ = orderOf τ))
            (↑(zpowersEquivSupport hσ).symm { val := ↑(σ ^ n) (Classical.choose hσ), property := hx })))

tactic: apply (congr rfl (congr rfl (congr rfl (hσ.zpowersEquivSupport_symm_apply (n + 1))))).trans _
state_before: ι : Type ?u.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
n : ℕ
hx : ↑(σ ^ n) (Classical.choose hσ) ∈ ↑(support σ)
⊢ ↑(↑(zpowersEquivSupport hτ)
        (↑(zpowersEquivZpowers (_ : orderOf σ = orderOf τ))
          (↑(zpowersEquivSupport hσ).symm
            { val := ↑σ (↑(σ ^ n) (Classical.choose hσ)),
              property := (_ : ↑σ (↑(σ ^ n) (Classical.choose hσ)) ∈ support σ) }))) =
    ↑τ
      ↑(↑(zpowersEquivSupport hτ)
          (↑(zpowersEquivZpowers (_ : orderOf σ = orderOf τ))
            { val := σ ^ n, property := (_ : ∃ y, (fun x x_1 => x ^ x_1) σ y = σ ^ n) }))

tactic: simp only [Ne.def, IsCycle.zpowersEquivSupport_apply, Subtype.coe_mk,
  zpowersEquivZpowers_apply]
state_before: ι : Type ?u.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
n : ℕ
hx : ↑(σ ^ n) (Classical.choose hσ) ∈ ↑(support σ)
⊢ ↑(↑(zpowersEquivSupport hτ)
        (↑(zpowersEquivZpowers (_ : orderOf σ = orderOf τ))
          { val := σ ^ (n + 1), property := (_ : ∃ y, (fun x x_1 => x ^ x_1) σ y = σ ^ (n + 1)) })) =
    ↑τ
      ↑(↑(zpowersEquivSupport hτ)
          (↑(zpowersEquivZpowers (_ : orderOf σ = orderOf τ))
            { val := σ ^ n, property := (_ : ∃ y, (fun x x_1 => x ^ x_1) σ y = σ ^ n) }))

tactic: dsimp
state_before: ι : Type ?u.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
n : ℕ
hx : ↑(σ ^ n) (Classical.choose hσ) ∈ ↑(support σ)
⊢ ↑(↑(zpowersEquivSupport hτ) { val := τ ^ (n + 1), property := (_ : ∃ y, (fun x x_1 => x ^ x_1) τ y = τ ^ (n + 1)) }) =
    ↑τ ↑(↑(zpowersEquivSupport hτ) { val := τ ^ n, property := (_ : ∃ y, (fun x x_1 => x ^ x_1) τ y = τ ^ n) })

tactic: rw [pow_succ, Perm.mul_apply]
state_before: ι : Type ?u.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
n : ℕ
hx : ↑(σ ^ n) (Classical.choose hσ) ∈ ↑(support σ)
⊢ ↑(τ ^ (n + 1)) (Classical.choose hτ) = ↑τ (↑(τ ^ n) (Classical.choose hτ))

tactic: rw [hσ.orderOf, h, hτ.orderOf]
state_before: ι : Type ?u.3031573
α : Type u_1
β : Type ?u.3031579
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
hσ : IsCycle σ
hτ : IsCycle τ
h : card (support σ) = card (support τ)
⊢ orderOf σ = orderOf τ