Theorem: List.sym_map
File: Mathlib/Data/List/Sym.lean

Proof steps:
state_before: α : Type u_1
β✝ : Type u_2
xs✝ ys : List α
n✝ : ℕ
β : Type u_3
f : α → β
n : ℕ
xs x✝ : List α
⊢ List.sym 0 (map f x✝) = map (Sym.map f) (List.sym 0 x✝)
state_after: α : Type u_1
β✝ : Type u_2
xs✝ ys : List α
n✝ : ℕ
β : Type u_3
f : α → β
n : ℕ
xs x✝ : List α
⊢ [Sym.nil] = map (Sym.map f) [Sym.nil]
tactic: simp only [List.sym]
state_before: α : Type u_1
β✝ : Type u_2
xs✝ ys : List α
n✝ : ℕ
β : Type u_3
f : α → β
n : ℕ
xs x✝ : List α
⊢ [Sym.nil] = map (Sym.map f) [Sym.nil]
state_after: no goals
tactic: rfl
state_before: α : Type u_1
β✝ : Type u_2
xs✝ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs : List α
n : ℕ
⊢ List.sym (n + 1) (map f []) = map (Sym.map f) (List.sym (n + 1) [])
state_after: no goals
tactic: simp [List.sym]
state_before: α : Type u_1
β✝ : Type u_2
xs✝¹ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ List.sym (n + 1) (map f (x :: xs)) = map (Sym.map f) (List.sym (n + 1) (x :: xs))
state_after: α : Type u_1
β✝ : Type u_2
xs✝¹ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ map (fun p => f x ::ₛ p) (map (Sym.map f) (List.sym n (x :: xs))) ++ map (Sym.map f) (List.sym (n + 1) xs) =
    map (Sym.map f) (List.sym (n + 1) (x :: xs))
tactic: rw [map_cons, List.sym, ← map_cons, sym_map f n (x :: xs), sym_map f (n + 1) xs]
state_before: α : Type u_1
β✝ : Type u_2
xs✝¹ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ map (fun p => f x ::ₛ p) (map (Sym.map f) (List.sym n (x :: xs))) ++ map (Sym.map f) (List.sym (n + 1) xs) =
    map (Sym.map f) (List.sym (n + 1) (x :: xs))
state_after: α : Type u_1
β✝ : Type u_2
xs✝¹ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ map ((fun p => f x ::ₛ p) ∘ Sym.map f) (List.sym n (x :: xs)) =
    map (Sym.map f ∘ fun p => x ::ₛ p) (List.sym n (x :: xs))
tactic: simp only [map_map, List.sym, map_append, append_cancel_right_eq]
state_before: α : Type u_1
β✝ : Type u_2
xs✝¹ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ map ((fun p => f x ::ₛ p) ∘ Sym.map f) (List.sym n (x :: xs)) =
    map (Sym.map f ∘ fun p => x ::ₛ p) (List.sym n (x :: xs))
state_after: case e_f
α : Type u_1
β✝ : Type u_2
xs✝¹ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ (fun p => f x ::ₛ p) ∘ Sym.map f = Sym.map f ∘ fun p => x ::ₛ p
tactic: congr
state_before: case e_f
α : Type u_1
β✝ : Type u_2
xs✝¹ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ (fun p => f x ::ₛ p) ∘ Sym.map f = Sym.map f ∘ fun p => x ::ₛ p
state_after: case e_f.h.h
α : Type u_1
β✝ : Type u_2
xs✝¹ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
s : Sym α n
⊢ ↑(((fun p => f x ::ₛ p) ∘ Sym.map f) s) = ↑((Sym.map f ∘ fun p => x ::ₛ p) s)
tactic: ext s
state_before: case e_f.h.h
α : Type u_1
β✝ : Type u_2
xs✝¹ ys : List α
n✝¹ : ℕ
β : Type u_3
f : α → β
n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
s : Sym α n
⊢ ↑(((fun p => f x ::ₛ p) ∘ Sym.map f) s) = ↑((Sym.map f ∘ fun p => x ::ₛ p) s)
state_after: no goals
tactic: simp only [Function.comp_apply, Sym.map_cons]