Maximal CohenMacaulay approximations were introduced by Auslander and Buchweitz [The homological theory of maximal CohenMacaulay (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 Rmodule.
1) There is a unique maximal CohenMacaulay Rmodule M' and a short exact "approximation sequence" 0\to N' \to M' \to M \to 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 "coapproximation sequence" 0\to M \to N'' \to M'' \to 0 such that N'' has finite projective dimension and M'' is a maximal CohenMacaulay module, the MCM coapproximation.
These sequences are easy to compute. Let d = 1+ depth R  depth M. Write M'_0 for the dth cosyzygy of the dth syzygy module of M, and \alpha: M'\to M the induced map. The module M' (or the map (M'\to M) is called the essential MCM approximation of M. Since d >= 2, the module M' has no free summand. Let B_0 be a minimal free module mapping onto M/(image M'_0), and lift the surjection to a map \beta: B_0 \to M. The map (\alpha, \beta): M'_0 \oplus B_0 > M is the MCM approximation, and N is its kernel.
The routine approximation M returns the pair (\alpha, \beta).
Further, if M'' is the (d+1)st cosyzygy of the dth syzygy of M then there is a short exact sequence 0\to M' \to F \to M'' \to 0 with F free. Pushing this sequence forward along the map \alpha: M' \to M gives the coapproximation sequence 0\to M \to N''\to M'' \to 0.
The routine coApproximation M returns the map M > N''. Here is an example of a simple approximation sequence, exhibited by the betti tables of its 3 middle terms:
The Betti table of the module M is at the top, and one sees that it is NOT MCM (the resolution is not periodic at the beginning) and not of finite projective dimension (the length of the given part of of the  actually infinite  resolution is already longer than the dimension of the ring.
Next comes the betti table of the MCM module that approximates M (we see that its resolution is periodic from the beginning).
Finally we see a module of finite projective dimension (in this case 1).





Here is a similar display for the coapproximation sequence. Here the Betti table of M is at the bottom, the Betti table of the module of finite projective dimension is in the middle, and that of the MCM module is at the top (


This documentation describes version 1.1 of MCMApproximations.
The source code from which this documentation is derived is in the file MCMApproximations.m2.
The object MCMApproximations is a package.