Compute Kustin-Miller resolution of the unprojection of I in J (or equivalently of J ⊂R/I) with unprojection variable T.
We have the following setup:
Assume R is a PolynomialRing over a field, the degrees of all variables positive and I inside J inside R two homogeneous ideals of R such that R/I and R/J are Gorenstein and dim(R/J)=dim(R/I)-1.
For a description of this resolution and how it is computed see for example Section 2.3 of
J. Boehm, S. Papadakis: On the structure of Stanley-Reisner rings associated to cyclic polytopes, http://arxiv.org/abs/0912.2152
It is also possible to specify minimal resolutions of I and J.
Note that kustinMillerComplex returns a chain complex over a new ring R**T0. So to avoid printing the variables of this ring when printing the chain complex just give a name to the ring (e.g., do S = ring cc to call it S).
We illustrate the process at the example described in Section 5.5 of
Papadakis, Kustin-Miller unprojection with complexes, J. Algebraic Geometry 13 (2004) 249-268, http://arxiv.org/abs/math/0111195
i1 : R = QQ[x_1..x_4,z_1..z_4] o1 = R o1 : PolynomialRing |
i2 : I = ideal(z_2*z_3-z_1*z_4,x_4*z_3-x_3*z_4,x_2*z_2-x_1*z_4,x_4*z_1-x_3*z_2,x_2*z_1-x_1*z_3) o2 = ideal (z z - z z , x z - x z , x z - x z , x z - x z , x z - x z ) 2 3 1 4 4 3 3 4 2 2 1 4 4 1 3 2 2 1 1 3 o2 : Ideal of R |
i3 : betti res I 0 1 2 3 o3 = total: 1 5 5 1 0: 1 . . . 1: . 5 5 . 2: . . . 1 o3 : BettiTally |
i4 : J = ideal (z_1..z_4) o4 = ideal (z , z , z , z ) 1 2 3 4 o4 : Ideal of R |
i5 : betti res J 0 1 2 3 4 o5 = total: 1 4 6 4 1 0: 1 4 6 4 1 o5 : BettiTally |
i6 : cc=kustinMillerComplex(I,J,QQ[T]); |
i7 : S=ring cc o7 = S o7 : PolynomialRing |
i8 : cc 1 9 16 9 1 o8 = S <-- S <-- S <-- S <-- S 0 1 2 3 4 o8 : ChainComplex |
i9 : betti cc 0 1 2 3 4 o9 = total: 1 9 16 9 1 0: 1 . . . . 1: . 9 16 9 . 2: . . . . 1 o9 : BettiTally |
i10 : isExactRes cc o10 = true |
i11 : print cc.dd_1 | x_2z_1-x_1z_3 x_4z_1-x_3z_2 x_2z_2-x_1z_4 x_4z_3-x_3z_4 z_2z_3-z_1z_4 -x_1x_3+Tz_1 -x_1x_4+Tz_2 -x_2x_3+Tz_3 -x_2x_4+Tz_4 | |
i12 : print cc.dd_2 {2} | -x_4 -z_2 0 z_4 0 0 -x_3 0 0 0 0 T 0 0 0 0 | {2} | x_2 0 -z_3 0 z_4 -x_1 0 0 -x_2 0 0 0 T 0 0 0 | {2} | x_3 z_1 0 -z_3 0 0 0 -x_3 -x_3 -x_4 0 0 0 T 0 -x_3 | {2} | -x_1 0 z_1 0 -z_2 0 0 x_1 0 0 -x_2 0 0 0 T 0 | {2} | 0 -x_1 -x_3 x_2 x_4 0 0 0 0 0 0 0 0 0 0 T | {2} | 0 0 0 0 0 z_2 z_3 0 z_4 0 0 -x_2 -x_4 0 0 z_4 | {2} | 0 0 0 0 0 -z_1 0 z_3 0 z_4 0 0 x_3 -x_2 0 0 | {2} | 0 0 0 0 0 0 -z_1 -z_2 0 0 z_4 x_1 0 0 -x_4 -z_2 | {2} | 0 0 0 0 0 0 0 0 -z_1 -z_2 -z_3 0 0 x_1 x_3 0 | |
i13 : print cc.dd_3 {3} | 0 z_2 0 -z_4 -T 0 x_3 0 0 | {3} | -x_3 -x_4 0 0 0 -T 0 0 0 | {3} | x_1 0 -x_2 0 0 0 -T 0 0 | {3} | 0 0 -x_3 -x_4 0 0 0 -T 0 | {3} | 0 -x_1 0 x_2 0 0 0 0 -T | {3} | -z_3 -z_4 0 0 0 -x_2 0 0 0 | {3} | z_2 0 -z_4 0 0 0 -x_4 0 0 | {3} | -z_1 0 0 -z_4 0 0 x_3 -x_2 0 | {3} | 0 z_2 z_3 0 0 x_1 x_3 0 0 | {3} | 0 -z_1 0 z_3 0 0 0 0 -x_3 | {3} | 0 0 -z_1 -z_2 0 0 0 -x_1 0 | {3} | 0 0 0 0 -x_4 -z_2 0 z_4 0 | {3} | 0 0 0 0 x_2 0 -z_3 0 z_4 | {3} | 0 0 0 0 x_3 z_1 0 -z_3 0 | {3} | 0 0 0 0 -x_1 0 z_1 0 -z_2 | {3} | 0 0 0 0 0 -x_1 -x_3 x_2 x_4 | |
i14 : print cc.dd_4 {4} | -x_2x_4+Tz_4 | {4} | x_2x_3-Tz_3 | {4} | -x_1x_4+Tz_2 | {4} | x_1x_3-Tz_1 | {4} | -z_2z_3+z_1z_4 | {4} | x_4z_3-x_3z_4 | {4} | -x_2z_2+x_1z_4 | {4} | x_4z_1-x_3z_2 | {4} | -x_2z_1+x_1z_3 | |