restart S = QQ[x_0..x_4, MonomialOrder => GLex]; I = monomialIdeal(x_0^2, x_0*x_1^2*x_3, x_1^3*x_4) gin = method(); gin Ideal := I -> ( S := ring I; StoS := map(S, S, random(S^{0}, S^{numgens S:-1})); monomialIdeal StoS I); tally for i to 1000 list isBorel gin(I) tally (L = for i to 1000 list gin(I)) uL = unique L isBorel \ uL projection = I -> ( S := ring I; n := numgens S; X := gens S; monomialIdeal mingens substitute(ideal I,{X#(n-2) =>1, X#(n-1) => 1})); polarization = I -> ( n := numgens ring I; u := apply(numgens I, i-> first exponents I_i); Ilcm = max \ transpose u; Z := flatten apply(n, i -> apply(Ilcm#i, j-> z_{i,j})); R := QQ(monoid[Z]); Z = gens R; p := apply(n,i -> sum((Ilcm)_{0..i-1})); monomialIdeal apply(u, e -> product apply(n, i-> product(toList(0..e#i-1), j -> Z#(p#i+j))))); distraction = I -> ( S := ring I; n := numgens S; X := gens S; J := polarization I; W := flatten apply(n, i -> flatten apply (Ilcm#i, j -> X#i)); section := map(S, ring J, apply(W, r -> r - random(500)*X#(n-2) - random(500)*X#(n-1))); section ideal J); S = QQ[x_0..x_4, MonomialOrder => GLex]; I = monomialIdeal(x_0^2, x_0*x_1^2*x_3, x_1^3*x_4) projection I polarization I distraction I hP = I -> hilbertPolynomial(I,Projective=>false) hP(I) hP(projection gin I) hP(polarization I) hP(distraction I) -- Tangent space computation H = Hom(module I,coker gens I) hilbertFunction(0,H) tSpace = I -> ( H := Hom(module I,coker gens I); hilbertFunction(0,H)); tSpace gin I tSpace distraction I tSpace gin distraction I