restart R = QQ[x,y,z] -- Generate vanishing ideal of a point pointideal = m -> ( v = transpose vars R; minors(2,v|m) ) -- Vanishing ideal of set of points represented by col's of matrix m pointsideal = m -> ( t = rank source m; J = pointideal matrix{m_0}; scan(t-1, i -> (J = intersect(J, pointideal matrix{m_(i+1)} ))); J ) --n random points in PP^r with c colinear ================= restart points1 = (r,n,c) -> ( S := QQ[a_0..a_r]; v := transpose vars S; m := random(S^r,S^n); if c == 0 then m = m||(matrix{apply(n, i -> 1)}**S) else m = m||((matrix{apply(c, i -> 0)}|matrix{apply(n-c,i -> 1)})**S); I := ideal 1_S; scan(n, i -> I = intersect(I, minors(2,v|matrix{m_i}))); I ) I = points1(2,24,20); apply(30, i -> hilbertFunction(i, I)) I = points1(2,24,19); apply(12, i -> hilbertFunction(i, I)) I = points1(2,24,18); apply(12, i -> hilbertFunction(i, I)) VDM = (a,b) -> map(ZZ^a,ZZ^b, (i,j) -> (j+1)^i) A = VDM(3,20) A = A^{1,2,0}**R B = random(R^3,R^4) I = pointsideal(A|B); apply(30, i -> hilbertFunction(i,I)) J = pointsideal(A); apply(30, i -> hilbertFunction(i,J)) K = I + ideal(random(1,R)); apply(30, i -> hilbertFunction(i,K)) m = random(R^2,R^20); m = m||(matrix{apply(20, i-> 0)}) C = m|B; J = pointsideal C; L = J + ideal(random(1,R)); apply(30, i -> hilbertFunction(i,L))