Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 40ffaa5

Browse files
feat(linear_algebra/free_module): add module.free.resolution (#8231)
Any module is a quotient of a free module. This is stated as surjectivity of `finsupp.total M M R id : (M →₀ R) →ₗ[R] M`.
1 parent e1c649d commit 40ffaa5

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

src/algebra/module/projective.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ https://en.wikipedia.org/wiki/Projective_module
5151
5252
- Direct sum of two projective modules is projective.
5353
- Arbitrary sum of projective modules is projective.
54-
- Any module admits a surjection from a projective module.
5554
5655
All of these should be relatively straightforward.
5756

src/linear_algebra/finsupp.lean

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,22 @@ theorem total_unique [unique α] (l : α →₀ R) (v) :
433433
finsupp.total α M R v l = l (default α) • v (default α) :=
434434
by rw [← total_single, ← unique_single l]
435435

436+
lemma total_surjective (h : function.surjective v) : function.surjective (finsupp.total α M R v) :=
437+
begin
438+
intro x,
439+
obtain ⟨y, hy⟩ := h x,
440+
exact ⟨finsupp.single y 1, by simp [hy]⟩
441+
end
442+
443+
theorem total_range (h : function.surjective v) : (finsupp.total α M R v).range = ⊤ :=
444+
range_eq_top.2 $ total_surjective R h
445+
446+
/-- Any module is a quotient of a free module. This is stated as surjectivity of
447+
`finsupp.total M M R id : (M →₀ R) →ₗ[R] M`. -/
448+
lemma total_id_surjective (M) [add_comm_monoid M] [module R M] :
449+
function.surjective (finsupp.total M M R id) :=
450+
total_surjective R function.surjective_id
451+
436452
lemma range_total : (finsupp.total α M R v).range = span R (range v) :=
437453
begin
438454
ext x,

src/linear_algebra/free_module.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import logic.small
1515
We introduce a class `module.free R M`, for `R` a `semiring` and `M` an `R`-module and we provide
1616
several basic instances for this class.
1717
18+
Use `finsupp.total_id_surjective` to prove that any module is the quotient of a free module.
19+
1820
## Main definition
1921
2022
* `module.free R M` : the class of free `R`-modules.

0 commit comments

Comments
 (0)