gap> zz := HomalgRingOfIntegers( ); Z gap> F := HomalgFreeLeftModule( 1, zz ); <A free left module of rank 1 on a free generator> gap> 1 * zz; <The free left module of rank 1 on a free generator> gap> F := HomalgFreeLeftModule( 2, zz ); <A free left module of rank 2 on free generators> gap> 2 * zz; <A free left module of rank 2 on free generators>
gap> zz := HomalgRingOfIntegers( ); Z gap> F := HomalgFreeRightModule( 1, zz ); <A free right module of rank 1 on a free generator> gap> zz * 1; <The free right module of rank 1 on a free generator> gap> F := HomalgFreeRightModule( 2, zz ); <A free right module of rank 2 on free generators> gap> zz * 2; <A free right module of rank 2 on free generators>
gap> zz := HomalgRingOfIntegers( ); Z gap> F := HomalgZeroLeftModule( zz ); <A zero left module> gap> 0 * zz; <The zero left module>
gap> zz := HomalgRingOfIntegers( ); Z gap> F := HomalgZeroRightModule( zz ); <A zero right module> gap> zz * 0; <The zero right module>
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> BasisOfModule( M ); <A set of 2 relations for 3 generators of a homalg left module> gap> M; <A rank 1 left module presented by 2 relations for 3 generators> gap> Display( M ); [ [ 1, 0, -1 ], [ 0, 3, 6 ] ] Cokernel of the map Z^(1x2) --> Z^(1x3), currently represented by the above matrix
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> BasisOfModule( M ); <A set of 2 relations for 2 generators of a homalg right module> gap> M; <A torsion right module on 2 generators satisfying 2 relations> gap> Display( M ); [ [ 1, 0 ], [ 1, 3 ] ] Cokernel of the map Z^(2x1) --> Z^(2x1), currently represented by the above matrix
gap> zz := HomalgRingOfIntegers( ); Z gap> Display( zz ); <An internal ring> gap> Z4 := zz / 4; Z/( 4 ) gap> Display( Z4 ); <A residue class ring> gap> M := HomalgDiagonalMatrix( [ 2 .. 4 ], zz ); <An unevaluated diagonal 3 x 3 matrix over an internal ring> gap> M := LeftPresentation( M ); <A torsion left module presented by 3 relations for 3 generators> gap> Display( M ); Z/< 2 > + Z/< 3 > + Z/< 4 > gap> M; <A torsion left module presented by 3 relations for 3 generators> gap> N := Z4 * M; ## or N := M * Z4; <A non-torsion left module presented by 2 relations for 3 generators> gap> ByASmallerPresentation( N ); <A non-torsion left module presented by 1 relation for 2 generators> gap> Display( N ); Z/( 4 )/< |[ 2 ]| > + Z/( 4 )^(1 x 1) gap> N; <A non-torsion left module presented by 1 relation for 2 generators>
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> Z4 := zz / 4; Z/( 4 ) gap> M4 := Z4 * M; <A non-torsion left module presented by 2 relations for 3 generators> gap> Display( M4 ); [ [ 2, 3, 4 ], [ 5, 6, 7 ] ] modulo [ 4 ] Cokernel of the map Z/( 4 )^(1x2) --> Z/( 4 )^(1x3), currently represented by the above matrix
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> ByASmallerPresentation( M ); <A rank 1 left module presented by 1 relation for 2 generators> gap> Display( M ); Z/< 3 > + Z^(1 x 1) gap> M; <A rank 1 left module presented by 1 relation for 2 generators> gap> SetPositionOfTheDefaultPresentation( M, 1 ); gap> M; <A rank 1 left module presented by 2 relations for 3 generators>
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> dM := Resolution( M ); <A non-zero right acyclic complex containing a single morphism of left modules at degrees [ 0 .. 1 ]> gap> Display( dM ); ------------------------- at homology degree: 1 Z^(1 x 2) ------------------------- [ [ 1, 0, -1 ], [ 0, 3, 6 ] ] the map is currently represented by the above 2 x 3 matrix ------------v------------ at homology degree: 0 Z^(1 x 3) -------------------------
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> Z4 := zz / 4; Z/( 4 ) gap> M4 := Z4 * M; <A non-torsion left module presented by 2 relations for 3 generators> gap> Display( M4 ); [ [ 2, 3, 4 ], [ 5, 6, 7 ] ] modulo [ 4 ] Cokernel of the map Z/( 4 )^(1x2) --> Z/( 4 )^(1x3), currently represented by the above matrix gap> d := Resolution( 2, M4 ); <A right acyclic complex containing 2 morphisms of left modules at degrees [ 0 .. 2 ]> gap> Display( d ); ------------------------- at homology degree: 2 0 ------------------------- (an empty 0 x 2 matrix) the map is currently represented by the above 0 x 2 matrix ------------v------------ at homology degree: 1 Z/( 4 )^(1 x 2) ------------------------- [ [ 1, 0, 3 ], [ 0, 1, 2 ] ] modulo [ 4 ] the map is currently represented by the above 2 x 3 matrix ------------v------------ at homology degree: 0 Z/( 4 )^(1 x 3) -------------------------
gap> zz := HomalgRingOfIntegers( ); Z gap> mat := HomalgMatrix( "[ \ > 0, 1, 0, \ > 5, 6, 7, \ > 4, 6, 7 \ > ]", 3, 3, zz ); <A 3 x 3 matrix over an internal ring> gap> M := LeftPresentation( mat ); <A left module presented by 3 relations for 3 generators> gap> Display( M ); [ [ 0, 1, 0 ], [ 5, 6, 7 ], [ 4, 6, 7 ] ] Cokernel of the map Z^(1x3) --> Z^(1x3), currently represented by the above matrix gap> GetRidOfZeroGenerators( M ); <A cyclic torsion left module presented by 2 relations for a cyclic generator> gap> Display( M ); Z/< 7, 7 > gap> N := RightPresentation( Involution( mat ) ); <A right module on 3 generators satisfying 3 relations> gap> Display( N ); [ [ 0, 5, 4 ], [ 1, 6, 6 ], [ 0, 7, 7 ] ] Cokernel of the map Z^(3x1) --> Z^(3x1), currently represented by the above matrix gap> GetRidOfZeroGenerators( N ); <A cyclic torsion right module on a cyclic generator satisfying 2 relations> gap> Display( N ); Z/< 7, 7 >
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> N := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7, 8, 9 ]", 2, 4, zz ); <A 2 x 4 matrix over an internal ring> gap> N := LeftPresentation( N ); <A non-torsion left module presented by 2 relations for 4 generators> gap> mat := HomalgMatrix( "[ \ > 1, 0, -2, -4, \ > 0, 1, 4, 7, \ > 1, 0, -2, -4 \ > ]", 3, 4, zz ); <A 3 x 4 matrix over an internal ring> gap> phi := HomalgMap( mat, M, N ); <A "homomorphism" of left modules> gap> 0 * phi; <The zero morphism of left modules> gap> nu := -phi; <A "homomorphism" of left modules> gap> psi := HomalgMap( mat, M, N ); <A "homomorphism" of left modules> gap> chi := phi + psi; <A "homomorphism" of left modules> gap> eta := phi - psi; <The zero morphism of left modules> gap> IsMorphism( phi ); true gap> phi; <A homomorphism of left modules> gap> nu; <A homomorphism of left modules> gap> IsMorphism( psi ); true gap> chi; <A homomorphism of left modules> gap> lambda := HomalgMap( CertainColumns( mat, [ 1, 2, 4 ] ), M, M ); <An endo"morphism" of a left module> gap> IsMorphism( lambda ); false gap> lambda; <A non-well-defined self-map of a left module>
gap> zz := HomalgRingOfIntegersInExternalGAP( ); Z gap> M := HomalgMatrix( "[ \ > 2, 3, 4, \ > 5, 6, 7 \ > ]", 2, 3, zz ); <A 2 x 3 matrix over an external ring> gap> M := LeftPresentation( M ); <A non-torsion left module presented by 2 relations for 3 generators> gap> N := End( M ); <A non-torsion right module on 4 generators satisfying 3 relations> gap> e := End( N ); <A non-torsion left module presented by 7 relations for 8 generators> gap> ByASmallerPresentation( e ); <A non-torsion left module presented by 6 relations for 7 generators> gap> g := GetGenerators( e ); [ <An endomorphism of a right module>, <An endomorphism of a right module>, <An endomorphism of a right module>, <An endomorphism of a right module>, <An endomorphism of a right module>, <An endomorphism of a right module>, <An endomorphism of a right module> ] gap> Perform( g, Display ); [ [ 1, 3, 3, 5 ], [ 1, 2, 1, 2 ], [ 1, 1, -1, -1 ], [ 1, 1, 1, 1 ] ] the map is currently represented by the above 4 x 4 matrix [ [ -1, 3, 1, 5 ], [ 0, 2, 0, 2 ], [ 1, 1, -1, -1 ], [ 1, 1, 1, 1 ] ] the map is currently represented by the above 4 x 4 matrix [ [ 0, 0, 0, 4 ], [ 0, 1, 0, 1 ], [ 0, 2, 0, -2 ], [ 0, 2, 0, 2 ] ] the map is currently represented by the above 4 x 4 matrix [ [ 0, -1, 0, 5 ], [ 0, 0, 0, 2 ], [ 0, 1, 0, -1 ], [ 0, 1, 0, 1 ] ] the map is currently represented by the above 4 x 4 matrix [ [ 0, -2, 0, 2 ], [ 0, 0, 0, 1 ], [ 0, 2, 0, 0 ], [ 0, 0, 0, 2 ] ] the map is currently represented by the above 4 x 4 matrix [ [ 0, -1, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ] ] the map is currently represented by the above 4 x 4 matrix [ [ -1, 0, 3, 4 ], [ 0, 1, 0, 1 ], [ 2, 0, -2, -2 ], [ 2, 2, 2, 0 ] ] the map is currently represented by the above 4 x 4 matrix gap> ByASmallerPresentation( N ); <A non-torsion right module on 3 generators satisfying 2 relations> gap> Perform( g, Display ); [ [ -2, 2, 1 ], [ 0, 1, 0 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ -4, 2, 2 ], [ 0, 1, 0 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ -2, 1, 1 ], [ -4, 2, 2 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ -6, 2, 2 ], [ -2, 1, 1 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ -3, 1, 1 ], [ -6, 2, 2 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ 0, 0, 0 ], [ -3, 1, 1 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ -2, 1, 1 ], [ 6, 0, -3 ], [ 0, 0, 1 ] ] the map is currently represented by the above 3 x 3 matrix gap> Perform( g, DecideZero ); gap> Perform( g, Display ); [ [ 1, 2, 1 ], [ 0, 1, 0 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ 2, 2, 2 ], [ 0, 1, 0 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ 1, 1, 1 ], [ 2, 2, 2 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ 0, 2, 2 ], [ 1, 1, 1 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ 0, 1, 1 ], [ 0, 2, 2 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ 0, 0, 0 ], [ 0, 1, 1 ], [ 0, 0, 0 ] ] the map is currently represented by the above 3 x 3 matrix [ [ 1, 1, 1 ], [ 0, 0, 0 ], [ 0, 0, 1 ] ] the map is currently represented by the above 3 x 3 matrix
generated by GAPDoc2HTML