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

tactic: rw [mem_cycleFactorsFinset_iff]
state_before: ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
⊢ cycleOf f x ∈ cycleFactorsFinset f ↔ x ∈ support f

tactic: constructor
state_before: ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
⊢ (IsCycle (cycleOf f x) ∧ ∀ (a : α), a ∈ support (cycleOf f x) → ↑(cycleOf f x) a = ↑f a) ↔ x ∈ support f

tactic: rintro ⟨hc, _⟩
state_before: case mp
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
⊢ (IsCycle (cycleOf f x) ∧ ∀ (a : α), a ∈ support (cycleOf f x) → ↑(cycleOf f x) a = ↑f a) → x ∈ support f

tactic: contrapose! hc
state_before: case mp.intro
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
hc : IsCycle (cycleOf f x)
right✝ : ∀ (a : α), a ∈ support (cycleOf f x) → ↑(cycleOf f x) a = ↑f a
⊢ x ∈ support f

tactic: rw [not_mem_support, ← cycleOf_eq_one_iff] at hc
state_before: case mp.intro
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
right✝ : ∀ (a : α), a ∈ support (cycleOf f x) → ↑(cycleOf f x) a = ↑f a
hc : ¬x ∈ support f
⊢ ¬IsCycle (cycleOf f x)

tactic: simp [hc]
state_before: case mp.intro
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
right✝ : ∀ (a : α), a ∈ support (cycleOf f x) → ↑(cycleOf f x) a = ↑f a
hc✝ : ↑f x = x
hc : cycleOf f x = 1
⊢ ¬IsCycle (cycleOf f x)

tactic: intro hx
state_before: case mpr
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
⊢ x ∈ support f → IsCycle (cycleOf f x) ∧ ∀ (a : α), a ∈ support (cycleOf f x) → ↑(cycleOf f x) a = ↑f a

tactic: refine' ⟨isCycle_cycleOf _ (mem_support.mp hx), _⟩
state_before: case mpr
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
hx : x ∈ support f
⊢ IsCycle (cycleOf f x) ∧ ∀ (a : α), a ∈ support (cycleOf f x) → ↑(cycleOf f x) a = ↑f a

tactic: intro y hy
state_before: case mpr
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
hx : x ∈ support f
⊢ ∀ (a : α), a ∈ support (cycleOf f x) → ↑(cycleOf f x) a = ↑f a

tactic: rw [mem_support] at hy
state_before: case mpr
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
hx : x ∈ support f
y : α
hy : y ∈ support (cycleOf f x)
⊢ ↑(cycleOf f x) y = ↑f y

tactic: rw [cycleOf_apply]
state_before: case mpr
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
hx : x ∈ support f
y : α
hy : ↑(cycleOf f x) y ≠ y
⊢ ↑(cycleOf f x) y = ↑f y

tactic: split_ifs with H
state_before: case mpr
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
hx : x ∈ support f
y : α
hy : ↑(cycleOf f x) y ≠ y
⊢ (if SameCycle f x y then ↑f y else y) = ↑f y

tactic: rfl
state_before: case mpr.inl
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
hx : x ∈ support f
y : α
hy : ↑(cycleOf f x) y ≠ y
H : SameCycle f x y
⊢ ↑f y = ↑f y

tactic: rw [cycleOf_apply_of_not_sameCycle H] at hy
state_before: case mpr.inr
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
hx : x ∈ support f
y : α
hy : ↑(cycleOf f x) y ≠ y
H : ¬SameCycle f x y
⊢ y = ↑f y

tactic: contradiction
state_before: case mpr.inr
ι : Type ?u.2742928
α : Type u_1
β : Type ?u.2742934
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f : Perm α
x : α
hx : x ∈ support f
y : α
hy : y ≠ y
H : ¬SameCycle f x y
⊢ y = ↑f y