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

tactic: refine' isConj_iff.2 ⟨Equiv.extendSubtype f, _⟩
state_before: ι : Type ?u.3024744
α : Type u_1
β : Type ?u.3024750
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
f : { x // x ∈ ↑(support σ) } ≃ { x // x ∈ ↑(support τ) }
hf :
  ∀ (x : α) (hx : x ∈ ↑(support σ)),
    ↑(↑f { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) = ↑τ ↑(↑f { val := x, property := hx })
⊢ IsConj σ τ

tactic: rw [mul_inv_eq_iff_eq_mul]
state_before: ι : Type ?u.3024744
α : Type u_1
β : Type ?u.3024750
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
f : { x // x ∈ ↑(support σ) } ≃ { x // x ∈ ↑(support τ) }
hf :
  ∀ (x : α) (hx : x ∈ ↑(support σ)),
    ↑(↑f { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) = ↑τ ↑(↑f { val := x, property := hx })
⊢ extendSubtype f * σ * (extendSubtype f)⁻¹ = τ

tactic: ext x
state_before: ι : Type ?u.3024744
α : Type u_1
β : Type ?u.3024750
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
f : { x // x ∈ ↑(support σ) } ≃ { x // x ∈ ↑(support τ) }
hf :
  ∀ (x : α) (hx : x ∈ ↑(support σ)),
    ↑(↑f { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) = ↑τ ↑(↑f { val := x, property := hx })
⊢ extendSubtype f * σ = τ * extendSubtype f

tactic: simp only [Perm.mul_apply]
state_before: case H
ι : Type ?u.3024744
α : Type u_1
β : Type ?u.3024750
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
f : { x // x ∈ ↑(support σ) } ≃ { x // x ∈ ↑(support τ) }
hf :
  ∀ (x : α) (hx : x ∈ ↑(support σ)),
    ↑(↑f { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) = ↑τ ↑(↑f { val := x, property := hx })
x : α
⊢ ↑(extendSubtype f * σ) x = ↑(τ * extendSubtype f) x

tactic: by_cases hx : x ∈ σ.support
state_before: case H
ι : Type ?u.3024744
α : Type u_1
β : Type ?u.3024750
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
f : { x // x ∈ ↑(support σ) } ≃ { x // x ∈ ↑(support τ) }
hf :
  ∀ (x : α) (hx : x ∈ ↑(support σ)),
    ↑(↑f { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) = ↑τ ↑(↑f { val := x, property := hx })
x : α
⊢ ↑(extendSubtype f) (↑σ x) = ↑τ (↑(extendSubtype f) x)

tactic: rw [Equiv.extendSubtype_apply_of_mem, Equiv.extendSubtype_apply_of_mem]
state_before: case pos
ι : Type ?u.3024744
α : Type u_1
β : Type ?u.3024750
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
f : { x // x ∈ ↑(support σ) } ≃ { x // x ∈ ↑(support τ) }
hf :
  ∀ (x : α) (hx : x ∈ ↑(support σ)),
    ↑(↑f { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) = ↑τ ↑(↑f { val := x, property := hx })
x : α
hx : x ∈ support σ
⊢ ↑(extendSubtype f) (↑σ x) = ↑τ (↑(extendSubtype f) x)

tactic: exact hf x (Finset.mem_coe.2 hx)
state_before: case pos
ι : Type ?u.3024744
α : Type u_1
β : Type ?u.3024750
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
f : { x // x ∈ ↑(support σ) } ≃ { x // x ∈ ↑(support τ) }
hf :
  ∀ (x : α) (hx : x ∈ ↑(support σ)),
    ↑(↑f { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) = ↑τ ↑(↑f { val := x, property := hx })
x : α
hx : x ∈ support σ
⊢ ↑(↑f { val := ↑σ x, property := ?pos.hx✝ }) = ↑τ ↑(↑f { val := x, property := ?pos.hx✝ })

tactic: rwa [Classical.not_not.1 ((not_congr mem_support).1 (Equiv.extendSubtype_not_mem f _ _)),
  Classical.not_not.1 ((not_congr mem_support).mp hx)]
state_before: case neg
ι : Type ?u.3024744
α : Type u_1
β : Type ?u.3024750
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
f : { x // x ∈ ↑(support σ) } ≃ { x // x ∈ ↑(support τ) }
hf :
  ∀ (x : α) (hx : x ∈ ↑(support σ)),
    ↑(↑f { val := ↑σ x, property := (_ : ↑σ x ∈ support σ) }) = ↑τ ↑(↑f { val := x, property := hx })
x : α
hx : ¬x ∈ support σ
⊢ ↑(extendSubtype f) (↑σ x) = ↑τ (↑(extendSubtype f) x)