# deformMCMModule -- versal deformation of MCM-module on hypersurface

## Description

This is the main interface for the package ModuleDeformations. It has two signatures: one for the absolute case and one for the general case. Both versions return a pair (S,M)where S is a ring representing the base space of the deformation and M is a module representing the deformation module.

The module $M$ is not defined over the product $S \times{} Y$ but instead over the polynomial ring in which $S \times{} Y$ is defined. Attempting to construct $M$ over $S \times{} Y$ may result in computational blowup in certain cases. Reducing $M$ modulo the defining equations of $S \times{} Y$ gives the deformation module itself.

The function deformMCMModule returns an error if the given module M0 is not maximal Cohen-Macaulay, if it is not defined over a hypersurface, or if its module $Ext^1(M0,M0)$ of first-order deformations is not finite-dimensional as a vector space. If M0 is free, then deformMCMModule returns a pair with a trivial base space S and a free module M generated in the same degrees as M0.

The parameters of the base space, that is, the coordinates over which S is defined, are labelled xi_1 through xi_d, where d is the dimension as a vector space of the module of first-order deformations of the module being deformed.

The function deformMCMModule computes a deformation only up to a degree limit given by the optional parameter DegreeLimit, whose default value is 10. The procedure is optimized so that specifying too large a degree limit should not result in substantial computational difficulties in most cases.

## For the programmer

The object deformMCMModule is .