Theorem: Equiv.Perm.isThreeCycle_swap_mul_swap_same
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: suffices h : support (swap a b * swap a c) = {a, b, c}
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b ≠ c
⊢ IsThreeCycle (swap a b * swap a c)

tactic: apply le_antisymm ((support_mul_le _ _).trans fun x => _) fun x hx => ?_
state_before: case h
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b ≠ c
⊢ support (swap a b * swap a c) = {a, b, c}

tactic: rw [← card_support_eq_three_iff, h]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b ≠ c
h : support (swap a b * swap a c) = {a, b, c}
⊢ IsThreeCycle (swap a b * swap a c)

tactic: simp [ab, ac, bc]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b ≠ c
h : support (swap a b * swap a c) = {a, b, c}
⊢ Finset.card {a, b, c} = 3

tactic: simp [ab, ac, bc]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b ≠ c
⊢ ∀ (x : α), x ∈ support (swap a b) ⊔ support (swap a c) → x ∈ {a, b, c}

tactic: simp only [Finset.mem_insert, Finset.mem_singleton] at hx
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b ≠ c
x : α
hx : x ∈ {a, b, c}
⊢ x ∈ support (swap a b * swap a c)

tactic: rw [mem_support]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b ≠ c
x : α
hx : x = a ∨ x = b ∨ x = c
⊢ x ∈ support (swap a b * swap a c)

tactic: simp only [Perm.coe_mul, Function.comp_apply, Ne.def]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b ≠ c
x : α
hx : x = a ∨ x = b ∨ x = c
⊢ ↑(swap a b * swap a c) x ≠ x

tactic: obtain rfl | rfl | rfl := hx
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b ≠ c
x : α
hx : x = a ∨ x = b ∨ x = c
⊢ ¬↑(swap a b) (↑(swap a c) x) = x

tactic: rw [swap_apply_left, swap_apply_of_ne_of_ne ac.symm bc.symm]
state_before: case inl
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
b c : α
bc : b ≠ c
x : α
ab : x ≠ b
ac : x ≠ c
⊢ ¬↑(swap x b) (↑(swap x c) x) = x

tactic: exact ac.symm
state_before: case inl
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
b c : α
bc : b ≠ c
x : α
ab : x ≠ b
ac : x ≠ c
⊢ ¬c = x

tactic: rw [swap_apply_of_ne_of_ne ab.symm bc, swap_apply_right]
state_before: case inr.inl
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a c : α
ac : a ≠ c
x : α
ab : a ≠ x
bc : x ≠ c
⊢ ¬↑(swap a x) (↑(swap a c) x) = x

tactic: exact ab
state_before: case inr.inl
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a c : α
ac : a ≠ c
x : α
ab : a ≠ x
bc : x ≠ c
⊢ ¬a = x

tactic: rw [swap_apply_right, swap_apply_left]
state_before: case inr.inr
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b : α
ab : a ≠ b
x : α
ac : a ≠ x
bc : b ≠ x
⊢ ¬↑(swap a b) (↑(swap a x) x) = x

tactic: exact bc
state_before: case inr.inr
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b : α
ab : a ≠ b
x : α
ac : a ≠ x
bc : b ≠ x
⊢ ¬b = x