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
and
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’→M, while the call
coApproximation M
returns the map M→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} | -38x_0^2x_1^2x_2 -27x_0^2x_2^3 -x_1^2x_2^3 x_2 | {-4} | -27x_0^2x_2^3 -27x_0^2x_1x_2^2 -14x_2^5 x_1 | {-4} | -x_1^2x_2^3 -14x_2^5 -x_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 |