Commit 2022-08-02 00:16 9264b15e
View on Github →feat(algebra/algebra/bilinear): make algebra.lmul to apply to non-unital (non-assoc) algebras (#15310)
Multiplication in an algebra is a bilinear map. Previously, this was called algebra.lmul ("l" for "linear") and what was actually constructed was an algebra homomorphism A →ₐ[R] (End R A), where A is an R-algebra. As a result, this object (and the derived linear maps algebra.lmul_left and algebra.lmul_right, and others) only exists when A is a unital R-algebra.
Of course, when A is a non-unital (even non-associative) algebra, this bilinear map A →ₗ[R] A →ₗ[R] A still exists, but it can't be upgraded to an algebra homomorphism as above. When A is associative, it can be upgraded to non-unital algebra homomorphism.
In this PR, we define all three of these multiplication maps as linear_map.mul, non_unital_alg_hom.lmul and algebra.lmul, along with appropriate simp lemmas stating that  the underlying functions coincide. All existing lemmas about the maps are preserved, but each in the correct generality. In so doing, we also move most the results and definitions in this file into the linear_map namespace (which is also why we call the simplest map linear_map.mul instead of linear_map.lmul as the l in the latter would be redundant).