[Next] [Prev] [_____] [Left] [Up] [Index] [Root]
Free Resolutions

Free Resolutions

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.
MinimalFreeResolution(M) : ModMPol -> [ ModMPol ]
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.
HomologicalDimension(M) : ModMPol -> RngInt
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).

Example PMod_FreeResolution (H44E6)

We construct the free resolution of a simple module.

> 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]