Algebraic properties of elementary row/column operations.
The primitive executable operations live in HexMatrix.Elementary. This module
adds the multiplication- and inverse-preservation facts (rowSwap_mul,
rowScale_mul, rowAdd_mul, the *_transform_mul_preserve and
*_inverse_preserve families, and the column-operation analogues) on which the
row-reduction, span/nullspace, and determinant routines rely.
Entrywise action of row addition on matrix-vector multiplication.
If T * M = E, then rowSwap T i j * M = rowSwap E i j: row swap on the
transform side preserves the equation T * M = E when applied to both T and
E.
If T * M = E, then rowScale T i s * M = rowScale E i s: row scale on the
transform side preserves the equation T * M = E when applied to both T and
E.
If T * M = E, then rowAdd T src dst s * M = rowAdd E src dst s: row
add on the transform side preserves the equation T * M = E when applied to
both T and E.
Scaling a row by one leaves the matrix unchanged.
Adding zero times one row to another leaves the matrix unchanged.
Adding s times a distinct source row to a destination row and then
adding -s times that source row restores the original matrix.
Adding -s times a distinct source row to a destination row and then
adding s times that source row restores the original matrix.
A row swap preserves existence of a left inverse for a row transform.
A row swap preserves existence of a right inverse for a row transform.
Scaling a row by a nonzero scalar preserves existence of a left inverse for a row transform.
Scaling a row by a nonzero scalar preserves existence of a right inverse for a row transform.
Adding a multiple of a distinct source row preserves existence of a left inverse for a row transform.
Adding a multiple of a distinct source row preserves existence of a right inverse for a row transform.
Multiplication by A commutes with the column-add operation on the right
factor over commutative rings.
Right multiplication by a right-scalar column addition commutes with the column-add operation over a possibly noncommutative ring.
Adding zero times one column to another leaves the matrix unchanged.
Adding one column times zero to another leaves the matrix unchanged.