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