| ### 2.3.5 Modules and their annihilator Now we shall give three more advanced examples. SINGULAR is able to handle modules over all the rings, which can be defined as a basering. A free module of rank `n` is defined as follows:
    ring rr;
    int n = 4;
    freemodule(4);
    ==> _[1]=gen(1)
    ==> _[2]=gen(2)
    ==> _[3]=gen(3)
    ==> _[4]=gen(4)
    typeof(_);
    ==> module
    print(freemodule(4));
    ==> 1,0,0,0,
    ==> 0,1,0,0,
    ==> 0,0,1,0,
    ==> 0,0,0,1
To define a module, we provide a list of vectors generating a submodule of a free module. Then this set of vectors may be identified with the columns of a matrix. For that reason in SINGULAR matrices and modules may be interchanged. However, the representation is different (modules may be considered as sparse matrices).
    ring r =0,(x,y,z),dp;
    module MD = [x,0,x],[y,z,-y],[0,z,-2y];
    matrix MM = MD;
    print(MM);
    ==> x,y,0,
    ==> 0,z,z,
    ==> x,-y,-2y
However the submodule 10#10 may also be considered as the module of relations of the factor module 11#11.In this way, SINGULAR can treat arbitrary finitely generated modules over the basering (see Representation of mathematical objects). In order to get the module of relations of 10#10, we use the command `syz`.
    syz(MD);
    ==> _[1]=x*gen(3)-x*gen(2)+y*gen(1)
We want to calculate, as an application, the annihilator of a given module. Let 12#12,where U is our defining module of relations for the module 13#13.
    module U = [z3,xy2,x3],[yz2,1,xy5z+z3],[y2z,0,x3],[xyz+x2,y2,0],[xyz,x2y,1];
Then, by definition, the annihilator of M is the ideal 14#14which is, by definition of M, the same as 15#15.Hence we have to calculate the quotient 16#16.The rank of the free module is determined by the choice of U and is the number of rows of the corresponding matrix. This may be retrieved by the function `nrows`. All we have to do now is the following:
    quotient(U,freemodule(nrows(U)));
The result is too big to be shown here.

User manual for Singular version 4.4.1, 2025, generated by texi2html.