File: Mathlib/LinearAlgebra/Dimension/Finrank.lean

full_name: FiniteDimensional.finrank
code: /-- 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`.
-/
noncomputable def finrank (R M : Type*) [Semiring R] [AddCommGroup M] [Module R M] : ℕ 
goal: ℕ

full_name: FiniteDimensional.finrank_eq_of_rank_eq
code: theorem finrank_eq_of_rank_eq {n : ℕ} (h : Module.rank R M = ↑n) : finrank R M = n 
goal: FiniteDimensional.finrank R M = n

full_name: FiniteDimensional.rank_eq_one_iff_finrank_eq_one
code: lemma rank_eq_one_iff_finrank_eq_one : Module.rank R M = 1 ↔ finrank R M = 1 
goal: Module.rank R M = 1 ↔ FiniteDimensional.finrank R M = 1

full_name: FiniteDimensional.rank_eq_ofNat_iff_finrank_eq_ofNat
code: /-- This is like `rank_eq_one_iff_finrank_eq_one` but works for `2`, `3`, `4`, ... -/
lemma rank_eq_ofNat_iff_finrank_eq_ofNat (n : ℕ) [Nat.AtLeastTwo n] :
    Module.rank R M = OfNat.ofNat n ↔ finrank R M = OfNat.ofNat n 
goal: Module.rank R M = OfNat.ofNat n ↔ FiniteDimensional.finrank R M = OfNat.ofNat n

full_name: FiniteDimensional.finrank_le_of_rank_le
code: theorem finrank_le_of_rank_le {n : ℕ} (h : Module.rank R M ≤ ↑n) : finrank R M ≤ n 
goal: FiniteDimensional.finrank R M ≤ n

full_name: FiniteDimensional.finrank_lt_of_rank_lt
code: theorem finrank_lt_of_rank_lt {n : ℕ} (h : Module.rank R M < ↑n) : finrank R M < n 
goal: FiniteDimensional.finrank R M < n

full_name: FiniteDimensional.lt_rank_of_lt_finrank
code: theorem lt_rank_of_lt_finrank {n : ℕ} (h : n < finrank R M) : ↑n < Module.rank R M 
goal: ↑n < Module.rank R M

full_name: FiniteDimensional.one_lt_rank_of_one_lt_finrank
code: theorem one_lt_rank_of_one_lt_finrank (h : 1 < finrank R M) : 1 < Module.rank R M 
goal: 1 < Module.rank R M

full_name: FiniteDimensional.finrank_le_finrank_of_rank_le_rank
code: theorem finrank_le_finrank_of_rank_le_rank
    (h : lift.{w} (Module.rank R M) ≤ Cardinal.lift.{v} (Module.rank R N))
    (h' : Module.rank R N < ℵ₀) : finrank R M ≤ finrank R N 
goal: FiniteDimensional.finrank R M ≤ FiniteDimensional.finrank R N

full_name: LinearEquiv.finrank_eq
code: /-- The dimension of a finite dimensional space is preserved under linear equivalence. -/
theorem finrank_eq (f : M ≃ₗ[R] M₂) : finrank R M = finrank R M₂ 
goal: FiniteDimensional.finrank R M = FiniteDimensional.finrank R M₂

full_name: LinearEquiv.finrank_map_eq
code: /-- Pushforwards of finite-dimensional submodules along a `LinearEquiv` have the same finrank. -/
theorem finrank_map_eq (f : M ≃ₗ[R] M₂) (p : Submodule R M) :
    finrank R (p.map (f : M →ₗ[R] M₂)) = finrank R p 
goal: FiniteDimensional.finrank R ↥(Submodule.map (↑f) p) = FiniteDimensional.finrank R ↥p

full_name: LinearMap.finrank_range_of_inj
code: /-- The dimensions of the domain and range of an injective linear map are equal. -/
theorem LinearMap.finrank_range_of_inj {f : M →ₗ[R] N} (hf : Function.Injective f) :
    finrank R (LinearMap.range f) = finrank R M 
goal: FiniteDimensional.finrank R ↥(LinearMap.range f) = FiniteDimensional.finrank R M

full_name: Submodule.finrank_map_subtype_eq
code: @[simp]
theorem Submodule.finrank_map_subtype_eq (p : Submodule R M) (q : Submodule R p) :
    finrank R (q.map p.subtype) = finrank R q 
goal: FiniteDimensional.finrank R ↥(Submodule.map p.subtype q) = FiniteDimensional.finrank R ↥q

full_name: finrank_top
code: @[simp]
theorem finrank_top : finrank R (⊤ : Submodule R M) = finrank R M 
goal: FiniteDimensional.finrank R ↥⊤ = FiniteDimensional.finrank R M