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 thatM
is 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 →ₗ B
lift toM →ₗ A
, thenM
is 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 module is projective iff it is the direct summand of a free module.
A module which satisfies the universal property is projective. Note that the universe variables
in huniv
are somewhat restricted.
A variant of of_lifting_property'
when we're working over a [Ring R]
,
which only requires quantifying over modules with an AddCommGroup
instance.