Submodules and Quotient Modules

The following functions allow the construction of submodules and quotient modules and access to essential properties.

Creation

sub<M | L>: ModMPol, List -> ModMPol

Given a module \(M\) over a ring \(R\), return the submodule of \(M\) (with the same quotient relations as \(M\)) generated by the elements of \(M\) specified by the list \(L\). Each term of the list \(L\) must be an expression defining an object of one of the following types:

(a)

An element of \(M\);

(b)

A set or sequence of elements of \(M\);

(c)

A submodule of \(M\);

(d)

A set or sequence of submodules of \(M\). A morphism is stored from the resulting submodule \(S\) into \(M\), such that \(S.i\) is mapped to the \(i\)-th generator given in the above list.

quo<M | L>: ModMPol, List -> ModMPol

Given a module \(M\) over a ring \(R\), return the quotient module of \(M\) by the elements of \(M\) specified by the list \(L\). Each term of the list \(L\) must be an expression defining an object of one of the following types:

(a)

An element of \(M\);

(b)

A set or sequence of elements of \(M\);

(c)

A submodule of \(M\);

(d)

A set or sequence of submodules of \(M\). A morphism is stored from \(M\) onto the resulting quotient module \(Q\).

Morphism(M, N): ModMPol, ModMPol -> ModMPolHom

Given modules \(M\) and \(N\), related by a chain of stored sub and quo morphisms as mentioned above, returns the resulting morphism matrix map from \(M\) to \(N\). If no known sub/quo relationship chain exists between \(M\) and \(N\) then an error is returned.

Submodule(I): RngMPol -> ModMPol

Given an ideal \(I\) of a polynomial ring \(R\), return the submodule of \(R^1\) generated by \(I\).

QuotientModule(I): RngMPol -> ModMPol

Given an ideal \(I\) of a polynomial ring \(R\), return the quotient module \(R^1/I\).

GradedModule(I): RngMPol -> ModMPol

Given a homogeneous ideal \(I\) of a ring \(R\), return the graded quotient module \(R^1/I\).

Module Bases

The following functions allow one to manipulate the bases of modules. Note that a Gröbner basis for a module will be automatically generated when necessary; the Groebner procedure just allows explicit immediate construction of the Gröbner basis.

Basis(M): ModMPol -> RngMPolElt

Given a module \(M\), return the current basis (whether it has been converted to a Gröbner basis or not) of \(M\).

BasisElement(M, i): ModMPol, RngIntElt -> RngMPolElt

Given a module \(M\) together with an integer \(i\), return the \(i\)-th element of the current basis of \(M\). Note that this is not the same as \(M.i\).

BasisMatrix(M): ModMPol -> ModMatRngElt

Given a module \(M\), return the basis matrix of \(M\), which is a \(k\) by \(r\) matrix over \(R\), where \(k\) is the length of the basis of \(M\) and \(r\) is the degree of \(M\).

Groebner(M): ModMPol

(Procedure.) Explicitly force a Gröbner basis for the module \(M\) to be constructed.

Example: Submodules and Quotients of an Embedded Module (ex-df76cb)

Run in calculator (opens in a new tab)

We construct simple submodules and quotient modules of an embedded module and consider some of their basic properties.

> R<x, y, z> := PolynomialRing(RationalField(), 3);
> M := EModule(R, 3);
> S := sub<M | [1, x, x^2+y], [z, y, x*y^2+1],
>              [y, z, x+z]>;
> Groebner(S);
> S;
Embedded Submodule of R^3
Order: Module TOP: Lexicographical
Groebner basis:
[ -x*z + y^2 + y, x*y^2 - x*y + z,         y^3 + z],
[  x*y - y*z - 1,   x*z - x - z^2,        -y - z^2],
[              y,               z,           x + z],
[        y^3 - z,       y^2*z - y,       y^2*z - 1]
> a := M ! [y, z, x+z];
> a;
[y, z, x + z]
> a in S;
true
> BasisElement(S, 1);
[-x*z + y^2 + y, x*y^2 - x*y + z, y^3 + z]
> Q := quo<M | [x, y, z]>;
> Q;
Embedded Module R^3/<relations>
Order: Module TOP: Lexicographical
Relations (Groebner basis):
[x, y, z]
> a := Q![x, y, 0];
> b := Q![0, 0, z];
> a;
[0, 0, -z]
> b;
[0, 0, z]
> a+b;
[0, 0, 0]
> Q ! [x,y,z];
[0, 0, 0]
> QQ := quo<Q | [x^2, 0, y+z]>;
> QQ;
Embedded Module R^3/<relations>
Order: Module TOP: Lexicographical
Relations (Groebner basis):
[          0,         x*y, x*z - y - z],
[          x,           y,           z]
> SL := Localization(S);
> SL;
Embedded Submodule of R^3 (local)
Order: Module TOP: Local Lexicographical
Basis:
[        1,         x,   x^2 + y],
[        z,         y, 1 + x*y^2],
[        y,         z,     x + z]

Run in calculator (opens in a new tab)

Example: Submodules and Quotients of a Reduced Module (ex-c177b3)

Run in calculator (opens in a new tab)

We construct simple submodules and quotient modules of a reduced module and consider some of their basic properties.

> R<x,y,z> := PolynomialRing(RationalField(), 3);
> M := RModule(R, 3);
> S := sub<M | [1, x, x^2+y], [z, y, x*y^2+1]>;
> M;
Free Reduced Module R^3
> S;
Reduced Module R^2/<relations>
> Morphism(S, M);
Module homomorphism (2 by 3)
Ambient matrix:
[        1         x   x^2 + y]
[        z         y x*y^2 + 1]
> RelationMatrix(S);
Matrix with 0 rows and 2 columns
> S;
Free Reduced Module R^2
> M.1;
[1, 0, 0]
> M!S.1;
[1, x, x^2 + y]
> M!S.2;
[z, y, x*y^2 + 1]
> M.1 in S;
false
> Q := quo<M | [1, x^2, y]>;
> Q;
Free Reduced Module R^2
> RelationMatrix(Q);
Matrix with 0 rows and 2 columns
> Morphism(M, Q);
Module homomorphism (3 by 2)
Ambient matrix:
[-x^2   -y]
[   1    0]
[   0    1]
> Morphism(S, Q);
Module homomorphism (2 by 2)
Ambient matrix:
[       -x^2 + x             x^2]
[     -x^2*z + y x*y^2 - y*z + 1]
> Q!M.1;
[-x^2, -y]
> M!Q.1;
[0, 1, 0]
> M!Q.2;
[0, 0, 1]
> Q!M!Q.2;
[0, 1]

Run in calculator (opens in a new tab)