Examples of ACM sets of points in a multiprojective space: Guardo and Van Tuyl

Adam Van Tuyl

Department of Mathematics and Statistics
McMaster University
Hamilton, ON, Canada
L8S 4L8
vantuyl@math.mcmaster.ca

Code for ACM sets of points

In my paper

we search for necessary and sufficient conditions for a set of points in multiprojective space to be ACM. For points in P1 x P1 there are several different classifications of these points. One of the goals of this paper is to show that the natural generalizations of these results do not hold in a general multiprojective space.

To acheive this goal, we used the computer algebra systems CoCoA to help discover a number of examples. As promised in our paper, below is the code we used to generate these examples. We are providing this code to encourage future experimentation.

Feel free to borrow and change the code. If you find anything, we would be interested in hearing about your results!

CoCoA code

The following code has been checked on CoCoA 4.5. Before presenting our examples, we give some code that allows one to compute the bigraded Hilbert function and the bigraded shifts.

-----------------------------------------------------------------------
-- BiHilbert(I,K1,K2)
--
-- (Assume that the appropriate ring R has been defined)
-- BiHilbert computes the Hilbert function of the bigraded ring S = R/I
-- for all (I,J) <= (K1,K2)
-----------------------------------------------------------------------

Define BiHilbert(I,K1,K2)
 --  N = #indeterminates of degree (1,1,0) in R
 --  M = #indeterminates of degree (1,0,1) in R
  N:= Len([X In Indets() | MDeg(X) =[1,1,0]]);
  M:= NumIndets() - N;
 -- Compute Hilbert-Poincare Series
  P:=Poincare(CurrentRing()/I);
  BiHiRing::=Q[t[1..3]];
  Using BiHiRing Do
 -- Determine the numerator (Num) of the HP-series
    RationalP:=$hp.ToRatFun(P);
    Num := RationalP*(1-t[1]t[2])^N*(1-t[1]t[3])^M;
 -- Derive the correct numerator by substituting 1 into Num
    Num:=Subst(Num,t[1],1);
 -- Write out the appropriate number of terms of the denominator
 -- and multiply by the numerator.  We use the
 -- routine Expansion
    Expanded:=Num*Expansion(N,M,K1,K2);
 -- Read off the coefficient of the term t[2]^I1*t[3]^I2
 -- for all (I1,I2) <= (K1,K2).  Store result in a matrix
    HilbertMatrix:=NewMat(K1+1,K2+1,0);
    Foreach M In Monomials(Expanded) Do
      If Deg(M,t[2]) <= K1 And Deg(M,t[3]) <= K2 Then
      HilbertMatrix[Deg(M,t[2])+1,Deg(M,t[3])+1] := LC(M);      End;
    End;
 -- Return desired values as a matrix
    Return(HilbertMatrix);
  End;
End;

-------------------------------------------------------------
-- Expansion(N,M,K1,K2)
--
-- Expansion computes the first K1 terms of 1/(1-t[2])^N and
-- the first K2 terms of 1/(1-t[3]^M.  It then returns
-- the product of these two polynomials.
-------------------------------------------------------------

Define Expansion(N,M,K1,K2)
  L1:=[Bin(D+N-1,N-1)*t[2]^D | D In 0..K1];
  L2:=[Bin(D+M-1,M-1)*t[3]^D | D In 0..K2];
  P1:=Sum(L1);
  P2:=Sum(L2);
  Return(P1*P2);
End; -- Expansion

-------------------------------------------------------------------
--- PI returns the ideal of the point [1:A] x [1:B] in P^1 x P^1
-------------------------------------------------------------------

Define PI(A,B);
  Return(Ideal(x[2]-A*x[1],y[2]-B*y[1]));
End; -- FP


------------------------------------------------------------------
-- BiRes(I) returns the bigraded shifts in the bigrade
-- minimal free resolution of I
------------------------------------------------------------------

Define BiRes(I);
  R:=Res(I);
  For L:=1 To Len(R[2]) Do
    PrintLn "--Degres of ", L-1, "th Syzygies --";
    MM:=MinGens(R[2][L][1]);
    DegMM:=[Tail(MDeg(X)) | X In MM];
    PrintLn DegMM;
  End;
End; 

The next two examples correspond to Examples 3.3 and 3.4 in our paper


--------------------------------------------------------------
--- Example of 27 points which are Not ACM but
--- whose first difference function is the Hilbert
--- function of a bigraded arinian quotient


W:=Mat([[1,1,1,1,1,1],[1,1,1,0,0,0],[0,0,0,1,1,1]]);
Use S::=Q[x[1..3],y[1..3]],Weights(W);

-- We Use the following 6 points In generic position
-- [[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 1], [19, 64, 42], [7, 18, 61]]


P1:=Ideal(x[2],x[3]);
Q1:=Ideal(y[2],y[3]);
P2:=Ideal(x[1],x[3]);
Q2:=Ideal(y[1],y[3]);
P3:=Ideal(x[1],x[2]);
Q3:=Ideal(y[1],y[2]);
P4:=Ideal(x[1]-x[2],x[1]-x[3]);
Q4:=Ideal(y[1]-y[2],y[1]-y[3]);
P5:=Ideal(64x[1]-19x[2],42x[1]-19x[3]);
Q5:=Ideal(64y[1]-19y[2],42y[1]-19y[3]);
P6:=Ideal(18x[1]-7x[2],61x[1]-7x[3]);
Q6:=Ideal(18y[1]-7y[2],61y[1]-7y[3]);

R11:=P1+Q1;
R12:=P1+Q2;
R13:=P1+Q3;
R14:=P1+Q4;
R15:=P1+Q5;
R16:=P1+Q6;

R21:=P2+Q1;
R22:=P2+Q2;
R23:=P2+Q3;
R24:=P2+Q4;
R25:=P2+Q5;
R26:=P2+Q6;

R31:=P3+Q1;
R32:=P3+Q2;
R33:=P3+Q3;
R34:=P3+Q4;
R35:=P3+Q5;
R36:=P3+Q6;

R41:=P4+Q1;
R42:=P4+Q2;
R43:=P4+Q3;
R44:=P4+Q4;
R45:=P4+Q5;
R46:=P4+Q6;

R51:=P5+Q1;
R52:=P5+Q2;
R53:=P5+Q3;
R54:=P5+Q4;
R55:=P5+Q5;
R56:=P5+Q6;

R61:=P6+Q1;
R62:=P6+Q2;
R63:=P6+Q3;
R64:=P6+Q4;
R65:=P6+Q5;
R66:=P6+Q6;

K:=Intersection(R11,R12,R13,R14,R15,R16,R21,R23,R24,R26,
R31,R32,R35,R36,R41,R42,R45,R46,R51,R53,R56,
R61,R62,R63,R64,R65,R66);
Res(K);
BiHilbert(K,6,6);

0 --> S(-8) --> S^12(-7)(+)S(-8) --> S^38(-6) --> S^6(-4)(+)S^36(-5) --> S^8(-3)(+)S^9(-4)
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6, 6],
  [3, 9, 18, 18, 18, 18, 18],
  [6, 18, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27]
])
-------------------------------

----------------------------------------------
--Example of ACM points In P^2 x P^2 with
--same Hilbert function of nonACM Set of points.

W:=Mat([[1,1,1,1,1,1],[1,1,1,0,0,0],[0,0,0,1,1,1]]);
Use S::=Q[x[1..3],y[1..3]],Weights(W);

-- (1:1:1)
P11:=Ideal(x[2]-x[1],x[3]-x[1]);
-- (1:1:2)
P12:=Ideal(x[2]-x[1],x[3]-2x[1]);
-- (1:1:3)
P13:=Ideal(x[2]-x[1],x[3]-3x[1]);
-- (1:2:1)
P21:=Ideal(x[2]-2x[1],x[3]-x[1]);
-- (1:2:2)
P22:=Ideal(x[2]-2x[1],x[3]-2x[1]);
-- (1:3:1)
P31:=Ideal(x[2]-3x[1],x[3]-x[1]);

-- (1:1:1)
R11:=Ideal(y[2]-y[1],y[3]-y[1]);
-- (1:1:2)
R12:=Ideal(y[2]-y[1],y[3]-2y[1]);
-- (1:1:3)
R13:=Ideal(y[2]-y[1],y[3]-3y[1]);
-- (1:2:1)
R21:=Ideal(y[2]-2y[1],y[3]-y[1]);
-- (1:2:2)
R22:=Ideal(y[2]-2y[1],y[3]-2y[1]);
-- (1:3:1)
R31:=Ideal(y[2]-3y[1],y[3]-y[1]);

Q1111:=P11+R11;
Q1112:=P11+R12;
Q1113:=P11+R13;
Q1121:=P11+R21;
Q1122:=P11+R22;
Q1131:=P11+R31;

Q1211:=P12+R11;
Q1212:=P12+R12;
Q1213:=P12+R13;
Q1221:=P12+R21;
Q1222:=P12+R22;
Q1231:=P12+R31;

Q1311:=P13+R11;
Q1312:=P13+R12;
Q1313:=P13+R13;
Q1321:=P13+R21;
Q1322:=P13+R22;
Q1331:=P13+R31;

Q2111:=P21+R11;
Q2112:=P21+R12;
Q2113:=P21+R13;
Q2121:=P21+R21;
Q2122:=P21+R22;
Q2131:=P21+R31;

Q2211:=P22+R11;
Q2212:=P22+R12;
Q2213:=P22+R13;
Q2221:=P22+R21;
Q2222:=P22+R22;
Q2231:=P22+R31;

Q3111:=P31+R11;
Q3112:=P31+R12;
Q3113:=P31+R13;
Q3121:=P31+R21;
Q3122:=P31+R22;
Q3131:=P31+R31;

J:=Intersection(Q1121,Q1122,Q1131,
                Q1221,Q1222,Q1231,
                Q1321,Q1322,Q1331,
                Q2111,Q2112,Q2113,Q2121,Q2122,Q2131,
                Q2211,Q2212,Q2213,Q2221,Q2222,Q2231
                Q3111,Q3112,Q3113,Q3121,Q3122,Q3131);
BiHilbert(J,10,10);
Res(J);

Mat([
  [1, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6],
  [3, 9, 18, 18, 18, 18, 18, 18, 18, 18, 18],
  [6, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27],
  [6, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27]
])
-------------------------------
0 --> S^12(-7) --> S^38(-6) --> S^6(-4)(+)S^36(-5) --> S^8(-3)(+)S^9(-4)
-------------------------------

The following example is Example 4.9 of a set of points that fails the geometric property (*), but is ACM


-----------------------------------------------------------
---- Geometric Condition (*) Fails In P1 x P2
-------------------------------------------------------------- 

W:=Mat([[1,1,1,1,1],[1,1,0,0,0],[0,0,1,1,1]]);
Use S::=Q[x[1..2],y[1..3]],Weights(W);

-- We Use the following 6 points In generic position
-- [[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 1], [19, 64, 42], [7, 18, 61]]


P1:=Ideal(x[1]-x[2]);
Q1:=Ideal(y[2],y[3]);
P2:=Ideal(x[1]-2x[2]);
Q2:=Ideal(y[1],y[3]);
P3:=Ideal(x[1]-3x[2]);
Q3:=Ideal(y[1],y[2]);
P4:=Ideal(x[1]-4x[2]);
Q4:=Ideal(y[1]-y[2],y[1]-y[3]);
P5:=Ideal(x[1]-5x[2]);
Q5:=Ideal(64y[1]-19y[2],42y[1]-19y[3]);
P6:=Ideal(x[1]-6x[2]);
Q6:=Ideal(18y[1]-7y[2],61y[1]-7y[3]);


R11:=P1+Q1;
R12:=P1+Q2;
R13:=P1+Q3;
R14:=P1+Q4;
R15:=P1+Q5;
R16:=P1+Q6;

R21:=P2+Q1;
R22:=P2+Q2;
R23:=P2+Q3;
R24:=P2+Q4;
R25:=P2+Q5;
R26:=P2+Q6;

R31:=P3+Q1;
R32:=P3+Q2;
R33:=P3+Q3;
R34:=P3+Q4;
R35:=P3+Q5;
R36:=P3+Q6;

R41:=P4+Q1;
R42:=P4+Q2;
R43:=P4+Q3;
R44:=P4+Q4;
R45:=P4+Q5;
R46:=P4+Q6;

R51:=P5+Q1;
R52:=P5+Q2;
R53:=P5+Q3;
R54:=P5+Q4;
R55:=P5+Q5;
R56:=P5+Q6;
R56:=P5+Q6;

R61:=P6+Q1;
R62:=P6+Q2;
R63:=P6+Q3;
R64:=P6+Q4;
R65:=P6+Q5;
R66:=P6+Q6;



K:=Intersection(R11,R12,R21,R22,R23,R24,R25,R31,R32,R33,
                R34,R35,R41,R42,R44,R45,R52,R53,R54,
                R56,R61,R63,R64,R65,R66,R51,R62);
Res(K);
BiHilbert(K,6,6);

0 --> S(-6)(+)S^3(-8)(+)S(-9) --> S^3(-4)(+)S^2(-5)(+)S^7(-7)(+)S(-8) --> S^4(-3)(+)S(-4)(+)S^4(-6)
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6, 6],
  [2, 6, 12, 12, 12, 12, 12],
  [3, 9, 17, 17, 17, 17, 17],
  [4, 12, 22, 22, 22, 22, 22],
  [5, 15, 25, 25, 25, 25, 25],
  [6, 17, 27, 27, 27, 27, 27],
  [6, 17, 27, 27, 27, 27, 27]
])
-------------------------------

Below is an example of 18 points in P2 x P2 that is not ACM, but each point has only one minimal separator. This is Example 5.10 in our paper.



W:=Mat([[1,1,1,1,1,1],[1,1,1,0,0,0],[0,0,0,1,1,1]]);
Use S::=Q[x[1..3],y[1..3]],Weights(W);

-- We Use the following 6 points In generic position
-- [[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 1], [19, 64, 42], [7, 18, 61]]


P1:=Ideal(x[2],x[3]);
Q1:=Ideal(y[2],y[3]);
P2:=Ideal(x[1],x[3]);
Q2:=Ideal(y[1],y[3]);
P3:=Ideal(x[1],x[2]);
Q3:=Ideal(y[1],y[2]);
P4:=Ideal(x[1]-x[2],x[1]-x[3]);
Q4:=Ideal(y[1]-y[2],y[1]-y[3]);
P5:=Ideal(64x[1]-19x[2],42x[1]-19x[3]);
Q5:=Ideal(64y[1]-19y[2],42y[1]-19y[3]);
P6:=Ideal(18x[1]-7x[2],61x[1]-7x[3]);
Q6:=Ideal(18y[1]-7y[2],61y[1]-7y[3]);


R11:=P1+Q1;
R12:=P1+Q2;
R13:=P1+Q3;
R14:=P1+Q4;
R15:=P1+Q5;
R16:=P1+Q6;

R21:=P2+Q1;
R22:=P2+Q2;
R23:=P2+Q3;
R24:=P2+Q4;
R25:=P2+Q5;
R26:=P2+Q6;

R31:=P3+Q1;
R32:=P3+Q2;
R33:=P3+Q3;
R34:=P3+Q4;
R35:=P3+Q5;
R36:=P3+Q6;

R41:=P4+Q1;
R42:=P4+Q2;
R43:=P4+Q3;
R44:=P4+Q4;
R45:=P4+Q5;
R46:=P4+Q6;

R51:=P5+Q1;
R52:=P5+Q2;
R53:=P5+Q3;
R54:=P5+Q4;
R55:=P5+Q5;
R56:=P5+Q6;

R61:=P6+Q1;
R62:=P6+Q2;
R63:=P6+Q3;
R64:=P6+Q4;
R65:=P6+Q5;
R66:=P6+Q6;


K:=Intersection(R11,R12,R21,R22,R31,R32,R41,R42,R52,R53,
R54,R55,R56,R61,R63,R64,R65,R66);
Res(K);

BiHilbert(K,5,5);
BiHilbert(K:R11,5,5);  -- Hilbert function drops at (2,1)
BiHilbert(K:R12,5,5);  -- Hilbert function drops at (2,1)
BiHilbert(K:R21,5,5);  -- Hilbert function drops at (2,1)
BiHilbert(K:R22,5,5);  -- Hilbert function drops at (2,1)
BiHilbert(K:R31,5,5);  -- Hilbert function drops at (2,1)
BiHilbert(K:R32,5,5);  -- Hilbert function drops at (2,1)
BiHilbert(K:R41,5,5);  -- Hilbert function drops at (2,1)
BiHilbert(K:R42,5,5);  -- Hilbert function drops at (2,1)
BiHilbert(K:R52,5,5);  -- Hilbert function drops at (2,2)
BiHilbert(K:R53,5,5);  -- Hilbert function drops at (1,2)
BiHilbert(K:R54,5,5);  -- Hilbert function drops at (1,2)
BiHilbert(K:R55,5,5);  -- Hilbert function drops at (1,2)
BiHilbert(K:R56,5,5);  -- Hilbert function drops at (1,2)
BiHilbert(K:R61,5,5);  -- Hilbert function drops at (2,2)
BiHilbert(K:R63,5,5);  -- Hilbert function drops at (1,2)
BiHilbert(K:R64,5,5);  -- Hilbert function drops at (1,2)
BiHilbert(K:R65,5,5);  -- Hilbert function drops at (1,2)
BiHilbert(K:R66,5,5);  -- Hilbert function drops at (1,2)

0 --> S^2(-8) --> S^14(-7) --> S^6(-5)(+)S^27(-6) --> S^16(-4)(+)S^18(-5) 
--> S(-2)(+)S^10(-3)(+)S^3(-4)
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 14, 18, 18, 18, 18],
  [6, 14, 18, 18, 18, 18],
  [6, 14, 18, 18, 18, 18],
  [6, 14, 18, 18, 18, 18]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17],
  [6, 13, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 14, 14, 14, 14],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 13, 13, 13, 13],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 13, 13, 13, 13],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 13, 13, 13, 13],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 13, 13, 13, 13],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17]
])
-------------------------------
Mat([
  [1, 3, 6, 6, 6, 6],
  [3, 8, 13, 13, 13, 13],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17],
  [6, 14, 17, 17, 17, 17]
])
--


Last Updated: May 3, 2007
URL: http://ms.mcmaster.ca/~vantuyl/research/ACMexamples_Guardo_VanTuyl.html