Support bounds for matrix flattenings #
The rank of a finite matrix is at most the number of rows or columns on which it is supported. This module converts Mathlib's natural-valued matrix-rank bound to the cardinal-valued rank used by Fusion certificates, and packages canonical finite row and column supports.
Nothing here depends on polynomials or a particular circuit model. Any future matrix-valued feature, including shifted flattenings, can reuse these lemmas.
On finite index types, the rank of matrix-vector multiplication is the natural-valued matrix rank, coerced to a cardinal.
A finite set containing every nonzero row bounds flattening rank.
A finite set containing every nonzero column bounds flattening rank.
The canonical finite set of nonzero rows.
Equations
- Algebraic.Fusion.SumOfTerms.MatrixRank.Support.rowSupport matrix = {row : I | matrix.row row ≠ 0}
Instances For
The canonical finite set of nonzero columns.
Equations
- Algebraic.Fusion.SumOfTerms.MatrixRank.Support.columnSupport matrix = {column : J | matrix.col column ≠ 0}
Instances For
Flattening rank is at most the number of its nonzero rows.
Flattening rank is at most the number of its nonzero columns.
Using both sides gives the smaller of the nonzero-row and nonzero-column counts.