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

tactic: rw [orderOf_dvd_iff_pow_eq_one]
state_before: ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
⊢ support (f ^ n) = support f ↔ ¬orderOf f ∣ n

tactic: constructor
state_before: ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
⊢ support (f ^ n) = support f ↔ ¬f ^ n = 1

tactic: intro h H
state_before: case mp
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
⊢ support (f ^ n) = support f → ¬f ^ n = 1

tactic: refine' hf.ne_one _
state_before: case mp
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
h : support (f ^ n) = support f
H : f ^ n = 1
⊢ False

tactic: rw [← support_eq_empty_iff, ← h, H, support_one]
state_before: case mp
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
h : support (f ^ n) = support f
H : f ^ n = 1
⊢ f = 1

tactic: intro H
state_before: case mpr
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
⊢ ¬f ^ n = 1 → support (f ^ n) = support f

tactic: apply le_antisymm (support_pow_le _ n) _
state_before: case mpr
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
H : ¬f ^ n = 1
⊢ support (f ^ n) = support f

tactic: intro x hx
state_before: ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
H : ¬f ^ n = 1
⊢ support f ≤ support (f ^ n)

tactic: contrapose! H
state_before: ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
H : ¬f ^ n = 1
x : α
hx : x ∈ support f
⊢ x ∈ support (f ^ n)

tactic: ext z
state_before: ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
x : α
hx : x ∈ support f
H : ¬x ∈ support (f ^ n)
⊢ f ^ n = 1

tactic: by_cases hz : f z = z
state_before: case H
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
x : α
hx : x ∈ support f
H : ¬x ∈ support (f ^ n)
z : α
⊢ ↑(f ^ n) z = ↑1 z

tactic: rw [pow_apply_eq_self_of_apply_eq_self hz, one_apply]
state_before: case pos
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
x : α
hx : x ∈ support f
H : ¬x ∈ support (f ^ n)
z : α
hz : ↑f z = z
⊢ ↑(f ^ n) z = ↑1 z

tactic: obtain ⟨k, rfl⟩ := hf.exists_pow_eq hz (mem_support.mp hx)
state_before: case neg
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
x : α
hx : x ∈ support f
H : ¬x ∈ support (f ^ n)
z : α
hz : ¬↑f z = z
⊢ ↑(f ^ n) z = ↑1 z

tactic: apply (f ^ k).injective
state_before: case neg.intro
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
z : α
hz : ¬↑f z = z
k : ℕ
hx : ↑(f ^ k) z ∈ support f
H : ¬↑(f ^ k) z ∈ support (f ^ n)
⊢ ↑(f ^ n) z = ↑1 z

tactic: rw [← mul_apply, (Commute.pow_pow_self _ _ _).eq, mul_apply]
state_before: case neg.intro.a
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
z : α
hz : ¬↑f z = z
k : ℕ
hx : ↑(f ^ k) z ∈ support f
H : ¬↑(f ^ k) z ∈ support (f ^ n)
⊢ ↑(f ^ k) (↑(f ^ n) z) = ↑(f ^ k) (↑1 z)

tactic: simpa using H
state_before: case neg.intro.a
ι : Type ?u.1128878
α : Type u_1
β : Type ?u.1128884
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
n : ℕ
z : α
hz : ¬↑f z = z
k : ℕ
hx : ↑(f ^ k) z ∈ support f
H : ¬↑(f ^ k) z ∈ support (f ^ n)
⊢ ↑(f ^ n) (↑(f ^ k) z) = ↑(f ^ k) (↑1 z)