English
If op is associative and commutative, then for any list l and elements a1,a2, we have: ((a1 :: l) <*> a2) = (a1) <*> (l <*> a2).
Русский
Если операция опосредствует ассоциативность и коммутативность, то для любого списка l и элементов a1,a2 выполняется: ((a1 :: l) ⋆ a2) = a1 ⋆ (l ⋆ a2).
LaTeX
$$$$ (a_1 :: l) \diamond a_2 = a_1 \diamond (l \diamond a_2) $$$$
Lean4
theorem foldl_assoc_comm_cons {l : List α} {a₁ a₂} : ((a₁ :: l) <*> a₂) = a₁ ⋆ l <*> a₂ := by
rw [foldl_cons, hc.comm, foldl_assoc]