// The simple curve singularity E7 and all non-free
// indecomposable MCM modules
LIB "conn.lib";
ring s = 0, (x,y), dp;
ideal i = x3+xy3;
qring a = std(i);
matrix M1[2][2] = x,y,xy2,-x2;
matrix M2[2][2] = x,y2,xy,-x2;
matrix N1[2][2] = x2,y,xy2,-x;
matrix N2[2][2] = x2,y2,xy,-x;
matrix P[2][2] = x2,xy,xy2,-x2;
matrix Q[2][2] = x,y,y2,-x;
matrix R[1][1] = x;
matrix S[1][1] = x2+y3;
matrix X1[3][3] = xy2,-x2,-x2y,xy,y2,-x2,x2,xy,xy2;
matrix X2[3][3] = x2,-y2,-xy,xy,x,-y2,xy2,xy,x2;
matrix Y1[3][3] = y,0,x,-x,xy,0,0,-x,y;
matrix Y2[3][3] = x,0,y,-xy,x2,0,0,-xy,x;
matrix X3[4][4] = x2,xy,y,0,xy2,-x2,0,y,0,0,x,y,0,0,y2,-x;
matrix Y3[4][4] = x,y,-y,0,y2,-x,0,-y,0,0,x2,xy,0,0,xy2,-x2;
list MCM = M1,M2,N1,N2,P,Q,R,S,X1,X2,Y1,Y2,X3,Y3;
matrix sM1[2][2] = x2,y,xy2,-x;
matrix sM2[2][2] = x2,y2,xy,-x;
matrix sN1[2][2] = x,y,xy2,-x2;
matrix sN2[2][2] = x,y2,xy,-x2;
matrix sP[2][2] = x,y,y2,-x;
matrix sQ[2][2] = x2,xy,xy2,-x2;
matrix sR[1][1] = x2+y3;
matrix sS[1][1] = x;
matrix sX1[3][3] = y,0,x,-x,xy,0,0,-x,y;
matrix sX2[3][3] = x,0,y,-xy,x2,0,0,-xy,x;
matrix sY1[3][3] = xy2,-x2,-x2y,xy,y2,-x2,x2,xy,xy2;
matrix sY2[3][3] = x2,-y2,-xy,xy,x,-y2,xy2,xy,x2;
matrix sX3[4][4] = x,y,-y,0,y2,-x,0,-y,0,0,x2,xy,0,0,xy2,-x2;
matrix sY3[4][4] = x2,xy,y,0,xy2,-x2,0,y,0,0,x,y,0,0,y2,-x;
list sMCM = sM1,sM2,sN1,sN2,sP,sQ,sR,sS,sX1,sX2,sY1,sY2,sX3,sY3;
print("Curve E7:");
print("-------");
int i;
for(i=1;i<=size(MCM);i++)
{
print("Module:");
print("-------");
print(MCM[i]);
print("-------");
print("Obstructions:");
print("-------");
print(KSKernel(MCM[i]));
print(LClass(MCM[i]));
print("-------");
}