A dot product of two ofFn vectors is the List.finRange fold of their
pointwise products. The reference dotProduct reduction that keeps ofFn-built
rows and columns visible to the fold-algebra lemmas.
Zero-extending two vectors on the right (to a common larger length m + d)
leaves their dot product unchanged: every added term is 0 * _ or _ * 0. This
is the vector-level engine behind the matrix padding lemma.
Dot product is additive in its left argument.
Dot product is homogeneous in its left argument.
Dot product is symmetric over a commutative coefficient type.
Dot product is additive in its right argument.
Dot product is homogeneous in its right argument.
Dot product is additive over subtraction in its left argument.
Dot product is additive over subtraction in its right argument.
Dot product distributes over subtracting a scalar multiple in the left argument.
Dot product distributes over subtracting a scalar multiple in the right argument.
Splitting a dot product along a sum-shaped dimension: the dot product of two concatenated vectors is the sum of the dot products of the halves. This is the vector-level decomposition behind the 2×2 block product of matrices.