computing resolutions
Use the function resolution, often abbreviated as res,
to compute a free resolution of a module.
i1 : R = QQ[x..z]; |
i2 : M = cokernel vars R
o2 = cokernel | x y z |
1
o2 : R-module, quotient of R |
i3 : C = res M
1 3 3 1
o3 = R <-- R <-- R <-- R <-- 0
0 1 2 3 4
o3 : ChainComplex |
See chain complexes for further details about how to handle
and examine the result.
A reference to the result is stored within the module M, so that
requesting a computation of res M a second time yields the formerly
computed result immediately.
If the computation is interrupted or discontinued after the skeleton
has been successfully computed, then the partially completed
resolution is available as M.resolution, and can be
examined with status. The computation can be continued
with res M. Here is an example, with an alarm interrupting
the computation several times before it's complete. (On my machine,
the computation takes a total of 14 seconds.)
i4 : R = ZZ/2[a..d]; |
i5 : M = coker random(R^4, R^{5:-3,6:-4}); |
i6 : while true do try (
alarm 3;
res M;
<< "-- computation complete" << endl;
status M.resolution;
<< res M << endl << endl;
break;
) else (
<< "-- computation interrupted" << endl;
status M.resolution;
<< "-- continuing the computation" << endl;
)
-- computation interrupted
: total pairs
totals: 4 11 526 474 61 . .
0: 4 . . . . . .
1: . . . . . . .
2: . 5 2 . . . .
3: . 6 8 1 . . .
4: . . 11 3 . . .
5: . . 20 10 . . .
6: . . 33 16 . . .
7: . . 62 54 15 . .
8: . . 138 138 46 . .
9: . . 252 252 . . .
-- continuing the computation
-- computation interrupted
: total pairs
totals: 4 11 646 594 145 . .
0: 4 . . . . . .
1: . . . . . . .
2: . 5 2 . . . .
3: . 6 8 1 . . .
4: . . 11 3 . . .
5: . . 20 10 . . .
6: . . 33 16 . . .
7: . . 62 54 15 . .
8: . . 138 138 46 . .
9: . . 252 252 84 . .
10: . . 120 120 . . .
-- continuing the computation
-- computation interrupted
: total pairs
totals: 4 11 646 594 185 . .
0: 4 . . . . . .
1: . . . . . . .
2: . 5 2 . . . .
3: . 6 8 1 . . .
4: . . 11 3 . . .
5: . . 20 10 . . .
6: . . 33 16 . . .
7: . . 62 54 15 . .
8: . . 138 138 46 . .
9: . . 252 252 84 . .
10: . . 120 120 40 . .
-- continuing the computation
-- computation interrupted
: total pairs
totals: 4 11 646 594 185 . .
0: 4 . . . . . .
1: . . . . . . .
2: . 5 2 . . . .
3: . 6 8 1 . . .
4: . . 11 3 . . .
5: . . 20 10 . . .
6: . . 33 16 . . .
7: . . 62 54 15 . .
8: . . 138 138 46 . .
9: . . 252 252 84 . .
10: . . 120 120 40 . .
-- continuing the computation
-- computation complete
: total pairs
totals: 4 11 646 594 185 . .
0: 4 . . . . . .
1: . . . . . . .
2: . 5 2 . . . .
3: . 6 8 1 . . .
4: . . 11 3 . . .
5: . . 20 10 . . .
6: . . 33 16 . . .
7: . . 62 54 15 . .
8: . . 138 138 46 . .
9: . . 252 252 84 . .
10: . . 120 120 40 . .
4 11 89 122 40
R <-- R <-- R <-- R <-- R <-- 0
0 1 2 3 4 5
|
If the user has a chain complex in hand which is known to be a
projective resolution of M, then it can be installed
with M.resolution = C.
There are various optional arguments associated with res
which allow detailed control over the progress of the computation.