Suppose that R = k[x1,...,xn], and that E = k[y1,...,yn] is the injective envelop of k. IE, E is given the R-module structure: x^A . y^B = y^(B-A), if B-A >= 0 in every component, and x^A . y^B = 0 otherwise.
If I is an ideal of R, then the submodule I' = Hom_R(R/I,E) of E is called the (Macaulay) inverse system of I. I is zero-dimensional iff I' is finitely generated.
This is a dual operation, since I can be recovered as ann_R(I').
In Macaulay2, currently the computation of the inverse system I' (toDual) and of the ideal I from I' (fromDual) are restricted to the situation where I and I' are homogeneous. As an example, let's compute the ideal corresponding to a cubic.
i1 : R = QQ[a..e];
|
i2 : g = matrix{{a^3+b^3+c^3+d^3+e^3-d^2*e-a*b*c-a*d*e}}
o2 = | a3+b3-abc+c3+d3-ade-d2e+e3 |
1 1
o2 : Matrix R <--- R
|
i3 : f = fromDual g
o3 = | ce be d2+ae+e2 cd bd ad+e2 bc+ae-de b2+ac ab+c2 a2-ae+de |
1 10
o3 : Matrix R <--- R
|
i4 : I = ideal f
2 2 2 2
o4 = ideal (c*e, b*e, d + a*e + e , c*d, b*d, a*d + e , b*c + a*e - d*e, b
------------------------------------------------------------------------
2 2
+ a*c, a*b + c , a - a*e + d*e)
o4 : Ideal of R
|
The resulting ideal is always zero dimensional, and its Cohen-Macaulay type is the number of generators of the submodule E defined by g. Therefore, if g is a 1 by 1 matrix, then the resulting ideal is Gorenstein.
i5 : res I
1 10 21 21 10 1
o5 = R <-- R <-- R <-- R <-- R <-- R <-- 0
0 1 2 3 4 5 6
o5 : ChainComplex
|
i6 : betti oo
0 1 2 3 4 5
o6 = total: 1 10 21 21 10 1
0: 1 . . . . .
1: . 10 16 5 . .
2: . . 5 16 10 .
3: . . . . . 1
o6 : BettiTally
|
The other direction (starting with an ideal I) is more complicated, since the result may not be finitely generated. So, we must give an integer d as well as the generators of I:
i7 : toDual(3,f)
o7 = {12} | a3+b3-abc+c3+d3-ade-d2e+e3 |
1 1
o7 : Matrix R <--- R
|
The integer d has two interpretations. The most general is that the (finitely generated) intersection of I' and the submodule generated by y1^d ... yn^d is returned. If the ideal I is zero dimensional, d should be an integer such that x^(d+1) is in I = image f for every variable x.
i8 : f = matrix{{a*b,c*d,e^2}}
o8 = | ab cd e2 |
1 3
o8 : Matrix R <--- R
|
i9 : toDual(1,f)
o9 = {2} | ace |
{2} | bce |
{2} | ade |
{2} | bde |
4 1
o9 : Matrix R <--- R
|
i10 : toDual(2,f)
o10 = {5} | a2c2e |
{5} | b2c2e |
{5} | a2d2e |
{5} | b2d2e |
4 1
o10 : Matrix R <--- R
|
i11 : toDual(3,f)
o11 = {8} | a3c3e |
{8} | b3c3e |
{8} | a3d3e |
{8} | b3d3e |
4 1
o11 : Matrix R <--- R
|
i12 : g = toDual(4,f)
o12 = {11} | a4c4e |
{11} | b4c4e |
{11} | a4d4e |
{11} | b4d4e |
4 1
o12 : Matrix R <--- R
|
i13 : fromDual g
o13 = | e2 cd ab d5 c5 b5 a5 |
1 7
o13 : Matrix R <--- R
|