Read-only forum archive

primary decomposition of an ideal

primary decomposition of an ideal

Dmitry · Sun Jun 10, 2012 2:56 am

I'm trying to decompose an ideal generated by 4 quadrics, in 10 variables:

LIB "primdec.lib";
ring r=0,(z0,z1,z2,z3,z4,z5,z6,z7,z8,z9),dp;
poly f1=3*z1^2-z0*z2;poly f2=7*z1*z4-z0*z5-z2*z3;
poly f3=z6*(z2+2*z1-z0)+4*z1*z2-6*z2^2;
poly f4=8*z1*z8+4*z4^2-z0*z9-z3*z5+z6*z7+z2*(-4*z8-2*z7);
ideal i=f1,f2,f3,f4;
primdecGTZ(i);

(Probably I'm doing this in a very stupid way, being ignorant.) After two hours of work I've shut Singular. Are there some small tricks to speed up this particular example?

If it's relevant, I know that the corresponding scheme contains as a component (with multiplicity 2) the variety defined by
z0=0=z1=z2, 4*z4^2+z6*z7=z3*z5

Re: primary decomposition of an ideal

steenpass · Wed Jun 20, 2012 9:22 am

I don't see that you could do any better here. However, you could try the algorithm by Shimoyama and Yokoyama which is also implemented in Singular's primdec.lib (as primdecSY()).

I started both computations on one of our compute servers here in Kaiserslautern and I will let you know whether or not I got a result within a reasonable amount of time.

Thank you for providing this example, we are always looking for challenging new examples. Where did you get this from?

Best regards,
Andreas

Re: primary decomposition of an ideal

steenpass · Thu Jun 21, 2012 12:18 pm

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

Re: primary decomposition of an ideal

Dmitry · Sat Jun 23, 2012 1:15 pm

Wow! Thanks!

Re: primary decomposition of an ideal

ipeh · Mon Jul 15, 2013 7:32 pm

Hello,
I'm newcomer in SINGULAR. I have same problem with primary decomposition but more complicated (4 polynomials).
It took me more than 1 hour and drove me crazy. Cause MAPLE cannot handle it, so I tried with SINGULAR, but still no result.
Please anyone help me, is there anything I can do to make it faster?

This is my code:

LIB"primdec.lib";
LIB"crypto.lib";
ring r=0,(x0,x1,x2,x3,y0,y1,y2,y3,h0,h1),dp;
ideal i=-h0+(x0^2+x1^2-x2^2-x3^2)*h1-2*x0*y1+2*x1*y0-2*x2*y3+2*x3*y2,
-2*h0-(2*(x0*x3+x1*x2))*h1+squareRoot(3,32003)*h1*(x0^2-x1^2+x2^2-x3^2)-4*x0*y2+4*x1*y3+4*x2*y0-4*x3*y1,
-h0+(x0*x2-x1*x3)*h1-squareRoot(3,32003)*h1*(x0*x1+x2*x3)-2*x0*y3-2*x1*y2+2*x2*y1+2*x3*y0,
x0*y0+x1*y1+x2*y2+x3*y3;
primdecGTZ(i);


I appreciate your helps, guys...
Thank you.

Re: primary decomposition of an ideal

ipeh · Tue Jul 16, 2013 8:46 am

after I computed for one day, it returns result:

Singular error: no more memory
System -2081280k:-1773568k Appl 318583k/5000k Malloc 0k/0k Valloc 323584k/5000k Pages 40181/267 Regions 79:79

halt 14



help me please....