English
For lists l1 and l2, zipping over them and swapping the pair elements equals zipping l2 with l1.
Русский
Если за двух списков zipping привести пары и поменять элементы внутри каждой пары, результат равен zipping второго списка с первым.
LaTeX
$$$(zip f (zipWith g l_1 l_2) l_2) = zipWith3 (\\lambda a b c, f (g a b) c) l_1 l_2 l_3$$$
Lean4
@[simp]
theorem zip_swap : ∀ (l₁ : List α) (l₂ : List β), (zip l₁ l₂).map Prod.swap = zip l₂ l₁
| [], _ => zip_nil_right.symm
| l₁, [] => by rw [zip_nil_right]; rfl
| a :: l₁, b :: l₂ => by simp only [zip_cons_cons, map_cons, zip_swap l₁ l₂, Prod.swap_prod_mk]