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
|