Theorem: Finset.symInsertEquiv_symm_apply_coe
File: Mathlib/Data/Finset/Sym.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
m : { x // x ∈ (insert a s).sym n }
⊢ (Sym.filterNe a ↑m).snd ∈ s.sym (n - ↑(Sym.filterNe a ↑m).fst)
state_after: case h.e'_5.h.e'_3
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
m : { x // x ∈ (insert a s).sym n }
⊢ s = (insert a s).erase a
tactic: convert sym_filterNe_mem a m.2
state_before: case h.e'_5.h.e'_3
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
m : { x // x ∈ (insert a s).sym n }
⊢ s = (insert a s).erase a
state_after: no goals
tactic: rw [erase_insert h]
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ (fun m => ⟨(Sym.filterNe a ↑m).fst, ⟨(Sym.filterNe a ↑m).snd, ⋯⟩⟩)
      ((fun m => ⟨Sym.fill a m.fst ↑m.snd, ⋯⟩) ⟨i, ⟨m, hm⟩⟩) =
    ⟨i, ⟨m, hm⟩⟩
state_after: case refine_1
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ Fin (n + 1) → Type ?u.79991

case refine_2
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ (a : Fin (n + 1)) → { x // x ∈ s.sym (n - ↑a) } → ?refine_1 (id a)

case refine_3
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i✝ : Fin (n + 1)
m : Sym α (n - ↑i✝)
hm : m ∈ s.sym (n - ↑i✝)
i : Fin (n + 1)
⊢ Function.Injective (?refine_2 i)

case refine_4
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ Sigma.map id ?refine_2
      ((fun m => ⟨(Sym.filterNe a ↑m).fst, ⟨(Sym.filterNe a ↑m).snd, ⋯⟩⟩)
        ((fun m => ⟨Sym.fill a m.fst ↑m.snd, ⋯⟩) ⟨i, ⟨m, hm⟩⟩)) =
    Sigma.map id ?refine_2 ⟨i, ⟨m, hm⟩⟩
tactic: refine Function.Injective.sigma_map (β₂ := ?_) (f₂ := ?_)
        (Function.injective_id) (fun i ↦ ?_) ?_
state_before: case refine_2
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ (a : Fin (n + 1)) → { x // x ∈ s.sym (n - ↑a) } → Sym α (n - ↑(id a))

case refine_3
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i✝ : Fin (n + 1)
m : Sym α (n - ↑i✝)
hm : m ∈ s.sym (n - ↑i✝)
i : Fin (n + 1)
⊢ Function.Injective (?refine_2 i)

case refine_4
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ Sigma.map id ?refine_2
      ((fun m => ⟨(Sym.filterNe a ↑m).fst, ⟨(Sym.filterNe a ↑m).snd, ⋯⟩⟩)
        ((fun m => ⟨Sym.fill a m.fst ↑m.snd, ⋯⟩) ⟨i, ⟨m, hm⟩⟩)) =
    Sigma.map id ?refine_2 ⟨i, ⟨m, hm⟩⟩
state_after: case refine_3
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i✝ : Fin (n + 1)
m : Sym α (n - ↑i✝)
hm : m ∈ s.sym (n - ↑i✝)
i : Fin (n + 1)
⊢ Function.Injective (?refine_2 i)

case refine_2
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ (a : Fin (n + 1)) → { x // x ∈ s.sym (n - ↑a) } → Sym α (n - ↑(id a))

case refine_4
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ Sigma.map id ?refine_2
      ((fun m => ⟨(Sym.filterNe a ↑m).fst, ⟨(Sym.filterNe a ↑m).snd, ⋯⟩⟩)
        ((fun m => ⟨Sym.fill a m.fst ↑m.snd, ⋯⟩) ⟨i, ⟨m, hm⟩⟩)) =
    Sigma.map id ?refine_2 ⟨i, ⟨m, hm⟩⟩
tactic: swap
state_before: case refine_4
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ Sigma.map id (fun i a => ↑a)
      ((fun m => ⟨(Sym.filterNe a ↑m).fst, ⟨(Sym.filterNe a ↑m).snd, ⋯⟩⟩)
        ((fun m => ⟨Sym.fill a m.fst ↑m.snd, ⋯⟩) ⟨i, ⟨m, hm⟩⟩)) =
    Sigma.map id (fun i a => ↑a) ⟨i, ⟨m, hm⟩⟩
state_after: case refine_4.refine_1
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ Sigma.map id (fun i a => ↑a)
      ((fun m => ⟨(Sym.filterNe a ↑m).fst, ⟨(Sym.filterNe a ↑m).snd, ⋯⟩⟩)
        ((fun m => ⟨Sym.fill a m.fst ↑m.snd, ⋯⟩) ⟨i, ⟨m, hm⟩⟩)) =
    Sym.filterNe a
      (Sym.fill a (Sigma.map id (fun i a => ↑a) ⟨i, ⟨m, hm⟩⟩).fst (Sigma.map id (fun i a => ↑a) ⟨i, ⟨m, hm⟩⟩).snd)

case refine_4.refine_2
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ a ∉ (Sigma.map id (fun i a => ↑a) ⟨i, ⟨m, hm⟩⟩).snd
tactic: refine Eq.trans ?_ (Sym.filter_ne_fill a _ ?_)
state_before: case refine_4.refine_1
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ Sigma.map id (fun i a => ↑a)
      ((fun m => ⟨(Sym.filterNe a ↑m).fst, ⟨(Sym.filterNe a ↑m).snd, ⋯⟩⟩)
        ((fun m => ⟨Sym.fill a m.fst ↑m.snd, ⋯⟩) ⟨i, ⟨m, hm⟩⟩)) =
    Sym.filterNe a
      (Sym.fill a (Sigma.map id (fun i a => ↑a) ⟨i, ⟨m, hm⟩⟩).fst (Sigma.map id (fun i a => ↑a) ⟨i, ⟨m, hm⟩⟩).snd)

case refine_4.refine_2
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
s t : Finset α
a b : α
n : ℕ
h : a ∉ s
x✝ : (i : Fin (n + 1)) × { x // x ∈ s.sym (n - ↑i) }
i : Fin (n + 1)
m : Sym α (n - ↑i)
hm : m ∈ s.sym (n - ↑i)
⊢ a ∉ (Sigma.map id (fun i a => ↑a) ⟨i, ⟨m, hm⟩⟩).snd
state_after: no goals
tactic: exacts [rfl, h ∘ mem_sym_iff.1 hm a]