Here we mention only those facts about operations that have to be told in addition to those for row spaces (see Operations for Row Spaces).
Comparisons of Modules
M1 = M2
M1 < M2
Equality and ordering of (quotients of) row modules are defined as equality Operations for Row Spaces).
This means that equal modules may be inequivalent as modules, and even the acting rings may be different. For testing equivalence of modules, see IsEquivalent for Row Modules.
gap> s:= Submodule( nat, [ [ 1, 1, 1 ] * Z(2) ] ); Submodule( nat, [ [ Z(2)^0, Z(2)^0, Z(2)^0 ] ] ) gap> s2:= Submodule( nat, [ [ 1, 1, 0 ] * Z(2) ] ); Submodule( nat, [ [ Z(2)^0, Z(2)^0, 0*Z(2) ] ] ) gap> s = s2; false gap> s < s2; true
Arithmetic Operations of Modules
M1 + M2
:
M1 / M2
:gap> s1:= Submodule( nat, [ [ 1, 1, 1 ] * Z(2) ] ); Submodule( nat, [ [ Z(2)^0, Z(2)^0, Z(2)^0 ] ] ) gap> q:= nat / s1; nat / [ [ Z(2)^0, Z(2)^0, Z(2)^0 ] ] gap> s2:= Submodule( nat, [ [ 1, 1, 0 ] * Z(2) ] ); Submodule( nat, [ [ Z(2)^0, Z(2)^0, 0*Z(2) ] ] ) gap> s3:= s1 + s2; Submodule( nat, [ [ Z(2)^0, Z(2)^0, Z(2)^0 ], [ 0*Z(2), 0*Z(2), Z(2)^0 ] ] ) gap> s3 = nat; true
GAP 3.4.4