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

tactic: let H := closure ({σ, swap x (σ x)} : Set (Perm α))
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
⊢ closure {σ, swap x (↑σ x)} = ⊤

tactic: have h3 : σ ∈ H := subset_closure (Set.mem_insert σ _)
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
⊢ closure {σ, swap x (↑σ x)} = ⊤

tactic: have h4 : swap x (σ x) ∈ H := subset_closure (Set.mem_insert_of_mem _ (Set.mem_singleton _))
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
⊢ closure {σ, swap x (↑σ x)} = ⊤

tactic: have step3 : ∀ y : α, swap x y ∈ H := by
  intro y
  have hx : x ∈ (⊤ : Finset α) := Finset.mem_univ x
  rw [← h2, mem_support] at hx
  have hy : y ∈ (⊤ : Finset α) := Finset.mem_univ y
  rw [← h2, mem_support] at hy
  cases' IsCycle.exists_pow_eq h1 hx hy with n hn
  rw [← hn]
  exact step2 n
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
⊢ closure {σ, swap x (↑σ x)} = ⊤

tactic: rw [eq_top_iff, ← closure_isSwap, closure_le]
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
step4 : ∀ (y z : α), swap y z ∈ H
⊢ closure {σ, swap x (↑σ x)} = ⊤

tactic: rintro τ ⟨y, z, _, h6⟩
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
step4 : ∀ (y z : α), swap y z ∈ H
⊢ {σ | IsSwap σ} ⊆ ↑(closure {σ, swap x (↑σ x)})

tactic: rw [h6]
state_before: case intro.intro.intro
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
step4 : ∀ (y z : α), swap y z ∈ H
τ : Perm α
y z : α
left✝ : y ≠ z
h6 : τ = swap y z
⊢ τ ∈ ↑(closure {σ, swap x (↑σ x)})

tactic: exact step4 y z
state_before: case intro.intro.intro
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
step4 : ∀ (y z : α), swap y z ∈ H
τ : Perm α
y z : α
left✝ : y ≠ z
h6 : τ = swap y z
⊢ swap y z ∈ ↑(closure {σ, swap x (↑σ x)})

tactic: intro n
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
⊢ ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H

tactic: induction' n with n ih
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
n : ℕ
⊢ swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H

tactic: exact subset_closure (Set.mem_insert_of_mem _ (Set.mem_singleton _))
state_before: case zero
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
⊢ swap (↑(σ ^ Nat.zero) x) (↑(σ ^ (Nat.zero + 1)) x) ∈ H

tactic: convert H.mul_mem (H.mul_mem h3 ih) (H.inv_mem h3)
state_before: case succ
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
n : ℕ
ih : swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
⊢ swap (↑(σ ^ Nat.succ n) x) (↑(σ ^ (Nat.succ n + 1)) x) ∈ H

tactic: simp_rw [mul_swap_eq_swap_mul, mul_inv_cancel_right, pow_succ]
state_before: case h.e'_4
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
n : ℕ
ih : swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
⊢ swap (↑(σ ^ Nat.succ n) x) (↑(σ ^ (Nat.succ n + 1)) x) = σ * swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) * σ⁻¹

tactic: rfl
state_before: case h.e'_4
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
n : ℕ
ih : swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
⊢ swap (↑(σ * σ ^ n) x) (↑(σ * (σ * σ ^ n)) x) = swap (↑σ (↑(σ ^ n) x)) (↑σ (↑(σ * σ ^ n) x))

tactic: intro n
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
⊢ ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H

tactic: induction' n with n ih
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
n : ℕ
⊢ swap x (↑(σ ^ n) x) ∈ H

tactic: simp only [Nat.zero_eq, pow_zero, coe_one, id_eq, swap_self, Set.mem_singleton_iff]
state_before: case zero
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
⊢ swap x (↑(σ ^ Nat.zero) x) ∈ H

tactic: convert H.one_mem
state_before: case zero
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
⊢ Equiv.refl α ∈ closure {σ, swap x (↑σ x)}

tactic: by_cases h5 : x = (σ ^ n) x
state_before: case succ
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
n : ℕ
ih : swap x (↑(σ ^ n) x) ∈ H
⊢ swap x (↑(σ ^ Nat.succ n) x) ∈ H

tactic: by_cases h6 : x = (σ ^ (n + 1) : Perm α) x
state_before: case neg
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
n : ℕ
ih : swap x (↑(σ ^ n) x) ∈ H
h5 : ¬x = ↑(σ ^ n) x
⊢ swap x (↑(σ ^ Nat.succ n) x) ∈ H

tactic: rw [swap_comm, ← swap_mul_swap_mul_swap h5 h6]
state_before: case neg
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
n : ℕ
ih : swap x (↑(σ ^ n) x) ∈ H
h5 : ¬x = ↑(σ ^ n) x
h6 : ¬x = ↑(σ ^ (n + 1)) x
⊢ swap x (↑(σ ^ Nat.succ n) x) ∈ H

tactic: exact H.mul_mem (H.mul_mem (step1 n) ih) (step1 n)
state_before: case neg
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
n : ℕ
ih : swap x (↑(σ ^ n) x) ∈ H
h5 : ¬x = ↑(σ ^ n) x
h6 : ¬x = ↑(σ ^ (n + 1)) x
⊢ swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) * swap x (↑(σ ^ n) x) * swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H

tactic: rw [pow_succ, mul_apply, ← h5]
state_before: case pos
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
n : ℕ
ih : swap x (↑(σ ^ n) x) ∈ H
h5 : x = ↑(σ ^ n) x
⊢ swap x (↑(σ ^ Nat.succ n) x) ∈ H

tactic: exact h4
state_before: case pos
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
n : ℕ
ih : swap x (↑(σ ^ n) x) ∈ H
h5 : x = ↑(σ ^ n) x
⊢ swap x (↑σ x) ∈ H

tactic: rw [← h6, swap_self]
state_before: case pos
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
n : ℕ
ih : swap x (↑(σ ^ n) x) ∈ H
h5 : ¬x = ↑(σ ^ n) x
h6 : x = ↑(σ ^ (n + 1)) x
⊢ swap x (↑(σ ^ Nat.succ n) x) ∈ H

tactic: exact H.one_mem
state_before: case pos
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
n : ℕ
ih : swap x (↑(σ ^ n) x) ∈ H
h5 : ¬x = ↑(σ ^ n) x
h6 : x = ↑(σ ^ (n + 1)) x
⊢ Equiv.refl α ∈ H

tactic: intro y
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
⊢ ∀ (y : α), swap x y ∈ H

tactic: have hx : x ∈ (⊤ : Finset α) := Finset.mem_univ x
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
y : α
⊢ swap x y ∈ H

tactic: rw [← h2, mem_support] at hx
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
y : α
hx : x ∈ ⊤
⊢ swap x y ∈ H

tactic: have hy : y ∈ (⊤ : Finset α) := Finset.mem_univ y
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
y : α
hx : ↑σ x ≠ x
⊢ swap x y ∈ H

tactic: rw [← h2, mem_support] at hy
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
y : α
hx : ↑σ x ≠ x
hy : y ∈ ⊤
⊢ swap x y ∈ H

tactic: cases' IsCycle.exists_pow_eq h1 hx hy with n hn
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
y : α
hx : ↑σ x ≠ x
hy : ↑σ y ≠ y
⊢ swap x y ∈ H

tactic: rw [← hn]
state_before: case intro
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
y : α
hx : ↑σ x ≠ x
hy : ↑σ y ≠ y
n : ℕ
hn : ↑(σ ^ n) x = y
⊢ swap x y ∈ H

tactic: exact step2 n
state_before: case intro
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
y : α
hx : ↑σ x ≠ x
hy : ↑σ y ≠ y
n : ℕ
hn : ↑(σ ^ n) x = y
⊢ swap x (↑(σ ^ n) x) ∈ H

tactic: intro y z
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
⊢ ∀ (y z : α), swap y z ∈ H

tactic: by_cases h5 : z = x
state_before: ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
y z : α
⊢ swap y z ∈ H

tactic: by_cases h6 : z = y
state_before: case neg
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
y z : α
h5 : ¬z = x
⊢ swap y z ∈ H

tactic: rw [← swap_mul_swap_mul_swap h5 h6, swap_comm z x]
state_before: case neg
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
y z : α
h5 : ¬z = x
h6 : ¬z = y
⊢ swap y z ∈ H

tactic: exact H.mul_mem (H.mul_mem (step3 y) (step3 z)) (step3 y)
state_before: case neg
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
y z : α
h5 : ¬z = x
h6 : ¬z = y
⊢ swap x y * swap x z * swap x y ∈ H

tactic: rw [h5, swap_comm]
state_before: case pos
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
y z : α
h5 : z = x
⊢ swap y z ∈ H

tactic: exact step3 y
state_before: case pos
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
y z : α
h5 : z = x
⊢ swap x y ∈ H

tactic: rw [h6, swap_self]
state_before: case pos
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
y z : α
h5 : ¬z = x
h6 : z = y
⊢ swap y z ∈ H

tactic: exact H.one_mem
state_before: case pos
ι : Type ?u.2796652
α : Type u_1
β : Type ?u.2796658
inst✝² : DecidableEq α
inst✝¹ : Finite β
inst✝ : Fintype α
σ : Perm α
h1 : IsCycle σ
h2 : support σ = ⊤
x : α
H : Subgroup (Perm α) := closure {σ, swap x (↑σ x)}
h3 : σ ∈ H
h4 : swap x (↑σ x) ∈ H
step1 : ∀ (n : ℕ), swap (↑(σ ^ n) x) (↑(σ ^ (n + 1)) x) ∈ H
step2 : ∀ (n : ℕ), swap x (↑(σ ^ n) x) ∈ H
step3 : ∀ (y : α), swap x y ∈ H
y z : α
h5 : ¬z = x
h6 : z = y
⊢ Equiv.refl α ∈ H