The following functions compute with free resolutions.
FreeResolution(M) : ModMPol -> [ ModMPol ]
Given a module M, return a free resolution of M. The free resolution is returned as a sequence F such that F[1] is M, F[i + 1] is the syzygy module of F[i] for i<#F, and the last element of F is free (its basis has no syzygies). The basis of M is not minimized first so it can affect the structure of F. Use MinimalFreeResolution to assure a minimal free resolution.
Given a module M, return a minimal free resolution of M. The minimal free resolution is returned as a sequence F such that F[1] is M, F[i + 1] is the syzygy module of F[i] for i<#F, and the last element of F is free (its basis has no syzygies). The basis of M is minimized first and also the bases of each of the modules in F are minimized before the syzygy module computations.
Given a module M, return the homological dimension of M. This is just the length of a minimal free resolution of M minus 1 (taking account of the fact that M is always included in the free resolution).
> P<x, y, z> := PolynomialRing(RationalField(), 3, "grevlex"); > M := Module(P, 3); > B := [[x*y, x^2, z], [x*z^3, x^3, y], [y*z, z, x], > [z, y*z, x], [y, z, x]]; > S := sub<M | B>; > F := MinimalFreeResolution(S); > #F; 3 > #Basis(F[2]); 35 > #MinimalBasis(F[2]); 5 > #Basis(F[3]); 6 > #MinimalBasis(F[3]); 3 > MinimalBasis(F[3]); [ (-x*y*z + x*z^2 + x^2 + 2*x*y - 2*x -3*y + z + 2 1 -y 0), (x*y*z - x*y + z^2 -x + y x -x 0), (x^2*y*z^2 - x^2*z^3 - 3*x^2*y*z + x^2*z^2 + 2*x^2*y + x*z - 2*x x^2*y + 3*x*y*z - x*z^2 - 3*x*y - 3*y + 3 -y x*y*z - x*y + 1 -y*z + y) ] > HomologicalDimension(S); 2[Next] [Prev] [_____] [Left] [Up] [Index] [Root]