If k==0 then the N=M. If k>0 then the syzygy module is computed from the resolution. If k<0 then the program returns the dual of the (n-k)-th syzygy of the dual of the k-th syzygy, where n is one more than Codepth if that opition is specified, and else n is the number of variables of ring M. Of course the resulting N is 0 if ring M is regular, and otherwise correct only if ring M is Gorenstein. In the Gorenstein case, syzygyModule(-k, syzygyModule(k, M)) -is the non-free part of the source of the MCM approximation of M.
i1 : R = setupRings(4,3); |
i2 : M = coker vars R_2; |
i3 : betti res M 0 1 2 3 4 5 o3 = total: 1 4 8 12 16 20 0: 1 4 6 4 1 . 1: . . 2 8 12 8 2: . . . . 3 12 o3 : BettiTally |
i4 : betti syzygyModule(2,M) 0 1 o4 = total: 8 12 2: 6 4 3: 2 8 o4 : BettiTally |
i5 : betti (N2 = syzygyModule(-2,M)) 0 1 o5 = total: 12 8 -6: 8 2 -5: 4 6 o5 : BettiTally |
i6 : betti res N2 0 1 2 3 4 5 o6 = total: 12 8 5 5 8 12 -6: 8 2 . . . . -5: 4 6 4 1 . . -4: . . . . . . -3: . . . . . . -2: . . 1 4 6 4 -1: . . . . 2 8 o6 : BettiTally |
i7 : betti syzygyModule(-2,M,CoDepth=>2) o7 = total: o7 : BettiTally |
ring M must be Gorenstein, and the program does not check
The object syzygyModule is a method function with options.