use R ::= QQ[x,y,z];
Points := [[0,0,1],[1/2,1,1],[0,1,0]];
X := IdealAndSeparatorsOfProjectivePoints(Points);
X.points;
[[0, 0, 1], [1, 1, 1], [0, 1, 0]]

X.ideal;
ideal(x*z  (1/2)*y*z, x*y  (1/2)*y*z, x^2  (1/4)*y*z, y^2*z  y*z^2)

X.separators;
[2*x + z, x, 2*x + y]

use R ::= QQ[t,x,y,z];
Pts := GenericPoints(20);  20 random points in projective 3space
X := IdealAndSeparatorsOfProjectivePoints(Pts);
Len(Gens(X.Ideal));  number of generators in the ideal
17

HilbertFn(R/X.Ideal);
H(0) = 1
H(1) = 4
H(2) = 10
H(t) = 20 for t >= 3

F := X.Separators[3];
[Eval(F, P)  P in Pts];
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Res(R/X.Ideal);  the resolution of the ideal
0 > R^10(6) > R^24(5) > R^15(4) > R

