up previous next
 4.12.1 Introduction to Modules
An object of type MODULE in CoCoA represents a submodule of a free module. A module is represented by its generators as:
```  Module(V_1,...,V_n)
```
Each V_i has the form [P_1,...P_r] or Vector(P_1,...P_r), where r is the rank of the free module containing the given module and each P_j is of type POLY.

As with ideals, information about a module can be accessed using the same syntax as for records.

CoCoA supports quotient modules and modules, as described in the next section. Shifts have been disabled in CoCoA 4.

 Example
 ``` Use S ::= QQ[x,y]; M := Module([x,y^2,2+x^2y],[x,0,y]); -- define the submodule of S^3 -- generated by (x,y^2,2+x^2y) and (x,0,y) GBasis(M); [Vector(x, 0, y), Vector(x, y^2, x^2y + 2)] ------------------------------- Describe M; Record[Type = MODULE, Value = Record[Gens = [[x, y^2, x^2y + 2], [x, 0, y]], MRC = 1, GBasis = [[x, 0, y], [x, y^2, x^2y + 2]]]] ------------------------------- M.GBasis; [Vector(x, 0, y), Vector(x, y^2, x^2y + 2)] ------------------------------- M.Gens[1]; Vector(x, y^2, x^2y + 2) ------------------------------- M.NumComps; -- M is a submodule of a free module of rank 3 3 ------------------------------- ```