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

tactic: classical
  cases nonempty_fintype β
  have : n.coprime (orderOf f) := by
    refine' Nat.coprime.symm _
    rw [Nat.Prime.coprime_iff_not_dvd hf']
    exact Nat.not_dvd_of_pos_of_lt hn hn'
  obtain ⟨m, hm⟩ := exists_pow_eq_self_of_coprime this
  have hf'' := hf
  rw [← hm] at hf''
  refine' hf''.of_pow _
  rw [hm]
  exact support_pow_le f n
state_before: ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
⊢ IsCycle (f ^ n)

tactic: cases nonempty_fintype β
state_before: ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
⊢ IsCycle (f ^ n)

tactic: have : n.coprime (orderOf f) := by
  refine' Nat.coprime.symm _
  rw [Nat.Prime.coprime_iff_not_dvd hf']
  exact Nat.not_dvd_of_pos_of_lt hn hn'
state_before: case intro
ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
⊢ IsCycle (f ^ n)

tactic: obtain ⟨m, hm⟩ := exists_pow_eq_self_of_coprime this
state_before: case intro
ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
this : Nat.coprime n (orderOf f)
⊢ IsCycle (f ^ n)

tactic: have hf'' := hf
state_before: case intro.intro
ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
this : Nat.coprime n (orderOf f)
m : ℕ
hm : (f ^ n) ^ m = f
⊢ IsCycle (f ^ n)

tactic: rw [← hm] at hf''
state_before: case intro.intro
ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
this : Nat.coprime n (orderOf f)
m : ℕ
hm : (f ^ n) ^ m = f
hf'' : IsCycle f
⊢ IsCycle (f ^ n)

tactic: refine' hf''.of_pow _
state_before: case intro.intro
ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
this : Nat.coprime n (orderOf f)
m : ℕ
hm : (f ^ n) ^ m = f
hf'' : IsCycle ((f ^ n) ^ m)
⊢ IsCycle (f ^ n)

tactic: rw [hm]
state_before: case intro.intro
ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
this : Nat.coprime n (orderOf f)
m : ℕ
hm : (f ^ n) ^ m = f
hf'' : IsCycle ((f ^ n) ^ m)
⊢ support (f ^ n) ⊆ support ((f ^ n) ^ m)

tactic: exact support_pow_le f n
state_before: case intro.intro
ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
this : Nat.coprime n (orderOf f)
m : ℕ
hm : (f ^ n) ^ m = f
hf'' : IsCycle ((f ^ n) ^ m)
⊢ support (f ^ n) ⊆ support f

tactic: refine' Nat.coprime.symm _
state_before: ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
⊢ Nat.coprime n (orderOf f)

tactic: rw [Nat.Prime.coprime_iff_not_dvd hf']
state_before: ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
⊢ Nat.coprime (orderOf f) n

tactic: exact Nat.not_dvd_of_pos_of_lt hn hn'
state_before: ι : Type ?u.1631268
α : Type ?u.1631271
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
hf' : Nat.Prime (orderOf f)
n : ℕ
hn : 0 < n
hn' : n < orderOf f
val✝ : Fintype β
⊢ ¬orderOf f ∣ n