Module docstring
{"# Finite modules and types with finitely many elements
This file relates Module.Finite and _root_.Finite.
"}
{"# Finite modules and types with finitely many elements
This file relates Module.Finite and _root_.Finite.
"}
Module.Finite.exists_fin'
theorem
[Module.Finite R M] : ∃ (n : ℕ) (f : (Fin n → R) →ₗ[R] M), Surjective f
/-- A finite module admits a surjective linear map from a finite free module. -/
lemma exists_fin' [Module.Finite R M] : ∃ (n : ℕ) (f : (Fin n → R) →ₗ[R] M), Surjective f := by
have ⟨n, s, hs⟩ := exists_fin (R := R) (M := M)
refine ⟨n, Basis.constr (Pi.basisFun R _) ℕ s, ?_⟩
rw [← LinearMap.range_eq_top, Basis.constr_range, hs]
Module.finite_of_finite
theorem
[Finite R] [Module.Finite R M] : Finite M
lemma _root_.Module.finite_of_finite [Finite R] [Module.Finite R M] : Finite M := by
obtain ⟨n, f, hf⟩ := exists_fin' R M; exact .of_surjective f hf
Module.finite_iff_finite
theorem
[Finite R] : Module.Finite R M ↔ Finite M
/-- A module over a finite ring has finite dimension iff it is finite. -/
lemma _root_.Module.finite_iff_finite [Finite R] : Module.FiniteModule.Finite R M ↔ Finite M :=
⟨fun _ ↦ finite_of_finite R, fun _ ↦ .of_finite⟩
Set.Finite.submoduleSpan
theorem
[Finite R] {s : Set M} (hs : s.Finite) : (Submodule.span R s : Set M).Finite
lemma _root_.Set.Finite.submoduleSpan [Finite R] {s : Set M} (hs : s.Finite) :
(Submodule.span R s : Set M).Finite := by
lift s to Finset M using hs
rw [Set.Finite, ← Module.finite_iff_finite (R := R)]
dsimp
infer_instance
Module.Finite.finite_basis
theorem
[Nontrivial R] {ι} [Module.Finite R M] (b : Basis ι R M) : _root_.Finite ι
/-- If a free module is finite, then any arbitrary basis is finite. -/
lemma finite_basis [Nontrivial R] {ι} [Module.Finite R M]
(b : Basis ι R M) :
_root_.Finite ι :=
let ⟨s, hs⟩ := ‹Module.Finite R M›
basis_finite_of_finite_spans s.finite_toSet hs b
Module.not_finite_of_infinite_basis
theorem
[Nontrivial R] {ι} [Infinite ι] (b : Basis ι R M) : ¬Module.Finite R M
lemma not_finite_of_infinite_basis [Nontrivial R] {ι} [Infinite ι] (b : Basis ι R M) :
¬ Module.Finite R M :=
fun _ ↦ (Finite.finite_basis b).not_infinite ‹_›