HepLean 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] [AddCommGroup M] [Module R M] :

The rank of a module as a natural number.

Defined by convention to be 0 if the space has infinite rank.

For a vector space M over a field R, this is the same as the finite dimension of M over R.

Note that it is possible to have M with ¬(Module.Finite R M) but finrank R M ≠ 0, for example ℤ × ℚ/ℤ has finrank equal to 1.

Equations
Instances For
    @[deprecated Module.finrank]
    def FiniteDimensional.finrank (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommGroup M] [Module R M] :

    Alias of Module.finrank.


    The rank of a module as a natural number.

    Defined by convention to be 0 if the space has infinite rank.

    For a vector space M over a field R, this is the same as the finite dimension of M over R.

    Note that it is possible to have M with ¬(Module.Finite R M) but finrank R M ≠ 0, for example ℤ × ℚ/ℤ has finrank equal to 1.

    Equations
    Instances For
      theorem Module.finrank_eq_of_rank_eq {R : Type u} {M : Type v} [Ring R] [AddCommGroup M] [Module R M] {n : } (h : Module.rank R M = n) :
      theorem Module.rank_eq_ofNat_iff_finrank_eq_ofNat {R : Type u} {M : Type v} [Ring R] [AddCommGroup M] [Module R M] (n : ) [n.AtLeastTwo] :

      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} [Ring R] [AddCommGroup M] [Module R M] {n : } (h : Module.rank R M n) :
      theorem Module.finrank_lt_of_rank_lt {R : Type u} {M : Type v} [Ring R] [AddCommGroup M] [Module R M] {n : } (h : Module.rank R M < n) :
      theorem Module.lt_rank_of_lt_finrank {R : Type u} {M : Type v} [Ring R] [AddCommGroup M] [Module R M] {n : } (h : n < Module.finrank R M) :
      n < Module.rank R M
      theorem Module.one_lt_rank_of_one_lt_finrank {R : Type u} {M : Type v} [Ring R] [AddCommGroup M] [Module R M] (h : 1 < Module.finrank R M) :
      theorem LinearEquiv.finrank_eq {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [AddCommGroup M] [AddCommGroup M₂] [Module R M] [Module R M₂] (f : M ≃ₗ[R] M₂) :

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

      theorem LinearEquiv.finrank_map_eq {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [AddCommGroup M] [AddCommGroup M₂] [Module R M] [Module R M₂] (f : M ≃ₗ[R] M₂) (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} [Ring R] [AddCommGroup M] [Module R M] [AddCommGroup 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} [Ring R] [AddCommGroup M] [Module R M] (p : Submodule R M) (q : Submodule R p) :
      Module.finrank R (Submodule.map p.subtype q) = Module.finrank R q
      @[simp]
      theorem finrank_top (R : Type u) (M : Type v) [Ring R] [AddCommGroup M] [Module R M] :