Direct sum of modules #
The first part of the file provides constructors for direct sums of modules. It provides a
construction of the direct sum using the universal property and proves its uniqueness
(DirectSum.toModule.unique
).
The second part of the file covers the special case of direct sums of submodules of a fixed module
M
. There is a canonical linear map from this direct sum to M
(DirectSum.coeLinearMap
), and
the construction is of particular importance when this linear map is an equivalence; that is, when
the submodules provide an internal decomposition of M
. The property is defined more generally
elsewhere as DirectSum.IsInternal
, but its basic consequences on Submodule
s are established
in this file.
Create the direct sum given a family M
of R
modules indexed over ι
.
Equations
- DirectSum.lmk R ι M = DFinsupp.lmk
Instances For
Inclusion of each component into the direct sum.
Equations
- DirectSum.lof R ι M = DFinsupp.lsingle
Instances For
Scalar multiplication commutes with direct sums.
Scalar multiplication commutes with the inclusion of each component into the direct sum.
The linear map constructed using the universal property of the coproduct.
Equations
- DirectSum.toModule R ι N φ = (DFinsupp.lsum ℕ) φ
Instances For
Coproducts in the categories of modules and additive monoids commute with the forgetful functor from modules to additive monoids.
The map constructed using the universal property gives back the original maps when restricted to each component.
Every linear map from a direct sum agrees with the one obtained by applying the universal property to each of its components.
Two LinearMap
s out of a direct sum are equal if they agree on the generators.
See note [partially-applied ext lemmas].
The inclusion of a subset of the direct summands into a larger subset of the direct summands, as a linear map.
Equations
- DirectSum.lsetToSet R S T H = DirectSum.toModule R (↑S) (DirectSum ↑T fun (i : ↑T) => M ↑i) fun (i : ↑S) => DirectSum.lof R (↑T) (fun (i : Subtype T) => M ↑i) ⟨↑i, ⋯⟩
Instances For
Given Fintype α
, linearEquivFunOnFintype R
is the natural R
-linear equivalence
between ⨁ i, M i
and ∀ i, M i
.
Equations
- DirectSum.linearEquivFunOnFintype R ι M = { toFun := DFunLike.coe, map_add' := ⋯, map_smul' := ⋯, invFun := DFinsupp.equivFunOnFintype.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
The natural linear equivalence between ⨁ _ : ι, M
and M
when Unique ι
.
Equations
- DirectSum.lid R M ι = { toFun := (DirectSum.id M ι).toFun, map_add' := ⋯, map_smul' := ⋯, invFun := (DirectSum.id M ι).invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
The projection map onto one component, as a linear map.
Equations
- DirectSum.component R ι M i = DFinsupp.lapply i
Instances For
Reindexing terms of a direct sum is linear.
Equations
- DirectSum.lequivCongrLeft R h = { toFun := (DirectSum.equivCongrLeft h).toFun, map_add' := ⋯, map_smul' := ⋯, invFun := (DirectSum.equivCongrLeft h).invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
curry
as a linear map.
Equations
- DirectSum.sigmaLcurry R = { toFun := (↑DirectSum.sigmaCurry).toFun, map_add' := ⋯, map_smul' := ⋯ }
Instances For
uncurry
as a linear map.
Equations
- DirectSum.sigmaLuncurry R = { toFun := (↑DirectSum.sigmaUncurry).toFun, map_add' := ⋯, map_smul' := ⋯ }
Instances For
curryEquiv
as a linear equiv.
Equations
- DirectSum.sigmaLcurryEquiv R = { toFun := DirectSum.sigmaCurryEquiv.toFun, map_add' := ⋯, map_smul' := ⋯, invFun := DirectSum.sigmaCurryEquiv.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Linear isomorphism obtained by separating the term of index none
of a direct sum over
Option ι
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical linear map from ⨁ i, A i
to M
where A
is a collection of Submodule R M
indexed by ι
. This is DirectSum.coeAddMonoidHom
as a LinearMap
.
Equations
- DirectSum.coeLinearMap A = DirectSum.toModule R ι M fun (i : ι) => (A i).subtype
Instances For
If a direct sum of submodules is internal then the submodules span the module.
If a direct sum of submodules is internal then the submodules are independent.
Alias of DirectSum.IsInternal.submodule_iSupIndep
.
If a direct sum of submodules is internal then the submodules are independent.
Given an internal direct sum decomposition of a module M
, and a basis for each of the
components of the direct sum, the disjoint union of these bases is a basis for M
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When indexed by only two distinct elements, DirectSum.IsInternal
implies
the two submodules are complementary. Over a Ring R
, this is true as an iff, as
DirectSum.isInternal_submodule_iff_isCompl
.
Note that this is not generally true for [Semiring R]
; see
iSupIndep.dfinsupp_lsum_injective
for details.
Alias of DirectSum.isInternal_submodule_of_iSupIndep_of_iSup_eq_top
.
Note that this is not generally true for [Semiring R]
; see
iSupIndep.dfinsupp_lsum_injective
for details.
iff
version of DirectSum.isInternal_submodule_of_iSupIndep_of_iSup_eq_top
,
DirectSum.IsInternal.iSupIndep
, and DirectSum.IsInternal.submodule_iSup_eq_top
.
Alias of DirectSum.isInternal_submodule_iff_iSupIndep_and_iSup_eq_top
.
iff
version of DirectSum.isInternal_submodule_of_iSupIndep_of_iSup_eq_top
,
DirectSum.IsInternal.iSupIndep
, and DirectSum.IsInternal.submodule_iSup_eq_top
.
If a collection of submodules has just two indices, i
and j
, then
DirectSum.IsInternal
is equivalent to isCompl
.
Now copy the lemmas for subgroup and submonoids.