i1 : R = QQ[x,y,z]/(x^3,y^3,z^3,x*y*z);
|
i2 : C = res(coker vars R, LengthLimit=>8)
1 3 7 16 37 86 200 465 1081
o2 = R <-- R <-- R <-- R <-- R <-- R <-- R <-- R <-- R
0 1 2 3 4 5 6 7 8
o2 : ChainComplex
|
i3 : rank C_7
o3 = 465
|
i4 : C.dd_3
o4 = {2} | x 0 -z2 0 0 -xy 0 y2 0 0 0 0 0 xz2 xy2 0 |
{2} | -y 0 0 -z2 yz y2 0 0 0 0 x2 0 0 0 0 x2y |
{2} | z 0 0 0 0 0 0 0 0 -y2 0 x2 0 0 0 0 |
{3} | 0 z y x 0 0 0 0 0 0 0 0 0 0 0 0 |
{3} | 0 0 0 0 z y x 0 0 0 0 0 0 0 0 0 |
{3} | 0 0 0 0 0 0 0 z y x 0 0 0 0 0 0 |
{3} | 0 0 0 0 0 0 0 0 0 0 z y x 0 0 0 |
7 16
o4 : Matrix R <--- R
|
Programming hint
The chain complex
C is implemented as a hash table, but since the computation of a projective resolution can be stopped prematurely, Macaulay 2 doesn't bother populating the hash table with the relevant free modules until explicitly requested by the user, for example, in response to the command
C_i described above. The hash table
C can be examined directly with code like
C#i, but in order to populate the hash table completely, use
complete(ChainComplex).