Maximal Cohen-Macaulay approximations were introduced by Auslander and Buchweitz [The homological theory of maximal Cohen-Macaulay (MCM) approximations, Colloque en l’honneur de Pierre Samuel (Orsay, 1987) Soc. Math. France (N.S.)} No. 38, (1989), 5 - 37.] In the context of a local Gorenstein ring R, the theory simplifies a little and can be expressed as follows. Let M be an R-module.
1) There is a unique maximal Cohen-Macaulay R-module M’ and a short exact sequence 0→N’ →M’ →M →0 such that N has finite projective dimension; the module M, together with the surjection, is the MCM approximation of M.
2) Dually, there is a unique short exact sequence 0→M →N” →M” →0 such that N” has finite projective dimension and M” is a monomormphism M -> N to a module N of finite projective dimension, with cokernel a maximal Cohen-Macaulay module, the MCM co-approximation.
These sequences are easy to compute.Let d = 1+ depth R - depth M. Write M’0 for the d-th cosyzygy of the d-th syzygy module of M, and α: M’→M. The module M’ is called the essential MCM approximation of M. Note that M’ has no free summand Let B0 be a minimal free module mapping onto M/(image M’0), and lift the surjection ac to a map β: B0 →M. The map (α, β): M’0 ⊕B0 --> M is the MCM approximation, and N is its kernel.
The routine approximation M returns the pair (α, β).
Further, if M” is the (d+1)st cosyzygy of the d-th syzygy of M then there is a short exact sequence 0→M’ →F →M” →0 with F free. Pushing this sequence forward along the map α: M’ →M gives the coapproximation sequence 0→M →N”→M” →0.
The routine coApproximation M resurns the map M --> N”.
i1 : setRandomSeed 0 o1 = 0 |
i2 : T = setupRings(3,3) ZZ ---[x , x , x ] ZZ 101 0 1 2 o2 = {---[x , x , x ], ------------------, 101 0 1 2 3 3 3 24x - 36x - 30x 0 1 2 ------------------------------------------------------------------------ ZZ ---[x , x , x ] 101 0 1 2 ------------------------------------------, 3 3 3 3 3 3 (24x - 36x - 30x , - 29x + 19x + 19x ) 0 1 2 0 1 2 ------------------------------------------------------------------------ ZZ ---[x , x , x ] 101 0 1 2 ---------------------------------------------------------------} 3 3 3 3 3 3 3 3 3 (24x - 36x - 30x , - 29x + 19x + 19x , - 10x - 29x - 8x ) 0 1 2 0 1 2 0 1 2 o2 : List |
i3 : R = T_3 o3 = R o3 : QuotientRing |
i4 : M = coker random(R^2, R^{3: -2}); |
i5 : (MM,kk,p) = setupModules(T, M); |
i6 : MM_1 o6 = cokernel | x_0^2-42x_0x_1-2x_1^2+x_0x_2+43x_1x_2+8x_2^2 45x_0x_1-30x_1^2-22x_0x_2-3x_1x_2+5x_2^2 2x_0x_1+11x_1^2-27x_0x_2-23x_1x_2+31x_2^2 x_2^3 0 x_0x_1x_2+21x_1^2x_2+48x_0x_2^2+15x_1x_2^2 -34x_1^2x_2-35x_0x_2^2-23x_1x_2^2 | | 29x_1^2-42x_0x_2-7x_1x_2-6x_2^2 x_0x_1-3x_1^2-23x_0x_2+38x_1x_2-8x_2^2 x_0^2+33x_1^2+23x_0x_2-13x_1x_2+x_2^2 0 x_2^3 21x_0x_2^2+28x_1x_2^2 x_1^2x_2+7x_0x_2^2-32x_1x_2^2 | ZZ / ZZ \ ---[x , x , x ] | ---[x , x , x ] | 101 0 1 2 | 101 0 1 2 |2 o6 : -------------------module, quotient of |------------------| 3 3 3 | 3 3 3| 24x - 36x - 30x |24x - 36x - 30x | 0 1 2 \ 0 1 2/ |
i7 : (a,b) = approximation MM_1 -- MM_1 is M as a module over the ring of codim 1 o7 = (| 40x_1^2-28x_0x_2+18x_1x_2+30x_2^2 | -39x_1^2+26x_0x_2-31x_1x_2+34x_2^2 ------------------------------------------------------------------------ 12x_0x_1+33x_1^2-33x_0x_2-8x_1x_2+x_2^2 26x_1^2+10x_0x_2-23x_1x_2-24x_2^2 ------------------------------------------------------------------------ -40x_0x_1+14x_1^2+27x_0x_2+9x_1x_2+19x_2^2 -50x_0-6x_1-46x_2 -39x_2 -35x_1^2-35x_0x_2+49x_1x_2+23x_2^2 -35x_0+33x_1+48x_2 42x_2 ------------------------------------------------------------------------ 5x_2 17x_1+14x_2 45x_0+24x_1+44x_2 25x_0-16x_1+20x_2 |, | 1 0 |) -15x_2 21x_1-44x_2 -19x_0-37x_1+31x_2 -44x_0-35x_1-40x_2 | | 0 1 | o7 : Sequence |
i8 : M' = source a; |
i9 : betti res pushForward(p_1_0,M') -- an MCM module 0 1 o9 = total: 9 9 1: 6 . 2: 3 9 o9 : BettiTally |
i10 : F = source b -- free module, thus also MCM / ZZ \ | ---[x , x , x ] | | 101 0 1 2 |2 o10 = |------------------| | 3 3 3| |24x - 36x - 30x | \ 0 1 2/ ZZ ---[x , x , x ] 101 0 1 2 o10 : -------------------module, free 3 3 3 24x - 36x - 30x 0 1 2 |
i11 : N = betti res ker map(MM_1,M'++F,matrix{{a,b}}) --module with pd G <\infty 0 1 o11 = total: 16 9 1: 6 . 2: 6 9 3: 4 . o11 : BettiTally |