It was pointed out to me that in fact, you can do better. If you already know that one of the components is given by
Code:
ideal j = z0, z1, z2, 4*z4^2+z6*z7-z3*z5;
you can saturate the ideal i w. r. t. j:
Code:
list s1 = sat(i, j);
This geometrically corresponds to the complement of V(j) in V(i) where V(i) is the variety defined by i. You can then decompose this, which gives you one component:
Code:
> list l1 = primdecGTZ(s1[1]);
> size(l1);
1
Then you do it the other way round:
Code:
> list s2 = sat(i, l1[1][1]);
> list l2 = primdecGTZ(s2[1]);
> size(l2);
1
Finally, you can check that l1+l2 is indeed a primary decomposition of the ideal i:
Code:
> ideal t = intersect(l1[1][1], l2[1][1]);
> size(reduce(t, std(i)));
0
> size(reduce(i, t));
0
which shows that the ideal t is indeed (mathematically) equal to i.
The desired result can thus be obtained in a few seconds cpu time.
Best regards,
Andreas