Projective modules #
This file contains a definition of a projective module, the proof that our definition is equivalent to a lifting property, and the proof that all free modules are projective.
Main definitions #
Let R be a ring (or a semiring) and let M be an R-module.
Module.Projective R M: the proposition saying thatMis a projectiveR-module.
Main theorems #
Module.projective_lifting_property: a map from a projective module can be lifted along a surjection.Module.Projective.of_lifting_property: If for all R-module surjectionsA →ₗ B, all mapsM →ₗ Blift toM →ₗ A, thenMis projective.Module.Projective.of_free: Free modules are projective
Implementation notes #
The actual definition of projective we use is that the natural R-module map from the free R-module on the type M down to M splits. This is more convenient than certain other definitions which involve quantifying over universes, and also universe-polymorphic (the ring and module can be in different universes).
We require that the module sits in at least as high a universe as the ring: without this, free modules don't even exist, and it's unclear if projective modules are even a useful notion.
References #
https://en.wikipedia.org/wiki/Projective_module
TODO #
- Direct sum of two projective modules is projective.
- Arbitrary sum of projective modules is projective.
All of these should be relatively straightforward.
Tags #
projective module
An R-module is projective if it is a direct summand of a free module, or equivalently if maps from the module lift along surjections. There are several other equivalent definitions.
- out : ∃ (s : P →ₗ[R] P →₀ R), Function.LeftInverse ⇑(Finsupp.linearCombination R id) ⇑s
Instances
A projective R-module has the property that maps from it lift along surjections.
A module which satisfies the universal property is projective: If all surjections of
R-modules (P →₀ R) →ₗ[R] P have R-linear left inverse maps, then P is
projective.
Free modules are projective.
A direct summand of a projective module is projective.
A quotient of a projective module is projective iff it is a direct summand.
A variant of Projective.iff_split allowing for a more flexible selection of the universe
for the free module M.
A module is projective iff it is the direct summand of a free module.
A module which satisfies the universal property is projective.
A variant of of_lifting_property' when we're working over a [Ring R],
which only requires quantifying over modules with an AddCommGroup instance.