Here we provide an overview of our approach to solving deformation problems. For details on using the command versalDeformation, please see the documentation links below. The most basic use of the method is via versalDeformation(Matrix), which computes the versal deformation of an isolated singularity. We give a brief overview of this case:
First we fix some notation. Let $S$ be a polynomial ring over some field $k$, and let $I$ be an ideal of $S$ defining a scheme $X=$Spec $S/I$ with isolated singularities. Consider a free resolution of $S/I$: $$ \ldots \to S^l \to S^m \to S \to S/I\to 0 $$ with differentials $R^0:S^l\to S^m$ and $F^0:S^m\to S$. Let $\phi_i\in$Hom$(S^m/ $Im$ R^0,S)$ for $i=1,\ldots,n$ represent a basis of $T^1(S/I)\cong$Hom$(S^m/ $Im$ R^0,S)/ $Jac$ F^0$. We introduce deformation parameters $t_1,\ldots,t_n$ with the ring $T=S[t_1,\ldots,t_n]$ and consider the map $F^1: T^m\to T$ defined as $F^1=F^0+\sum t_i\phi_i.$ Let $a$ be the ideal generated by $t_1,\ldots,t_n$. It follows that there is a map $R^1: T^l\to T^m$ with $R^1= R^0$ mod $a$ satisfying the first order deformation equation $F^1R^1= 0$ mod $a^2$.
Our goal is to lift this equation to higher order, that is, for each $i>0$, to find $F^i: T^m\to T$ with $F^i=F^{i-1}$ mod $a^{i}$ and $R^i: T^l\to T^m$ with $R^i= R^{i-1}$ mod $a^i$ satisfying $F^iR^i= 0$ mod $a^{i+1}$. In general, there are obstructions to doing this, governed by the $d$-dimensional $k$ vector space $T^2(S/I)$. Thus, we instead aim to solve $$ (F^iR^i)^{tr}+C^{i-2}G^{i-2}= 0 $$ mod $a^{i+1}$. Here, $G^{i-2}: k[t]\to k[t]^d$ and $C^{i-2}: T^d\to T^l$ are congruent modulo $a^i$ to $G^{i-3}$ and $C^{i-3}$, respectively. Furthermore, we require that $G^i$ and $C^i$ vanish for $i<0$, and $C^0$ is of the form $V D$, where $V\in$Hom$(S^d,S^l)$ gives representatives of a basis for $T^2(S/I)$ and $D\in$Hom$(S^d,S^d)$ is a diagonal matrix. The $G^i$ now give equations for the miniversal base space of $X$.
Our implementation solves the above equation step by step. Given a solution $(F^i,R^i,G^{i-2},C^{i-2})$ modulo $a^{i+1}$, the package uses Macaulay2's built in matrix quotients to first solve for $F^{i+1}$ and $G^{i-1}$ (by working over the ring $T/I+$ Im $(G^{i-2})^{tr} +a^{i+2}$) and then solve for $R^{i+1}$ and $C^{i-1}$. For the actual computation, we avoid working over quotient rings involving high powers of $a$ by representing the $(F^i,R^i,G^{i-2},C^{i-2})$ as lists of matrices which keep track of the orders of the $t_j$ involved.
Our approach to deformations of modules is similar. For a ring $S$, let $M$ be an $S$-module. Consider a free resolution of $M$: $$ \ldots \to S^l \to S^m \to S^r \to M\to 0 $$ with differentials $R^0:S^l\to S^m$ and $F^0:S^m\to S^r$. Similar to above, we iteratively solve a deformation equation $$ (transpose flatten (F^iR^i))+C^{i-2}G^{i-2}= 0 $$ where $T^1(S/I)$ and $T^2(S/I)$ from above have been replaced by appropriate tangent and obstruction spaces.
See versalDeformation(Matrix,Matrix,Matrix) for an example.The object versalDeformation is a method function with options.