Theorem: Equiv.Perm.support_swap_mul_eq
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: by_cases hx : f x = x
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
⊢ (swap x (f x) * f).support = f.support \ {x}
state_after: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : f x = x
⊢ (swap x (f x) * f).support = f.support \ {x}

case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
⊢ (swap x (f x) * f).support = f.support \ {x}

tactic: ext z
state_before: case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
⊢ (swap x (f x) * f).support = f.support \ {x}
state_after: case neg.a
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}

tactic: by_cases hzx : z = x
state_before: case neg.a
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}
state_after: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : z = x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}

case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}

tactic: by_cases hzf : z = f x
state_before: case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}
state_after: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
hzf : z = f x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}

case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
hzf : ¬z = f x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}

tactic: by_cases hzfx : f z = x
state_before: case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
hzf : ¬z = f x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}
state_after: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
hzf : ¬z = f x
hzfx : f z = x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}

case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
hzf : ¬z = f x
hzfx : ¬f z = x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}

tactic: simp [hx, sdiff_singleton_eq_erase, not_mem_support.mpr hx, erase_eq_of_not_mem]
state_before: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : f x = x
⊢ (swap x (f x) * f).support = f.support \ {x}
state_after: no goals

tactic: simp [hzx]
state_before: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : z = x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}
state_after: no goals

tactic: simp [hzf, hx, h, swap_apply_of_ne_of_ne]
state_before: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
hzf : z = f x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}
state_after: no goals

tactic: simp [Ne.symm hzx, hzx, Ne.symm hzf, hzfx]
state_before: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
hzf : ¬z = f x
hzfx : f z = x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}
state_after: no goals

tactic: simp [Ne.symm hzx, hzx, Ne.symm hzf, hzfx, f.injective.ne hzx, swap_apply_of_ne_of_ne]
state_before: case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
h : f (f x) ≠ x
hx : ¬f x = x
z : α
hzx : ¬z = x
hzf : ¬z = f x
hzfx : ¬f z = x
⊢ z ∈ (swap x (f x) * f).support ↔ z ∈ f.support \ {x}
state_after: no goals