Documentation

Mathlib.LinearAlgebra.Dimension.Finrank

Finite dimension of vector spaces #

Definition of the rank of a module, or dimension of a vector space, as a natural number.

Main definitions #

Defined is Module.finrank, the dimension of a finite dimensional space, returning a Nat, as opposed to Module.rank, which returns a Cardinal. When the space has infinite dimension, its finrank is by convention set to 0.

The definition of finrank does not assume a FiniteDimensional instance, but lemmas might. Import LinearAlgebra.FiniteDimensional to get access to these additional lemmas.

Formulas for the dimension are given for linear equivs, in LinearEquiv.finrank_eq.

Implementation notes #

Most results are deduced from the corresponding results for the general dimension (as a cardinal), in Dimension.lean. Not all results have been ported yet.

You should not assume that there has been any effort to state lemmas as generally as possible.

noncomputable def Module.finrank (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] :

The rank of a module as a natural number.

For a finite-dimensional vector space V over a field k, Module.finrank k V is equal to the dimension of V over k.

For a general module M over a ring R, Module.finrank R M is defined to be the supremum of the cardinalities of the R-linearly independent subsets of M, if this supremum is finite. It is defined by convention to be 0 if this supremum is infinite. See Module.rank for a cardinal-valued version where infinite rank modules have rank an infinite cardinal.

Note that if R is not a field then there can exist modules M with ¬(Module.Finite R M) but finrank R M ≠ 0. For example ℤ × ℚ/ℤ has finrank equal to 1 over .

Equations
Instances For
    theorem Module.finrank_eq_of_rank_eq {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] {n : } (h : Module.rank R M = n) :
    finrank R M = n

    This is like rank_eq_one_iff_finrank_eq_one but works for 2, 3, 4, ...

    theorem Module.finrank_le_of_rank_le {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] {n : } (h : Module.rank R M n) :
    finrank R M n
    theorem Module.finrank_lt_of_rank_lt {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] {n : } (h : Module.rank R M < n) :
    finrank R M < n
    theorem Module.lt_rank_of_lt_finrank {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] {n : } (h : n < finrank R M) :
    n < Module.rank R M
    theorem Module.one_lt_rank_of_one_lt_finrank {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] (h : 1 < finrank R M) :
    theorem LinearEquiv.finrank_eq {R : Type u} {M : Type v} {N : Type w} [Semiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] (f : M ≃ₗ[R] N) :

    The dimension of a finite dimensional space is preserved under linear equivalence.

    theorem LinearEquiv.finrank_map_eq {R : Type u} {M : Type v} {N : Type w} [Semiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] (f : M ≃ₗ[R] N) (p : Submodule R M) :

    Pushforwards of finite-dimensional submodules along a LinearEquiv have the same finrank.

    theorem LinearMap.finrank_range_of_inj {R : Type u} {M : Type v} {N : Type w} [Semiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] {f : M →ₗ[R] N} (hf : Function.Injective f) :

    The dimensions of the domain and range of an injective linear map are equal.

    @[simp]
    theorem Submodule.finrank_map_subtype_eq {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) (q : Submodule R p) :
    @[simp]
    theorem finrank_top (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] [Module R M] :