Block ranks and cut ranks #
The block rank M.blockRank S T of a matrix M over a field is the rank of its block with rows
in the set S and columns in the set T: the dimension of the span of the rows of
M.submatrix (↑) (↑). It agrees with Matrix.rank of that submatrix (Matrix.blockRank_eq_rank)
but needs no Fintype instance on the sets.
The cut rank M.cutRank X of a square matrix is the block rank of the rows in X and the
columns outside X. For the adjacency matrix of a graph over 𝔽₂ this is the cut rank of X in
the graph Oum; here it measures how far a quadratic form is from splitting
across the cut. A quadratic form v ⬝ᵥ Q *ᵥ v on a vector glued from a part u on X and a part
w off X is a form in u, plus a form in w, plus the pairing u ⬝ᵥ C *ᵥ w of the block C
of the polar matrix Q + Qᵀ with rows X and columns off X
(Matrix.dotProduct_mulVec_self_eq_add). A matrix that carries a block R on rows f and
columns g and vanishes elsewhere (Matrix.extendBlock) has the bilinear form of R as its
quadratic form (Matrix.dotProduct_mulVec_self_eq_of_submatrix).
Block ranks grow with the block, drop by at most one per deleted row, are invariant under transposition and injective relabelling, and add over blocks whose rows live on disjoint sets of columns. Cut ranks of a symmetric matrix are symmetric under complementation.
Main definitions #
Matrix.blockRank: the block rankM.blockRank S T, the rank of the block ofMwith rowsSand columnsT.Matrix.cutRank: the cut rankM.cutRank X, the rank of the block ofMwith rowsXand columnsXᶜ.Matrix.extendBlock: the square matrixextendBlock f g RcarryingRon the rowsfand the columnsg.
Main results #
Matrix.blockRank_eq_rank: block ranks are ranks of submatrices.Matrix.blockRank_mono,Matrix.blockRank_le_add_ncard_sdiff,Matrix.blockRank_transpose,Matrix.blockRank_submatrix,Matrix.add_blockRank_le_of_disjoint: the algebra of block ranks.Matrix.cutRank_le_add_ncard_sdiff,Matrix.IsSymm.cutRank_compl: the algebra of cut ranks.Matrix.dotProduct_mulVec_self_eq_add: a quadratic form across a cut.Matrix.dotProduct_mulVec_self_eq_of_submatrix: a bilinear form as a quadratic form.
References #
The rank of the block of M with rows in S and columns in T: the dimension of the span of
the rows of the block. It equals Matrix.rank of the submatrix (Matrix.blockRank_eq_rank) but
needs no Fintype instance on T.
Instances For
Relabelling the rows and columns injectively does not change the rank of a block.
Blocks on disjoint columns. If, among the columns T, the rows of S₁ vanish outside
T₁ and the rows of S₂ vanish outside T₂, where T₁ and T₂ are disjoint, then the ranks of
the blocks S₁ × T and S₂ × T add up to at most the rank of the block S × T.
Quadratic forms across a cut #
A quadratic form across a cut. For a set X of indices, the quadratic form
v ⬝ᵥ Q *ᵥ v is the form of the block Q on X × X at the part of v on X, plus the form of
the block on Xᶜ × Xᶜ at the part of v off X, plus the pairing of the two parts through the
block of the polar matrix Q + Qᵀ with rows X and columns Xᶜ.
The square matrix that carries R on the rows f and the columns g, and vanishes
elsewhere. For injective f and g its quadratic form is the bilinear form of R
(Matrix.dotProduct_mulVec_self_eq_of_submatrix).
Instances For
For injective f and g, the entry of extendBlock f g R at (f a, g b) is R a b.
For injective f and g, the block of extendBlock f g R on the rows f and the columns
g is R.
extendBlock f g R vanishes at (i, j) when i is not in the range of f or j is not in
the range of g.
A bilinear form as a quadratic form. If M carries R on the rows f and the columns g
and vanishes elsewhere, the quadratic form of M at v is the bilinear form of R at the parts
v ∘ f and v ∘ g.