Rank inequalities for sums and block triangular matrices #
Throughout, K is a field. The nullity of a matrix A is expressed as
Module.finrank K (LinearMap.ker A.mulVecLin); by Matrix.rank_add_finrank_ker_mulVecLin it equals
Fintype.card n - A.rank when A has columns indexed by n.
Main results #
Matrix.rank_add_le:(A + B).rank ≤ A.rank + B.rank.Matrix.rank_add_finrank_ker_mulVecLin: rank–nullity for matrices.Matrix.finrank_ker_mulVecLin_add_le: ifUis invertible, the nullity ofU + Eis at mostE.rank;Matrix.finrank_ker_mulVecLin_sub_mul_le: the nullity ofU - P * Qis at most the number of columns ofP.Matrix.finrank_ker_mulVecLin_fromBlocks_zero₂₁_le: the nullity offromBlocks A B 0 Dis at most the sum of the nullities ofAandD.Matrix.rank_add_rank_le_rank_fromBlocks_zero₂₁:A.rank + D.rank ≤ (fromBlocks A B 0 D).rank.Matrix.rank_fromBlocks_zero₂₁_le_left,Matrix.rank_fromBlocks_zero₂₁_le_right: upper bounds for the rank offromBlocks A B 0 Din terms of the rank of one diagonal block.
Related #
Mathlib has LinearMap.rank_add_le (cardinal rank of linear maps) but no Matrix.rank_add_le.
Independently, Matrix.rank_add_le and rank_add_rank_le_rank_fromBlocks_zero₂₁ over a field
also appear in complexitylib (https://github.com/SamuelSchlesinger/complexitylib,
Complexitylib/Algebraic/LinearAlgebra/MatrixRank/Internal.lean).
This file is the single home of these rank facts in this repository: FreeLocus and
FreeLocusCertificate import them.
If U is invertible and P has columns indexed by o, the nullity of U - P * Q is at most
Fintype.card o.
The nullity of a block upper triangular matrix is at most the sum of the nullities of its diagonal blocks.
The rank of a block upper triangular matrix is at least the sum of the ranks of its diagonal blocks.
The rank of fromBlocks A B 0 D is at most the rank of A plus the number of columns
of D.
The rank of fromBlocks A B 0 D is at most the number of rows of A plus the rank
of D.