Submodules
AbstractAlgebra allows the construction of quotient modules/spaces of AbstractAlgebra modules. These are given as the quotient of a module and a submodule of that module.
As well as implementing the entire Module interface, AbstractAlgebra submodules also provide the following interface.
Constructors
AbstractAlgebra.QuotientModule
— Method.QuotientModule(m::Module{T}, gens::Vector{ModuleElem{T}}) where T <: RingElement
Return the quotient
Q
of the modulem
by the submoduleN
ofm
, and a map which is a lift of elements ofQ
tom
.
AbstractAlgebra.QuotientSpace
— Method.QuotientSpace(m::Module{T}, gens::Vector{ModuleElem{T}}) where T <: RingElement
Return the quotient
Q
of the vector spacem
by the subvector spaceN
ofm
, and a map which is a lift of elements ofQ
tom
.
Examples
M = FreeModule(ZZ, 2)
m = M([ZZ(1), ZZ(2)])
N, f = Submodule(M, [m])
Q, g = QuotientModule(M, N)
p = Q([ZZ(3)])
v2 = g(p)
V = VectorSpace(QQ, 2)
m = V([QQ(1), QQ(2)])
N, f = Subspace(V, [m])
Q, g = QuotientSpace(V, N)
Functionality for submodules
In addition to the Module interface, AbstractAlgebra submodules implement the following functionality.
Basic manipulation
AbstractAlgebra.Generic.supermodule
— Method.supermodule(M::QuotientModule{T}) where T <: RingElement
Return the module that this module is a quotient of.
Examples
M = FreeModule(ZZ, 2)
m = M([ZZ(2), ZZ(3)])
N, g = Submodule(M, [m])
Q, h = QuotientModule(M, N)
supermodule(Q) == M