Matrices with at most one nonzero entry in each column #
A step matrix is a matrix each of whose columns is a scalar multiple of a coordinate vector:
the bth column is c b times the t bth coordinate vector, for a target function t and a
coefficient function c. Permutation matrices, diagonal matrices and the matrix units are step
matrices, and so is the matrix of any linear map that carries each vector of a basis to a
multiple of a vector of another basis, a situation common in explicit representation theory.
The property is columnwise, so the row and column index types are allowed to differ: a step
matrix in Matrix m n R has target function n → m. The identity and the diagonal matrices are
of course square.
This file records the property as Matrix.IsStep and the closure properties that make it useful
for computation: a product of step matrices is the step matrix of the composed targets and the
coefficients multiplied along the way, and entrywise application of a ring morphism preserves the
property. Since each entry of such a product is a single product of table lookups rather than a
sum over an index type, identities between explicitly tabulated step matrices reduce to finitely
many entrywise identities that need no summation.
The property is stated as the conjunction of the value at the target of each column and the
vanishing of that column elsewhere, so that it needs no decidable equality on the rows; the
entrywise description by a table lookup is recovered as Matrix.isStep_iff over rows that do
have decidable equality.
The target of a column with coefficient zero is unconstrained, so the pair (t, c) is not
determined by the matrix; every statement below takes the witnessing pair as data.
The step-matrix API is adapted from the formalization in
Tau Ceti PR #6711, the special isogeny
of type F₄ in characteristic two on matrices.
Main definitions #
Matrix.IsStep: the property, witnessed by a target function and a coefficient function.
Main results #
Matrix.IsStep.apply_target,Matrix.IsStep.apply_of_neandMatrix.isStep_of_apply_target_of_apply_of_ne: the elimination and introduction forms through which the definition is used; its body is not exposed.Matrix.isStep_iff,Matrix.isStep_of_applyandMatrix.IsStep.apply: the entrywise table lookup description, over rows with decidable equality.Matrix.IsStep.mul: a product of step matrices is a step matrix.Matrix.isStep_one,Matrix.isStep_diagonal: the identity and the diagonal matrices.Matrix.IsStep.map: entrywise application of a zero-preserving map.
The introduction form: a matrix that takes the prescribed coefficient at the target of each column and vanishes elsewhere in that column is a step matrix.
The introduction form: a matrix whose entries are the table lookups is a step matrix.
A diagonal matrix is the step matrix of the identity target and its own diagonal.
The identity matrix is the step matrix of the identity target and the constant coefficient one.
A product of step matrices is a step matrix, with the composite target function and with each coefficient the product of the two coefficients met along the way.
Entrywise application of a zero-preserving map to a step matrix gives the step matrix of the same target and the transformed coefficients. Only the value at zero is used, so no additive or multiplicative structure is required of the map.