The following functions construct new modules from old. For binary operations,
the modules must be compatible.
M + N : ModMPol, ModMPol -> ModMPol
Given compatible modules M and N, return the sum of M and N.
Given compatible modules M and N, return the intersection of M and N.
Given compatible modules M and N, return the quotient module M/N. This has the same effect as using the quo constructor.
> P<x, y, z> := PolynomialRing(RationalField(), 3);
> M := Module(P, 3);
> S := sub<M | [1, x, x^2+y], [z, y, x*y^2+1],
> [y, z, x+z]>;
> Groebner(S);
> S;
Module of degree 3
TOP Order
Coefficient ring:
Polynomial ring of rank 3 over Rational Field
Lexicographical Order
Variables: x, y, z
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;
Full Quotient Module of degree 3
TOP Order
Coefficient ring:
Polynomial ring of rank 3 over Rational Field
Lexicographical Order
Variables: x, y, z
Quotient Relations:
(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;
Full Quotient Module of degree 3
TOP Order
Coefficient ring:
Polynomial ring of rank 3 over Rational Field
Lexicographical Order
Variables: x, y, z
Quotient Relations:
( 0 x*y x*z - y - z)
( x y z)