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

tactic: have : IsOfFinOrder f := by exact _root_.exists_pow_eq_one f
state_before: ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
⊢ ∃ k x, f ^ k = 1

tactic: rw [isOfFinOrder_iff_pow_eq_one] at this
state_before: ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
this : IsOfFinOrder f
⊢ ∃ k x, f ^ k = 1

tactic: obtain ⟨x, hx, _⟩ := hf
state_before: ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
this : ∃ n, 0 < n ∧ f ^ n = 1
⊢ ∃ k x, f ^ k = 1

tactic: obtain ⟨_ | _ | k, hk, hk'⟩ := this
state_before: case intro.intro
ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x✝ y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
this : ∃ n, 0 < n ∧ f ^ n = 1
x : β
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : β⦄, ↑f y ≠ y → SameCycle f x y
⊢ ∃ k x, f ^ k = 1

tactic: exact _root_.exists_pow_eq_one f
state_before: ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
hf : IsCycle f
⊢ IsOfFinOrder f

tactic: exact absurd hk (lt_asymm hk)
state_before: case intro.intro.intro.zero.intro
ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x✝ y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
x : β
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : β⦄, ↑f y ≠ y → SameCycle f x y
hk : 0 < Nat.zero
hk' : f ^ Nat.zero = 1
⊢ ∃ k x, f ^ k = 1

tactic: rw [pow_one] at hk'
state_before: case intro.intro.intro.succ.zero.intro
ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x✝ y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
x : β
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : β⦄, ↑f y ≠ y → SameCycle f x y
hk : 0 < Nat.succ Nat.zero
hk' : f ^ Nat.succ Nat.zero = 1
⊢ ∃ k x, f ^ k = 1

tactic: simp [hk'] at hx
state_before: case intro.intro.intro.succ.zero.intro
ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x✝ y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
x : β
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : β⦄, ↑f y ≠ y → SameCycle f x y
hk : 0 < Nat.succ Nat.zero
hk' : f = 1
⊢ ∃ k x, f ^ k = 1

tactic: exact ⟨k + 2, by simp, hk'⟩
state_before: case intro.intro.intro.succ.succ.intro
ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x✝ y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
x : β
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : β⦄, ↑f y ≠ y → SameCycle f x y
k : ℕ
hk : 0 < Nat.succ (Nat.succ k)
hk' : f ^ Nat.succ (Nat.succ k) = 1
⊢ ∃ k x, f ^ k = 1

tactic: simp
state_before: ι : Type ?u.418876
α : Type ?u.418879
β : Type u_1
f✝ g : Perm α
x✝ y : α
inst✝² : DecidableEq α
inst✝¹ : Fintype α
inst✝ : Finite β
f : Perm β
x : β
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : β⦄, ↑f y ≠ y → SameCycle f x y
k : ℕ
hk : 0 < Nat.succ (Nat.succ k)
hk' : f ^ Nat.succ (Nat.succ k) = 1
⊢ 1 < k + 2