1 | LIB "tst.lib"; |
---|
2 | tst_init(); |
---|
3 | |
---|
4 | // tr.679,683: bug in factorize |
---|
5 | LIB"primdec.lib"; |
---|
6 | |
---|
7 | proc isSubset(ideal I,ideal J) |
---|
8 | { |
---|
9 | if ( attrib(J,"isSB") == 0) { J = groebner(J); } |
---|
10 | for(int i=ncols(I); i>0; i--) |
---|
11 | { |
---|
12 | if(reduce(I[i],J,1)!=0) |
---|
13 | { return(0); } |
---|
14 | } |
---|
15 | return(1); |
---|
16 | } |
---|
17 | proc primDecsAreEquivalent(list L, list K) |
---|
18 | { |
---|
19 | int s1 = size(L); |
---|
20 | int s2 = size(K); |
---|
21 | if(s1!=s2) { return(0); } |
---|
22 | list L1, K1; |
---|
23 | int i,j,t; |
---|
24 | list N; |
---|
25 | for(i=1; i<=s1; i++) |
---|
26 | { |
---|
27 | L1[i]=std(L[i][2]); |
---|
28 | K1[i]=std(K[i][2]); |
---|
29 | } |
---|
30 | for(i=1; i<=s1; i++) |
---|
31 | { |
---|
32 | for(j=1; j<=s1; j++) |
---|
33 | { |
---|
34 | if(isSubset(L1[i],K1[j])) |
---|
35 | { |
---|
36 | if(isSubset(K1[j],L1[i])) |
---|
37 | { |
---|
38 | for(t=1; t<=size(N); t++) |
---|
39 | { |
---|
40 | if(N[t]==j) { return(0); } |
---|
41 | } |
---|
42 | N[size(N)+1]=j; |
---|
43 | } |
---|
44 | } |
---|
45 | } |
---|
46 | } |
---|
47 | if ( size(N) != s1 ) { return(0); } |
---|
48 | return(1); |
---|
49 | } |
---|
50 | |
---|
51 | ring r1 = (5,v),(x,y,z,w),dp; |
---|
52 | minpoly = (v^2-2); |
---|
53 | ideal I = (2*v)*x*y+(v)*x*w+z,(-v)*x^2*z+2*z; |
---|
54 | list L1, L2; |
---|
55 | int i ; |
---|
56 | |
---|
57 | for (i=0; i<20; i++) |
---|
58 | { |
---|
59 | system("random",1803001481); |
---|
60 | L1 = primdecGTZ (I); |
---|
61 | L2 = primdecSY (I); |
---|
62 | "equivalent?",primDecsAreEquivalent (L1,L2) ; |
---|
63 | } |
---|
64 | |
---|
65 | ring r2 = (3,v),(x,y,z,w),dp; |
---|
66 | minpoly = (v^2+1); |
---|
67 | ideal I = (v)*y-1,-x*y*z+z^2+w; |
---|
68 | for (i=1;i<10;i++) |
---|
69 | { |
---|
70 | list L1 = minAssGTZ(I); |
---|
71 | list L2 = minAssGTZ(I,"GTZ"); |
---|
72 | list L3 = minAssGTZ(I,"facstd"); |
---|
73 | L1; |
---|
74 | L2; |
---|
75 | L3; |
---|
76 | |
---|
77 | ideal I1 = std( L1[1] ); |
---|
78 | ideal I2 = std( L2[1] ); |
---|
79 | ideal I3 = std( L3[1] ); |
---|
80 | |
---|
81 | idealsEqual(I1, I2); |
---|
82 | idealsEqual(I2, I3); |
---|
83 | |
---|
84 | kill L1,L2,L3,I1,I2,I3; |
---|
85 | |
---|
86 | poly f=xz+(-v)*z2+(-v)*w; |
---|
87 | factorize(f); |
---|
88 | |
---|
89 | kill f; |
---|
90 | } |
---|
91 | |
---|
92 | tst_status(1);$ |
---|