A homalg module is a data structure for a finitely presented module. A presentation is given by a set of generators and a set of relations among these generators. The data structure for modules in homalg has two novel features:
The data structure allows several presentations linked with so-called transition matrices. One of the presentations is marked as the default presentation, which is usually the last added one. A new presentation can always be added provided it is linked to the default presentation by a transition matrix. If needed, the user can reset the default presentation by choosing one of the other presentations saved in the data structure of the homalg module. Effectively, a module is then given by all
its presentations (as coordinates
) together with isomorphisms between them (as coordinate changes
). Being able to change coordinates
makes the realization of a module in homalg intrinsic (or coordinate free
).
To present a left/right module it suffices to take a matrix M and interpret its rows/columns as relations among \(n\) abstract generators, where \(n\) is the number of columns/rows of M. Only that these abstract generators are useless when it comes to specific modules like modules of homomorphisms, where one expects the generators to be maps between modules. For this reason a presentation of a module in homalg is not merely a matrix of relations, but together with a set of generators.
‣ LeftPresentation ( mat ) | ( operation ) |
Returns: a homalg left module
This constructor returns the finitely presented left module with relations given by the rows of the homalg matrix mat.
gap> zz := HomalgRingOfIntegers( ); Z gap> M := HomalgMatrix( "[ \ > 2, 3, 4, \ > 5, 6, 7 \ > ]", 2, 3, zz ); <A 2 x 3 matrix over an internal ring> gap> M := LeftPresentation( M ); <A non-torsion left module presented by 2 relations for 3 generators> gap> Display( M ); [ [ 2, 3, 4 ], [ 5, 6, 7 ] ] Cokernel of the map Z^(1x2) --> Z^(1x3), currently represented by the above matrix gap> rels := RelationsOfModule( M ); <A set of 2 relations for 3 generators of a homalg left module> gap> MatrixOfRelations( M ); <A non-zero 2 x 3 matrix over an internal ring> gap> MatrixOfRelations( rels ); <A non-zero 2 x 3 matrix over an internal ring> gap> gens := GeneratorsOfModule( M ); <A set of 3 generators of a homalg left module> gap> MatrixOfGenerators( M ); <An unevaluated 3 x 3 matrix over an internal ring> gap> MatrixOfGenerators( gens ); <An unevaluated 3 x 3 matrix over an internal ring> gap> ByASmallerPresentation( M ); <A rank 1 left module presented by 1 relation for 2 generators> gap> Display( M ); Z/< 3 > + Z^(1 x 1)
‣ RightPresentation ( mat ) | ( operation ) |
Returns: a homalg right module
This constructor returns the finitely presented right module with relations given by the columns of the homalg matrix mat.
gap> zz := HomalgRingOfIntegers( ); Z gap> M := HomalgMatrix( "[ \ > 2, 3, 4, \ > 5, 6, 7 \ > ]", 2, 3, zz ); <A 2 x 3 matrix over an internal ring> gap> M := RightPresentation( M ); <A right module on 2 generators satisfying 3 relations> gap> Display( M ); [ [ 2, 3, 4 ], [ 5, 6, 7 ] ] Cokernel of the map Z^(3x1) --> Z^(2x1), currently represented by the above matrix gap> rels := RelationsOfModule( M ); <A set of 3 relations for 2 generators of a homalg right module> gap> MatrixOfRelations( M ); <A non-zero 2 x 3 matrix over an internal ring> gap> MatrixOfRelations( rels ); <A non-zero 2 x 3 matrix over an internal ring> gap> gens := GeneratorsOfModule( M ); <A set of 2 generators of a homalg right module> gap> MatrixOfGenerators( M ); <An unevaluated 2 x 2 matrix over an internal ring> gap> MatrixOfGenerators( gens ); <An unevaluated 2 x 2 matrix over an internal ring> gap> ByASmallerPresentation( M ); <A non-zero cyclic torsion right module on a cyclic generator satisfying 1 relation> gap> Display( M ); Z/< 3 >
generated by GAPDoc2HTML