Rank of matrices #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
The rank of a matrix A
is defined to be the rank of range of the linear map corresponding to A
.
This definition does not depend on the choice of basis, see matrix.rank_eq_finrank_range_to_lin
.
Main declarations #
matrix.rank
: the rank of a matrix
TODO #
- Do a better job of generalizing over
ℚ
,ℝ
, andℂ
inmatrix.rank_transpose
andmatrix.rank_conj_transpose
. See this Zulip thread.
The rank of a matrix is the rank of the space spanned by its columns.
Lemmas about transpose and conjugate transpose #
This section contains lemmas about the rank of matrix.transpose
and matrix.conj_transpose
.
Unfortunately the proofs are essentially duplicated between the two; ℚ
is a linearly-ordered ring
but can't be a star-ordered ring, while ℂ
is star-ordered (with open_locale complex_order
) but
not linearly ordered. For now we don't prove the transpose case for ℂ
.
TODO: the lemmas matrix.rank_transpose
and matrix.rank_conj_transpose
current follow a short
proof that is a simple consequence of matrix.rank_transpose_mul_self
and
matrix.rank_conj_transpose_mul_self
. This proof pulls in unecessary assumptions on R
, and should
be replaced with a proof that uses Gaussian reduction or argues via linear combinations.
TODO: prove this in greater generality.
The rank of a matrix is the rank of the space spanned by its rows.
TODO: prove this in a generality that works for ℂ
too, not just ℚ
and ℝ
.