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

tactic: suffices f.cycleOf a = c.cycleOf a by
  rw [this]
  apply symm
  exact
    Equiv.Perm.IsCycle.cycleOf_eq (Equiv.Perm.mem_cycleFactorsFinset_iff.mp hc).left
      (Equiv.Perm.mem_support.mp ha)
state_before: ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
⊢ c = cycleOf f a

tactic: let hfc := (Equiv.Perm.disjoint_mul_inv_of_mem_cycleFactorsFinset hc).symm
state_before: ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
⊢ cycleOf f a = cycleOf c a

tactic: let hfc2 := Perm.Disjoint.commute hfc
state_before: ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
hfc : Disjoint c (f * c⁻¹) := Disjoint.symm (disjoint_mul_inv_of_mem_cycleFactorsFinset hc)
⊢ cycleOf f a = cycleOf c a

tactic: rw [← Equiv.Perm.cycleOf_mul_of_apply_right_eq_self hfc2]
state_before: ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
hfc : Disjoint c (f * c⁻¹) := Disjoint.symm (disjoint_mul_inv_of_mem_cycleFactorsFinset hc)
hfc2 : _root_.Commute c (f * c⁻¹) := Disjoint.commute hfc
⊢ cycleOf f a = cycleOf c a

tactic: simp only [hfc2.eq, inv_mul_cancel_right]
state_before: ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
hfc : Disjoint c (f * c⁻¹) := Disjoint.symm (disjoint_mul_inv_of_mem_cycleFactorsFinset hc)
hfc2 : _root_.Commute c (f * c⁻¹) := Disjoint.commute hfc
⊢ cycleOf f a = cycleOf (c * (f * c⁻¹)) a

case hx
ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
hfc : Disjoint c (f * c⁻¹) := Disjoint.symm (disjoint_mul_inv_of_mem_cycleFactorsFinset hc)
hfc2 : _root_.Commute c (f * c⁻¹) := Disjoint.commute hfc
⊢ ↑(f * c⁻¹) a = a

tactic: exact
  Equiv.Perm.not_mem_support.mp
    (Finset.disjoint_left.mp (Equiv.Perm.Disjoint.disjoint_support hfc) ha)
state_before: case hx
ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
hfc : Disjoint c (f * c⁻¹) := Disjoint.symm (disjoint_mul_inv_of_mem_cycleFactorsFinset hc)
hfc2 : _root_.Commute c (f * c⁻¹) := Disjoint.commute hfc
⊢ ↑(f * c⁻¹) a = a

tactic: rw [this]
state_before: ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
this : cycleOf f a = cycleOf c a
⊢ c = cycleOf f a

tactic: apply symm
state_before: ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
this : cycleOf f a = cycleOf c a
⊢ c = cycleOf c a

tactic: exact
  Equiv.Perm.IsCycle.cycleOf_eq (Equiv.Perm.mem_cycleFactorsFinset_iff.mp hc).left
    (Equiv.Perm.mem_support.mp ha)
state_before: case a
ι : Type ?u.2777278
α : Type u_1
β : Type ?u.2777284
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f c : Perm α
a : α
ha : a ∈ support c
hc : c ∈ cycleFactorsFinset f
this : cycleOf f a = cycleOf c a
⊢ cycleOf c a = c