# coApproximation -- Maximal Cohen-Macaulay co-approximation of M

## Synopsis

• Usage:
a = coApproximation M
• Inputs:
• M, ,
• Optional inputs:
• CoDepth => ..., default value -1
• Total => ..., default value true
• Outputs:
• a, ,

## Description

If R is a Gorenstein ring, and M is a finitely generated R-module, then, according to the theory of Auslander and Buchweitz (a good exposition is in Ding's Thesis) there are unique exact sequences $$0\to K \to M' \to M\to 0$$ and $$0\to M \to N\to M''\to 0$$ such that K and N are of finite projective dimension, M' and M'' are maximal Cohen-Macaulay, and M'' has no free summands. The call

approximation M

returns the map $M'\to M$, while the call

coApproximation M

returns the map $M\to N$.

Since the script coApproximation begins by computing the approximation, it may shorten the computation if the user knows the depth of M in advance, specified with the option Depth => d.

 i1 : setRandomSeed 100 o1 = 100 i2 : c = 3;d=3; i4 : S = setupRings(c,d); i5 : R = S_c; -- complete intersection, codim = c i6 : R' = S_(c-1); --codim c-1 i7 : Mc = coker vars R; i8 : (M,k,p) = setupModules(S,Mc); --M_(c-1) is Mc as an R_(c-1)-module i9 : ca = coApproximation M_(c-1); o9 : Matrix i10 : M'' = coker ca; i11 : N = target ca o11 = cokernel {-4} | x_0^2x_1^2x_2 14x_0^2x_2^3 8x_1^2x_2^3 14x_2 | {-4} | x_0^2x_2^3 x_0^2x_1x_2^2 8x_2^5 x_1 | {-4} | 15x_1^2x_2^3 8x_2^5 15x_0x_1^2x_2^2 x_0 | 3 o11 : R'-module, quotient of R' i12 : profondeur M'' == dim ring M'' -- an MCM module o12 = true i13 : M'' == source approximation(M'', Total=>false) -- no free summands o13 = false i14 : 2 == length res(N, LengthLimit =>10) -- projective dimension <\infty o14 = true

• setupRings -- Sets up a complete intersection for experiments
• setupModules -- Creates a list of modules and maps over complete intersection for experiments
• profondeur -- computes the profondeur with respect to an ideal
• approximation -- returns pair of components of the map from the MCM approximation
• syzygyModule -- Produces the k-th syzygy module (k \in ZZ)

## Ways to use coApproximation :

• "coApproximation(Module)"

## For the programmer

The object coApproximation is .