Home Online Manual
Top
Back: num_prime_decom
Forward: num_radical_via_decom
FastBack:
FastForward:
Up: recover_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.8.7.10 num_prime_decom1

Procedure from library recover.lib (see recover_lib).

Usage:
num_prime_decom1(P,D,C); list P, int D, bigint C
P a list of lists representing a witness point set representing an ideal I D should be a bound to the degree of the elements of the components of the prime decomposition of I
C the number with which the images of the Veronese embeddings are multiplied

Return:
list of ideals: each of the ideals a prime component of the radical of I

Note:
Should only be called from a ring over the complex numbers.

Example:
 
LIB "recover.lib";
//First, we compute a prime decomposition of the ideal I=x+y;
ring R1=(complex,300,IUnit),(x,y),dp;
list p1=1,-1;
list P=list(p1);
int D=2;
bigint C=bigint(10)**300;
num_prime_decom1(P,D,C);
==> [1]:
==>    _[1]=x+y
//Now, we try to obtain a prime decomposition of the ideal I=(x+y)*(y+2z), (x+y)*(x-3z);
ring R2=(complex,20,IUnit),(x,y,z),dp;
p1=1.7381623928,-1.7381623928,0.2819238763;
list p2=-3.578512854,2.385675236,-1.192837618;
P=p1,p2;
num_prime_decom1(P,D,10000);
==> [1]:
==>    _[1]=x+y
==> [2]:
==>    _[1]=-2*x-3*y
==>    _[2]=-y^2+x*z+z^2
==>    _[3]=x*z+y*z-z^2
//Now, we look at the result of a purely symbolic algorithm
ring r2=0,(x,y,z),dp;
ideal I=(x+y)*(y+2z), (x+y)*(x-3z);
primdecSY(I);
==> [1]:
==>    [1]:
==>       _[1]=x+y
==>    [2]:
==>       _[1]=x+y
==> [2]:
==>    [1]:
==>       _[1]=y+2z
==>       _[2]=x-3z
==>    [2]:
==>       _[1]=y+2z
==>       _[2]=x-3z
//If you compare the results, you may find that they don't match.
//Most likely, the hybrid algorithm got the second component wrong. This is due to the
//way the algorithm looks for homogeneous polynomial relations, and the specific version
//of the LLL algorithm used here (an implementation into Singular of a rather simple
//version which allows real input). It looks in degree 1, finds one relation and is
//thereafter unable to see a second one. Then it moves on to degree 2 and finds
//relations containing degree-1 relations as a factor.