Rectangle covers of matrix support #
A finite family of row/column rectangles covers a matrix when every nonzero entry lies in at least one rectangle. We assign an overlapping entry to one covering rectangle, thereby obtaining a supported-block decomposition. This proves the weighted rectangle-cover estimate
rank A ≤ ∑_t min (|rows_t|) (|columns_t|).
The construction is coefficient-agnostic and reusable for every finite matrix flattening.
A finite family of combinatorial rectangles covering every nonzero matrix entry. Rectangles may overlap.
- rectangleCount : ℕ
Number of rectangle occurrences.
- rows : Fin self.rectangleCount → Finset I
Row side of each rectangle.
- columns : Fin self.rectangleCount → Finset J
Column side of each rectangle.
- covers_support (row : I) (column : J) : matrix row column ≠ 0 → ∃ (index : Fin self.rectangleCount), row ∈ self.rows index ∧ column ∈ self.columns index
Every nonzero entry belongs to some rectangle.
Instances For
Choose one covering rectangle for an entry, if one exists.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Entries assigned to one rectangle, with all other entries zeroed out.
Equations
Instances For
The assigned entries form a block supported on the chosen rectangle.
Equations
Instances For
Assigning overlaps to one owner turns a rectangle cover into a supported block decomposition.
Equations
- certificate.toDecomposition = { blockCount := certificate.rectangleCount, block := certificate.piece, sum_eq := ⋯ }
Instances For
Weighted size of a rectangle cover.
Equations
- certificate.rankBudget = ∑ index : Fin certificate.rectangleCount, min (certificate.rows index).card (certificate.columns index).card
Instances For
A rectangle cover bounds flattening rank by its weighted size.
One rectangle formed by the exact nonzero rows and columns always covers the matrix support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Empty rectangle cover of the zero matrix.