Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 4183461[1X7 [33X[0;0YModules[133X[101X23[33X[0;0YA [5Xhomalg[105X module is a data structure for a finitely presented module. A4presentation is given by a set of generators and a set of relations among5these generators. The data structure for modules in [5Xhomalg[105X has two novel6features:[133X78[30X [33X[0;6YThe data structure allows several presentations linked with so-called9transition matrices. One of the presentations is marked as the default10presentation, which is usually the last added one. A new presentation11can always be added provided it is linked to the default presentation12by a transition matrix. If needed, the user can reset the default13presentation by choosing one of the other presentations saved in the14data structure of the [5Xhomalg[105X module. Effectively, a module is then15given by [21Xall[121X its presentations (as [21Xcoordinates[121X) together with16isomorphisms between them (as [21Xcoordinate changes[121X). Being able to17[21Xchange coordinates[121X makes the realization of a module in [5Xhomalg[105X18[13Xintrinsic[113X (or [21Xcoordinate free[121X).[133X1920[30X [33X[0;6YTo present a left/right module it suffices to take a matrix [3XM[103X and21interpret its rows/columns as relations among [22Xn[122X [13Xabstract[113X generators,22where [22Xn[122X is the number of columns/rows of [3XM[103X. Only that these abstract23generators are useless when it comes to specific modules like modules24of homomorphisms, where one expects the generators to be maps between25modules. For this reason a presentation of a module in [5Xhomalg[105X is not26merely a matrix of relations, but together with a set of generators.[133X272829[1X7.1 [33X[0;0YModules: Category and Representations[133X[101X3031[1X7.1-1 IsHomalgModule[101X3233[29X[2XIsHomalgModule[102X( [3XM[103X ) [32X Category34[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X3536[33X[0;0YThe [5XGAP[105X category of [5Xhomalg[105X modules.[133X3738[33X[0;0Y(It is a subcategory of the [5XGAP[105X categories [10XIsHomalgRingOrModule[110X and39[10XIsHomalgStaticObject[110X.)[133X4041[4X[32X Code [32X[104X42[4XDeclareCategory( "IsHomalgModule",[104X43[4X IsHomalgRingOrModule and[104X44[4X IsHomalgModuleOrMap and[104X45[4X IsHomalgStaticObject );[104X46[4X[32X[104X4748[1X7.1-2 IsFinitelyPresentedModuleOrSubmoduleRep[101X4950[29X[2XIsFinitelyPresentedModuleOrSubmoduleRep[102X( [3XM[103X ) [32X Representation51[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X5253[33X[0;0YThe [5XGAP[105X representation of finitley presented [5Xhomalg[105X modules or submodules.[133X5455[33X[0;0Y(It is a representation of the [5XGAP[105X category [2XIsHomalgModule[102X ([14X7.1-1[114X), which is56a subrepresentation of the [5XGAP[105X representations57[10XIsStaticFinitelyPresentedObjectOrSubobjectRep[110X.)[133X5859[4X[32X Code [32X[104X60[4XDeclareRepresentation( "IsFinitelyPresentedModuleOrSubmoduleRep",[104X61[4X IsHomalgModule and[104X62[4X IsStaticFinitelyPresentedObjectOrSubobjectRep,[104X63[4X [ ] );[104X64[4X[32X[104X6566[1X7.1-3 IsFinitelyPresentedModuleRep[101X6768[29X[2XIsFinitelyPresentedModuleRep[102X( [3XM[103X ) [32X Representation69[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X7071[33X[0;0YThe [5XGAP[105X representation of finitley presented [5Xhomalg[105X modules.[133X7273[33X[0;0Y(It is a representation of the [5XGAP[105X category [2XIsHomalgModule[102X ([14X7.1-1[114X), which is74a subrepresentation of the [5XGAP[105X representations75[10XIsFinitelyPresentedModuleOrSubmoduleRep[110X, [10XIsStaticFinitelyPresentedObjectRep[110X,76and [10XIsHomalgRingOrFinitelyPresentedModuleRep[110X.)[133X7778[4X[32X Code [32X[104X79[4XDeclareRepresentation( "IsFinitelyPresentedModuleRep",[104X80[4X IsFinitelyPresentedModuleOrSubmoduleRep and[104X81[4X IsStaticFinitelyPresentedObjectRep and[104X82[4X IsHomalgRingOrFinitelyPresentedModuleRep,[104X83[4X [ "SetsOfGenerators", "SetsOfRelations",[104X84[4X "PresentationMorphisms",[104X85[4X "Resolutions",[104X86[4X "TransitionMatrices",[104X87[4X "PositionOfTheDefaultPresentation" ] );[104X88[4X[32X[104X8990[1X7.1-4 IsFinitelyPresentedSubmoduleRep[101X9192[29X[2XIsFinitelyPresentedSubmoduleRep[102X( [3XM[103X ) [32X Representation93[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X9495[33X[0;0YThe [5XGAP[105X representation of finitley generated [5Xhomalg[105X submodules.[133X9697[33X[0;0Y(It is a representation of the [5XGAP[105X category [2XIsHomalgModule[102X ([14X7.1-1[114X), which is98a subrepresentation of the [5XGAP[105X representations99[10XIsFinitelyPresentedModuleOrSubmoduleRep[110X,100[10XIsStaticFinitelyPresentedSubobjectRep[110X, and101[10XIsHomalgRingOrFinitelyPresentedModuleRep[110X.)[133X102103[4X[32X Code [32X[104X104[4XDeclareRepresentation( "IsFinitelyPresentedSubmoduleRep",[104X105[4X IsFinitelyPresentedModuleOrSubmoduleRep and[104X106[4X IsStaticFinitelyPresentedSubobjectRep and[104X107[4X IsHomalgRingOrFinitelyPresentedModuleRep,[104X108[4X [ "map_having_subobject_as_its_image" ] );[104X109[4X[32X[104X110111112[1X7.2 [33X[0;0YModules: Constructors[133X[101X113114[1X7.2-1 LeftPresentation[101X115116[29X[2XLeftPresentation[102X( [3Xmat[103X ) [32X operation117[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X module[133X118119[33X[0;0YThis constructor returns the finitely presented left module with relations120given by the rows of the [5Xhomalg[105X matrix [3Xmat[103X.[133X121122[4X[32X Example [32X[104X123[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );;[127X[104X124[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ \[127X[104X125[4X[25X>[125X [27X2, 3, 4, \[127X[104X126[4X[25X>[125X [27X5, 6, 7 \[127X[104X127[4X[25X>[125X [27X]", 2, 3, ZZ );[127X[104X128[4X[28X<A 2 x 3 matrix over an internal ring>[128X[104X129[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X130[4X[28X<A non-torsion left module presented by 2 relations for 3 generators>[128X[104X131[4X[25Xgap>[125X [27XDisplay( M );[127X[104X132[4X[28X[ [ 2, 3, 4 ],[128X[104X133[4X[28X [ 5, 6, 7 ] ][128X[104X134[4X[28X[128X[104X135[4X[28XCokernel of the map[128X[104X136[4X[28X[128X[104X137[4X[28XZ^(1x2) --> Z^(1x3),[128X[104X138[4X[28X[128X[104X139[4X[28Xcurrently represented by the above matrix[128X[104X140[4X[25Xgap>[125X [27XByASmallerPresentation( M );[127X[104X141[4X[28X<A rank 1 left module presented by 1 relation for 2 generators>[128X[104X142[4X[25Xgap>[125X [27XDisplay( last );[127X[104X143[4X[28XZ/< 3 > + Z^(1 x 1)[128X[104X144[4X[32X[104X145146[1X7.2-2 RightPresentation[101X147148[29X[2XRightPresentation[102X( [3Xmat[103X ) [32X operation149[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X module[133X150151[33X[0;0YThis constructor returns the finitely presented right module with relations152given by the columns of the [5Xhomalg[105X matrix [3Xmat[103X.[133X153154[4X[32X Example [32X[104X155[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );;[127X[104X156[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ \[127X[104X157[4X[25X>[125X [27X2, 3, 4, \[127X[104X158[4X[25X>[125X [27X5, 6, 7 \[127X[104X159[4X[25X>[125X [27X]", 2, 3, ZZ );[127X[104X160[4X[28X<A 2 x 3 matrix over an internal ring>[128X[104X161[4X[25Xgap>[125X [27XM := RightPresentation( M );[127X[104X162[4X[28X<A right module on 2 generators satisfying 3 relations>[128X[104X163[4X[25Xgap>[125X [27XByASmallerPresentation( M );[127X[104X164[4X[28X<A cyclic torsion right module on a cyclic generator satisfying 1 relation>[128X[104X165[4X[25Xgap>[125X [27XDisplay( last );[127X[104X166[4X[28XZ/< 3 >[128X[104X167[4X[32X[104X168169[1X7.2-3 HomalgFreeLeftModule[101X170171[29X[2XHomalgFreeLeftModule[102X( [3Xr[103X, [3XR[103X ) [32X operation172[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X module[133X173174[33X[0;0YThis constructor returns a free left module of rank [3Xr[103X over the [5Xhomalg[105X ring175[3XR[103X.[133X176177[4X[32X Example [32X[104X178[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );;[127X[104X179[4X[25Xgap>[125X [27XF := HomalgFreeLeftModule( 1, ZZ );[127X[104X180[4X[28X<A free left module of rank 1 on a free generator>[128X[104X181[4X[25Xgap>[125X [27X1 * ZZ;[127X[104X182[4X[28X<The free left module of rank 1 on a free generator>[128X[104X183[4X[25Xgap>[125X [27XF := HomalgFreeLeftModule( 2, ZZ );[127X[104X184[4X[28X<A free left module of rank 2 on free generators>[128X[104X185[4X[25Xgap>[125X [27X2 * ZZ;[127X[104X186[4X[28X<A free left module of rank 2 on free generators>[128X[104X187[4X[32X[104X188189[1X7.2-4 HomalgFreeRightModule[101X190191[29X[2XHomalgFreeRightModule[102X( [3Xr[103X, [3XR[103X ) [32X operation192[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X module[133X193194[33X[0;0YThis constructor returns a free right module of rank [3Xr[103X over the [5Xhomalg[105X ring195[3XR[103X.[133X196197[4X[32X Example [32X[104X198[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );;[127X[104X199[4X[25Xgap>[125X [27XF := HomalgFreeRightModule( 1, ZZ );[127X[104X200[4X[28X<A free right module of rank 1 on a free generator>[128X[104X201[4X[25Xgap>[125X [27XZZ * 1;[127X[104X202[4X[28X<The free right module of rank 1 on a free generator>[128X[104X203[4X[25Xgap>[125X [27XF := HomalgFreeRightModule( 2, ZZ );[127X[104X204[4X[28X<A free right module of rank 2 on free generators>[128X[104X205[4X[25Xgap>[125X [27XZZ * 2;[127X[104X206[4X[28X<A free right module of rank 2 on free generators>[128X[104X207[4X[32X[104X208209[1X7.2-5 HomalgZeroLeftModule[101X210211[29X[2XHomalgZeroLeftModule[102X( [3Xr[103X, [3XR[103X ) [32X operation212[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X module[133X213214[33X[0;0YThis constructor returns a zero left module of rank [3Xr[103X over the [5Xhomalg[105X ring215[3XR[103X.[133X216217[4X[32X Example [32X[104X218[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );;[127X[104X219[4X[25Xgap>[125X [27XF := HomalgZeroLeftModule( ZZ );[127X[104X220[4X[28X<A zero left module>[128X[104X221[4X[25Xgap>[125X [27X0 * ZZ;[127X[104X222[4X[28X<The zero left module>[128X[104X223[4X[32X[104X224225[1X7.2-6 HomalgZeroRightModule[101X226227[29X[2XHomalgZeroRightModule[102X( [3Xr[103X, [3XR[103X ) [32X operation228[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X module[133X229230[33X[0;0YThis constructor returns a zero right module of rank [3Xr[103X over the [5Xhomalg[105X ring231[3XR[103X.[133X232233[4X[32X Example [32X[104X234[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );;[127X[104X235[4X[25Xgap>[125X [27XF := HomalgZeroRightModule( ZZ );[127X[104X236[4X[28X<A zero right module>[128X[104X237[4X[25Xgap>[125X [27XZZ * 0;[127X[104X238[4X[28X<The zero right module>[128X[104X239[4X[32X[104X240241[1X7.2-7 \*[101X242243[29X[2X\*[102X( [3XR[103X, [3XM[103X ) [32X operation244[29X[2X\*[102X( [3XM[103X, [3XR[103X ) [32X operation245[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X module[133X246247[33X[0;0YTransfers the [22XS[122X-module [3XM[103X over the [5Xhomalg[105X ring [3XR[103X. This works only in three248cases:[133X249250[31X1[131X [33X[0;6Y[22XS[122X is a subring of [3XR[103X.[133X251252[31X2[131X [33X[0;6Y[3XR[103X is a residue class ring of [22XS[122X constructed using [10X/[110X.[133X253254[31X3[131X [33X[0;6Y[3XR[103X is a subring of [22XS[122X and the entries of the current matrix of255[22XS[122X-relations of [3XM[103X lie in [3XR[103X.[133X256257[33X[0;0YCAUTION: So it is not suited for general base change.[133X258259[4X[32X Example [32X[104X260[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X261[4X[28XZ[128X[104X262[4X[25Xgap>[125X [27XDisplay( ZZ );[127X[104X263[4X[28X<An internal ring>[128X[104X264[4X[25Xgap>[125X [27XZ4 := ZZ / 4;[127X[104X265[4X[28XZ/( 4 )[128X[104X266[4X[25Xgap>[125X [27XDisplay( Z4 );[127X[104X267[4X[28X<A residue class ring>[128X[104X268[4X[25Xgap>[125X [27XM := HomalgDiagonalMatrix( [ 2 .. 4 ], ZZ );[127X[104X269[4X[28X<An unevaluated diagonal 3 x 3 matrix over an internal ring>[128X[104X270[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X271[4X[28X<A torsion left module presented by 3 relations for 3 generators>[128X[104X272[4X[25Xgap>[125X [27XDisplay( M );[127X[104X273[4X[28XZ/< 2 > + Z/< 3 > + Z/< 4 >[128X[104X274[4X[25Xgap>[125X [27XM;[127X[104X275[4X[28X<A torsion left module presented by 3 relations for 3 generators>[128X[104X276[4X[25Xgap>[125X [27XN := Z4 * M; ## or N := M * Z4;[127X[104X277[4X[28X<A non-torsion left module presented by 2 relations for 3 generators>[128X[104X278[4X[25Xgap>[125X [27XByASmallerPresentation( N );[127X[104X279[4X[28X<A non-torsion left module presented by 1 relation for 2 generators>[128X[104X280[4X[25Xgap>[125X [27XDisplay( N );[127X[104X281[4X[28XZ/( 4 )/< |[ 2 ]| > + Z/( 4 )^(1 x 1)[128X[104X282[4X[25Xgap>[125X [27XN;[127X[104X283[4X[28X<A non-torsion left module presented by 1 relation for 2 generators>[128X[104X284[4X[32X[104X285286[4X[32X Example [32X[104X287[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X288[4X[28XZ[128X[104X289[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ \[127X[104X290[4X[25X>[125X [27X2, 3, 4, \[127X[104X291[4X[25X>[125X [27X5, 6, 7 \[127X[104X292[4X[25X>[125X [27X]", 2, 3, ZZ );[127X[104X293[4X[28X<A 2 x 3 matrix over an internal ring>[128X[104X294[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X295[4X[28X<A non-torsion left module presented by 2 relations for 3 generators>[128X[104X296[4X[25Xgap>[125X [27XZ4 := ZZ / 4;[127X[104X297[4X[28XZ/( 4 )[128X[104X298[4X[25Xgap>[125X [27XDisplay( Z4 );[127X[104X299[4X[28X<A residue class ring>[128X[104X300[4X[25Xgap>[125X [27XM4 := Z4 * M;[127X[104X301[4X[28X<A non-torsion left module presented by 2 relations for 3 generators>[128X[104X302[4X[25Xgap>[125X [27XDisplay( M4 );[127X[104X303[4X[28X[ [ 2, 3, 4 ],[128X[104X304[4X[28X [ 5, 6, 7 ] ][128X[104X305[4X[28X[128X[104X306[4X[28Xmodulo [ 4 ][128X[104X307[4X[28X[128X[104X308[4X[28XCokernel of the map[128X[104X309[4X[28X[128X[104X310[4X[28XZ/( 4 )^(1x2) --> Z/( 4 )^(1x3),[128X[104X311[4X[28X[128X[104X312[4X[28Xcurrently represented by the above matrix[128X[104X313[4X[25Xgap>[125X [27Xd := Resolution( 2, M4 );[127X[104X314[4X[28X<A right acyclic complex containing 2 morphisms of left modules at degrees [128X[104X315[4X[28X[ 0 .. 2 ]>[128X[104X316[4X[25Xgap>[125X [27Xdd := Hom( d, Z4 );[127X[104X317[4X[28X<A cocomplex containing 2 morphisms of right modules at degrees [ 0 .. 2 ]>[128X[104X318[4X[25Xgap>[125X [27XDD := Resolution( 2, dd );[127X[104X319[4X[28X<A cocomplex containing 2 morphisms of right complexes at degrees [ 0 .. 2 ]>[128X[104X320[4X[25Xgap>[125X [27XD := Hom( DD, Z4 );[127X[104X321[4X[28X<A complex containing 2 morphisms of left cocomplexes at degrees [ 0 .. 2 ]>[128X[104X322[4X[25Xgap>[125X [27XC := ZZ * D;[127X[104X323[4X[28X<A "complex" containing 2 morphisms of left cocomplexes at degrees [ 0 .. 2 ]>[128X[104X324[4X[25Xgap>[125X [27XLowestDegreeObject( C );[127X[104X325[4X[28X<A "cocomplex" containing 2 morphisms of left modules at degrees [ 0 .. 2 ]>[128X[104X326[4X[25Xgap>[125X [27XDisplay( last );[127X[104X327[4X[28X-------------------------[128X[104X328[4X[28Xat cohomology degree: 2[128X[104X329[4X[28X0[128X[104X330[4X[28X------------^------------[128X[104X331[4X[28X(an empty 1 x 0 matrix)[128X[104X332[4X[28X[128X[104X333[4X[28Xthe map is currently represented by the above 1 x 0 matrix[128X[104X334[4X[28X-------------------------[128X[104X335[4X[28Xat cohomology degree: 1[128X[104X336[4X[28XZ/< 4 > [128X[104X337[4X[28X------------^------------[128X[104X338[4X[28X[ [ 0 ],[128X[104X339[4X[28X [ 1 ],[128X[104X340[4X[28X [ 2 ],[128X[104X341[4X[28X [ 1 ] ][128X[104X342[4X[28X[128X[104X343[4X[28Xthe map is currently represented by the above 4 x 1 matrix[128X[104X344[4X[28X-------------------------[128X[104X345[4X[28Xat cohomology degree: 0[128X[104X346[4X[28XZ/< 4 > + Z/< 4 > + Z/< 4 > + Z/< 4 > [128X[104X347[4X[28X-------------------------[128X[104X348[4X[32X[104X349350[1X7.2-8 Subobject[101X351352[29X[2XSubobject[102X( [3Xmat[103X, [3XM[103X ) [32X operation353[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X submodule[133X354355[33X[0;0YThis constructor returns the finitely generated left/right submodule of the356[5Xhomalg[105X module [3XM[103X with generators given by the rows/columns of the [5Xhomalg[105X357matrix [3Xmat[103X.[133X358359[1X7.2-9 Subobject[101X360361[29X[2XSubobject[102X( [3Xgens[103X, [3XM[103X ) [32X operation362[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X submodule[133X363364[33X[0;0YThis constructor returns the finitely generated left/right submodule of the365[5Xhomalg[105X cyclic left/right module [3XM[103X with generators given by the entries of366the list [3Xgens[103X.[133X367368[1X7.2-10 LeftSubmodule[101X369370[29X[2XLeftSubmodule[102X( [3Xmat[103X ) [32X operation371[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X submodule[133X372373[33X[0;0YThis constructor returns the finitely generated left submodule with374generators given by the rows of the [5Xhomalg[105X matrix [3Xmat[103X.[133X375376[4X[32X Code [32X[104X377[4XInstallMethod( LeftSubmodule,[104X378[4X "constructor for homalg submodules",[104X379[4X [ IsHomalgMatrix ],[104X380[4X [104X381[4X function( gen )[104X382[4X local R;[104X383[4X [104X384[4X R := HomalgRing( gen );[104X385[4X [104X386[4X return Subobject( gen, NrColumns( gen ) * R );[104X387[4X [104X388[4Xend );[104X389[4X[32X[104X390391[4X[32X Example [32X[104X392[4X[25Xgap>[125X [27XZ4 := HomalgRingOfIntegers( ) / 4;[127X[104X393[4X[28XZ/( 4 )[128X[104X394[4X[25Xgap>[125X [27XI := HomalgMatrix( "[ 2 ]", 1, 1, Z4 );[127X[104X395[4X[28X<A 1 x 1 matrix over a residue class ring>[128X[104X396[4X[25Xgap>[125X [27XI := LeftSubmodule( I );[127X[104X397[4X[28X<A principal torsion-free (left) ideal given by a cyclic generator>[128X[104X398[4X[25Xgap>[125X [27XIsFree( I );[127X[104X399[4X[28Xfalse[128X[104X400[4X[25Xgap>[125X [27XI;[127X[104X401[4X[28X<A principal reflexive non-projective (left) ideal given by a cyclic generator\[128X[104X402[4X[28X>[128X[104X403[4X[32X[104X404405[1X7.2-11 RightSubmodule[101X406407[29X[2XRightSubmodule[102X( [3Xmat[103X ) [32X operation408[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X submodule[133X409410[33X[0;0YThis constructor returns the finitely generated right submodule with411generators given by the columns of the [5Xhomalg[105X matrix [3Xmat[103X.[133X412413[4X[32X Code [32X[104X414[4XInstallMethod( RightSubmodule,[104X415[4X "constructor for homalg submodules",[104X416[4X [ IsHomalgMatrix ],[104X417[4X [104X418[4X function( gen )[104X419[4X local R;[104X420[4X [104X421[4X R := HomalgRing( gen );[104X422[4X [104X423[4X return Subobject( gen, R * NrRows( gen ) );[104X424[4X [104X425[4Xend );[104X426[4X[32X[104X427428[4X[32X Example [32X[104X429[4X[25Xgap>[125X [27XZ4 := HomalgRingOfIntegers( ) / 4;[127X[104X430[4X[28XZ/( 4 )[128X[104X431[4X[25Xgap>[125X [27XI := HomalgMatrix( "[ 2 ]", 1, 1, Z4 );[127X[104X432[4X[28X<A 1 x 1 matrix over a residue class ring>[128X[104X433[4X[25Xgap>[125X [27XI := RightSubmodule( I );[127X[104X434[4X[28X<A principal torsion-free (right) ideal given by a cyclic generator>[128X[104X435[4X[25Xgap>[125X [27XIsFree( I );[127X[104X436[4X[28Xfalse[128X[104X437[4X[25Xgap>[125X [27XI;[127X[104X438[4X[28X<A principal reflexive non-projective (right) ideal given by a cyclic generato\[128X[104X439[4X[28Xr>[128X[104X440[4X[32X[104X441442443[1X7.3 [33X[0;0YModules: Properties[133X[101X444445[1X7.3-1 IsCyclic[101X446447[29X[2XIsCyclic[102X( [3XM[103X ) [32X property448[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X449450[33X[0;0YCheck if the [5Xhomalg[105X module [3XM[103X is cyclic.[133X451452[1X7.3-2 IsHolonomic[101X453454[29X[2XIsHolonomic[102X( [3XM[103X ) [32X property455[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X456457[33X[0;0YCheck if the [5Xhomalg[105X module [3XM[103X is holonomic.[133X458459[1X7.3-3 IsReduced[101X460461[29X[2XIsReduced[102X( [3XM[103X ) [32X property462[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X463464[33X[0;0YCheck if the [5Xhomalg[105X module [3XM[103X is reduced.[133X465466[1X7.3-4 IsPrimeIdeal[101X467468[29X[2XIsPrimeIdeal[102X( [3XJ[103X ) [32X property469[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X470471[33X[0;0YCheck if the [5Xhomalg[105X submodule [3XJ[103X is a prime ideal. The ring has to be472commutative.[133X473[33X[0;0Y(no method installed)[133X474475[1X7.3-5 IsPrimeModule[101X476477[29X[2XIsPrimeModule[102X( [3XM[103X ) [32X property478[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X479480[33X[0;0YCheck if the [5Xhomalg[105X module [3XM[103X is prime.[133X481482[33X[0;0YFor more properties see the corresponding section [14X'homalg: Objects:483Properties'[114X) in the documentation of the [5Xhomalg[105X package.[133X484485486[1X7.4 [33X[0;0YModules: Attributes[133X[101X487488[1X7.4-1 ResidueClassRing[101X489490[29X[2XResidueClassRing[102X( [3XJ[103X ) [32X attribute491[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X ring[133X492493[33X[0;0YIn case [3XJ[103X was defined as a (left/right) ideal of the ring [22XR[122X the residue494class ring [22XR/[122X[3XJ[103X is returned.[133X495496[1X7.4-2 PrimaryDecomposition[101X497498[29X[2XPrimaryDecomposition[102X( [3XJ[103X ) [32X attribute499[6XReturns:[106X [33X[0;10Ya list[133X500501[33X[0;0YThe primary decomposition of the ideal [3XJ[103X. The ring has to be commutative.[133X502[33X[0;0Y(no method installed)[133X503504[1X7.4-3 RadicalDecomposition[101X505506[29X[2XRadicalDecomposition[102X( [3XJ[103X ) [32X attribute507[6XReturns:[106X [33X[0;10Ya list[133X508509[33X[0;0YThe prime decomposition of the radical of the ideal [3XJ[103X. The ring has to be510commutative.[133X511[33X[0;0Y(no method installed)[133X512513[1X7.4-4 ModuleOfKaehlerDifferentials[101X514515[29X[2XModuleOfKaehlerDifferentials[102X( [3XR[103X ) [32X attribute516[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X module[133X517518[33X[0;0YThe module of Kaehler differentials of the (residue class ring) [3XR[103X.[133X519[33X[0;0Y(method installed in package [5XGradedModules[105X)[133X520521[1X7.4-5 RadicalSubobject[101X522523[29X[2XRadicalSubobject[102X( [3XM[103X ) [32X property524[6XReturns:[106X [33X[0;10Ya function[133X525526[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X527528[1X7.4-6 SymmetricAlgebra[101X529530[29X[2XSymmetricAlgebra[102X( [3XM[103X ) [32X attribute531[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X ring[133X532533[33X[0;0YThe symmetric algebra of the module [3XM[103X.[133X534535[1X7.4-7 ExteriorAlgebra[101X536537[29X[2XExteriorAlgebra[102X( [3XM[103X ) [32X attribute538[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X ring[133X539540[33X[0;0YThe exterior algebra of the module [3XM[103X.[133X541542[1X7.4-8 ElementaryDivisors[101X543544[29X[2XElementaryDivisors[102X( [3XM[103X ) [32X attribute545[6XReturns:[106X [33X[0;10Ya list of ring elements[133X546547[33X[0;0YThe list of elementary divisors of the [5Xhomalg[105X module [3XM[103X, in case they exist.[133X548[33X[0;0Y(no method installed)[133X549550[1X7.4-9 FittingIdeal[101X551552[29X[2XFittingIdeal[102X( [3XM[103X ) [32X attribute553[6XReturns:[106X [33X[0;10Ya list[133X554555[33X[0;0YThe Fitting ideal of [3XM[103X.[133X556557[1X7.4-10 NonFlatLocus[101X558559[29X[2XNonFlatLocus[102X( [3XM[103X ) [32X attribute560[6XReturns:[106X [33X[0;10Ya list[133X561562[33X[0;0YThe non flat locus of [3XM[103X.[133X563564[1X7.4-11 LargestMinimalNumberOfLocalGenerators[101X565566[29X[2XLargestMinimalNumberOfLocalGenerators[102X( [3XM[103X ) [32X attribute567[6XReturns:[106X [33X[0;10Ya nonnegative integer[133X568569[33X[0;0YThe minimal number of [13Xlocal[113X generators of the module [3XM[103X.[133X570571[1X7.4-12 CoefficientsOfUnreducedNumeratorOfHilbertPoincareSeries[101X572573[29X[2XCoefficientsOfUnreducedNumeratorOfHilbertPoincareSeries[102X( [3XM[103X ) [32X attribute574[6XReturns:[106X [33X[0;10Ya list of integers[133X575576[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X577578[1X7.4-13 CoefficientsOfNumeratorOfHilbertPoincareSeries[101X579580[29X[2XCoefficientsOfNumeratorOfHilbertPoincareSeries[102X( [3XM[103X ) [32X attribute581[6XReturns:[106X [33X[0;10Ya list of integers[133X582583[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X584585[1X7.4-14 UnreducedNumeratorOfHilbertPoincareSeries[101X586587[29X[2XUnreducedNumeratorOfHilbertPoincareSeries[102X( [3XM[103X ) [32X attribute588[6XReturns:[106X [33X[0;10Ya univariate polynomial with rational coefficients[133X589590[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X591592[1X7.4-15 NumeratorOfHilbertPoincareSeries[101X593594[29X[2XNumeratorOfHilbertPoincareSeries[102X( [3XM[103X ) [32X attribute595[6XReturns:[106X [33X[0;10Ya univariate polynomial with rational coefficients[133X596597[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X598599[1X7.4-16 HilbertPoincareSeries[101X600601[29X[2XHilbertPoincareSeries[102X( [3XM[103X ) [32X attribute602[6XReturns:[106X [33X[0;10Ya univariate rational function with rational coefficients[133X603604[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X605606[1X7.4-17 AffineDegree[101X607608[29X[2XAffineDegree[102X( [3XM[103X ) [32X attribute609[6XReturns:[106X [33X[0;10Ya nonnegative integer[133X610611[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X612613[1X7.4-18 DataOfHilbertFunction[101X614615[29X[2XDataOfHilbertFunction[102X( [3XM[103X ) [32X property616[6XReturns:[106X [33X[0;10Ya function[133X617618[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X619620[1X7.4-19 HilbertFunction[101X621622[29X[2XHilbertFunction[102X( [3XM[103X ) [32X property623[6XReturns:[106X [33X[0;10Ya function[133X624625[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X626627[1X7.4-20 IndexOfRegularity[101X628629[29X[2XIndexOfRegularity[102X( [3XM[103X ) [32X property630[6XReturns:[106X [33X[0;10Ya function[133X631632[33X[0;0Y[3XM[103X is a [5Xhomalg[105X module.[133X633634[33X[0;0YFor more attributes see the corresponding section [14X'homalg: Objects:635Attributes'[114X) in the documentation of the [5Xhomalg[105X package.[133X636637638[1X7.5 [33X[0;0YModules: Operations and Functions[133X[101X639640[1X7.5-1 HomalgRing[101X641642[29X[2XHomalgRing[102X( [3XM[103X ) [32X operation643[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X ring[133X644645[33X[0;0YThe [5Xhomalg[105X ring of the [5Xhomalg[105X module [3XM[103X.[133X646647[4X[32X Example [32X[104X648[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X649[4X[28XZ[128X[104X650[4X[25Xgap>[125X [27XM := ZZ * 4;[127X[104X651[4X[28X<A free right module of rank 4 on free generators>[128X[104X652[4X[25Xgap>[125X [27XR := HomalgRing( M );[127X[104X653[4X[28XZ[128X[104X654[4X[25Xgap>[125X [27XIsIdenticalObj( R, ZZ );[127X[104X655[4X[28Xtrue[128X[104X656[4X[32X[104X657658[1X7.5-2 ByASmallerPresentation[101X659660[29X[2XByASmallerPresentation[102X( [3XM[103X ) [32X method661[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X module[133X662663[33X[0;0YUse different strategies to reduce the presentation of the given [5Xhomalg[105X664module [3XM[103X. This method performs side effects on its argument [3XM[103X and returns665it.[133X666667[4X[32X Example [32X[104X668[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );;[127X[104X669[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ \[127X[104X670[4X[25X>[125X [27X2, 3, 4, \[127X[104X671[4X[25X>[125X [27X5, 6, 7 \[127X[104X672[4X[25X>[125X [27X]", 2, 3, ZZ );[127X[104X673[4X[28X<A 2 x 3 matrix over an internal ring>[128X[104X674[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X675[4X[28X<A non-torsion left module presented by 2 relations for 3 generators>[128X[104X676[4X[25Xgap>[125X [27XDisplay( M );[127X[104X677[4X[28X[ [ 2, 3, 4 ],[128X[104X678[4X[28X [ 5, 6, 7 ] ][128X[104X679[4X[28X[128X[104X680[4X[28XCokernel of the map[128X[104X681[4X[28X[128X[104X682[4X[28XZ^(1x2) --> Z^(1x3),[128X[104X683[4X[28X[128X[104X684[4X[28Xcurrently represented by the above matrix[128X[104X685[4X[25Xgap>[125X [27XByASmallerPresentation( M );[127X[104X686[4X[28X<A rank 1 left module presented by 1 relation for 2 generators>[128X[104X687[4X[25Xgap>[125X [27XDisplay( last );[127X[104X688[4X[28XZ/< 3 > + Z^(1 x 1)[128X[104X689[4X[25Xgap>[125X [27XSetsOfGenerators( M );[127X[104X690[4X[28X<A set containing 2 sets of generators of a homalg module>[128X[104X691[4X[25Xgap>[125X [27XSetsOfRelations( M );[127X[104X692[4X[28X<A set containing 2 sets of relations of a homalg module>[128X[104X693[4X[25Xgap>[125X [27XM;[127X[104X694[4X[28X<A rank 1 left module presented by 1 relation for 2 generators>[128X[104X695[4X[25Xgap>[125X [27XSetPositionOfTheDefaultPresentation( M, 1 );[127X[104X696[4X[25Xgap>[125X [27XM;[127X[104X697[4X[28X<A rank 1 left module presented by 2 relations for 3 generators>[128X[104X698[4X[32X[104X699700[1X7.5-3 \*[101X701702[29X[2X\*[102X( [3XJ[103X, [3XM[103X ) [32X operation703[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X submodule[133X704705[33X[0;0YCompute the submodule [3XJ[103X[3XM[103X (resp. [3XM[103X[3XJ[103X) of the given left (resp. right) [22XR[122X-module706[3XM[103X, where [3XJ[103X is a left (resp. right) ideal in [22XR[122X.[133X707708[1X7.5-4 SubobjectQuotient[101X709710[29X[2XSubobjectQuotient[102X( [3XK[103X, [3XJ[103X ) [32X operation711[6XReturns:[106X [33X[0;10Ya [5Xhomalg[105X ideal[133X712713[33X[0;0YCompute the submodule quotient ideal [22X[3XK[103X:[3XJ[103X[122X of the submodules [3XK[103X and [3XJ[103X of a714common [22XR[122X-module [22XM[122X.[133X715716717718