3.6 Resolution

There are several commands in SINGULAR for computing free resolutions. The command mres(... ,n), for example, calculates a minimal free resolution with the standard basis method up to the length n, where n=0 corresponds to the full resolution.

Here we use the possibility to inspect the calculation process using the option prot.

ring rr;      // the default ring in char 32003
rr;
==> //   characteristic : 32003
==> //   number of vars : 3
==> //        block   1 : ordering dp
==> //                  : names    x y z
==> //        block   2 : ordering C
ideal I = x4+x3y+x2yz,x2y2+xy2z+y2z2,x2z2+2xz3,2x2z2+xyz2;
option(prot);
resolution rs = mres(I,0);
==> v4(3)s-s.s.s5(3)s6-s.s-s7(2)s-s-s
==> product criterion:0 chain criterion:8
==> (6)(5).(4).(3)..(2)..(1).[1]
==> (7)(6)(5)(4).(3)(2).(1)[2]
==>  // .... rest of protocol omitted here

Disable this protocol with

option(noprot);

When we enter the name of the calculated resolution, we get a pictorial description of the resolution where the exponents denote the rank of the free modules.

rs;
==>   1       4       5       2       0
==> rr  <-- rr  <-- rr  <-- rr  <-- rr
==>
==> 0       1       2       3       4
print(betti(rs),"betti");
==>            0     1     2     3
==> ------------------------------
==>     0:     1     0     0     0
==>     1:     0     0     0     0
==>     2:     0     0     0     0
==>     3:     0     4     1     0
==>     4:     0     0     1     0
==>     5:     0     0     3     2
==> ------------------------------
==> total:     1     4     5     2

A single module in this resolution is obtained as usual with the brackets [ and ].

print(rs[3]);
==> y2z,  y3,
==> -y2,  -y2,
==> x+y-z,x+y-z,
==> -2z,  x-y+4z,
==> -z,   -y+3z