up previous next
2.2.19 Rational Normal Curve
In this example, we compute the ideal of the rational normal curve of degree N in P^N then compute its Poincare series for a range of values of N.

Example
  Define Minor2(M, I, J)
    Return M[1,I] M[2,J] - M[2,I] M[1,J];
  EndDefine;

  Define Rational_Normal_Curve_Ideal(N)
    -- first define the 2xN matrix whose 2x2 minors generate the ideal
    M := NewMat(2, N);
    For C := 0 To N-1 Do
      M[1,C+1] := x[C];
      M[2,C+1] := x[C+1];
    EndFor;
    -- then construct the generators of the ideal
    L := [];
    For C1 := 1 To N-1 Do
      For C2 := C1+1 To N Do
        P := M[1,C1] M[2,C2] - M[2,C1] M[1,C2];
        -- determinant for columns C1,C2
        Append(L, P)
      EndFor;
    EndFor;
    Return Ideal(L);
  EndDefine;

  For N := 3 To 5 Do
    S ::= QQ[x[0..N]], Lex;
    PrintLn NewLine, "degree ", N;
    Using S Do  -- switch, temporarily, to ring S
      I := Rational_Normal_Curve_Ideal(N);
      Print "Poincare series: ", Poincare(S/I);
    EndUsing;
    PrintLn;
  EndFor; -- for statement

degree 3
Poincare series: (1 + 2x[0]) / (1-x[0])^2

degree 4
Poincare series: (1 + 3x[0]) / (1-x[0])^2

degree 5
Poincare series: (1 + 4x[0]) / (1-x[0])^2

-------------------------------