@@ -1,3096 +1,3096 @@ -REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ... - - -% Author H.-G. Graebe | Univ. Leipzig | Version 28.6.1995 -% graebe@informatik.uni-leipzig.de - -COMMENT - -This is an example session demonstrating and testing the facilities -offered by the commutative algebra package CALI. - -END COMMENT; - - -algebraic; - - -on echo; - - -off nat; - - % To make it easier to compare differing output. -showtime; - - -Time: 30 ms - - -comment - - #################################### - ### ### - ### Introductory Examples ### - ### ### - #################################### - -end comment; - - -% Example 1 : Generating ideals of affine and projective points. - - - vars:={t,x,y,z}; - - -vars := {t,x,y,z}$ - - setring(vars,degreeorder vars,revlex); - - -{{t,x,y,z},{{1,1,1,1}},revlex,{1,1,1,1}}$ - - mm:=mat((1,1,1,1),(3,2,3,1),(2,1,3,2)); - - -mm := mat((1,1,1,1),(3,2,3,1),(2,1,3,2))$ - - - % The ideal with zero set at the point in A^4 with coordinates - % equal to the row vectors of mm : - - setideal(m1,affine_points mm); - - -{z**2 - 3*z + 2, -y**2 - 4*y + 3, -t - y + z - 1, -2*x - y + 2*z - 3, -y*z - y - 3*z + 3}$ - - - % All parameters are as they should be : - - dim m1; - - -0$ - - degree m1; - - -3$ - - groebfactor m1; - - -{{z - 2,y - 3,t - 2,x - 1}, -{z - 1,t - 3,y - 3,x - 2}, -{z - 1,t - 1,y - 1,x - 1}}$ - - resolve m1$ - - - bettinumbers m1; - - -{1,5,9,7,2}$ - - - % The ideal with zero set at the point in P^3 with homogeneous - % coordinates equal to the row vectors of mm : - - setideal(m2,proj_points mm); - - -{2*y**2 - 2*x*z - 7*y*z + 7*z**2, -3*t - 2*x - 2*y + z, -2*x**2 - 4*x*z - y*z + 3*z**2, -2*x*y - 4*x*z - 3*y*z + 5*z**2}$ - - - % All parameters as they should be ? - - dim m2; - - -1$ - - degree m2; - - -3$ - - groebfactor m2; - - -{{2*y**2 - 2*x*z - 7*y*z + 7*z**2, -3*t - 2*x - 2*y + z, -2*x**2 - 4*x*z - y*z + 3*z**2, -2*x*y - 4*x*z - 3*y*z + 5*z**2}}$ - - - % It seems to be prime ? - - isprime m2; - - -no$ - - - % Not, of course, but it is known to be unmixed. - % Hence we can use - - easyprimarydecomposition m2; - - -{{{x - 2*z,y - 3*z,t - 3*z}, -{y - 3*z,x - 2*z,t - 3*z}}, -{{x - z,y - z,t - z}, -{y - z,x - z,t - z}}, -{{2*x - z,2*y - 3*z,t - z}, -{2*y - 3*z,2*x - z,t - z}}}$ - - -% Example 2 : -% The affine monomial curve with generic point (t^7,t^9,t^10). - - setideal(m,affine_monomial_curve({7,9,10},{x,y,z})); - - -{x**3*y - z**3, -x**4 - y**2*z, -y**3 - x*z**2}$ - - - % The base ring was changed as side effect : - - getring(); - - -{{x,y,z},{{7,9,10}},revlex,{7,9,10}}$ - - vars:=first getring m; - - -vars := {x,y,z}$ - - - % Some advanced commutative algebra : - - % The analytic spread of m. - - analytic_spread m; - - -3$ - - - % The Rees ring Rees_R(vars) over R=S/m. - - rees:=blowup(m,vars,{u,v,w}); - - -rees := {u**2*v*x - w**3, -u*v*x**2 - w**2*z, -v*x**3 - w*z**2, -u**3*x - v**2*w, -u**2*x**2 - v*w*y, -u*x**3 - w*y**2, - - u*w**2 + v**3, -v**2*y - w**2*x, -v*y**2 - w*x*z, -v*z - w*y, -u*z - w*x, -u*y - v*x, -x**3*y - z**3, -x**4 - y**2*z, - - x*z**2 + y**3}$ - - - % It is multihomogeneous wrt. the degree vectors, constructed during - % blow up. Lets compute weighted Hilbert series : - - setideal(rees,rees)$ - - - weights:=second getring(); - - -weights := {{0,0,0,7,9,10},{7,9,10,0,0,0}}$ - - weightedhilbertseries(gbasis rees,weights); - - -( - x**29*y + x**29 - x**20*y + x**20 - x**19*y**11 + x**19*y**10 - x**19*y + x -**19 - x**18*y + x**18 - x**10*y**11 + x**10*y**10 - x**10*y + x**10 - x**9*y -**21 + x**9*y**20 - x**9*y**11 + x**9*y**9 - x**9*y + x**9 + y**23 - y**22 + y -**16 - y**15 + y**14 - y**11 + y**9 - y**8 + y**7 - y + 1)/(x**7*y - x**7 - y -+ 1)$ - - - % gr_R(vars), the associated graded ring of the irrelevant ideal - % over R. The short way. - - interreduce sub(x=0,y=0,z=0,rees); - - -{w**3,v**2*w, - u*w**2 + v**3}$ - - - % The long (and more general) way. Gives the result in another - % embedding. - - % Restore the base ring, since it was changed by blowup as a side - % effect. - setring getring m$ - - - assgrad(m,vars,{u,v,w}); - - -{x, -y, -z, -w**3, -v**2*w, - - u*w**2 + v**3}$ - - - % Comparing the Rees algebra and the symmetric algebra of M : - - setring getring m$ - - - setideal(rees,blowup({},m,{a,b,c})); - - -{ - y**2*a + z**2*b + x**3*c, -x*a - y*b - z*c, - - y**2*a**2 + z**2*a*b + x**2*y*b*c + x**2*z*c**2, - - y**2*a**3 + z**2*a**2*b + x*y**2*b**2*c + 2*x*y*z*b*c**2 + x*z**2*c**3, - - y**2*a**4 + z**2*a**3*b + y**3*b**3*c + 3*y**2*z*b**2*c**2 + 3*y*z**2*b*c** -3 + z**3*c**4}$ - - - % Lets test weighted Hilbert series once more : - - weights:=second getring(); - - -weights := {{0,0,0,30,28,27},{7,9,10,0,0,0}}$ - - weightedhilbertseries(gbasis rees,weights); - - -(x**58*y**27 + x**30*y**25 - x**30*y**18 - x**30*y**7 - x**28*y**27 + 1)/(x**85 -*y**26 - x**85*y**19 - x**85*y**17 - x**85*y**16 + x**85*y**10 + x**85*y**9 -+ x**85*y**7 - x**85 - x**58*y**26 + x**58*y**19 + x**58*y**17 + x**58*y**16 - - x**58*y**10 - x**58*y**9 - x**58*y**7 + x**58 - x**57*y**26 + x**57*y**19 - + x**57*y**17 + x**57*y**16 - x**57*y**10 - x**57*y**9 - x**57*y**7 + x**57 - - x**55*y**26 + x**55*y**19 + x**55*y**17 + x**55*y**16 - x**55*y**10 - x** -55*y**9 - x**55*y**7 + x**55 + x**30*y**26 - x**30*y**19 - x**30*y**17 - x** -30*y**16 + x**30*y**10 + x**30*y**9 + x**30*y**7 - x**30 + x**28*y**26 - x** -28*y**19 - x**28*y**17 - x**28*y**16 + x**28*y**10 + x**28*y**9 + x**28*y**7 - - x**28 + x**27*y**26 - x**27*y**19 - x**27*y**17 - x**27*y**16 + x**27*y** -10 + x**27*y**9 + x**27*y**7 - x**27 - y**26 + y**19 + y**17 + y**16 - y**10 - - y**9 - y**7 + 1)$ - - - % The symmetric algebra : - - setring getring m$ - - - setideal(sym,sym(m,{a,b,c})); - - -{y**2*a - z**2*b - x**3*c, -x*a - y*b - z*c}$ - - modequalp(rees,sym); - - -yes$ - - - % Symbolic powers : - - setring getring m$ - - - setideal(m2,idealpower(m,2)); - - -{x**6*y**2 - 2*x**3*y*z**3 + z**6, -x**8 - 2*x**4*y**2*z + y**4*z**2, -y**6 - 2*x*y**3*z**2 + x**2*z**4, -x**7*y - x**3*y**3*z - x**4*z**3 + y**2*z**4, -x**3*y**4 - x**4*y*z**2 - y**3*z**3 + x*z**5, -x**4*y**3 - y**5*z - x**5*z**2 + x*y**2*z**3}$ - - - % Let's compute a second symbolic power : - - setideal(m3,symbolic_power(m,2)); - - -{x**6*y**2 - 2*x**3*y*z**3 + z**6, -x**8 - 2*x**4*y**2*z + y**4*z**2, -y**6 - 2*x*y**3*z**2 + x**2*z**4, -x**2*y**5 + x**7*z - 3*x**3*y**2*z**2 + y*z**5, -x**7*y - x**3*y**3*z - x**4*z**3 + y**2*z**4, -x**3*y**4 - x**4*y*z**2 - y**3*z**3 + x*z**5, -x**4*y**3 - y**5*z - x**5*z**2 + x*y**2*z**3}$ - - - % It is different from the ordinary second power. - % Hence m2 has a trivial component. - - modequalp(m2,m3); - - -no$ - - - % Test x for non zero divisor property : - - nzdp(x,m2); - - -no$ - - nzdp(x,m3); - - -yes$ - - - % Here is the primary decomposition : - - pd:=primarydecomposition m2; - - -pd := {{{x**8 - 2*x**4*y**2*z + y**4*z**2, -x**6*y**2 - 2*x**3*y*z**3 + z**6, -x**2*z**4 - 2*x*y**3*z**2 + y**6, -x**7*z - 3*x**3*y**2*z**2 + x**2*y**5 + y*z**5, -x**7*y - x**4*z**3 - x**3*y**3*z + y**2*z**4, - - x**4*y*z**2 + x**3*y**4 + x*z**5 - y**3*z**3, - - x**5*z**2 + x**4*y**3 + x*y**2*z**3 - y**5*z}, -{ - x*z**2 + y**3, -x**4 - y**2*z, -x**3*y - z**3}}, -{{z**2, -x**6*y**2, -y**6, -x**2*y**5*z, -x**3*y**4, -x**4*(x**4 - 2*y**2*z), -x**3*y*(x**4 - y**2*z), -y**3*(x**4 - y**2*z)}, -{x,z,y}}}$ - - - % Compare the result with m2 : - - setideal(m4,matintersect(first first pd, first second pd)); - - -{y**6 - 2*x*y**3*z**2 + x**2*z**4, -x**6*y**2 - 2*x**3*y*z**3 + z**6, -x**8 - 2*x**4*y**2*z + y**4*z**2, -x**2*y**5*z + x**7*z**2 - 3*x**3*y**2*z**3 + y*z**6, -x**4*y**3 - y**5*z - x**5*z**2 + x*y**2*z**3, -x**3*y**4 - x**4*y*z**2 - y**3*z**3 + x*z**5, -x**7*y - x**3*y**3*z - x**4*z**3 + y**2*z**4}$ - - modequalp(m2,m4); - - -yes$ - - - % Compare the result with m3 : - - setideal(m4,first first pd)$ - - - modequalp(m3,m4); - - -yes$ - - - % The trivial component can also be removed with a stable - % quotient computation : - - setideal(m5,matstabquot(m2,vars))$ - - - modequalp(m3,m5); - - -yes$ - - - -% Example 3 : The Macaulay curve. - - setideal(m,proj_monomial_curve({0,1,3,4},{w,x,y,z})); - - -{x**3 - w**2*y, -w*y**2 - x**2*z, -y**3 - x*z**2, -x*y - w*z}$ - - vars:=first getring(); - - -vars := {w,x,y,z}$ - - gbasis m; - - -{x**3 - w**2*y, -w*y**2 - x**2*z, -y**3 - x*z**2, -x*y - w*z}$ - - - % Test whether m is prime : - - isprime m; - - -yes$ - - - % A resolution of m : - - resolve m; - - -{ -mat((x**3 - w**2*y),(w*y**2 - x**2*z),(y**3 - x*z**2),(x*y - w*z))$ -, - -mat((y,w,0, - x**2),(z,x,0, - w*y),(0, - y,w, - x*z),(0, - z,x, - y**2))$ -, - -mat((z, - y, - x,w))$ -, - -mat((0))$ -}$ - - - % m has depth = 1 as can be seen from the - - gradedbettinumbers m; - - -{{0},{2,3,3,3},{4,4,4,4},{5}}$ - - - % Another way to see the non perfectness of m : - - hilbertseries m; - - -( - w**3 + 2*w**2 + 2*w + 1)/(w**2 - 2*w + 1)$ - - - % Just a third approach. Divide out a parameter system : - - ps:=for i:=1:2 collect random_linear_form(vars,1000); - - -ps := {927*w + 880*x + 292*y + 9*z, - 819*w + 224*x - 572*y - 205*z}$ - - setideal(m1,matsum(m,ps))$ - - - - % dim should be zero and degree > degree m = 4. - % A Gbasis for m1 is computed automatically. - - dim m1; - - -0$ - - degree m1; - - -5$ - - - % The projections of m on the coord. hyperplanes. - - for each x in vars collect eliminate(m,{x}); - - -{{ - x*z**2 + y**3}, -{ - w*z**3 + y**4}, -{ - w**3*z + x**4}, -{ - w**2*y + x**3}}$ - - -% Example 4 : Two submodules of S^4. - - % Get the stored result of the earlier computation. - - r:=resolve m$ - - - - % See whether cali!=degrees contains a relict from earlier - % computations. - - getdegrees(); - - -{}$ - - - % Introduce the 2nd and 3rd syzygy module as new modules. - % Both are submodules in S^4. - - setmodule(m1,second r)$ - - setmodule(m2,third r)$ - - - - % The second is already a gbasis. - - setgbasis m2; - - -mat((z, - y, - x,w))$ - - getleadterms m1; - - -mat((0,x**3,0,0),(0,0,x**3,0),(0,0,w**2*y,0),(0,0,w*y**2,0),(0,0,w*x,0),(0,0,0, -x**2),(0,0,0,w*y),(0,0,0,x*z),(0,0,0,y**2))$ - getleadterms m2; - - -mat((0,0,0,w))$ - - - % Since rk(F/M)=rk(F/in(M)), they have ranks 1 resp. 3. - - dim m1; - - -4$ - - indepvarsets m1; - - -{{w,x,y,z}}$ - - - % Its intersection is zero : - - matintersect(m1,m2); - - -mat((0,0,0,0))$ - - - % Its sum : - - setmodule(m3,matsum(m1,m2)); - - -mat(( - y, - w,0,x**2),(0,y, - w,x*z),(0,z, - x,y**2),(z, - y, - x,w),( - y*z - - z,y**2 - x,x*y,0))$ - - dim m3; - - -3$ - - - % Hence it has a nontrivial annihilator : - - annihilator m3; - - -{w**2*y*z + w**2*z - w*x*y + w*y**3 - x**3*z - x**2*y*z - x**2*z**2 + x*y**3}$ - - - % One can compute isolated primes and primary decomposition also for - % modules. Let's do it, although being trivial here: - - isolatedprimes m3; - - -{{w**2*y*z + w**2*z - w*x*y + w*y**3 - x**3*z - x**2*y*z - x**2*z**2 + x*y**3}} -$ - - - primarydecomposition m3; - - -{{ -mat((z*( - w*x*z - w*y*z + w*y - w*z + x**2*z + x*y*z - y**3 + y**2*z),w**2*y - + w**2*z + w*x*y*z + w*x*z**2 - w*x*z + w*y*z**2 - x**2*z**2 + x*y**2*z -, - w**3,0),(z*( - w*y - w - x*z + y**2), - w*x + w*y*z - x**2*z + x*y**2,w**2* -y,0),( - x*z**2,w*y + x*y*z + x*z**2 - y**3,w*( - w + y**2),0),( - x*z**2,y*(w -+ x*z), - w**2 + x**2*z,0),( - y*z, - (w*z + x*y),w*x,0),( - w*y**2 + x**2*z, - - w**2*y + x**3,0,0),(w*y*z - w*y + w*z - x**2*z + y**3 - y**2*z, - w**2 + w*x - - w*y*z + x**2* -y + x**2*z - x*y**2,0,0),( - w*y*z - w*z - y**3 + y**2*z, - w*x + w*y*z - x**2* -z + x*y**2,x**3,0),(z*( - w*y - w + y**2), - w*x + w*y**2 + w*y*z + x*y**2,0,0) -,( - z*(y + 1), - x + y**2,x*y,0),(z, - y, - x,w),(w**2*y*z + w**2*z - w*x*y + -w*y**3 - x**3*z - x**2*y*z - x**2*z**2 + x*y -**3,0,0,0),( - y, - w,0,x**2),(0,y, - w,x*z),(0,z, - x,y**2))$ -, -{w**2*y*z + w**2*z - w*x*y + w*y**3 - x**3*z - x**2*y*z - x**2*z**2 + x*y**3}}} -$ - - - % To get a meaningful Hilbert series make m1 homogeneous : - - setdegrees {1,x,x,x}; - - -{1,x,x,x}$ - - - % Reevaluate m1 with the new column degrees. - - setmodule(m1,m1)$ - - - hilbertseries m1; - - -(w**7 - 5*w**6 + 8*w**5 - 2*w**4 - 5*w**3 + 3*w + 1)/(w**4 - 4*w**3 + 6*w**2 - -4*w + 1)$ - - -% Example 5 : From the MACAULAY manual (D.Bayer, M.Stillman). -% An elliptic curve on the Veronese in P^5. - - rvars:={x,y,z}$ - - svars:={a,b,c,d,e,f}$ - - - r:=setring(rvars,degreeorder rvars,revlex)$ - - - s:=setring(svars,{for each x in svars collect 2},revlex)$ - - - map:={s,r,{a=x^2,b=x*y,c=x*z,d=y^2,e=y*z,f=z^2}}; - - -map := {{{a, -b, -c, -d, -e, -f}, -{{2,2,2,2,2,2}}, -revlex, -{1,1,1,1,1,1}}, -{{x,y,z}, -{{1,1,1}}, -revlex, -{1,1,1}}, -{a=x**2, -b=x*y, -c=x*z, -d=y**2, -e=y*z, -f=z**2}}$ - - preimage({y^2z-x^3-x*z^2},map); - - -{ - a*d + b**2, - - a*e + b*c, - - b*e + c*d, - - a*f + c**2, - - b*f + c*e, - - d*f + e**2, -a**2 + a*f - b*e, -a*b + b*f - d*e, -a*c + c*f - d*f}$ - - -% Example 6 : The preimage under a rational map. - - r:=setring({x,y},{},lex)$ - - s:=setring({t},{},lex)$ - - - map:={r,s,{x=2t/(t^2+1),y=(t^2-1)/(t^2+1)}}; - - -map := {{{x,y},{},lex,{1,1}}, -{{t},{},lex,{1}}, -{x=(2*t)/(t**2 + 1),y=(t**2 - 1)/(t**2 + 1)}}$ - - - % The preimage of (0) is the equation of the circle : - - ratpreimage({},map); - - -{x**2 + y**2 - 1}$ - - - % The preimage of the point (t=3/2) : - - ratpreimage({2t-3},map); - - -{13*x - 12,13*y - 5}$ - - - -% Example 7 : A zerodimensional ideal. - - setring({x,y,z},{},lex)$ - - - setideal(n,{x**2 + y + z - 3,x + y**2 + z - 3,x + y + z**2 - 3}); - - -{x**2 + y + z - 3,x + y**2 + z - 3,x + y + z**2 - 3}$ - - - % The groebner algorithm with factorization : - - groebfactor n; - - -{{y - 1,z - 1,x - 1}, -{y + 3,z + 3,x + 3}, -{y - z,z**2 - 2,x + z - 1}, -{z**2 - 2,x - z,y + z - 1}, -{y + z - 1,z**2 - 2*z - 1,x + z - 1}}$ - - - % Change the term order and reevaluate n : - - setring({x,y,z},{{1,1,1}},revlex)$ - - - setideal(n,n); - - -{x**2 + y + z - 3,y**2 + x + z - 3,z**2 + x + y - 3}$ - - - % its primes : - - zeroprimes n; - - -{{x - z,z**2 - 2,y + z - 1}, -{x + z - 1,y + z - 1,z**2 - 2*z - 1}, -{z - 1,x - 1,y - 1}, -{z + 3,x + 3,y + 3}, -{y - z,z**2 - 2,x + z - 1}}$ - - - % a vector space basis of S/n : - - getkbase n; - - -{1,x,x*y,x*y*z,x*z,y,y*z,z}$ - - -% Example 8 : A modular computation. Since REDUCE has no multivariate -% factorizer, factorprimes has to be turned off ! - - on modular$ - - off factorprimes$ - - - setmod 181; - - -1$ - setideal(n1,n); - - -{x**2 + y + z + 178,y**2 + x + z + 178,z**2 + x + y + 178}$ - zeroprimes n1; - - -{{y + 180*z,z**2 + 179,x + z + 180}, -{x + z + 180,y + z + 180,z**2 + 179*z + 180}, -{x + 180*z,z**2 + 179,y + z + 180}, -{z + 180,x + 180,y + 180}, -{z + 3,x + 3,y + 3}}$ - - setmod 7; - - -181$ - setideal(n1,n); - - -{x**2 + y + z + 4,y**2 + x + z + 4,z**2 + x + y + 4}$ - zeroprimes n1; - - -{{z + 6,x + 6,y + 6}, -{x + 4,z + 4,y + 2}, -{x + 4,z + 2,y + 4}, -{z + 4,x + 2,y + 4}, -{x + 3,z + 3,y + 3}}$ - - - % Hence some of the primes glue together mod 7. - - zeroprimarydecomposition n1; - - -{{{z + 6,x + 6,y + 6}, -{z + 6,x + 6,y + 6}}, -{{z + 4,y + 2,x + 4}, -{x + 4,z + 4,y + 2}}, -{{z + 2,y + 4,x + 4}, -{x + 4,z + 2,y + 4}}, -{{z + 4,x + 2,y + 4}, -{z + 4,x + 2,y + 4}}, -{{x**2 + y + z + 4, -x + y**2 + z + 4, -x + y + z**2 + 4, -3*(x + 5*y*z + 2*y + 2*z + 5), -x*z + 6*x + 3*y + 6*z + 1, -x*y + 6*x + 6*y + 3*z + 1}, -{x + 3,z + 3,y + 3}}}$ - - off modular$ - - on factorprimes$ - - - -% Example 9 : Independent sets once more. - - n:=10$ - - - vars:=for i:=1:(2*n) collect mkid(x,i)$ - - - setring(vars,{},lex)$ - - - setideal(m,for j:=0:n collect - for i:=(j+1):(j+n) product mkid(x,i)); - - -{x1*x2*x3*x4*x5*x6*x7*x8*x9*x10, -x2*x3*x4*x5*x6*x7*x8*x9*x10*x11, -x3*x4*x5*x6*x7*x8*x9*x10*x11*x12, -x4*x5*x6*x7*x8*x9*x10*x11*x12*x13, -x5*x6*x7*x8*x9*x10*x11*x12*x13*x14, -x6*x7*x8*x9*x10*x11*x12*x13*x14*x15, -x7*x8*x9*x10*x11*x12*x13*x14*x15*x16, -x8*x9*x10*x11*x12*x13*x14*x15*x16*x17, -x9*x10*x11*x12*x13*x14*x15*x16*x17*x18, -x10*x11*x12*x13*x14*x15*x16*x17*x18*x19, -x11*x12*x13*x14*x15*x16*x17*x18*x19*x20}$ - - setgbasis m$ - - - indepvarsets m; - - -{{x2,x3,x4,x5,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x3,x4,x5,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x4,x5,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x5,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x12,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x3,x4,x5,x6,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x4,x5,x6,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x5,x6,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x6,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x13,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x4,x5,x6,x7,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x5,x6,x7,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x6,x7,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x14,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x5,x6,x7,x8,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x6,x7,x8,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x15,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x6,x7,x8,x9,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x16,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x12,x13,x14,x15,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x13,x14,x15,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x14,x15,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x15,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x17,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x13,x14,x15,x16,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x14,x15,x16,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x15,x16,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x16,x18,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x14,x15,x16,x17,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x15,x16,x17,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x16,x17,x19,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x15,x16,x17,x18,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x16,x17,x18,x20}, -{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x16,x17,x18,x19}}$ - - dim m; - - -18$ - - degree m; - - -55$ - - - -comment - - #################################### - ### ### - ### Local Standard Bases ### - ### ### - #################################### - -end comment; - - - -% Example 10 : An example from [ Alonso, Mora, Raimondo ] - - vars := {z,x,y}$ - - - r:=setring(vars,{},lex)$ - - - setideal(m,{x^3+(x^2-y^2)*z+z^4,y^3+(x^2-y^2)*z-z^4}); - - -{z**4 + z*x**2 - z*y**2 + x**3, - - z**4 + z*x**2 - z*y**2 + y**3}$ - - dim m; - - -1$ - - degree m; - - -12$ - - - % 2 = codim m is the codimension of the curve m. The defining - % equations of the singular locus with their nilpotent structure : - - singular_locus(m,2); - - -{x**3 - y**3 + 2*z**4, -x**3 + 2*x**2*z + y**3 - 2*y**2*z, -y*(8*x**3 + 3*x**2*y - 11*y**3 + 12*y*z**3), -y*(x**3 + 3*x**2*y + 2*x*y*z + y**3 - 2*y**2*z), -3*x**5 + 3*x**4*y + 22*x**4 + 18*x**3*y**2 + 16*x**3*y + 21*x**2*y**3 + 3*x*y -**4 - 16*x*y**3 + 18*y**5 - 42*y**4*z - 22*y**4 + 24*y**3*z**2}$ - - groebfactor ws; - - -{{y,x,z},{81*x + 256,27*z - 64,81*y - 256}}$ - - - % Hence this curve has two singular points : - % (x=y=z=0) and (y=-x=256/81,z=64/27) - % Let's find the brances of the curve through the origin. - % The first critical tropism is (-1,-1,-1). - - off noetherian$ - - - setring(vars,{{-1,-1,-1}},lex)$ - - - setideal(m,m); - - -{z*x**2 - z*y**2 + x**3 + z**4, -z*x**2 - z*y**2 + y**3 - z**4}$ - - % Let's first test two different approaches, not fully - % integrated into the algebraic interface : - setideal(m1,homstbasis m); - - -{x**3 - y**3 + 2*z**4, -z*x**2 - z*y**2 + y**3 - z**4, -z*x*y**2 - z*y**3 - x*y**3 + 2*z**5 + z**4*x, -x**2*y**3 + x*y**4 + y**5 - 2*z**5*x - 2*z**5*y - z**4*x**2 - z**4*x*y - z**4* -y**2, -6*z*y**5 + 2*x*y**5 - 2*y**6 - 4*z**6*x - 4*z**6*y - 2*z**5*x*y - 8*z**5*y**2 -+ z**4*x**3 - 2*z**4*x*y**2 + 3*z**4*y**3}$ - - setideal(m2,lazystbasis m); - - -{x**3 - y**3 + 2*z**4, -z*x**2 - z*y**2 + y**3 - z**4, -z*x*y**2 - z*y**3 - x*y**3 + 2*z**5 + z**4*x, -x**2*y**3 + x*y**4 + y**5 - 2*z**5*x - 2*z**5*y - z**4*x**2 - z**4*x*y - z**4* -y**2, -3*z*y**5 + x*y**5 - y**6 - 2*z**6*x - 2*z**6*y - z**5*x**2 - z**5*x*y - 3*z**5 -*y**2 - z**4*x*y**2 + z**4*y**3}$ - - setgbasis m1$ - - setgbasis m2$ - - - modequalp(m1,m2); - - -yes$ - - gbasis m; - - -{x**3 - y**3 + 2*z**4, -z*x**2 - z*y**2 + y**3 - z**4, -z*x*y**2 - z*y**3 - x*y**3 + 2*z**5 + z**4*x, -x**2*y**3 + x*y**4 + y**5 - 2*z**5*x - 2*z**5*y - z**4*x**2 - z**4*x*y - z**4* -y**2, -3*z*y**5 + x*y**5 - y**6 - 2*z**6*x - 2*z**6*y - z**5*x**2 - z**5*x*y - 3*z**5 -*y**2 - z**4*x*y**2 + z**4*y**3}$ - - modequalp(m,m1); - - -yes$ - - dim m; - - -1$ - - degree m; - - -9$ - - - % Find the tangent directions not in z-direction : - - tangentcone m; - - -{x**3 - y**3, -z*x**2 - z*y**2 + y**3, -z*x*y**2 - z*y**3 - x*y**3, -x**2*y**3 + x*y**4 + y**5, -3*z*y**5 + x*y**5 - y**6}$ - - setideal(n,sub(z=1,ws)); - - -{x**3 - y**3, -x**2 - y**2 + y**3, -x*y**2 - y**3 - x*y**3, -x**2*y**3 + x*y**4 + y**5, -3*y**5 + x*y**5 - y**6}$ - - setring r$ - - on noetherian$ - - setideal(n,n)$ - - - degree n; - - -9$ - - - % The points of n outside the origin. - - matstabquot(n,{x,y}); - - -{y**2 - 3*y + 3,x - y + 3}$ - - - % Hence there are two branches x=z'*(a-3+x'),y=z'*(a+y'),z=z' - % with the algebraic number a : a^2-3a+3=0 - % and the new equations for (z',x',y') : - - setrules {a^2=>3a-3}; - - -{a**2 => 3*a - 3}$ - - sub(x=z*(a-3+x),y=z*(a+y),m); - - -{z**3*(a**3 + 3*a**2*x - 9*a**2 + 3*a*x**2 - 16*a*x - 2*a*y + 21*a + x**3 - 8*x -**2 + 21*x - y**2 + z - 18), -z**3*(a**3 + 3*a**2*y + 2*a*x + 3*a*y**2 - 2*a*y - 6*a + x**2 - 6*x + y**3 - y -**2 - z + 9)}$ - - setideal(m1,matqquot(ws,z)); - - -{x**3 + (3*a - 7)*x**2 - (5*a - 6)*x + y**3 + (3*a - 2)*y**2 + (5*a - 9)*y, -z - x**2 - (2*a - 6)*x - y**3 - (3*a - 1)*y**2 - (7*a - 9)*y}$ - - - % This defines a loc. smooth system at the origin, since the - % jacobian at the origin of the gbasis is nonsingular : - - off noetherian$ - - - setring getring m; - - -{{z,x,y},{{-1,-1,-1}},lex,{1,1,1}}$ - - setideal(m1,m1); - - -{ - (5*a - 6)*x + (5*a - 9)*y + (3*a - 7)*x**2 + (3*a - 2)*y**2 + x**3 + y**3, -z - (2*a - 6)*x - (7*a - 9)*y - x**2 - (3*a - 1)*y**2 - y**3}$ - - gbasis m1; - - -{(5*a - 6)*x - (5*a - 9)*y - (3*a - 7)*x**2 - (3*a - 2)*y**2 - x**3 - y**3, -(5*a - 6)*z + 27*y + (9*a - 18)*x**2 - (18*a - 45)*y**2 - (2*a - 6)*x**3 - (7* -a - 12)*y**3}$ - - - % clear the rules previously set. - - setrules {}; - - -{}$ - - - -% Example 11 : The standard basis of another example. - - % Comparing different approaches. - - vars:={x,y}$ - - - setring(vars,localorder vars,lex); - - -{{x,y},{{-1,-1}},lex,{1,1}}$ - - ff:=x^5+y^11+(x+x^3)*y^9; - - -ff := x**5 + x**3*y**9 + x*y**9 + y**11$ - - setideal(p1,mat2list matjac({ff},vars)); - - -{5*x**4 + y**9 + 3*x**2*y**9, -9*x*y**8 + 11*y**10 + 9*x**3*y**8}$ - - gbasis p1; - - -{5*x**4 + y**9 + 3*x**2*y**9, -9*x*y**8 + 11*y**10 + 9*x**3*y**8, -73205*y**16 + 6561*y**17 - 32805*x**10*y**8 + 294030*x**6*y**12 - 292820*x**2* -y**16 + 120285*x**9*y**10 - 239580*x**5*y**14 + 19683*x**2*y**17}$ - - - gbtestversion 2$ - - - setideal(p2,p1); - - -{5*x**4 + y**9 + 3*x**2*y**9, -9*x*y**8 + 11*y**10 + 9*x**3*y**8}$ - - gbasis p2; - - -{5*x**4 + y**9 + 3*x**2*y**9, -9*x*y**8 + 11*y**10 + 9*x**3*y**8, -73205*y**16 + 6561*y**17 - 32805*x**10*y**8 + 294030*x**6*y**12 - 292820*x**2* -y**16 + 120285*x**9*y**10 - 239580*x**5*y**14 + 19683*x**2*y**17}$ - - - gbtestversion 3$ - - - setideal(p3,p1); - - -{5*x**4 + y**9 + 3*x**2*y**9, -9*x*y**8 + 11*y**10 + 9*x**3*y**8}$ - - gbasis p3; - - -{5*x**4 + y**9 + 3*x**2*y**9, -9*x*y**8 + 11*y**10 + 9*x**3*y**8, -73205*y**16 + 6561*y**17 - 32805*x**10*y**8 + 294030*x**6*y**12 - 292820*x**2* -y**16 + 120285*x**9*y**10 - 239580*x**5*y**14 + 19683*x**2*y**17}$ - - - gbtestversion 1$ - - - modequalp(p1,p2); - - -yes$ - - modequalp(p1,p3); - - -yes$ - - dim p1; - - -0$ - - degree p1; - - -40$ - - -% Example 12 : A local intersection wrt. a non inflimited term order. - - setring({x,y,z},{},revlex); - - -{{x,y,z},{},revlex,{1,1,1}}$ - - m1:=matintersect({x-y^2,y-x^2},{x-z^2,z-x^2},{y-z^2,z-y^2}); - - -m1 := {y*z - x**3*y*z - x*y*z**2 + x**4*y*z**2 - y**2*z**2 + x**3*y**2*z**2 + x -*y**2*z**3 - x**4*y**2*z**3, -x*z - x**2*y*z - x**2*z**2 - x*y*z**2 + x**3*y*z**2 + x**2*y**2*z**2 + x -**2*y*z**3 - x**3*y**2*z**3, -x*y - x**2*y**2 - x**2*y*z - x*y**2*z + x**3*y**2*z + x**2*y**3*z + x**2 -*y**2*z**2 - x**3*y**3*z**2}$ - - - % Delete polynomial units post factum : - - deleteunits ws; - - -{y*z,x*z,x*y}$ - - - % Detecting polynomial units early : - - on detectunits; - - - m1:=matintersect({x-y^2,y-x^2},{x-z^2,z-x^2},{y-z^2,z-y^2}); - - -m1 := {y*z,x*z,x*y}$ - - off detectunits; - - - - -comment - - #################################### - ### ### - ### More Advanced Computations ### - ### ### - #################################### - -end comment; - - - % Return to a noetherian term order: - - vars:={x,y,z}$ - - - setring(vars,degreeorder vars,revlex); - - -{{x,y,z},{{1,1,1}},revlex,{1,1,1}}$ - - on noetherian; - - - -% Example 13 : Use of "mod". - - % Polynomials modulo ideals : - - setideal(m,{2x^2+y+5,3y^2+z+7,7z^2+x+1}); - - -{2*x**2 + y + 5,3*y**2 + z + 7,7*z**2 + x + 1}$ - - x^2*y^2*z^2 mod m; - - -( - x*y*z - 7*x*y - 5*x*z - 35*x - y*z - 7*y - 5*z - 35)/42$ - - - % Lists of polynomials modulo ideals : - - {x^3,y^3,z^3} mod gbasis m; - - -{(x*( - y - 5))/2,(y*( - z - 7))/3,( - z*(x + 1))/7}$ - - - % Matrices modulo modules : - - mm:=mat((x^4,y^4,z^4)); - - -mm := mat((x**4,y**4,z**4))$ - - mm1:=tp<< ideal2mat m>>; - - -mm1 := mat((2*x**2 + y + 5,3*y**2 + z + 7,x + 7*z**2 + 1))$ - - mm mod mm1; - - -mat(((y**2 + 10*y + 25)/4,( - 6*x**2*y**2 - 2*x**2*z - 14*x**2 + 4*y**4 + 3*y** -3 + 15*y**2 + y*z + 7*y + 5*z + 35)/4,( - 2*x**3 - 14*x**2*z**2 - 2*x** -2 + x*y + 5*x + 7*y*z**2 + y + 4*z**4 + 35*z**2 + 5)/4))$ - - -% Example 14 : Powersums through elementary symmetric functions. - - vars:={a,b,c,d,e1,e2,e3,e4}$ - - - setring(vars,{},lex)$ - - - m:=interreduce {a+b+c+d-e1, - a*b+a*c+a*d+b*c+b*d+c*d-e2, - a*b*c+a*b*d+a*c*d+b*c*d-e3, - a*b*c*d-e4}; - - -m := {d**4 - d**3*e1 + d**2*e2 - d*e3 + e4, -a + b + c + d - e1, -c**3 + c**2*d - c**2*e1 + c*d**2 - c*d*e1 + c*e2 + d**3 - d**2*e1 + d*e2 -- e3, -b**2 + b*c + b*d - b*e1 + c**2 + c*d - c*e1 + d**2 - d*e1 + e2}$ - - - for n:=1:5 collect a^n+b^n+c^n+d^n mod m; - - -{e1, -e1**2 - 2*e2, -e1**3 - 3*e1*e2 + 3*e3, -e1**4 - 4*e1**2*e2 + 4*e1*e3 + 2*e2**2 - 4*e4, -e1**5 - 5*e1**3*e2 + 5*e1**2*e3 + 5*e1*e2**2 - 5*e1*e4 - 5*e2*e3}$ - - -% Example 15 : The setrules mechanism. - - setring({x,y,z},{},lex)$ - - - setrules {aa^3=>aa+1}; - - -{aa**3 => aa + 1}$ - - setideal(m,{x^2+y+z-aa,x+y^2+z-aa,x+y+z^2-aa}); - - -{x**2 + y + z - aa,x + y**2 + z - aa,x + y + z**2 - aa}$ - - gbasis m; - - -{y**2 - y - z**2 + z, -x + y + z**2 - aa, -2*y*z**2 - (2*aa - 2)*y + z**4 - (2*aa - 1)*z**2 + (aa**2 - aa), -z**6 - (3*aa + 1)*z**4 + 4*z**3 + (3*aa**2 - 2*aa - 2)*z**2 - (4*aa - 4)*z + ( -3*aa**2 - 3*aa - 1)}$ - - - % Clear the rules previously set. - - setrules {}; - - -{}$ - - -% Example 16 : The same example with advanced coefficient domains. - - load_package arnum; - - - defpoly aa^3-aa-1; - - - setideal(m,{x^2+y+z-aa,x+y^2+z-aa,x+y+z^2-aa}); - - -{x**2 + y + z - aa,x + y**2 + z - aa,x + y + z**2 - aa}$ - - gbasis m; - - -{y**2 - y - z**2 + z, -x + y + z**2 - aa, -y*z**2 - (aa - 1)*y + 1/2*z**4 - (aa - 1/2)*z**2 + (1/2*aa**2 - 1/2*aa), -z**6 - (3*aa + 1)*z**4 + 4*z**3 + (3*aa**2 - 2*aa - 2)*z**2 - (4*aa - 4)*z + ( -3*aa**2 - 3*aa - 1)}$ - - - % The following needs some more time since factorization of - % arnum's is not so easy : - - groebfactor m; - - -{{y - (aa**2 - aa - 1), -z - (aa**2 - aa - 1), -x + (aa**2 - aa - 2)}, -{y + (aa**2 - aa - 1), -z + (aa**2 - aa - 1), -x - (aa**2 - aa)}, -{y - z,x - z,z**2 + 2*z - aa}, -{z - (aa**2 - aa), -y + (aa**2 - aa - 1), -x + (aa**2 - aa - 1)}, -{z - (aa**2 - aa - 1), -y + (aa**2 - aa - 2), -x - (aa**2 - aa - 1)}, -{z + (aa**2 - aa - 2), -y - (aa**2 - aa - 1), -x - (aa**2 - aa - 1)}, -{z + (aa**2 - aa - 1), -y - (aa**2 - aa), -x + (aa**2 - aa - 1)}}$ - - off arnum; - - - off rational; - - - - -comment - - #################################### - ### ### - ### Using Advanced Scripts in ### - ### a Complex Example ### - ### ### - #################################### - -end comment; - - - -% Example 17 : The square of the 2-minors of a symmetric 3x3-matrix. - - vars:=for i:=1:6 collect mkid(x,i); - - -vars := {x1, -x2, -x3, -x4, -x5, -x6}$ - - setring(vars,degreeorder vars,revlex); - - -{{x1,x2,x3,x4,x5,x6},{{1,1,1,1,1,1}},revlex,{1,1,1,1,1,1}}$ - - - % Generating the ideal : - - mm:=mat((x1,x2,x3),(x2,x4,x5),(x3,x5,x6)); - - -mm := mat((x1,x2,x3),(x2,x4,x5),(x3,x5,x6))$ - - m:=ideal_of_minors(mm,2); - - -m := { - x1*x4 + x2**2, - - x1*x5 + x2*x3, - - x1*x6 + x3**2, - - x2*x5 + x3*x4, - - x2*x6 + x3*x5, - - x4*x6 + x5**2}$ - - setideal(n,idealpower(m,2)); - - -{x2**4 - 2*x1*x2**2*x4 + x1**2*x4**2, -x3**4 - 2*x1*x3**2*x6 + x1**2*x6**2, -x5**4 - 2*x4*x5**2*x6 + x4**2*x6**2, -x2**2*x3**2 - 2*x1*x2*x3*x5 + x1**2*x5**2, -x3**2*x5**2 - 2*x2*x3*x5*x6 + x2**2*x6**2, -x2**3*x3 - x1*x2*x3*x4 - x1*x2**2*x5 + x1**2*x4*x5, -x2*x3**3 - x1*x3**2*x5 - x1*x2*x3*x6 + x1**2*x5*x6, -x2**2*x3*x4 - x1*x3*x4**2 - x2**3*x5 + x1*x2*x4*x5, -x2**2*x3*x5 - x1*x3*x4*x5 - x2**3*x6 + x1*x2*x4*x6, -x2*x3**2*x5 - x1*x3*x5**2 - x2**2*x3*x6 + x1*x2*x5*x6, -x3**3*x5 - x2*x3**2*x6 - x1*x3*x5*x6 + x1*x2*x6**2, -x2**2*x5**2 - x1*x4*x5**2 - x2**2*x4*x6 + x1*x4**2*x6, -x2*x3*x5**2 - x1*x5**3 - x2*x3*x4*x6 + x1*x4*x5*x6, -x3*x4*x5**2 - x2*x5**3 - x3*x4**2*x6 + x2*x4*x5*x6, -x3*x5**3 - x3*x4*x5*x6 - x2*x5**2*x6 + x2*x4*x6**2, -x3**2*x4**2 - 2*x2*x3*x4*x5 + x1*x4*x5**2 + x2**2*x4*x6 - x1*x4**2*x6, -x2*x3**2*x4 - 2*x1*x3*x4*x5 + x1*x2*x5**2 - x2**3*x6 + x1*x2*x4*x6, -x3**3*x4 - x1*x3*x5**2 - x2**2*x3*x6 - x1*x3*x4*x6 + 2*x1*x2*x5*x6, -x3**2*x4*x5 - x1*x5**3 - 2*x2*x3*x4*x6 + x2**2*x5*x6 + x1*x4*x5*x6, -x3**2*x4*x6 - 2*x2*x3*x5*x6 + x1*x5**2*x6 + x2**2*x6**2 - x1*x4*x6**2, -x1*x3**2*x4 - 2*x1*x2*x3*x5 + x1**2*x5**2 + x1*x2**2*x6 - x1**2*x4*x6}$ - - - % The ideal itself : - - gbasis n; - - -{x2**4 - 2*x1*x2**2*x4 + x1**2*x4**2, -x3**4 - 2*x1*x3**2*x6 + x1**2*x6**2, -x5**4 - 2*x4*x5**2*x6 + x4**2*x6**2, -x2**2*x3**2 - 2*x1*x2*x3*x5 + x1**2*x5**2, -x3**2*x5**2 - 2*x2*x3*x5*x6 + x2**2*x6**2, -x2**3*x3 - x1*x2*x3*x4 - x1*x2**2*x5 + x1**2*x4*x5, -x2*x3**3 - x1*x3**2*x5 - x1*x2*x3*x6 + x1**2*x5*x6, -x2**2*x3*x4 - x1*x3*x4**2 - x2**3*x5 + x1*x2*x4*x5, -x2**2*x3*x5 - x1*x3*x4*x5 - x2**3*x6 + x1*x2*x4*x6, -x2*x3**2*x5 - x1*x3*x5**2 - x2**2*x3*x6 + x1*x2*x5*x6, -x3**3*x5 - x2*x3**2*x6 - x1*x3*x5*x6 + x1*x2*x6**2, -x2**2*x5**2 - x1*x4*x5**2 - x2**2*x4*x6 + x1*x4**2*x6, -x2*x3*x5**2 - x1*x5**3 - x2*x3*x4*x6 + x1*x4*x5*x6, -x3*x4*x5**2 - x2*x5**3 - x3*x4**2*x6 + x2*x4*x5*x6, -x3*x5**3 - x3*x4*x5*x6 - x2*x5**2*x6 + x2*x4*x6**2, -x3**2*x4**2 - 2*x2*x3*x4*x5 + x1*x4*x5**2 + x2**2*x4*x6 - x1*x4**2*x6, -x2*x3**2*x4 - 2*x1*x3*x4*x5 + x1*x2*x5**2 - x2**3*x6 + x1*x2*x4*x6, -x3**3*x4 - x1*x3*x5**2 - x2**2*x3*x6 - x1*x3*x4*x6 + 2*x1*x2*x5*x6, -x3**2*x4*x5 - x1*x5**3 - 2*x2*x3*x4*x6 + x2**2*x5*x6 + x1*x4*x5*x6, -x3**2*x4*x6 - 2*x2*x3*x5*x6 + x1*x5**2*x6 + x2**2*x6**2 - x1*x4*x6**2, -x1*x3**2*x4 - 2*x1*x2*x3*x5 + x1**2*x5**2 + x1*x2**2*x6 - x1**2*x4*x6}$ - - length n; - - -21$ - - dim n; - - -3$ - - degree n; - - -16$ - - - % Its radical. - - radical n; - - -{ - x1*x5 + x2*x3, - - x2*x5 + x3*x4, - - x2*x6 + x3*x5, - - x1*x4 + x2**2, - - x1*x6 + x3**2, - - x4*x6 + x5**2}$ - - - % Its unmixed radical. - - unmixedradical n; - - -{ - x1*x5 + x2*x3, -x2*x5 - x3*x4, - - x2*x6 + x3*x5, - - x1*x4 + x2**2, - - x1*x6 + x3**2, - - x4*x6 + x5**2}$ - - - % Its equidimensional hull : - - n1:=eqhull n; - - -n1 := {x1**2*x4**2 - 2*x1*x2**2*x4 + x2**4, -x1**2*x6**2 - 2*x1*x3**2*x6 + x3**4, -x4**2*x6**2 - 2*x4*x5**2*x6 + x5**4, -x1**2*x5**2 - 2*x1*x2*x3*x5 + x2**2*x3**2, -x2**2*x6**2 - 2*x2*x3*x5*x6 + x3**2*x5**2, -x1**2*x4*x5 - x1*x2**2*x5 - x1*x2*x3*x4 + x2**3*x3, -x1**2*x5*x6 - x1*x2*x3*x6 - x1*x3**2*x5 + x2*x3**3, -x1*x2*x4*x5 - x1*x3*x4**2 - x2**3*x5 + x2**2*x3*x4, -x1*x2*x4*x6 - x1*x3*x4*x5 - x2**3*x6 + x2**2*x3*x5, -x1*x2*x5*x6 - x1*x3*x5**2 - x2**2*x3*x6 + x2*x3**2*x5, -x1*x2*x6**2 - x1*x3*x5*x6 - x2*x3**2*x6 + x3**3*x5, -x1*x4**2*x6 - x1*x4*x5**2 - x2**2*x4*x6 + x2**2*x5**2, -x1*x4*x5*x6 - x1*x5**3 - x2*x3*x4*x6 + x2*x3*x5**2, -x2*x4*x5*x6 - x2*x5**3 - x3*x4**2*x6 + x3*x4*x5**2, -x2*x4*x6**2 - x2*x5**2*x6 - x3*x4*x5*x6 + x3*x5**3, - - x1*x4*x6 + x1*x5**2 + x2**2*x6 - 2*x2*x3*x5 + x3**2*x4}$ - - length n1; - - -16$ - - setideal(n1,n1)$ - - - submodulep(n,n1); - - -yes$ - - submodulep(n1,n); - - -no$ - - - % Hence there is an embedded component. Let's find it making - % an excursion to symbolic mode. Of course, this can be done - % also algebraically. - - symbolic; - - -nil - - n:=get('n,'basis); - - -(dpmat 21 0 ((1 ((((0 0 4) 4) . 1) (((0 1 2 0 1) 4) . -2) (((0 2 0 0 2) 4) . 1) -) 3 0 nil) (2 ((((0 0 0 4) 4) . 1) (((0 1 0 2 0 0 1) 4) . -2) (((0 2 0 0 0 0 2) -4) . 1)) 3 0 nil) (3 ((((0 0 0 0 0 4) 4) . 1) (((0 0 0 0 1 2 1) 4) . -2) (((0 0 -0 0 2 0 2) 4) . 1)) 3 0 nil) (4 ((((0 0 2 2) 4) . 1) (((0 1 1 1 0 1) 4) . -2) ( -((0 2 0 0 0 2) 4) . 1)) 3 0 nil) (5 ((((0 0 0 2 0 2) 4) . 1) (((0 0 1 1 0 1 1) 4 -) . -2) (((0 0 2 0 0 0 2) 4) . 1)) 3 0 nil) (6 ((((0 0 3 1) 4) . 1) (((0 1 1 1 1 -) 4) . -1) (((0 1 2 0 0 1) 4) . -1) (((0 2 0 0 1 1) 4) . 1)) 4 0 nil) (7 ((((0 0 -1 3) 4) . 1) (((0 1 0 2 0 1) 4) . -1) (((0 1 1 1 0 0 1) 4) . -1) (((0 2 0 0 0 1 -1) 4) . 1)) 4 0 nil) (8 ((((0 0 2 1 1) 4) . 1) (((0 1 0 1 2) 4) . -1) (((0 0 3 0 -0 1) 4) . -1) (((0 1 1 0 1 1) 4) . 1)) 4 0 nil) (9 ((((0 0 2 1 0 1) 4) . 1) ((( -0 1 0 1 1 1) 4) . -1) (((0 0 3 0 0 0 1) 4) . -1) (((0 1 1 0 1 0 1) 4) . 1)) 4 0 -nil) (10 ((((0 0 1 2 0 1) 4) . 1) (((0 1 0 1 0 2) 4) . -1) (((0 0 2 1 0 0 1) 4) -. -1) (((0 1 1 0 0 1 1) 4) . 1)) 4 0 nil) (11 ((((0 0 0 3 0 1) 4) . 1) (((0 0 1 -2 0 0 1) 4) . -1) (((0 1 0 1 0 1 1) 4) . -1) (((0 1 1 0 0 0 2) 4) . 1)) 4 0 nil -) (12 ((((0 0 2 0 0 2) 4) . 1) (((0 1 0 0 1 2) 4) . -1) (((0 0 2 0 1 0 1) 4) . --1) (((0 1 0 0 2 0 1) 4) . 1)) 4 0 nil) (13 ((((0 0 1 1 0 2) 4) . 1) (((0 1 0 0 -0 3) 4) . -1) (((0 0 1 1 1 0 1) 4) . -1) (((0 1 0 0 1 1 1) 4) . 1)) 4 0 nil) ( -14 ((((0 0 0 1 1 2) 4) . 1) (((0 0 1 0 0 3) 4) . -1) (((0 0 0 1 2 0 1) 4) . -1) -(((0 0 1 0 1 1 1) 4) . 1)) 4 0 nil) (15 ((((0 0 0 1 0 3) 4) . 1) (((0 0 0 1 1 1 -1) 4) . -1) (((0 0 1 0 0 2 1) 4) . -1) (((0 0 1 0 1 0 2) 4) . 1)) 4 0 nil) (16 ( -(((0 0 0 2 2) 4) . 1) (((0 0 1 1 1 1) 4) . -2) (((0 1 0 0 1 2) 4) . 1) (((0 0 2 -0 1 0 1) 4) . 1) (((0 1 0 0 2 0 1) 4) . -1)) 5 0 nil) (17 ((((0 0 1 2 1) 4) . 1 -) (((0 1 0 1 1 1) 4) . -2) (((0 1 1 0 0 2) 4) . 1) (((0 0 3 0 0 0 1) 4) . -1) ( -((0 1 1 0 1 0 1) 4) . 1)) 5 0 nil) (18 ((((0 0 0 3 1) 4) . 1) (((0 1 0 1 0 2) 4 -) . -1) (((0 0 2 1 0 0 1) 4) . -1) (((0 1 0 1 1 0 1) 4) . -1) (((0 1 1 0 0 1 1) -4) . 2)) 5 0 nil) (19 ((((0 0 0 2 1 1) 4) . 1) (((0 1 0 0 0 3) 4) . -1) (((0 0 1 -1 1 0 1) 4) . -2) (((0 0 2 0 0 1 1) 4) . 1) (((0 1 0 0 1 1 1) 4) . 1)) 5 0 nil) -(20 ((((0 0 0 2 1 0 1) 4) . 1) (((0 0 1 1 0 1 1) 4) . -2) (((0 1 0 0 0 2 1) 4) . -1) (((0 0 2 0 0 0 2) 4) . 1) (((0 1 0 0 1 0 2) 4) . -1)) 5 0 nil) (21 ((((0 1 0 -2 1) 4) . 1) (((0 1 1 1 0 1) 4) . -2) (((0 2 0 0 0 2) 4) . 1) (((0 1 2 0 0 0 1) -4) . 1) (((0 2 0 0 1 0 1) 4) . -1)) 5 0 nil)) nil nil) - - - % This needs even more time than the eqhull, of course. - - u:=primarydecomposition!* n; - - -(((dpmat 16 0 ((1 ((((0 0 2 1 0 1) 4) . 1) (((0 1 0 1 1 1) 4) . -1) (((0 0 3 0 0 -0 1) 4) . -1) (((0 1 1 0 1 0 1) 4) . 1)) 4 0 nil) (2 ((((0 0 1 2 0 1) 4) . 1) ( -((0 1 0 1 0 2) 4) . -1) (((0 0 2 1 0 0 1) 4) . -1) (((0 1 1 0 0 1 1) 4) . 1)) 4 -0 nil) (3 ((((0 0 1 1 0 2) 4) . 1) (((0 1 0 0 0 3) 4) . -1) (((0 0 1 1 1 0 1) 4 -) . -1) (((0 1 0 0 1 1 1) 4) . 1)) 4 0 nil) (4 ((((0 0 4) 4) . 1) (((0 1 2 0 1) -4) . -2) (((0 2 0 0 2) 4) . 1)) 3 0 nil) (5 ((((0 0 3 1) 4) . 1) (((0 1 1 1 1) 4 -) . -1) (((0 1 2 0 0 1) 4) . -1) (((0 2 0 0 1 1) 4) . 1)) 4 0 nil) (6 ((((0 0 2 -2) 4) . 1) (((0 1 1 1 0 1) 4) . -2) (((0 2 0 0 0 2) 4) . 1)) 3 0 nil) (7 ((((0 0 -2 1 1) 4) . 1) (((0 1 0 1 2) 4) . -1) (((0 0 3 0 0 1) 4) . -1) (((0 1 1 0 1 1) 4 -) . 1)) 4 0 nil) (8 ((((0 0 2 0 0 2) 4) . 1) (((0 1 0 0 1 2) 4) . -1) (((0 0 2 0 -1 0 1) 4) . -1) (((0 1 0 0 2 0 1) 4) . 1)) 4 0 nil) (9 ((((0 0 0 4) 4) . 1) ((( -0 1 0 2 0 0 1) 4) . -2) (((0 2 0 0 0 0 2) 4) . 1)) 3 0 nil) (10 ((((0 0 0 0 0 4 -) 4) . 1) (((0 0 0 0 1 2 1) 4) . -2) (((0 0 0 0 2 0 2) 4) . 1)) 3 0 nil) (11 (( -((0 0 0 2 0 2) 4) . 1) (((0 0 1 1 0 1 1) 4) . -2) (((0 0 2 0 0 0 2) 4) . 1)) 3 0 -nil) (12 ((((0 0 1 3) 4) . 1) (((0 1 0 2 0 1) 4) . -1) (((0 1 1 1 0 0 1) 4) . -1 -) (((0 2 0 0 0 1 1) 4) . 1)) 4 0 nil) (13 ((((0 0 0 3 0 1) 4) . 1) (((0 0 1 2 0 -0 1) 4) . -1) (((0 1 0 1 0 1 1) 4) . -1) (((0 1 1 0 0 0 2) 4) . 1)) 4 0 nil) ( -14 ((((0 0 0 1 1 2) 4) . 1) (((0 0 1 0 0 3) 4) . -1) (((0 0 0 1 2 0 1) 4) . -1) -(((0 0 1 0 1 1 1) 4) . 1)) 4 0 nil) (15 ((((0 0 0 1 0 3) 4) . 1) (((0 0 0 1 1 1 -1) 4) . -1) (((0 0 1 0 0 2 1) 4) . -1) (((0 0 1 0 1 0 2) 4) . 1)) 4 0 nil) (16 ( -(((0 0 0 2 1) 3) . 1) (((0 0 1 1 0 1) 3) . -2) (((0 1 0 0 0 2) 3) . 1) (((0 0 2 -0 0 0 1) 3) . 1) (((0 1 0 0 1 0 1) 3) . -1)) 5 0 nil)) nil t) (dpmat 6 0 ((1 (( -((0 0 0 1 0 1) 2) . 1) (((0 0 1 0 0 0 1) 2) . -1)) 2 0 nil) (2 ((((0 0 0 0 0 2) -2) . 1) (((0 0 0 0 1 0 1) 2) . -1)) 2 0 nil) (3 ((((0 0 0 1 1) 2) . 1) (((0 0 1 -0 0 1) 2) . -1)) 2 0 nil) (4 ((((0 0 0 2) 2) . 1) (((0 1 0 0 0 0 1) 2) . -1)) 2 -0 nil) (5 ((((0 0 1 1) 2) . 1) (((0 1 0 0 0 1) 2) . -1)) 2 0 nil) (6 ((((0 0 2) -2) . 1) (((0 1 0 0 1) 2) . -1)) 2 0 nil)) nil t)) ((dpmat 18 0 ((1 ((((0 0 1 0 0 -3) 4) . 1)) 1 0 nil) (2 ((((0 0 0 0 0 0 1) 1) . 1)) 1 0 nil) (3 ((((0 0 0 4) 4) -. 1)) 1 0 nil) (4 ((((0 0 0 0 0 4) 4) . 1)) 1 0 nil) (5 ((((0 0 0 2 0 2) 4) . 1 -)) 1 0 nil) (6 ((((0 0 0 3 0 1) 4) . 1)) 1 0 nil) (7 ((((0 0 0 1 0 3) 4) . 1)) 1 -0 nil) (8 ((((0 0 0 0 1) 1) . 1)) 1 0 nil) (9 ((((0 0 3 0 0 1) 4) . 1)) 1 0 nil -) (10 ((((0 0 2 1 0 1) 4) . 1)) 1 0 nil) (11 ((((0 0 1 2 0 1) 4) . 1)) 1 0 nil) -(12 ((((0 0 2 0 0 2) 4) . 1)) 1 0 nil) (13 ((((0 0 1 1 0 2) 4) . 1)) 1 0 nil) ( -14 ((((0 0 4) 4) . 1)) 1 0 nil) (15 ((((0 0 2 2) 4) . 1)) 1 0 nil) (16 ((((0 1) -1) . 1)) 1 0 nil) (17 ((((0 0 1 3) 4) . 1)) 1 0 nil) (18 ((((0 0 3 1) 4) . 1)) 1 -0 nil)) nil t) (dpmat 6 0 ((1 ((((0 0 0 0 0 0 1) 1) . 1)) 1 0 nil) (2 ((((0 0 0 -0 1) 1) . 1)) 1 0 nil) (3 ((((0 1) 1) . 1)) 1 0 nil) (4 ((((0 0 1) 1) . 1)) 1 0 -nil) (5 ((((0 0 0 1) 1) . 1)) 1 0 nil) (6 ((((0 0 0 0 0 1) 1) . 1)) 1 0 nil)) -nil t))) - - for each x in u collect easydim!* cadr x; - - -(3 0) - - for each x in u collect degree!* car x; - - -(16 20) - - - % Hence the embedded component is a trivial one. Let's divide - % it out by a stable ideal quotient calculation : - - algebraic; - - - setideal(n2,matstabquot(n,vars)); - - -{x2**4 - 2*x1*x2**2*x4 + x1**2*x4**2, -x3**4 - 2*x1*x3**2*x6 + x1**2*x6**2, -x5**4 - 2*x4*x5**2*x6 + x4**2*x6**2, -x2**2*x3**2 - 2*x1*x2*x3*x5 + x1**2*x5**2, -x3**2*x5**2 - 2*x2*x3*x5*x6 + x2**2*x6**2, -x2**3*x3 - x1*x2*x3*x4 - x1*x2**2*x5 + x1**2*x4*x5, -x2*x3**3 - x1*x3**2*x5 - x1*x2*x3*x6 + x1**2*x5*x6, -x2**2*x3*x4 - x1*x3*x4**2 - x2**3*x5 + x1*x2*x4*x5, -x2**2*x3*x5 - x1*x3*x4*x5 - x2**3*x6 + x1*x2*x4*x6, -x2*x3**2*x5 - x1*x3*x5**2 - x2**2*x3*x6 + x1*x2*x5*x6, -x3**3*x5 - x2*x3**2*x6 - x1*x3*x5*x6 + x1*x2*x6**2, -x2**2*x5**2 - x1*x4*x5**2 - x2**2*x4*x6 + x1*x4**2*x6, -x2*x3*x5**2 - x1*x5**3 - x2*x3*x4*x6 + x1*x4*x5*x6, -x3*x4*x5**2 - x2*x5**3 - x3*x4**2*x6 + x2*x4*x5*x6, -x3*x5**3 - x3*x4*x5*x6 - x2*x5**2*x6 + x2*x4*x6**2, -x3**2*x4 - 2*x2*x3*x5 + x1*x5**2 + x2**2*x6 - x1*x4*x6}$ - - modequalp(n1,n2); - - -yes$ - - - -comment - - ######################################## - ### ### - ### Test Examples for New Features ### - ### ### - ######################################## - -end comment; - - - -% ==> Testing the different zerodimensional solver - - vars:={x,y,z}$ - - - setring(vars,degreeorder vars,revlex); - - -{{x,y,z},{{1,1,1}},revlex,{1,1,1}}$ - - setideal(m,{x^3+y+z-3,y^3+x+z-3,z^3+x+y-3}); - - -{x**3 + y + z - 3,y**3 + x + z - 3,z**3 + x + y - 3}$ - - zerosolve1 m; - - -{{x + y + z**3 - 3, -y + z**3 + z - 3, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, -{x + y + z**3 - 3, -2*y + z**3 - 3, -z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, -{x + y + z, -y**2 + y*z + z**2 - 1, -z**3 - z - 3}, -{x + z**3 + z - 3, -y - z, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, -{x - z,y - z,z**2 + z + 3}, -{x - 1,y - 1,z - 1}}$ - - zerosolve2 m; - - -{{x + y + z**3 - 3, -y + z**3 + z - 3, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, -{x + y + z**3 - 3, -2*y + z**3 - 3, -z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, -{x + y + z, -y**2 + y*z + z**2 - 1, -z**3 - z - 3}, -{x + z**3 + z - 3, -y - z, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, -{x - z,y - z,z**2 + z + 3}, -{x - 1,y - 1,z - 1}}$ - - setring(vars,{},lex)$ - - setideal(m,m)$ - - m1:=gbasis m$ - - - zerosolve m1; - - -{{x - 1,y - 1,z - 1}, -{x - z,y - z,z**2 + z + 3}, -{x + y + z, -y**2 + y*z + z**2 - 1, -z**3 - z - 3}, -{2*x + z**3 - 3, -2*y + z**3 - 3, -z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, -{x + z**3 + z - 3, -y - z, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, -{x - z, -y + z**3 + z - 3, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}}$ - - zerosolve1 m1; - - -{{x - 1,y - 1,z - 1}, -{x - z,y - z,z**2 + z + 3}, -{x + y + z, -y**2 + y*z + z**2 - 1, -z**3 - z - 3}, -{x - y, -2*y + z**3 - 3, -z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, -{x + z**3 + z - 3, -y - z, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, -{x - z, -y + z**3 + z - 3, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}}$ - - zerosolve2 m1; - - -{{x - 1,y - 1,z - 1}, -{x - z,y - z,z**2 + z + 3}, -{x + y + z, -y**2 + y*z + z**2 - 1, -z**3 - z - 3}, -{x - y, -2*y + z**3 - 3, -z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, -{x + z**3 + z - 3, -y - z, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, -{x - z, -y + z**3 + z - 3, -z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}}$ - - -% ==> Testing groebfactor, extendedgroebfactor, extendedgroebfactor1 - - % Gerdt et al. : Seventh order KdV type equation. - -A1:=-2*L1**2+L1*L2+2*L1*L3-L2**2-7*L5+21*L6$ - - -A2:=7*L7-2*L1*L4+3/7*L1**3$ - - -B1:=L1*(5*L1-3*L2+L3)$ - - -B2:=L1*(2*L6-4*L4)$ - - -B3:=L1*L7/2$ - - -P1:=L1*(L4-L5/2+L6)$ - - -P2:=(2/7*L1**2-L4)*(-10*L1+5*L2-L3)$ - - -P3:=(2/7*L1**2-L4)*(3*L4-L5+L6)$ - - -P4:=A1*(-3*L1+2*L2)+21*A2$ - - -P5:=A1*(2*L4-2*L5)+A2*(-45*L1+15*L2-3*L3)$ - - -P6:=2*A1*L7+A2*(12*L4-3*L5+2*L6)$ - - -P7:=B1*(2*L2-L1)+7*B2$ - - -P8:=B1*L3+7*B2$ - - -P9:=B1*(-2*L4-2*L5)+B2*(2*L2-8*L1)+84*B3$ - - -P10:=B1*(8/3*L5+6*L6)+B2*(11*L1-17/3*L2+5/3*L3)-168*B3$ - - -P11:=15*B1*L7+B2*(5*L4-2*L5)+B3*(-120*L1+30*L2-6*L3)$ - - -P12:=-3*B1*L7+B2*(-L4/2+L5/4-L6/2)+B3*(24*L1-6*L2)$ - - -P13:=3*B2*L7+B3*(40*L4-8*L5+4*L6)$ - - - -polys:={P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13}; - - -polys := {(l1*(2*l4 - l5 + 2*l6))/2, -( - 20*l1**3 + 10*l1**2*l2 - 2*l1**2*l3 + 70*l1*l4 - 35*l2*l4 + 7*l3* -l4)/7, -(6*l1**2*l4 - 2*l1**2*l5 + 2*l1**2*l6 - 21*l4**2 + 7*l4*l5 - 7*l4*l6) -/7, -15*l1**3 - 7*l1**2*l2 - 6*l1**2*l3 + 5*l1*l2**2 + 4*l1*l2*l3 - 42*l1* -l4 + 21*l1*l5 - 63*l1*l6 - 2*l2**3 - 14*l2*l5 + 42*l2*l6 + 147*l7, -( - 135*l1**4 + 45*l1**3*l2 - 9*l1**3*l3 + 602*l1**2*l4 + 28*l1**2*l5 - - 196*l1*l2*l4 - 14*l1*l2*l5 + 70*l1*l3*l4 - 28*l1*l3*l5 - 2205*l1* -l7 - 14*l2**2*l4 + 14*l2**2*l5 + 735*l2*l7 - 147*l3*l7 - 98*l4*l5 + -294*l4*l6 + 98*l5**2 - 294*l5*l6)/7, -(36*l1**3*l4 - 9*l1**3*l5 + 6*l1**3*l6 - 28*l1**2*l7 + 14*l1*l2*l7 + -28*l1*l3*l7 - 168*l1*l4**2 + 42*l1*l4*l5 - 28*l1*l4*l6 - 14*l2**2*l7 - + 588*l4*l7 - 245*l5*l7 + 392*l6*l7)/7, -l1*( - 5*l1**2 + 13*l1*l2 - l1*l3 - 6*l2**2 + 2*l2*l3 - 28*l4 + 14*l6 -), -l1*(5*l1*l3 - 3*l2*l3 + l3**2 - 28*l4 + 14*l6), -2*l1*(11*l1*l4 - 5*l1*l5 - 8*l1*l6 - l2*l4 + 3*l2*l5 + 2*l2*l6 - l3* -l4 - l3*l5 + 21*l7), -(4*l1*( - 33*l1*l4 + 10*l1*l5 + 39*l1*l6 + 17*l2*l4 - 6*l2*l5 - 22*l2 -*l6 - 5*l3*l4 + 2*l3*l5 + 7*l3*l6 - 63*l7))/3, -l1*(15*l1*l7 - 30*l2*l7 + 12*l3*l7 - 20*l4**2 + 8*l4*l5 + 10*l4*l6 - -4*l5*l6), -(l1*( - 6*l1*l7 + 12*l2*l7 - 6*l3*l7 + 4*l4**2 - 2*l4*l5 + 2*l4*l6 + -l5*l6 - 2*l6**2))/2, -4*l1*l7*(2*l4 - l5 + 2*l6)}$ - -vars:={L7,L6,L5,L4,L3,L2,L1}; - - -vars := {l7, -l6, -l5, -l4, -l3, -l2, -l1}$ - -clear a1,a2,b1,b2,b3$ - - - - off lexefgb; - - - setring(vars,{},lex); - - -{{l7,l6,l5,l4,l3,l2,l1},{},lex,{1,1,1,1,1,1,1}}$ - - - % The factorized Groebner algorithm. - groebfactor polys; - - -{{l1,l4,l7,21*l6 - 7*l5 - l2**2}, -{l1, -l4, -7*l5 - l3*l2 + 5*l2**2, -56*l6 - 5*l3*l2 + 23*l2**2, -588*l7 + 7*l3*l2**2 - 37*l2**3}, -{l1, -l7, -l3 - 5*l2, -14*l6 - 21*l4 - l2**2, -14*l5 - 63*l4 - l2**2}, -{l1,l4,l2,l5,l7}, -{7*l4 - 2*l1**2, -l2 - 2*l1, -l3 - 3*l1, -147*l7 - 4*l1**3, -7*l5 - 6*l1**2, -7*l6 - l1**2}, -{7*l4 - 2*l1**2, -2*l2 - 7*l1, -l3 - 6*l1, -147*l7 - 4*l1**3, -7*l5 - 9*l1**2, -14*l6 - 5*l1**2}, -{l1, -l3 - 5*l2, -63*l4 + 2*l2**2, -63*l5 + 2*l2**2, -63*l6 - 4*l2**2, -1323*l7 + 10*l2**3}, -{l1,l2,l3,l7,l5 - l4,l6 + 2*l4}, -{l2 - 3*l1, -l3 - 5*l1, -14*l4 - 5*l1**2, -98*l7 - 5*l1**3, -7*l5 - 10*l1**2, -14*l6 - 5*l1**2}}$ - - - % The extended Groebner factorizer, producing triangular sets. - extendedgroebfactor polys; - - -{{{98*l7 - 5*l1**3, -14*l6 - 5*l1**2, -7*l5 - 10*l1**2, -14*l4 - 5*l1**2, -l3 - 5*l1, -l2 - 3*l1}, -{}, -{l1}}, -{{l7,l6 + 2*l4,l5 - l4,l3,l2,l1},{},{l4}}, -{{1323*l7 + 10*l2**3, -63*l6 - 4*l2**2, -63*l5 + 2*l2**2, -63*l4 + 2*l2**2, -l3 - 5*l2, -l1}, -{}, -{l2}}, -{{147*l7 - 4*l1**3, -14*l6 - 5*l1**2, -7*l5 - 9*l1**2, -7*l4 - 2*l1**2, -l3 - 6*l1, -2*l2 - 7*l1}, -{}, -{l1}}, -{{147*l7 - 4*l1**3, -7*l6 - l1**2, -7*l5 - 6*l1**2, -7*l4 - 2*l1**2, -l3 - 3*l1, -l2 - 2*l1}, -{}, -{l1}}, -{{l7,l5,l4,l2,l1},{},{l6,l3}}, -{{l7, -14*l6 - (l2**2 + 21*l4), -14*l5 - (l2**2 + 63*l4), -l3 - 5*l2, -l1}, -{}, -{l4,l2}}, -{{588*l7 - (37*l2**3 - 7*l2**2*l3), -56*l6 + (23*l2**2 - 5*l2*l3), -7*l5 + (5*l2**2 - l2*l3), -l4, -l1}, -{}, -{l3,l2}}, -{{l7,21*l6 - (l2**2 + 7*l5),l4,l1},{},{l5,l3,l2}}}$ - - - % The extended Groebner factorizer with subproblem removal check. - extendedgroebfactor1 polys; - - -{{{l7,21*l6 - (l2**2 + 7*l5),l4,l1},{},{l5,l3,l2}}, -{{588*l7 - (37*l2**3 - 7*l2**2*l3), -56*l6 + (23*l2**2 - 5*l2*l3), -7*l5 + (5*l2**2 - l2*l3), -l4, -l1}, -{}, -{l3,l2}}, -{{l7, -14*l6 - (l2**2 + 21*l4), -14*l5 - (l2**2 + 63*l4), -l3 - 5*l2, -l1}, -{}, -{l4,l2}}, -{{l7,l5,l4,l2,l1},{},{l6,l3}}, -{{147*l7 - 4*l1**3, -7*l6 - l1**2, -7*l5 - 6*l1**2, -7*l4 - 2*l1**2, -l3 - 3*l1, -l2 - 2*l1}, -{}, -{l1}}, -{{147*l7 - 4*l1**3, -14*l6 - 5*l1**2, -7*l5 - 9*l1**2, -7*l4 - 2*l1**2, -l3 - 6*l1, -2*l2 - 7*l1}, -{}, -{l1}}, -{{1323*l7 + 10*l2**3, -63*l6 - 4*l2**2, -63*l5 + 2*l2**2, -63*l4 + 2*l2**2, -l3 - 5*l2, -l1}, -{}, -{l2}}, -{{l7,l6 + 2*l4,l5 - l4,l3,l2,l1},{},{l4}}, -{{98*l7 - 5*l1**3, -14*l6 - 5*l1**2, -7*l5 - 10*l1**2, -14*l4 - 5*l1**2, -l3 - 5*l1, -l2 - 3*l1}, -{}, -{l1}}}$ - - - % Gonnet's example (ACM SIGSAM Bulletin 17 (1983), 48 - 49) - -vars:={a0,a2,a3,a4,a5,b0,b1,b2,b3,b4,b5,c0,c1,c2,c3,c4,c5}; - - -vars := {a0, -a2, -a3, -a4, -a5, -b0, -b1, -b2, -b3, -b4, -b5, -c0, -c1, -c2, -c3, -c4, -c5}$ - -polys:={a4*b4, -a5*b1+b5+a4*b3+a3*b4, -a2*b2,a5*b5, -(a0+1+a4)*b2+a2*(b0+b1+b4)+c2, -(a0+1+a4)*(b0+b1+b4)+(a3+a5)*b2+a2*(b3+b5)+c0+c1+c4, -(a3+a5)*(b0+b1+b4)+(b3+b5)*(a0+1+a4)+c3+c5-1, -(a3+a5)*(b3+b5), -a5*(b3+b5)+b5*(a3+a5), -b5*(a0+1+2*a4)+a5*(b0+b1+2*b4)+a3*b4+a4*b3+c5, -a4*(b0+b1+2*b4)+a2*b5+a5*b2+(a0+1)*b4+c4, -a2*b4+a4*b2, -a4*b5+a5*b4, -2*a3*b3+a3*b5+a5*b3, -c3+b3*(a0+2+a4)+a3*(b0+2*b1+b4)+b5+a5*b1, -c1+(a0+2+a4)*b1+a2*b3+a3*b2+(b0+b4), -a2*b1+b2, -a5*b3+a3*b5, -b4+a4*b1}; - - -polys := {a4*b4, -a3*b4 + a4*b3 + a5*b1 + b5, -a2*b2, -a5*b5, -a0*b2 + a2*b0 + a2*b1 + a2*b4 + a4*b2 + b2 + c2, -a0*b0 + a0*b1 + a0*b4 + a2*b3 + a2*b5 + a3*b2 + a4*b0 + a4*b1 + a4*b4 - + a5*b2 + b0 + b1 + b4 + c0 + c1 + c4, -a0*b3 + a0*b5 + a3*b0 + a3*b1 + a3*b4 + a4*b3 + a4*b5 + a5*b0 + a5*b1 - + a5*b4 + b3 + b5 + c3 + c5 - 1, -a3*b3 + a3*b5 + a5*b3 + a5*b5, -a3*b5 + a5*b3 + 2*a5*b5, -a0*b5 + a3*b4 + a4*b3 + 2*a4*b5 + a5*b0 + a5*b1 + 2*a5*b4 + b5 + c5, -a0*b4 + a2*b5 + a4*b0 + a4*b1 + 2*a4*b4 + a5*b2 + b4 + c4, -a2*b4 + a4*b2, -a4*b5 + a5*b4, -2*a3*b3 + a3*b5 + a5*b3, -a0*b3 + a3*b0 + 2*a3*b1 + a3*b4 + a4*b3 + a5*b1 + 2*b3 + b5 + c3, -a0*b1 + a2*b3 + a3*b2 + a4*b1 + b0 + 2*b1 + b4 + c1, -a2*b1 + b2, -a3*b5 + a5*b3, -a4*b1 + b4}$ - - - on lexefgb; - - % Switching back to the default. - setring(vars,{},lex); - - -{{a0,a2,a3,a4,a5,b0,b1,b2,b3,b4,b5,c0,c1,c2,c3,c4,c5}, -{}, -lex, -{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}}$ - - groebfactor polys; - - -{{c5, -b5, -c2, -c4, -b2, -b4, -a4, -a2, -a5, -b3, -a3*b1 + 1, -b0 - b1*c3 + 2*b1, -a0 - a3*c1 + c3, -b1*c3**2 - 2*b1*c3 + b1 - c0 + c1*c3 - 2*c1, -a3*c0 - a3*c1*c3 + 2*a3*c1 + c3**2 - 2*c3 + 1}, -{c5, -c4, -b5, -b4, -a4, -b2, -a5, -a3, -b1, -b3 + 1, -a0 - c3 + 2, -b0*c3 - 2*b0 + c0, -a2 - b0 - c1, -b0**2 + b0*c1 + c2, -b0*c0 + c0*c1 - c2*c3 + 2*c2, -c0**2 - c0*c1*c3 + 2*c0*c1 + c2*c3**2 - 4*c2*c3 + 4*c2}, -{c5, -b5, -c2, -c4, -b2, -b4, -a4, -a2, -a5, -a3, -b3 + 1, -b0 + b1*c3 + c1, -a0 - c3 + 2, -b1*c3**2 - 2*b1*c3 + b1 - c0 + c1*c3 - 2*c1}}$ - - extendedgroebfactor polys; - - -{{{b1*a0 + (b1 + c1), -a2, -b1*a3 + 1, -a4, -a5, -b0 + b1, -b2, -b3, -b4, -b5, -c0 + c1, -c2, -c3 - 1, -c4, -c5}, -{b1,b1}, -{b1,c1}}, -{{a0, -a2 - b0 - c1, -a3, -a4, -a5, -b0**2 + c1*b0 + c2, -b1, -b2, -b3 + 1, -b4, -b5, -c0, -c3 - 2, -c4, -c5}, -{}, -{c1,c2}}, -{{a0 + 1,a2,a3,a4,a5,b0 + (b1 + c1),b2,b3 + 1,b4,b5,c0 + c1,c2,c3 - 1,c4,c5}, -{}, -{b1,c1}}, -{{a0 - (c3 - 2), -a2, -a3, -a4, -a5, -(c3**2 - 2*c3 + 1)*b0 + (c0*c3 + c1), -(c3**2 - 2*c3 + 1)*b1 - (c0 - c1*c3 + 2*c1), -b2, -b3 + 1, -b4, -b5, -c2, -c4, -c5}, -{c3**2 - 2*c3 + 1,c3**2 - 2*c3 + 1}, -{c0,c1,c3}}, -{{a0 - (c3 - 2), -(c3 - 2)*a2 + c0 - (c1*c3 - 2*c1), -a3, -a4, -a5, -(c3 - 2)*b0 + c0, -b1, -b2, -b3 + 1, -b4, -b5, -c0**2 - (c1*c3 - 2*c1)*c0 + (c2*c3**2 - 4*c2*c3 + 4*c2), -c4, -c5}, -{c3 - 2,c3 - 2}, -{c1,c2,c3}}, -{{(c0 - c1*c3 + 2*c1)*a0 + (c0*c3 + c1), -a2, -(c0 - c1*c3 + 2*c1)*a3 + (c3**2 - 2*c3 + 1), -a4, -a5, -(c3**2 - 2*c3 + 1)*b0 - (c0*c3 - 2*c0 - c1*c3**2 + 4*c1*c3 - 4*c1), -(c3**2 - 2*c3 + 1)*b1 - (c0 - c1*c3 + 2*c1), -b2, -b3, -b4, -b5, -c2, -c4, -c5}, -{c0 - c1*c3 + 2*c1, -c0 - c1*c3 + 2*c1, -c3**2 - 2*c3 + 1, -c3**2 - 2*c3 + 1}, -{c0,c1,c3}}}$ - - extendedgroebfactor1 polys; - - -{{{(c0 - c1*c3 + 2*c1)*a0 + (c0*c3 + c1), -a2, -(c0 - c1*c3 + 2*c1)*a3 + (c3**2 - 2*c3 + 1), -a4, -a5, -(c3**2 - 2*c3 + 1)*b0 - (c0*c3 - 2*c0 - c1*c3**2 + 4*c1*c3 - 4*c1), -(c3**2 - 2*c3 + 1)*b1 - (c0 - c1*c3 + 2*c1), -b2, -b3, -b4, -b5, -c2, -c4, -c5}, -{c0 - c1*c3 + 2*c1, -c0 - c1*c3 + 2*c1, -c3**2 - 2*c3 + 1, -c3**2 - 2*c3 + 1}, -{c0,c1,c3}}, -{{a0 - (c3 - 2), -(c3 - 2)*a2 + c0 - (c1*c3 - 2*c1), -a3, -a4, -a5, -(c3 - 2)*b0 + c0, -b1, -b2, -b3 + 1, -b4, -b5, -c0**2 - (c1*c3 - 2*c1)*c0 + (c2*c3**2 - 4*c2*c3 + 4*c2), -c4, -c5}, -{c3 - 2,c3 - 2}, -{c1,c2,c3}}, -{{a0 - (c3 - 2), -a2, -a3, -a4, -a5, -(c3**2 - 2*c3 + 1)*b0 + (c0*c3 + c1), -(c3**2 - 2*c3 + 1)*b1 - (c0 - c1*c3 + 2*c1), -b2, -b3 + 1, -b4, -b5, -c2, -c4, -c5}, -{c3**2 - 2*c3 + 1,c3**2 - 2*c3 + 1}, -{c0,c1,c3}}}$ - - - % Schwarz' example s5 - -vars:=for k:=1:5 collect mkid(x,k); - - -vars := {x1, -x2, -x3, -x4, -x5}$ - - -s5:={ -x1**2+x1+2*x2*x5+2*x3*x4, -2*x1*x2+x2+2*x3*x5+x4**2, -2*x1*x3+x2**2+x3+2*x4*x5, -2*x1*x4+2*x2*x3+x4+x5**2, -2*x1*x5+2*x2*x4+x3**2+x5}; - - -s5 := {x1**2 + x1 + 2*x2*x5 + 2*x3*x4, -2*x1*x2 + x2 + 2*x3*x5 + x4**2, -2*x1*x3 + x2**2 + x3 + 2*x4*x5, -2*x1*x4 + 2*x2*x3 + x4 + x5**2, -2*x1*x5 + 2*x2*x4 + x3**2 + x5}$ - - - setring(vars,degreeorder vars,revlex); - - -{{x1,x2,x3,x4,x5},{{1,1,1,1,1}},revlex,{1,1,1,1,1}}$ - - m:=groebfactor s5; - - -m := {{x1**2 + 2*x3*x4 + 2*x2*x5 + x1, -2*x1*x2 + x4**2 + 2*x3*x5 + x2, -x2**2 + 2*x1*x3 + 2*x4*x5 + x3, -2*x2*x3 + 2*x1*x4 + x5**2 + x4, -x3**2 + 2*x2*x4 + 2*x1*x5 + x5, -2*x1*x3*x4 + 2*x4**2*x5 + x3*x5**2 + x3*x4, -5*x4**3 + 30*x3*x4*x5 + 15*x2*x5**2 - 2*x5, -10*x3*x4**2 - 10*x1*x5**2 - 5*x5**2 - x4, -625*x4*x5**3 + 50*x3*x4 + 75*x2*x5 - 6, -15*x2*x4**2 + 30*x1*x4*x5 + 5*x5**3 + 15*x4*x5 + x3, -100*x1*x4*x5**2 + 25*x5**4 + 50*x4*x5**2 + x4**2 + 4*x3*x5, -1250*x1*x3*x5**2 + 625*x3*x5**2 - 75*x3*x4 - 50*x2*x5 + 8, -75*x4**2*x5**2 + 50*x3*x5**3 + x2*x4 + 4*x1*x5 + 2*x5, -150*x3*x4*x5**2 + 100*x2*x5**3 - 2*x1*x4 - 13*x5**2 - x4, -625*x2*x5**4 - 50*x1*x4*x5 - 75*x5**3 - 25*x4*x5 - x3, -1250*x3*x5**4 - 200*x2*x4*x5 - 50*x1*x5**2 - 25*x5**2 + 3*x4, -625*x5**5 + 375*x4**2*x5 + 500*x3*x5**2 + 24*x1 + 12, -10*x1*x4**2 + 20*x1*x3*x5 + 20*x4*x5**2 + 5*x4**2 + 10*x3*x5 + x2, -75*x2*x4*x5**2 + 50*x1*x5**3 + 25*x5**3 - 2*x1*x3 - 3*x4*x5 - x3, -1250*x1*x5**4 + 625*x5**4 + 100*x1*x3*x5 + 150*x4*x5**2 + 50*x3*x5 + 3* -x2}, -{x5,x2,x4,x3,x1}, -{x5,x2,x4,x3,x1 + 1}}$ - - - % Recompute a list of problems with listgroebfactor for another term - % order. - setring(vars,{},lex); - - -{{x1,x2,x3,x4,x5},{},lex,{1,1,1,1,1}}$ - - listgroebfactor m; - - -{{5*x5 - 1, -5*x4 - 1, -5*x1 + 4, -5*x2 - 1, -5*x3 - 1}, -{5*x5 + 1, -5*x4 + 1, -5*x1 + 1, -5*x2 + 1, -5*x3 + 1}, -{5*x1 + 2, -x2 - x5, -25*x5**2 - 5*x5 - 1, -5*x4 + 5*x5 - 1, -5*x3 + 5*x5 - 1}, -{5*x1 + 3, -x2 - x5, -25*x5**2 + 5*x5 - 1, -5*x4 + 5*x5 + 1, -5*x3 + 5*x5 + 1}, -{5*x1 + 3, -5*x4 - 25*x5**2 + 10*x5 - 2, -x3 - 25*x5**3 + 15*x5**2 - 3*x5, -5*x2 + 125*x5**3 - 50*x5**2 + 10*x5 - 1, -625*x5**4 - 375*x5**3 + 100*x5**2 - 10*x5 + 1}, -{5*x1 + 2, -5*x2 + 5*x5 - 1, -5*x4 - 250*x5**3 + 75*x5**2 - 30*x5 + 2, -5*x3 + 250*x5**3 - 75*x5**2 + 30*x5 - 3, -625*x5**4 - 250*x5**3 + 100*x5**2 - 15*x5 + 1}, -{x4 + 5*x5**2, -5*x1 + 1, -x3 - 25*x5**3, -5*x2 + 125*x5**3 - 25*x5**2 + 5*x5 - 1, -625*x5**4 - 125*x5**3 + 25*x5**2 - 5*x5 + 1}, -{x4 - 5*x5**2, -5*x1 + 4, -x3 - 25*x5**3, -5*x2 + 125*x5**3 + 25*x5**2 + 5*x5 + 1, -625*x5**4 + 125*x5**3 + 25*x5**2 + 5*x5 + 1}, -{5*x1 + 3, -5*x2 + 5*x5 + 1, -5*x4 - 250*x5**3 - 75*x5**2 - 30*x5 - 2, -5*x3 + 250*x5**3 + 75*x5**2 + 30*x5 + 3, -625*x5**4 + 250*x5**3 + 100*x5**2 + 15*x5 + 1}, -{5*x1 + 2, -5*x4 + 25*x5**2 + 10*x5 + 2, -x3 - 25*x5**3 - 15*x5**2 - 3*x5, -5*x2 + 125*x5**3 + 50*x5**2 + 10*x5 + 1, -625*x5**4 + 375*x5**3 + 100*x5**2 + 10*x5 + 1}, -{x5, -x2, -x4, -x3, -x1 + 1}, -{x5, -x2, -x4, -x3, -x1}}$ - - - -% ==> Testing the linear algebra package - - % Find the ideal of points in affine and projective space. - - vars:=for k:=1:6 collect mkid(x,k); - - -vars := {x1, -x2, -x3, -x4, -x5, -x6}$ - - setring(vars,degreeorder vars,revlex); - - -{{x1,x2,x3,x4,x5,x6},{{1,1,1,1,1,1}},revlex,{1,1,1,1,1,1}}$ - - matrix mm(10,6); - - - on rounded; - - - for k:=1:6 do for l:=1:10 do mm(l,k):=floor(exp((k+l)/4)); - - - off rounded; - - - mm; - - -mat((1,2,2,3,4,5),(2,2,3,4,5,7),(2,3,4,5,7,9),(3,4,5,7,9,12),(4,5,7,9,12,15),(5 -,7,9,12,15,20),(7,9,12,15,20,25),(9,12,15,20,25,33),(12,15,20,25,33,42),(15,20, -25,33,42,54))$ - - setideal(u,affine_points mm); - - -{48337*x5**2 - 318*x4*x6 - 75336*x5*x6 + 29579*x6**2 - 11598*x1 - 11016*x2 - -11352*x3 - 2502*x4 + 18371*x5 - 1837*x6 - 1836, -386696*x1*x6 + 175678*x4*x6 + 20108*x5*x6 - 233347*x6**2 - 5821074*x1 - 831000 -*x2 + 1382952*x3 + 741984*x4 - 2153934*x5 + 2692351*x6 - 1491936, -386696*x3*x6 + 239238*x4*x6 - 185716*x5*x6 - 182039*x6**2 - 270738*x1 - -1255800*x2 - 5052384*x3 - 2106864*x4 + 2351946*x5 + 2434483*x6 - 1562736, -48337*x4**2 - 58746*x4*x6 + 148*x5*x6 + 17725*x6**2 + 2502*x1 + 576*x2 - 1302* -x3 + 25721*x4 - 3488*x5 - 12857*x6 + 96, -193348*x4*x5 - 151394*x4*x6 - 118604*x5*x6 + 92869*x6**2 + 1590*x1 + 8712*x2 + - 16560*x3 - 3708*x4 + 43918*x5 - 43409*x6 + 1452, -386696*x2*x6 - 382090*x4*x6 - 43364*x5*x6 + 123645*x6**2 - 1313130*x1 - -4809120*x2 + 91464*x3 + 5853096*x4 + 1118658*x5 - 2323361*x6 - 28128, -193348*x6**3 - 78919578*x4*x6 - 63413004*x5*x6 + 81565689*x6**2 + 1412352942* -x1 + 1563160200*x2 + 761482008*x3 + 10324224*x4 + 304232130*x5 - 1255484065*x6 - - 643375200, -193348*x1*x4 - 3606*x4*x6 + 6664*x5*x6 - 36689*x6**2 - 1729374*x1 - 256248*x2 -+ 422132*x3 + 345556*x4 - 671778*x5 + 747089*x6 - 429404, -193348*x3*x4 - 19782*x4*x6 - 57060*x5*x6 + 1407*x6**2 - 86718*x1 - 378840*x2 - - 1475924*x3 - 576996*x4 + 715078*x5 + 671885*x6 - 449836, -386696*x1*x5 + 139942*x4*x6 - 99156*x5*x6 - 94107*x6**2 - 4388370*x1 - 668088* -x2 + 1063040*x3 + 468112*x4 - 1464774*x5 + 1964239*x6 - 1078088, -386696*x3*x5 + 184150*x4*x6 - 329484*x5*x6 + 3733*x6**2 - 302634*x1 - 1062840* -x2 - 3845096*x3 - 1562608*x4 + 1956858*x5 + 1752663*x6 - 1143880, -193348*x1**2 + 50726*x4*x6 + 4164*x5*x6 - 49995*x6**2 - 1502518*x1 - 234624*x2 - + 337000*x3 + 189344*x4 - 544926*x5 + 709519*x6 - 425800, -193348*x1*x2 - 22834*x4*x6 - 3056*x5*x6 - 4123*x6**2 - 1183010*x1 - 780060*x2 -+ 282940*x3 + 989552*x4 - 238902*x5 + 102179*x6 - 226684, -386696*x1*x3 + 153254*x4*x6 - 46332*x5*x6 - 109011*x6**2 - 2706290*x1 - 776040 -*x2 - 650592*x3 - 288096*x4 - 295470*x5 + 1856303*x6 - 1096080, -96674*x3**2 + 56278*x4*x6 - 44916*x5*x6 - 20423*x6**2 - 85218*x1 - 315900*x2 - - 1104614*x3 - 478348*x4 + 559514*x5 + 528787*x6 - 342672, -193348*x2*x4 - 186922*x4*x6 - 13484*x5*x6 + 80823*x6**2 - 400398*x1 - 1437268* -x2 + 32400*x3 + 1825348*x4 + 346526*x5 - 749039*x6 - 13972, -386696*x2*x5 - 299774*x4*x6 - 183476*x5*x6 + 214259*x6**2 - 1032390*x1 - -3818088*x2 + 38568*x3 + 4563624*x4 + 1175646*x5 - 2005927*x6 - 56304, -193348*x5*x6**2 - 59111766*x4*x6 - 58092824*x5*x6 + 68856463*x6**2 + -1134803514*x1 + 1224865560*x2 + 591403776*x3 - 36549312*x4 + 316517430*x5 - -1023460331*x6 - 498675720, -96674*x2**2 - 69590*x4*x6 - 7908*x5*x6 + 35327*x6**2 - 243426*x1 - 832910*x2 + - 14700*x3 + 1041208*x4 + 204662*x5 - 420851*x6 - 26032, -386696*x2*x3 - 95202*x4*x6 - 92692*x5*x6 + 63421*x6**2 - 736122*x1 - 2670472* -x2 - 1669344*x3 + 2061800*x4 + 1466002*x5 - 394913*x6 - 509528, -96674*x4*x6**2 - 29277416*x4*x6 - 19752504*x5*x6 + 28388673*x6**2 + 433544670* -x1 + 473916360*x2 + 235723620*x3 + 39729120*x4 + 97903830*x5 - 411516489*x6 - -188800920}$ - setgbasis u$ - - dim u; - - -0$ - degree u; - - -10$ - - setideal(u,proj_points mm); - - -{457380*x5**3 - 13500*x2*x5*x6 - 20835*x3*x5*x6 + 76950*x4*x5*x6 - 1050234*x5** -2*x6 + 100*x1*x6**2 + 10800*x2*x6**2 + 16568*x3*x6**2 - 60271*x4*x6**2 + -771366*x5*x6**2 - 179875*x6**3, -330*x4**2 + 1665*x2*x5 + 555*x3*x5 - 4337*x4*x5 - 626*x5**2 + 6*x1*x6 - 1332* -x2*x6 - 450*x3*x6 + 3013*x4*x6 + 2740*x5*x6 - 1635*x6**2, -33*x1*x5 - 90*x2*x5 - 63*x3*x5 + 216*x4*x5 + 60*x5**2 - 25*x1*x6 + 72*x2*x6 + -49*x3*x6 - 170*x4*x6 - 171*x5*x6 + 97*x6**2, -90*x3**2 - 483*x2*x5 - 183*x3*x5 + 1197*x4*x5 + 174*x5**2 - 2*x1*x6 + 384*x2* -x6 + 68*x3*x6 - 937*x4*x6 - 738*x5*x6 + 485*x6**2, -330*x3*x4 + 555*x2*x5 + 75*x3*x5 - 1519*x4*x5 - 172*x5**2 + 2*x1*x6 - 444*x2* -x6 - 260*x3*x6 + 1041*x4*x6 + 950*x5*x6 - 545*x6**2, -457380*x4*x5**2 - 10800*x2*x5*x6 - 9045*x3*x5*x6 - 662625*x4*x5*x6 - 265413*x5 -**2*x6 + 80*x1*x6**2 + 8640*x2*x6**2 + 7156*x3*x6**2 + 238408*x4*x6**2 + -391452*x5*x6**2 - 143900*x6**3, -495*x1*x2 + 1977*x2*x5 + 87*x3*x5 - 4824*x4*x5 - 339*x5**2 - 164*x1*x6 - 1707* -x2*x6 - 97*x3*x6 + 3782*x4*x6 + 2697*x5*x6 - 1840*x6**2, -495*x2**2 + 1134*x2*x5 + 939*x3*x5 - 3771*x4*x5 - 822*x5**2 - 4*x1*x6 - 1257* -x2*x6 - 734*x3*x6 + 2956*x4*x6 + 2709*x5*x6 - 1550*x6**2, -990*x1*x3 - 5043*x2*x5 - 1263*x3*x5 + 12321*x4*x5 + 1866*x5**2 - 464*x1*x6 + -4008*x2*x6 + 788*x3*x6 - 9643*x4*x6 - 7968*x5*x6 + 5165*x6**2, -495*x2*x3 + 1242*x2*x5 - 48*x3*x5 - 3555*x4*x5 - 267*x5**2 + 4*x1*x6 - 1218*x2 -*x6 - 157*x3*x6 + 2786*x4*x6 + 2142*x5*x6 - 1420*x6**2, -66*x1*x4 + 345*x2*x5 + 93*x3*x5 - 861*x4*x5 - 120*x5**2 - 38*x1*x6 - 276*x2*x6 - - 76*x3*x6 + 659*x4*x6 + 540*x5*x6 - 337*x6**2, -495*x2*x4 + 1770*x2*x5 + 645*x3*x5 - 4908*x4*x5 - 729*x5**2 + 4*x1*x6 - 1713* -x2*x6 - 520*x3*x6 + 3677*x4*x6 + 3165*x5*x6 - 1915*x6**2, -152460*x3*x5**2 + 5880*x2*x5*x6 - 237983*x3*x5*x6 - 6896*x4*x5*x6 - 71438*x5** -2*x6 + 64*x1*x6**2 - 4704*x2*x6**2 + 92748*x3*x6**2 + 5427*x4*x6**2 + 113560* -x5*x6**2 - 45061*x6**3, -990*x1**2 - 1893*x2*x5 + 447*x3*x5 + 3771*x4*x5 + 426*x5**2 - 524*x1*x6 + 1488 -*x2*x6 - 322*x3*x6 - 2923*x4*x6 - 2478*x5*x6 + 1715*x6**2, -457380*x2*x5**2 - 754524*x2*x5*x6 - 31530*x3*x5*x6 + 156561*x4*x5*x6 - 132597* -x5**2*x6 + 136*x1*x6**2 + 310896*x2*x6**2 + 25088*x3*x6**2 - 122581*x4*x6**2 + - 141732*x5*x6**2 - 30097*x6**3}$ - setgbasis u$ - - dim u; - - -1$ - degree u; - - -10$ - - - % Change the term order to pure lex in dimension zero. - % Test both approaches, with and without precomputed borderbasis. - - vars:=for k:=1:6 collect mkid(x,k); - - -vars := {x1, -x2, -x3, -x4, -x5, -x6}$ - - r1:=setring(vars,{},lex); - - -r1 := {{x1,x2,x3,x4,x5,x6},{},lex,{1,1,1,1,1,1}}$ - - r2:=setring(vars,degreeorder vars,revlex); - - -r2 := {{x1,x2,x3,x4,x5,x6},{{1,1,1,1,1,1}},revlex,{1,1,1,1,1,1}}$ - - setideal(m,{x1**2+x1+2*x2*x6+2*x3*x5+x4**2, - 2*x1*x2+x2+2*x3*x6+2*x4*x5, - 2*x1*x3+x2**2+x3+2*x4*x6+x5**2, - 2*x1*x4+2*x2*x3+x4+2*x5*x6, - 2*x1*x5+2*x2*x4+x3**2+x5+x6**2, - 2*x1*x6+2*x2*x5+2*x3*x4+x6}); - - -{x1**2 + x4**2 + 2*x3*x5 + 2*x2*x6 + x1, -2*x1*x2 + 2*x4*x5 + 2*x3*x6 + x2, -x2**2 + 2*x1*x3 + x5**2 + 2*x4*x6 + x3, -2*x2*x3 + 2*x1*x4 + 2*x5*x6 + x4, -x3**2 + 2*x2*x4 + 2*x1*x5 + x6**2 + x5, -2*x3*x4 + 2*x2*x5 + 2*x1*x6 + x6}$ - - gbasis m; - - -{72*x1*x3*x5*x6 + 36*x3*x5*x6 - 2*x1*x6 - x6, -2*x1*x2 + 2*x4*x5 + 2*x3*x6 + x2, -2*x2*x3 + 2*x1*x4 + 2*x5*x6 + x4, -2*x3*x4 + 2*x2*x5 + 2*x1*x6 + x6, -10368*x6**7 + 5040*x4*x6**4 + 140*x4**2*x6 + 252*x2*x6**2 - 15*x6, -1296*x4*x6**5 + 180*x4**2*x6**2 + 180*x2*x6**3 + 4*x2*x4 - 15*x6**2, -2592*x3*x6**5 - 360*x2*x5*x6**2 + 2*x1*x4 + 12*x5*x6 + x4, -72*x3*x5**2*x6 + 72*x2*x5*x6**2 - 2*x1*x4 - 8*x5*x6 - x4, -36*x2*x5**3 - 108*x1*x4*x6**2 - 72*x5*x6**3 - 54*x4*x6**2 - 5*x3*x6, -18*x4**2*x5 + 18*x3*x5**2 - 18*x1*x6**2 - 9*x6**2 - 2*x5, -36*x4*x5**2 + 36*x4**2*x6 + 72*x3*x5*x6 + 36*x2*x6**2 - 5*x6, -x1**2 + x4**2 + 2*x3*x5 + 2*x2*x6 + x1, -x2**2 + 2*x1*x3 + x5**2 + 2*x4*x6 + x3, -x3**2 + 2*x2*x4 + 2*x1*x5 + x6**2 + x5, -2592*x5*x6**5 + 360*x4*x5*x6**2 + 360*x3*x6**3 - 2*x2*x5 + 10*x1*x6 + 5*x6, -2592*x5**2*x6**3 + 1296*x4*x6**4 + 36*x4**2*x6 + 144*x3*x5*x6 + 180*x2*x6**2 - - 13*x6, -72*x5**3*x6 + 216*x4*x5*x6**2 + 72*x3*x6**3 + 2*x2*x5 + 6*x1*x6 + 3*x6, -4*x4**3 - 12*x2*x5**2 - 24*x1*x5*x6 - 4*x6**3 - 12*x5*x6 - x4, -12*x2*x4**2 - 24*x1*x3*x6 - 12*x5**2*x6 - 12*x4*x6**2 - 12*x3*x6 - x2, -1296*x1*x6**5 + 648*x6**5 + 180*x1*x4*x6**2 + 180*x5*x6**3 + 90*x4*x6**2 + x4* -x5 + 6*x3*x6, -2592*x2*x6**5 + 360*x2*x4*x6**2 - 180*x6**4 - 6*x1*x3 - 3*x5**2 - 16*x4*x6 - 3 -*x3, -72*x3*x5*x6**3 + 36*x2*x6**4 - x2*x5**2 - 4*x2*x4*x6 - 4*x1*x5*x6 - 6*x6**3 - -2*x5*x6, -648*x4*x5*x6**3 + 324*x3*x6**4 - 9*x3*x5**2 - 18*x2*x5*x6 + 18*x1*x6**2 + 9*x6 -**2 + x5, -2592*x1*x3*x6**3 + 1296*x4*x6**4 + 1296*x3*x6**3 - 36*x4**2*x6 - 72*x3*x5*x6 + - 36*x2*x6**2 + 5*x6, -1080*x2*x4*x6**3 + 216*x6**5 - 60*x1*x3*x6 - 30*x5**2*x6 - 90*x4*x6**2 - 30*x3 -*x6 - x2, -72*x4**2*x6**3 + 36*x2*x6**4 + 3*x2*x5**2 + 8*x2*x4*x6 + 6*x1*x5*x6 - 2*x6**3 -+ 3*x5*x6, -36*x1*x5**2*x6 + 36*x1*x4*x6**2 + 36*x5*x6**3 + 18*x5**2*x6 + 18*x4*x6**2 + x4 -*x5 + 2*x3*x6, -18*x1*x5**3 - 54*x1*x3*x6**2 - 36*x4*x6**3 + 9*x5**3 - 27*x3*x6**2 + x3*x5 - 2 -*x2*x6, -18*x1*x4*x5 + 18*x1*x3*x6 + 18*x5**2*x6 + 18*x4*x6**2 + 9*x4*x5 + 9*x3*x6 + x2 -, -18*x2*x4*x5 + 18*x1*x5**2 + 18*x1*x4*x6 + 18*x5*x6**2 + 9*x5**2 + 9*x4*x6 + x3 -, -2*x1*x4**2 + 4*x1*x3*x5 + 2*x5**3 + 8*x4*x5*x6 + 2*x3*x6**2 + x4**2 + 2*x3*x5, -72*x1*x4*x6**3 + 36*x5*x6**4 + 36*x4*x6**3 - 2*x1*x3*x5 - x5**3 - 2*x4*x5*x6 + - 2*x3*x6**2 - x3*x5, -3240*x1*x5*x6**3 + 648*x6**5 + 1620*x5*x6**3 + 90*x1*x3*x6 + 90*x5**2*x6 + 180 -*x4*x6**2 + 45*x3*x6 + 2*x2, -72*x2*x5**2*x6 + 72*x2*x4*x6**2 + 144*x1*x5*x6**2 + 36*x6**4 + 72*x5*x6**2 - 2 -*x1*x3 - x5**2 - x3, -36*x5**4 - 216*x4**2*x6**2 - 432*x3*x5*x6**2 - 288*x2*x6**3 + 2*x2*x4 + 8*x1* -x5 + 39*x6**2 + 4*x5, -72*x3*x5**3 - 216*x1*x5*x6**2 - 36*x6**4 - 108*x5*x6**2 - 2*x1*x3 - 9*x5**2 - -8*x4*x6 - x3, -1296*x2*x5*x6**3 + 648*x1*x6**4 + 324*x6**4 - 18*x1*x5**2 - 36*x1*x4*x6 - 72* -x5*x6**2 - 9*x5**2 - 18*x4*x6 - x3, -18*x1*x3*x5**2 + 18*x4**2*x6**2 + 54*x3*x5*x6**2 + 36*x2*x6**3 + 9*x3*x5**2 - -x2*x4 - 2*x1*x5 - 5*x6**2 - x5}$ - - m1:=change_termorder(m,r1); - - -m1 := {46656*x4*x5*x6**6 - x4*x5, -80621568*x5*x6**13 + 44928*x5*x6**7 - x5*x6, -637*x2 + 1077507256320*x6**17 - 927987840*x6**11 - 806157*x6**5, -7*x4**2*x5 + 252*x4*x5*x6**3 - 30233088*x5*x6**12 - 17496*x5*x6**6, -58773123072*x6**19 - 47869056*x6**13 - 45657*x6**7 + x6, -2*x1*x4 + x4 + 1296*x5**3*x6**3 + 3*x5*x6, -2548*x4**2*x6 + 91728*x4*x6**4 + 362797056*x6**13 - 33696*x6**7 - 141*x6 -, -8491392*x4*x6**7 - 182*x4*x6 + 19591041024*x6**16 + 10917504*x6**10 - -243*x6**4, -17199*x5**4*x6 + 1238328*x5**2*x6**5 + 4353564672*x6**15 - 5003856*x6**9 - - 1328*x6**3, -4245696*x5**2*x6**7 - 91*x5**2*x6 + 8707129344*x6**17 - 12130560*x6**11 -+ 256*x6**5, -7*x3 - 567*x5**5 - 204120*x5**3*x6**4 + 524880*x5*x6**8 - 90*x5*x6**2, -2916*x5**7 - 567*x5**3*x6**2 + 347680512*x5*x6**12 + 196668*x5*x6**6 - 4 -*x5, -14*x1*x6 + 504*x4*x5*x6**2 + 252*x5**3*x6 + 20155392*x5*x6**11 + 8640*x5 -*x6**5 + 7*x6, -2548*x4**3 + 19813248*x4*x6**6 - 637*x4 + 39182082048*x6**15 + 30326400* -x6**9 + 4428*x6**3, -1911*x4*x5**2 - 68796*x4*x6**4 - 68796*x5**2*x6**3 - 362797056*x6**13 + -151632*x6**7 + 50*x6, -1274*x1*x5 + 1651104*x4*x6**5 + 5733*x5**4 + 1238328*x5**2*x6**4 + 637* -x5 + 6530347008*x6**14 - 1667952*x6**8 + 192*x6**2, -1274*x1**2 + 1274*x1 + 1274*x4**2 + 206388*x5**6 - 85995*x5**2*x6**2 - -11754624614400*x6**18 + 9498228480*x6**12 + 9295668*x6**6}$ - - setring r2$ - - m2:=change_termorder1(m,r1); - - -m2 := {46656*x4*x5*x6**6 - x4*x5, -80621568*x5*x6**13 + 44928*x5*x6**7 - x5*x6, -2*x1*x4 + x4 + 1296*x5**3*x6**3 + 3*x5*x6, -637*x2 + 1077507256320*x6**17 - 927987840*x6**11 - 806157*x6**5, -7*x4**2*x5 + 252*x4*x5*x6**3 - 30233088*x5*x6**12 - 17496*x5*x6**6, -58773123072*x6**19 - 47869056*x6**13 - 45657*x6**7 + x6, -2548*x4**2*x6 + 91728*x4*x6**4 + 362797056*x6**13 - 33696*x6**7 - 141*x6 -, -17199*x5**4*x6 + 1238328*x5**2*x6**5 + 4353564672*x6**15 - 5003856*x6**9 - - 1328*x6**3, -4245696*x5**2*x6**7 - 91*x5**2*x6 + 8707129344*x6**17 - 12130560*x6**11 -+ 256*x6**5, -7*x3 - 567*x5**5 - 204120*x5**3*x6**4 + 524880*x5*x6**8 - 90*x5*x6**2, -8491392*x4*x6**7 - 182*x4*x6 + 19591041024*x6**16 + 10917504*x6**10 - -243*x6**4, -2916*x5**7 - 567*x5**3*x6**2 + 347680512*x5*x6**12 + 196668*x5*x6**6 - 4 -*x5, -14*x1*x6 + 504*x4*x5*x6**2 + 252*x5**3*x6 + 20155392*x5*x6**11 + 8640*x5 -*x6**5 + 7*x6, -1911*x4*x5**2 - 68796*x4*x6**4 - 68796*x5**2*x6**3 - 362797056*x6**13 + -151632*x6**7 + 50*x6, -2548*x4**3 + 19813248*x4*x6**6 - 637*x4 + 39182082048*x6**15 + 30326400* -x6**9 + 4428*x6**3, -1274*x1*x5 + 1651104*x4*x6**5 + 5733*x5**4 + 1238328*x5**2*x6**4 + 637* -x5 + 6530347008*x6**14 - 1667952*x6**8 + 192*x6**2, -1274*x1**2 + 1274*x1 + 1274*x4**2 + 206388*x5**6 - 85995*x5**2*x6**2 - -11754624614400*x6**18 + 9498228480*x6**12 + 9295668*x6**6}$ - - setideal(m1,m1)$ - - setideal(m2,m2)$ - - - setgbasis m1$ - - setgbasis m2$ - - modequalp(m1,m2); - - -yes$ - - -% ==> Different hilbert series driver - - setideal(m,proj_monomial_curve(w1:={0,2,5,9},{w,x,y,z})); - - -{x**5 - w**3*y**2, -w*y**3 - x**3*z, -y**4 - w*x*z**2, -x**2*y - w**2*z}$ - - weights:={{1,1,1,1},w1}; - - -weights := {{1,1,1,1},{0,2,5,9}}$ - - hftestversion 2; - - -hf!=whilb2$ - - f1:=weightedhilbertseries(gbasis m,weights); - - -f1 := ( - w**5*x**17 + w**4*x**17 - w**4*x**15 + w**4*x**8 + w**3*x**15 + w**3* -x**12 + w**3*x**6 + w**2*x**10 + w**2*x**7 + w**2*x**4 + w*x**5 + w*x**2 - + 1)/(w**2*x**9 - w*x**9 - w + 1)$ - - sub(x=1,ws); - - -( - w**5 + w**4 + 3*w**3 + 3*w**2 + 2*w + 1)/(w**2 - 2*w + 1)$ - % The ordinary Hilbert series. - hftestversion 1; - - -hf!=whilb1$ - % The default. - f2:=weightedhilbertseries(gbasis m,weights); - - -f2 := ( - w**5*x**17 + w**4*x**17 - w**4*x**15 + w**4*x**8 + w**3*x**15 + w**3* -x**12 + w**3*x**6 + w**2*x**10 + w**2*x**7 + w**2*x**4 + w*x**5 + w*x**2 - + 1)/(w**2*x**9 - w*x**9 - w + 1)$ - - sub(x=1,ws); - - -( - w**5 + w**4 + 3*w**3 + 3*w**2 + 2*w + 1)/(w**2 - 2*w + 1)$ - - f1-f2; - - -0$ - - -% ==> Different primary decomposition approaches. The example is due - % to Shimoyama Takeshi. CALI 2.2. produced auxiliary embedded - % primes on it. - - vars:={dx,dy,x,y}; - - -vars := {dx,dy,x,y}$ - - setring(vars,degreeorder vars,revlex); - - -{{dx,dy,x,y},{{1,1,1,1}},revlex,{1,1,1,1}}$ - - f3:={DY*( - X*DX + Y**2*DY - Y*DY),DX*(X**2*DX - X*DX - Y*DY)}$ - - - primarydecomposition f3; - - -{{{dx**3, -dy**3, -dx**2*dy, -dx*dy**2, -dy*( - dx*x + dy*y**2 - dy*y), -dx*(dx*x**2 - dx*x - dy*y)}, -{dx,dy}}, -{{x*y - x - y, -dx*x - dx - dy*y + dy, - - dx + dy*y**2 - 2*dy*y + dy}, -{x*y - x - y, -dx*x - dx - dy*y + dy, - - dx + dy*y**2 - 2*dy*y + dy}}, -{{dy,x - 1},{dy,x - 1}}, -{{dy**2, -dy*x, -x**2, -dx*x + dy*y}, -{dy,x}}, -{{dx,y - 1},{dx,y - 1}}, -{{dx**2, -dx*y, -y**2, -dx*x + dy*y}, -{dx,y}}, -{{y**2, -x**2, -x*y, -dx*x + dy*y}, -{y,x}}}$ - - -showtime; - - -Time: 277500 ms plus GC time: 10350 ms - -end; -(TIME: cali 277530 287880) +REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ... + + +% Author H.-G. Graebe | Univ. Leipzig | Version 28.6.1995 +% graebe@informatik.uni-leipzig.de + +COMMENT + +This is an example session demonstrating and testing the facilities +offered by the commutative algebra package CALI. + +END COMMENT; + + +algebraic; + + +on echo; + + +off nat; + + % To make it easier to compare differing output. +showtime; + + +Time: 30 ms + + +comment + + #################################### + ### ### + ### Introductory Examples ### + ### ### + #################################### + +end comment; + + +% Example 1 : Generating ideals of affine and projective points. + + + vars:={t,x,y,z}; + + +vars := {t,x,y,z}$ + + setring(vars,degreeorder vars,revlex); + + +{{t,x,y,z},{{1,1,1,1}},revlex,{1,1,1,1}}$ + + mm:=mat((1,1,1,1),(3,2,3,1),(2,1,3,2)); + + +mm := mat((1,1,1,1),(3,2,3,1),(2,1,3,2))$ + + + % The ideal with zero set at the point in A^4 with coordinates + % equal to the row vectors of mm : + + setideal(m1,affine_points mm); + + +{z**2 - 3*z + 2, +y**2 - 4*y + 3, +t - y + z - 1, +2*x - y + 2*z - 3, +y*z - y - 3*z + 3}$ + + + % All parameters are as they should be : + + dim m1; + + +0$ + + degree m1; + + +3$ + + groebfactor m1; + + +{{z - 2,y - 3,t - 2,x - 1}, +{z - 1,t - 3,y - 3,x - 2}, +{z - 1,t - 1,y - 1,x - 1}}$ + + resolve m1$ + + + bettinumbers m1; + + +{1,5,9,7,2}$ + + + % The ideal with zero set at the point in P^3 with homogeneous + % coordinates equal to the row vectors of mm : + + setideal(m2,proj_points mm); + + +{2*y**2 - 2*x*z - 7*y*z + 7*z**2, +3*t - 2*x - 2*y + z, +2*x**2 - 4*x*z - y*z + 3*z**2, +2*x*y - 4*x*z - 3*y*z + 5*z**2}$ + + + % All parameters as they should be ? + + dim m2; + + +1$ + + degree m2; + + +3$ + + groebfactor m2; + + +{{2*y**2 - 2*x*z - 7*y*z + 7*z**2, +3*t - 2*x - 2*y + z, +2*x**2 - 4*x*z - y*z + 3*z**2, +2*x*y - 4*x*z - 3*y*z + 5*z**2}}$ + + + % It seems to be prime ? + + isprime m2; + + +no$ + + + % Not, of course, but it is known to be unmixed. + % Hence we can use + + easyprimarydecomposition m2; + + +{{{x - 2*z,y - 3*z,t - 3*z}, +{y - 3*z,x - 2*z,t - 3*z}}, +{{x - z,y - z,t - z}, +{y - z,x - z,t - z}}, +{{2*x - z,2*y - 3*z,t - z}, +{2*y - 3*z,2*x - z,t - z}}}$ + + +% Example 2 : +% The affine monomial curve with generic point (t^7,t^9,t^10). + + setideal(m,affine_monomial_curve({7,9,10},{x,y,z})); + + +{x**3*y - z**3, +x**4 - y**2*z, +y**3 - x*z**2}$ + + + % The base ring was changed as side effect : + + getring(); + + +{{x,y,z},{{7,9,10}},revlex,{7,9,10}}$ + + vars:=first getring m; + + +vars := {x,y,z}$ + + + % Some advanced commutative algebra : + + % The analytic spread of m. + + analytic_spread m; + + +3$ + + + % The Rees ring Rees_R(vars) over R=S/m. + + rees:=blowup(m,vars,{u,v,w}); + + +rees := {u**2*v*x - w**3, +u*v*x**2 - w**2*z, +v*x**3 - w*z**2, +u**3*x - v**2*w, +u**2*x**2 - v*w*y, +u*x**3 - w*y**2, + - u*w**2 + v**3, +v**2*y - w**2*x, +v*y**2 - w*x*z, +v*z - w*y, +u*z - w*x, +u*y - v*x, +x**3*y - z**3, +x**4 - y**2*z, + - x*z**2 + y**3}$ + + + % It is multihomogeneous wrt. the degree vectors, constructed during + % blow up. Lets compute weighted Hilbert series : + + setideal(rees,rees)$ + + + weights:=second getring(); + + +weights := {{0,0,0,7,9,10},{7,9,10,0,0,0}}$ + + weightedhilbertseries(gbasis rees,weights); + + +( - x**29*y + x**29 - x**20*y + x**20 - x**19*y**11 + x**19*y**10 - x**19*y + x +**19 - x**18*y + x**18 - x**10*y**11 + x**10*y**10 - x**10*y + x**10 - x**9*y +**21 + x**9*y**20 - x**9*y**11 + x**9*y**9 - x**9*y + x**9 + y**23 - y**22 + y +**16 - y**15 + y**14 - y**11 + y**9 - y**8 + y**7 - y + 1)/(x**7*y - x**7 - y ++ 1)$ + + + % gr_R(vars), the associated graded ring of the irrelevant ideal + % over R. The short way. + + interreduce sub(x=0,y=0,z=0,rees); + + +{w**3,v**2*w, - u*w**2 + v**3}$ + + + % The long (and more general) way. Gives the result in another + % embedding. + + % Restore the base ring, since it was changed by blowup as a side + % effect. + setring getring m$ + + + assgrad(m,vars,{u,v,w}); + + +{x, +y, +z, +w**3, +v**2*w, + - u*w**2 + v**3}$ + + + % Comparing the Rees algebra and the symmetric algebra of M : + + setring getring m$ + + + setideal(rees,blowup({},m,{a,b,c})); + + +{ - y**2*a + z**2*b + x**3*c, +x*a - y*b - z*c, + - y**2*a**2 + z**2*a*b + x**2*y*b*c + x**2*z*c**2, + - y**2*a**3 + z**2*a**2*b + x*y**2*b**2*c + 2*x*y*z*b*c**2 + x*z**2*c**3, + - y**2*a**4 + z**2*a**3*b + y**3*b**3*c + 3*y**2*z*b**2*c**2 + 3*y*z**2*b*c** +3 + z**3*c**4}$ + + + % Lets test weighted Hilbert series once more : + + weights:=second getring(); + + +weights := {{0,0,0,30,28,27},{7,9,10,0,0,0}}$ + + weightedhilbertseries(gbasis rees,weights); + + +(x**58*y**27 + x**30*y**25 - x**30*y**18 - x**30*y**7 - x**28*y**27 + 1)/(x**85 +*y**26 - x**85*y**19 - x**85*y**17 - x**85*y**16 + x**85*y**10 + x**85*y**9 ++ x**85*y**7 - x**85 - x**58*y**26 + x**58*y**19 + x**58*y**17 + x**58*y**16 + - x**58*y**10 - x**58*y**9 - x**58*y**7 + x**58 - x**57*y**26 + x**57*y**19 + + x**57*y**17 + x**57*y**16 - x**57*y**10 - x**57*y**9 - x**57*y**7 + x**57 + - x**55*y**26 + x**55*y**19 + x**55*y**17 + x**55*y**16 - x**55*y**10 - x** +55*y**9 - x**55*y**7 + x**55 + x**30*y**26 - x**30*y**19 - x**30*y**17 - x** +30*y**16 + x**30*y**10 + x**30*y**9 + x**30*y**7 - x**30 + x**28*y**26 - x** +28*y**19 - x**28*y**17 - x**28*y**16 + x**28*y**10 + x**28*y**9 + x**28*y**7 + - x**28 + x**27*y**26 - x**27*y**19 - x**27*y**17 - x**27*y**16 + x**27*y** +10 + x**27*y**9 + x**27*y**7 - x**27 - y**26 + y**19 + y**17 + y**16 - y**10 + - y**9 - y**7 + 1)$ + + + % The symmetric algebra : + + setring getring m$ + + + setideal(sym,sym(m,{a,b,c})); + + +{y**2*a - z**2*b - x**3*c, +x*a - y*b - z*c}$ + + modequalp(rees,sym); + + +yes$ + + + % Symbolic powers : + + setring getring m$ + + + setideal(m2,idealpower(m,2)); + + +{x**6*y**2 - 2*x**3*y*z**3 + z**6, +x**8 - 2*x**4*y**2*z + y**4*z**2, +y**6 - 2*x*y**3*z**2 + x**2*z**4, +x**7*y - x**3*y**3*z - x**4*z**3 + y**2*z**4, +x**3*y**4 - x**4*y*z**2 - y**3*z**3 + x*z**5, +x**4*y**3 - y**5*z - x**5*z**2 + x*y**2*z**3}$ + + + % Let's compute a second symbolic power : + + setideal(m3,symbolic_power(m,2)); + + +{x**6*y**2 - 2*x**3*y*z**3 + z**6, +x**8 - 2*x**4*y**2*z + y**4*z**2, +y**6 - 2*x*y**3*z**2 + x**2*z**4, +x**2*y**5 + x**7*z - 3*x**3*y**2*z**2 + y*z**5, +x**7*y - x**3*y**3*z - x**4*z**3 + y**2*z**4, +x**3*y**4 - x**4*y*z**2 - y**3*z**3 + x*z**5, +x**4*y**3 - y**5*z - x**5*z**2 + x*y**2*z**3}$ + + + % It is different from the ordinary second power. + % Hence m2 has a trivial component. + + modequalp(m2,m3); + + +no$ + + + % Test x for non zero divisor property : + + nzdp(x,m2); + + +no$ + + nzdp(x,m3); + + +yes$ + + + % Here is the primary decomposition : + + pd:=primarydecomposition m2; + + +pd := {{{x**8 - 2*x**4*y**2*z + y**4*z**2, +x**6*y**2 - 2*x**3*y*z**3 + z**6, +x**2*z**4 - 2*x*y**3*z**2 + y**6, +x**7*z - 3*x**3*y**2*z**2 + x**2*y**5 + y*z**5, +x**7*y - x**4*z**3 - x**3*y**3*z + y**2*z**4, + - x**4*y*z**2 + x**3*y**4 + x*z**5 - y**3*z**3, + - x**5*z**2 + x**4*y**3 + x*y**2*z**3 - y**5*z}, +{ - x*z**2 + y**3, +x**4 - y**2*z, +x**3*y - z**3}}, +{{z**2, +x**6*y**2, +y**6, +x**2*y**5*z, +x**3*y**4, +x**4*(x**4 - 2*y**2*z), +x**3*y*(x**4 - y**2*z), +y**3*(x**4 - y**2*z)}, +{x,z,y}}}$ + + + % Compare the result with m2 : + + setideal(m4,matintersect(first first pd, first second pd)); + + +{y**6 - 2*x*y**3*z**2 + x**2*z**4, +x**6*y**2 - 2*x**3*y*z**3 + z**6, +x**8 - 2*x**4*y**2*z + y**4*z**2, +x**2*y**5*z + x**7*z**2 - 3*x**3*y**2*z**3 + y*z**6, +x**4*y**3 - y**5*z - x**5*z**2 + x*y**2*z**3, +x**3*y**4 - x**4*y*z**2 - y**3*z**3 + x*z**5, +x**7*y - x**3*y**3*z - x**4*z**3 + y**2*z**4}$ + + modequalp(m2,m4); + + +yes$ + + + % Compare the result with m3 : + + setideal(m4,first first pd)$ + + + modequalp(m3,m4); + + +yes$ + + + % The trivial component can also be removed with a stable + % quotient computation : + + setideal(m5,matstabquot(m2,vars))$ + + + modequalp(m3,m5); + + +yes$ + + + +% Example 3 : The Macaulay curve. + + setideal(m,proj_monomial_curve({0,1,3,4},{w,x,y,z})); + + +{x**3 - w**2*y, +w*y**2 - x**2*z, +y**3 - x*z**2, +x*y - w*z}$ + + vars:=first getring(); + + +vars := {w,x,y,z}$ + + gbasis m; + + +{x**3 - w**2*y, +w*y**2 - x**2*z, +y**3 - x*z**2, +x*y - w*z}$ + + + % Test whether m is prime : + + isprime m; + + +yes$ + + + % A resolution of m : + + resolve m; + + +{ +mat((x**3 - w**2*y),(w*y**2 - x**2*z),(y**3 - x*z**2),(x*y - w*z))$ +, + +mat((y,w,0, - x**2),(z,x,0, - w*y),(0, - y,w, - x*z),(0, - z,x, - y**2))$ +, + +mat((z, - y, - x,w))$ +, + +mat((0))$ +}$ + + + % m has depth = 1 as can be seen from the + + gradedbettinumbers m; + + +{{0},{2,3,3,3},{4,4,4,4},{5}}$ + + + % Another way to see the non perfectness of m : + + hilbertseries m; + + +( - w**3 + 2*w**2 + 2*w + 1)/(w**2 - 2*w + 1)$ + + + % Just a third approach. Divide out a parameter system : + + ps:=for i:=1:2 collect random_linear_form(vars,1000); + + +ps := {927*w + 880*x + 292*y + 9*z, - 819*w + 224*x - 572*y - 205*z}$ + + setideal(m1,matsum(m,ps))$ + + + + % dim should be zero and degree > degree m = 4. + % A Gbasis for m1 is computed automatically. + + dim m1; + + +0$ + + degree m1; + + +5$ + + + % The projections of m on the coord. hyperplanes. + + for each x in vars collect eliminate(m,{x}); + + +{{ - x*z**2 + y**3}, +{ - w*z**3 + y**4}, +{ - w**3*z + x**4}, +{ - w**2*y + x**3}}$ + + +% Example 4 : Two submodules of S^4. + + % Get the stored result of the earlier computation. + + r:=resolve m$ + + + + % See whether cali!=degrees contains a relict from earlier + % computations. + + getdegrees(); + + +{}$ + + + % Introduce the 2nd and 3rd syzygy module as new modules. + % Both are submodules in S^4. + + setmodule(m1,second r)$ + + setmodule(m2,third r)$ + + + + % The second is already a gbasis. + + setgbasis m2; + + +mat((z, - y, - x,w))$ + + getleadterms m1; + + +mat((0,x**3,0,0),(0,0,x**3,0),(0,0,w**2*y,0),(0,0,w*y**2,0),(0,0,w*x,0),(0,0,0, +x**2),(0,0,0,w*y),(0,0,0,x*z),(0,0,0,y**2))$ + getleadterms m2; + + +mat((0,0,0,w))$ + + + % Since rk(F/M)=rk(F/in(M)), they have ranks 1 resp. 3. + + dim m1; + + +4$ + + indepvarsets m1; + + +{{w,x,y,z}}$ + + + % Its intersection is zero : + + matintersect(m1,m2); + + +mat((0,0,0,0))$ + + + % Its sum : + + setmodule(m3,matsum(m1,m2)); + + +mat(( - y, - w,0,x**2),(0,y, - w,x*z),(0,z, - x,y**2),(z, - y, - x,w),( - y*z - + z,y**2 - x,x*y,0))$ + + dim m3; + + +3$ + + + % Hence it has a nontrivial annihilator : + + annihilator m3; + + +{w**2*y*z + w**2*z - w*x*y + w*y**3 - x**3*z - x**2*y*z - x**2*z**2 + x*y**3}$ + + + % One can compute isolated primes and primary decomposition also for + % modules. Let's do it, although being trivial here: + + isolatedprimes m3; + + +{{w**2*y*z + w**2*z - w*x*y + w*y**3 - x**3*z - x**2*y*z - x**2*z**2 + x*y**3}} +$ + + + primarydecomposition m3; + + +{{ +mat((z*( - w*x*z - w*y*z + w*y - w*z + x**2*z + x*y*z - y**3 + y**2*z),w**2*y + + w**2*z + w*x*y*z + w*x*z**2 - w*x*z + w*y*z**2 - x**2*z**2 + x*y**2*z +, - w**3,0),(z*( - w*y - w - x*z + y**2), - w*x + w*y*z - x**2*z + x*y**2,w**2* +y,0),( - x*z**2,w*y + x*y*z + x*z**2 - y**3,w*( - w + y**2),0),( - x*z**2,y*(w ++ x*z), - w**2 + x**2*z,0),( - y*z, - (w*z + x*y),w*x,0),( - w*y**2 + x**2*z, - + w**2*y + x**3,0,0),(w*y*z - w*y + w*z - x**2*z + y**3 - y**2*z, - w**2 + w*x - + w*y*z + x**2* +y + x**2*z - x*y**2,0,0),( - w*y*z - w*z - y**3 + y**2*z, - w*x + w*y*z - x**2* +z + x*y**2,x**3,0),(z*( - w*y - w + y**2), - w*x + w*y**2 + w*y*z + x*y**2,0,0) +,( - z*(y + 1), - x + y**2,x*y,0),(z, - y, - x,w),(w**2*y*z + w**2*z - w*x*y + +w*y**3 - x**3*z - x**2*y*z - x**2*z**2 + x*y +**3,0,0,0),( - y, - w,0,x**2),(0,y, - w,x*z),(0,z, - x,y**2))$ +, +{w**2*y*z + w**2*z - w*x*y + w*y**3 - x**3*z - x**2*y*z - x**2*z**2 + x*y**3}}} +$ + + + % To get a meaningful Hilbert series make m1 homogeneous : + + setdegrees {1,x,x,x}; + + +{1,x,x,x}$ + + + % Reevaluate m1 with the new column degrees. + + setmodule(m1,m1)$ + + + hilbertseries m1; + + +(w**7 - 5*w**6 + 8*w**5 - 2*w**4 - 5*w**3 + 3*w + 1)/(w**4 - 4*w**3 + 6*w**2 - +4*w + 1)$ + + +% Example 5 : From the MACAULAY manual (D.Bayer, M.Stillman). +% An elliptic curve on the Veronese in P^5. + + rvars:={x,y,z}$ + + svars:={a,b,c,d,e,f}$ + + + r:=setring(rvars,degreeorder rvars,revlex)$ + + + s:=setring(svars,{for each x in svars collect 2},revlex)$ + + + map:={s,r,{a=x^2,b=x*y,c=x*z,d=y^2,e=y*z,f=z^2}}; + + +map := {{{a, +b, +c, +d, +e, +f}, +{{2,2,2,2,2,2}}, +revlex, +{1,1,1,1,1,1}}, +{{x,y,z}, +{{1,1,1}}, +revlex, +{1,1,1}}, +{a=x**2, +b=x*y, +c=x*z, +d=y**2, +e=y*z, +f=z**2}}$ + + preimage({y^2z-x^3-x*z^2},map); + + +{ - a*d + b**2, + - a*e + b*c, + - b*e + c*d, + - a*f + c**2, + - b*f + c*e, + - d*f + e**2, +a**2 + a*f - b*e, +a*b + b*f - d*e, +a*c + c*f - d*f}$ + + +% Example 6 : The preimage under a rational map. + + r:=setring({x,y},{},lex)$ + + s:=setring({t},{},lex)$ + + + map:={r,s,{x=2t/(t^2+1),y=(t^2-1)/(t^2+1)}}; + + +map := {{{x,y},{},lex,{1,1}}, +{{t},{},lex,{1}}, +{x=(2*t)/(t**2 + 1),y=(t**2 - 1)/(t**2 + 1)}}$ + + + % The preimage of (0) is the equation of the circle : + + ratpreimage({},map); + + +{x**2 + y**2 - 1}$ + + + % The preimage of the point (t=3/2) : + + ratpreimage({2t-3},map); + + +{13*x - 12,13*y - 5}$ + + + +% Example 7 : A zerodimensional ideal. + + setring({x,y,z},{},lex)$ + + + setideal(n,{x**2 + y + z - 3,x + y**2 + z - 3,x + y + z**2 - 3}); + + +{x**2 + y + z - 3,x + y**2 + z - 3,x + y + z**2 - 3}$ + + + % The groebner algorithm with factorization : + + groebfactor n; + + +{{y - 1,z - 1,x - 1}, +{y + 3,z + 3,x + 3}, +{y - z,z**2 - 2,x + z - 1}, +{z**2 - 2,x - z,y + z - 1}, +{y + z - 1,z**2 - 2*z - 1,x + z - 1}}$ + + + % Change the term order and reevaluate n : + + setring({x,y,z},{{1,1,1}},revlex)$ + + + setideal(n,n); + + +{x**2 + y + z - 3,y**2 + x + z - 3,z**2 + x + y - 3}$ + + + % its primes : + + zeroprimes n; + + +{{x - z,z**2 - 2,y + z - 1}, +{x + z - 1,y + z - 1,z**2 - 2*z - 1}, +{z - 1,x - 1,y - 1}, +{z + 3,x + 3,y + 3}, +{y - z,z**2 - 2,x + z - 1}}$ + + + % a vector space basis of S/n : + + getkbase n; + + +{1,x,x*y,x*y*z,x*z,y,y*z,z}$ + + +% Example 8 : A modular computation. Since REDUCE has no multivariate +% factorizer, factorprimes has to be turned off ! + + on modular$ + + off factorprimes$ + + + setmod 181; + + +1$ + setideal(n1,n); + + +{x**2 + y + z + 178,y**2 + x + z + 178,z**2 + x + y + 178}$ + zeroprimes n1; + + +{{y + 180*z,z**2 + 179,x + z + 180}, +{x + z + 180,y + z + 180,z**2 + 179*z + 180}, +{x + 180*z,z**2 + 179,y + z + 180}, +{z + 180,x + 180,y + 180}, +{z + 3,x + 3,y + 3}}$ + + setmod 7; + + +181$ + setideal(n1,n); + + +{x**2 + y + z + 4,y**2 + x + z + 4,z**2 + x + y + 4}$ + zeroprimes n1; + + +{{z + 6,x + 6,y + 6}, +{x + 4,z + 4,y + 2}, +{x + 4,z + 2,y + 4}, +{z + 4,x + 2,y + 4}, +{x + 3,z + 3,y + 3}}$ + + + % Hence some of the primes glue together mod 7. + + zeroprimarydecomposition n1; + + +{{{z + 6,x + 6,y + 6}, +{z + 6,x + 6,y + 6}}, +{{z + 4,y + 2,x + 4}, +{x + 4,z + 4,y + 2}}, +{{z + 2,y + 4,x + 4}, +{x + 4,z + 2,y + 4}}, +{{z + 4,x + 2,y + 4}, +{z + 4,x + 2,y + 4}}, +{{x**2 + y + z + 4, +x + y**2 + z + 4, +x + y + z**2 + 4, +3*(x + 5*y*z + 2*y + 2*z + 5), +x*z + 6*x + 3*y + 6*z + 1, +x*y + 6*x + 6*y + 3*z + 1}, +{x + 3,z + 3,y + 3}}}$ + + off modular$ + + on factorprimes$ + + + +% Example 9 : Independent sets once more. + + n:=10$ + + + vars:=for i:=1:(2*n) collect mkid(x,i)$ + + + setring(vars,{},lex)$ + + + setideal(m,for j:=0:n collect + for i:=(j+1):(j+n) product mkid(x,i)); + + +{x1*x2*x3*x4*x5*x6*x7*x8*x9*x10, +x2*x3*x4*x5*x6*x7*x8*x9*x10*x11, +x3*x4*x5*x6*x7*x8*x9*x10*x11*x12, +x4*x5*x6*x7*x8*x9*x10*x11*x12*x13, +x5*x6*x7*x8*x9*x10*x11*x12*x13*x14, +x6*x7*x8*x9*x10*x11*x12*x13*x14*x15, +x7*x8*x9*x10*x11*x12*x13*x14*x15*x16, +x8*x9*x10*x11*x12*x13*x14*x15*x16*x17, +x9*x10*x11*x12*x13*x14*x15*x16*x17*x18, +x10*x11*x12*x13*x14*x15*x16*x17*x18*x19, +x11*x12*x13*x14*x15*x16*x17*x18*x19*x20}$ + + setgbasis m$ + + + indepvarsets m; + + +{{x2,x3,x4,x5,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x3,x4,x5,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x4,x5,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x5,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x6,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x7,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x8,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x9,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x10,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x12,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x3,x4,x5,x6,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x4,x5,x6,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x5,x6,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x6,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x13,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x4,x5,x6,x7,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x5,x6,x7,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x6,x7,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x14,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x5,x6,x7,x8,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x6,x7,x8,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x15,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x6,x7,x8,x9,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x16,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x7,x8,x9,x10,x11,x12,x13,x14,x15,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x13,x14,x15,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x14,x15,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x15,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x17,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x8,x9,x10,x11,x12,x13,x14,x15,x16,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x14,x15,x16,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x15,x16,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x16,x18,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x9,x10,x11,x12,x13,x14,x15,x16,x17,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x15,x16,x17,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x16,x17,x19,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x10,x11,x12,x13,x14,x15,x16,x17,x18,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x16,x17,x18,x20}, +{x1,x2,x3,x4,x5,x6,x7,x8,x9,x11,x12,x13,x14,x15,x16,x17,x18,x19}}$ + + dim m; + + +18$ + + degree m; + + +55$ + + + +comment + + #################################### + ### ### + ### Local Standard Bases ### + ### ### + #################################### + +end comment; + + + +% Example 10 : An example from [ Alonso, Mora, Raimondo ] + + vars := {z,x,y}$ + + + r:=setring(vars,{},lex)$ + + + setideal(m,{x^3+(x^2-y^2)*z+z^4,y^3+(x^2-y^2)*z-z^4}); + + +{z**4 + z*x**2 - z*y**2 + x**3, + - z**4 + z*x**2 - z*y**2 + y**3}$ + + dim m; + + +1$ + + degree m; + + +12$ + + + % 2 = codim m is the codimension of the curve m. The defining + % equations of the singular locus with their nilpotent structure : + + singular_locus(m,2); + + +{x**3 - y**3 + 2*z**4, +x**3 + 2*x**2*z + y**3 - 2*y**2*z, +y*(8*x**3 + 3*x**2*y - 11*y**3 + 12*y*z**3), +y*(x**3 + 3*x**2*y + 2*x*y*z + y**3 - 2*y**2*z), +3*x**5 + 3*x**4*y + 22*x**4 + 18*x**3*y**2 + 16*x**3*y + 21*x**2*y**3 + 3*x*y +**4 - 16*x*y**3 + 18*y**5 - 42*y**4*z - 22*y**4 + 24*y**3*z**2}$ + + groebfactor ws; + + +{{y,x,z},{81*x + 256,27*z - 64,81*y - 256}}$ + + + % Hence this curve has two singular points : + % (x=y=z=0) and (y=-x=256/81,z=64/27) + % Let's find the brances of the curve through the origin. + % The first critical tropism is (-1,-1,-1). + + off noetherian$ + + + setring(vars,{{-1,-1,-1}},lex)$ + + + setideal(m,m); + + +{z*x**2 - z*y**2 + x**3 + z**4, +z*x**2 - z*y**2 + y**3 - z**4}$ + + % Let's first test two different approaches, not fully + % integrated into the algebraic interface : + setideal(m1,homstbasis m); + + +{x**3 - y**3 + 2*z**4, +z*x**2 - z*y**2 + y**3 - z**4, +z*x*y**2 - z*y**3 - x*y**3 + 2*z**5 + z**4*x, +x**2*y**3 + x*y**4 + y**5 - 2*z**5*x - 2*z**5*y - z**4*x**2 - z**4*x*y - z**4* +y**2, +6*z*y**5 + 2*x*y**5 - 2*y**6 - 4*z**6*x - 4*z**6*y - 2*z**5*x*y - 8*z**5*y**2 ++ z**4*x**3 - 2*z**4*x*y**2 + 3*z**4*y**3}$ + + setideal(m2,lazystbasis m); + + +{x**3 - y**3 + 2*z**4, +z*x**2 - z*y**2 + y**3 - z**4, +z*x*y**2 - z*y**3 - x*y**3 + 2*z**5 + z**4*x, +x**2*y**3 + x*y**4 + y**5 - 2*z**5*x - 2*z**5*y - z**4*x**2 - z**4*x*y - z**4* +y**2, +3*z*y**5 + x*y**5 - y**6 - 2*z**6*x - 2*z**6*y - z**5*x**2 - z**5*x*y - 3*z**5 +*y**2 - z**4*x*y**2 + z**4*y**3}$ + + setgbasis m1$ + + setgbasis m2$ + + + modequalp(m1,m2); + + +yes$ + + gbasis m; + + +{x**3 - y**3 + 2*z**4, +z*x**2 - z*y**2 + y**3 - z**4, +z*x*y**2 - z*y**3 - x*y**3 + 2*z**5 + z**4*x, +x**2*y**3 + x*y**4 + y**5 - 2*z**5*x - 2*z**5*y - z**4*x**2 - z**4*x*y - z**4* +y**2, +3*z*y**5 + x*y**5 - y**6 - 2*z**6*x - 2*z**6*y - z**5*x**2 - z**5*x*y - 3*z**5 +*y**2 - z**4*x*y**2 + z**4*y**3}$ + + modequalp(m,m1); + + +yes$ + + dim m; + + +1$ + + degree m; + + +9$ + + + % Find the tangent directions not in z-direction : + + tangentcone m; + + +{x**3 - y**3, +z*x**2 - z*y**2 + y**3, +z*x*y**2 - z*y**3 - x*y**3, +x**2*y**3 + x*y**4 + y**5, +3*z*y**5 + x*y**5 - y**6}$ + + setideal(n,sub(z=1,ws)); + + +{x**3 - y**3, +x**2 - y**2 + y**3, +x*y**2 - y**3 - x*y**3, +x**2*y**3 + x*y**4 + y**5, +3*y**5 + x*y**5 - y**6}$ + + setring r$ + + on noetherian$ + + setideal(n,n)$ + + + degree n; + + +9$ + + + % The points of n outside the origin. + + matstabquot(n,{x,y}); + + +{y**2 - 3*y + 3,x - y + 3}$ + + + % Hence there are two branches x=z'*(a-3+x'),y=z'*(a+y'),z=z' + % with the algebraic number a : a^2-3a+3=0 + % and the new equations for (z',x',y') : + + setrules {a^2=>3a-3}; + + +{a**2 => 3*a - 3}$ + + sub(x=z*(a-3+x),y=z*(a+y),m); + + +{z**3*(a**3 + 3*a**2*x - 9*a**2 + 3*a*x**2 - 16*a*x - 2*a*y + 21*a + x**3 - 8*x +**2 + 21*x - y**2 + z - 18), +z**3*(a**3 + 3*a**2*y + 2*a*x + 3*a*y**2 - 2*a*y - 6*a + x**2 - 6*x + y**3 - y +**2 - z + 9)}$ + + setideal(m1,matqquot(ws,z)); + + +{x**3 + (3*a - 7)*x**2 - (5*a - 6)*x + y**3 + (3*a - 2)*y**2 + (5*a - 9)*y, +z - x**2 - (2*a - 6)*x - y**3 - (3*a - 1)*y**2 - (7*a - 9)*y}$ + + + % This defines a loc. smooth system at the origin, since the + % jacobian at the origin of the gbasis is nonsingular : + + off noetherian$ + + + setring getring m; + + +{{z,x,y},{{-1,-1,-1}},lex,{1,1,1}}$ + + setideal(m1,m1); + + +{ - (5*a - 6)*x + (5*a - 9)*y + (3*a - 7)*x**2 + (3*a - 2)*y**2 + x**3 + y**3, +z - (2*a - 6)*x - (7*a - 9)*y - x**2 - (3*a - 1)*y**2 - y**3}$ + + gbasis m1; + + +{(5*a - 6)*x - (5*a - 9)*y - (3*a - 7)*x**2 - (3*a - 2)*y**2 - x**3 - y**3, +(5*a - 6)*z + 27*y + (9*a - 18)*x**2 - (18*a - 45)*y**2 - (2*a - 6)*x**3 - (7* +a - 12)*y**3}$ + + + % clear the rules previously set. + + setrules {}; + + +{}$ + + + +% Example 11 : The standard basis of another example. + + % Comparing different approaches. + + vars:={x,y}$ + + + setring(vars,localorder vars,lex); + + +{{x,y},{{-1,-1}},lex,{1,1}}$ + + ff:=x^5+y^11+(x+x^3)*y^9; + + +ff := x**5 + x**3*y**9 + x*y**9 + y**11$ + + setideal(p1,mat2list matjac({ff},vars)); + + +{5*x**4 + y**9 + 3*x**2*y**9, +9*x*y**8 + 11*y**10 + 9*x**3*y**8}$ + + gbasis p1; + + +{5*x**4 + y**9 + 3*x**2*y**9, +9*x*y**8 + 11*y**10 + 9*x**3*y**8, +73205*y**16 + 6561*y**17 - 32805*x**10*y**8 + 294030*x**6*y**12 - 292820*x**2* +y**16 + 120285*x**9*y**10 - 239580*x**5*y**14 + 19683*x**2*y**17}$ + + + gbtestversion 2$ + + + setideal(p2,p1); + + +{5*x**4 + y**9 + 3*x**2*y**9, +9*x*y**8 + 11*y**10 + 9*x**3*y**8}$ + + gbasis p2; + + +{5*x**4 + y**9 + 3*x**2*y**9, +9*x*y**8 + 11*y**10 + 9*x**3*y**8, +73205*y**16 + 6561*y**17 - 32805*x**10*y**8 + 294030*x**6*y**12 - 292820*x**2* +y**16 + 120285*x**9*y**10 - 239580*x**5*y**14 + 19683*x**2*y**17}$ + + + gbtestversion 3$ + + + setideal(p3,p1); + + +{5*x**4 + y**9 + 3*x**2*y**9, +9*x*y**8 + 11*y**10 + 9*x**3*y**8}$ + + gbasis p3; + + +{5*x**4 + y**9 + 3*x**2*y**9, +9*x*y**8 + 11*y**10 + 9*x**3*y**8, +73205*y**16 + 6561*y**17 - 32805*x**10*y**8 + 294030*x**6*y**12 - 292820*x**2* +y**16 + 120285*x**9*y**10 - 239580*x**5*y**14 + 19683*x**2*y**17}$ + + + gbtestversion 1$ + + + modequalp(p1,p2); + + +yes$ + + modequalp(p1,p3); + + +yes$ + + dim p1; + + +0$ + + degree p1; + + +40$ + + +% Example 12 : A local intersection wrt. a non inflimited term order. + + setring({x,y,z},{},revlex); + + +{{x,y,z},{},revlex,{1,1,1}}$ + + m1:=matintersect({x-y^2,y-x^2},{x-z^2,z-x^2},{y-z^2,z-y^2}); + + +m1 := {y*z - x**3*y*z - x*y*z**2 + x**4*y*z**2 - y**2*z**2 + x**3*y**2*z**2 + x +*y**2*z**3 - x**4*y**2*z**3, +x*z - x**2*y*z - x**2*z**2 - x*y*z**2 + x**3*y*z**2 + x**2*y**2*z**2 + x +**2*y*z**3 - x**3*y**2*z**3, +x*y - x**2*y**2 - x**2*y*z - x*y**2*z + x**3*y**2*z + x**2*y**3*z + x**2 +*y**2*z**2 - x**3*y**3*z**2}$ + + + % Delete polynomial units post factum : + + deleteunits ws; + + +{y*z,x*z,x*y}$ + + + % Detecting polynomial units early : + + on detectunits; + + + m1:=matintersect({x-y^2,y-x^2},{x-z^2,z-x^2},{y-z^2,z-y^2}); + + +m1 := {y*z,x*z,x*y}$ + + off detectunits; + + + + +comment + + #################################### + ### ### + ### More Advanced Computations ### + ### ### + #################################### + +end comment; + + + % Return to a noetherian term order: + + vars:={x,y,z}$ + + + setring(vars,degreeorder vars,revlex); + + +{{x,y,z},{{1,1,1}},revlex,{1,1,1}}$ + + on noetherian; + + + +% Example 13 : Use of "mod". + + % Polynomials modulo ideals : + + setideal(m,{2x^2+y+5,3y^2+z+7,7z^2+x+1}); + + +{2*x**2 + y + 5,3*y**2 + z + 7,7*z**2 + x + 1}$ + + x^2*y^2*z^2 mod m; + + +( - x*y*z - 7*x*y - 5*x*z - 35*x - y*z - 7*y - 5*z - 35)/42$ + + + % Lists of polynomials modulo ideals : + + {x^3,y^3,z^3} mod gbasis m; + + +{(x*( - y - 5))/2,(y*( - z - 7))/3,( - z*(x + 1))/7}$ + + + % Matrices modulo modules : + + mm:=mat((x^4,y^4,z^4)); + + +mm := mat((x**4,y**4,z**4))$ + + mm1:=tp<< ideal2mat m>>; + + +mm1 := mat((2*x**2 + y + 5,3*y**2 + z + 7,x + 7*z**2 + 1))$ + + mm mod mm1; + + +mat(((y**2 + 10*y + 25)/4,( - 6*x**2*y**2 - 2*x**2*z - 14*x**2 + 4*y**4 + 3*y** +3 + 15*y**2 + y*z + 7*y + 5*z + 35)/4,( - 2*x**3 - 14*x**2*z**2 - 2*x** +2 + x*y + 5*x + 7*y*z**2 + y + 4*z**4 + 35*z**2 + 5)/4))$ + + +% Example 14 : Powersums through elementary symmetric functions. + + vars:={a,b,c,d,e1,e2,e3,e4}$ + + + setring(vars,{},lex)$ + + + m:=interreduce {a+b+c+d-e1, + a*b+a*c+a*d+b*c+b*d+c*d-e2, + a*b*c+a*b*d+a*c*d+b*c*d-e3, + a*b*c*d-e4}; + + +m := {d**4 - d**3*e1 + d**2*e2 - d*e3 + e4, +a + b + c + d - e1, +c**3 + c**2*d - c**2*e1 + c*d**2 - c*d*e1 + c*e2 + d**3 - d**2*e1 + d*e2 +- e3, +b**2 + b*c + b*d - b*e1 + c**2 + c*d - c*e1 + d**2 - d*e1 + e2}$ + + + for n:=1:5 collect a^n+b^n+c^n+d^n mod m; + + +{e1, +e1**2 - 2*e2, +e1**3 - 3*e1*e2 + 3*e3, +e1**4 - 4*e1**2*e2 + 4*e1*e3 + 2*e2**2 - 4*e4, +e1**5 - 5*e1**3*e2 + 5*e1**2*e3 + 5*e1*e2**2 - 5*e1*e4 - 5*e2*e3}$ + + +% Example 15 : The setrules mechanism. + + setring({x,y,z},{},lex)$ + + + setrules {aa^3=>aa+1}; + + +{aa**3 => aa + 1}$ + + setideal(m,{x^2+y+z-aa,x+y^2+z-aa,x+y+z^2-aa}); + + +{x**2 + y + z - aa,x + y**2 + z - aa,x + y + z**2 - aa}$ + + gbasis m; + + +{y**2 - y - z**2 + z, +x + y + z**2 - aa, +2*y*z**2 - (2*aa - 2)*y + z**4 - (2*aa - 1)*z**2 + (aa**2 - aa), +z**6 - (3*aa + 1)*z**4 + 4*z**3 + (3*aa**2 - 2*aa - 2)*z**2 - (4*aa - 4)*z + ( +3*aa**2 - 3*aa - 1)}$ + + + % Clear the rules previously set. + + setrules {}; + + +{}$ + + +% Example 16 : The same example with advanced coefficient domains. + + load_package arnum; + + + defpoly aa^3-aa-1; + + + setideal(m,{x^2+y+z-aa,x+y^2+z-aa,x+y+z^2-aa}); + + +{x**2 + y + z - aa,x + y**2 + z - aa,x + y + z**2 - aa}$ + + gbasis m; + + +{y**2 - y - z**2 + z, +x + y + z**2 - aa, +y*z**2 - (aa - 1)*y + 1/2*z**4 - (aa - 1/2)*z**2 + (1/2*aa**2 - 1/2*aa), +z**6 - (3*aa + 1)*z**4 + 4*z**3 + (3*aa**2 - 2*aa - 2)*z**2 - (4*aa - 4)*z + ( +3*aa**2 - 3*aa - 1)}$ + + + % The following needs some more time since factorization of + % arnum's is not so easy : + + groebfactor m; + + +{{y - (aa**2 - aa - 1), +z - (aa**2 - aa - 1), +x + (aa**2 - aa - 2)}, +{y + (aa**2 - aa - 1), +z + (aa**2 - aa - 1), +x - (aa**2 - aa)}, +{y - z,x - z,z**2 + 2*z - aa}, +{z - (aa**2 - aa), +y + (aa**2 - aa - 1), +x + (aa**2 - aa - 1)}, +{z - (aa**2 - aa - 1), +y + (aa**2 - aa - 2), +x - (aa**2 - aa - 1)}, +{z + (aa**2 - aa - 2), +y - (aa**2 - aa - 1), +x - (aa**2 - aa - 1)}, +{z + (aa**2 - aa - 1), +y - (aa**2 - aa), +x + (aa**2 - aa - 1)}}$ + + off arnum; + + + off rational; + + + + +comment + + #################################### + ### ### + ### Using Advanced Scripts in ### + ### a Complex Example ### + ### ### + #################################### + +end comment; + + + +% Example 17 : The square of the 2-minors of a symmetric 3x3-matrix. + + vars:=for i:=1:6 collect mkid(x,i); + + +vars := {x1, +x2, +x3, +x4, +x5, +x6}$ + + setring(vars,degreeorder vars,revlex); + + +{{x1,x2,x3,x4,x5,x6},{{1,1,1,1,1,1}},revlex,{1,1,1,1,1,1}}$ + + + % Generating the ideal : + + mm:=mat((x1,x2,x3),(x2,x4,x5),(x3,x5,x6)); + + +mm := mat((x1,x2,x3),(x2,x4,x5),(x3,x5,x6))$ + + m:=ideal_of_minors(mm,2); + + +m := { - x1*x4 + x2**2, + - x1*x5 + x2*x3, + - x1*x6 + x3**2, + - x2*x5 + x3*x4, + - x2*x6 + x3*x5, + - x4*x6 + x5**2}$ + + setideal(n,idealpower(m,2)); + + +{x2**4 - 2*x1*x2**2*x4 + x1**2*x4**2, +x3**4 - 2*x1*x3**2*x6 + x1**2*x6**2, +x5**4 - 2*x4*x5**2*x6 + x4**2*x6**2, +x2**2*x3**2 - 2*x1*x2*x3*x5 + x1**2*x5**2, +x3**2*x5**2 - 2*x2*x3*x5*x6 + x2**2*x6**2, +x2**3*x3 - x1*x2*x3*x4 - x1*x2**2*x5 + x1**2*x4*x5, +x2*x3**3 - x1*x3**2*x5 - x1*x2*x3*x6 + x1**2*x5*x6, +x2**2*x3*x4 - x1*x3*x4**2 - x2**3*x5 + x1*x2*x4*x5, +x2**2*x3*x5 - x1*x3*x4*x5 - x2**3*x6 + x1*x2*x4*x6, +x2*x3**2*x5 - x1*x3*x5**2 - x2**2*x3*x6 + x1*x2*x5*x6, +x3**3*x5 - x2*x3**2*x6 - x1*x3*x5*x6 + x1*x2*x6**2, +x2**2*x5**2 - x1*x4*x5**2 - x2**2*x4*x6 + x1*x4**2*x6, +x2*x3*x5**2 - x1*x5**3 - x2*x3*x4*x6 + x1*x4*x5*x6, +x3*x4*x5**2 - x2*x5**3 - x3*x4**2*x6 + x2*x4*x5*x6, +x3*x5**3 - x3*x4*x5*x6 - x2*x5**2*x6 + x2*x4*x6**2, +x3**2*x4**2 - 2*x2*x3*x4*x5 + x1*x4*x5**2 + x2**2*x4*x6 - x1*x4**2*x6, +x2*x3**2*x4 - 2*x1*x3*x4*x5 + x1*x2*x5**2 - x2**3*x6 + x1*x2*x4*x6, +x3**3*x4 - x1*x3*x5**2 - x2**2*x3*x6 - x1*x3*x4*x6 + 2*x1*x2*x5*x6, +x3**2*x4*x5 - x1*x5**3 - 2*x2*x3*x4*x6 + x2**2*x5*x6 + x1*x4*x5*x6, +x3**2*x4*x6 - 2*x2*x3*x5*x6 + x1*x5**2*x6 + x2**2*x6**2 - x1*x4*x6**2, +x1*x3**2*x4 - 2*x1*x2*x3*x5 + x1**2*x5**2 + x1*x2**2*x6 - x1**2*x4*x6}$ + + + % The ideal itself : + + gbasis n; + + +{x2**4 - 2*x1*x2**2*x4 + x1**2*x4**2, +x3**4 - 2*x1*x3**2*x6 + x1**2*x6**2, +x5**4 - 2*x4*x5**2*x6 + x4**2*x6**2, +x2**2*x3**2 - 2*x1*x2*x3*x5 + x1**2*x5**2, +x3**2*x5**2 - 2*x2*x3*x5*x6 + x2**2*x6**2, +x2**3*x3 - x1*x2*x3*x4 - x1*x2**2*x5 + x1**2*x4*x5, +x2*x3**3 - x1*x3**2*x5 - x1*x2*x3*x6 + x1**2*x5*x6, +x2**2*x3*x4 - x1*x3*x4**2 - x2**3*x5 + x1*x2*x4*x5, +x2**2*x3*x5 - x1*x3*x4*x5 - x2**3*x6 + x1*x2*x4*x6, +x2*x3**2*x5 - x1*x3*x5**2 - x2**2*x3*x6 + x1*x2*x5*x6, +x3**3*x5 - x2*x3**2*x6 - x1*x3*x5*x6 + x1*x2*x6**2, +x2**2*x5**2 - x1*x4*x5**2 - x2**2*x4*x6 + x1*x4**2*x6, +x2*x3*x5**2 - x1*x5**3 - x2*x3*x4*x6 + x1*x4*x5*x6, +x3*x4*x5**2 - x2*x5**3 - x3*x4**2*x6 + x2*x4*x5*x6, +x3*x5**3 - x3*x4*x5*x6 - x2*x5**2*x6 + x2*x4*x6**2, +x3**2*x4**2 - 2*x2*x3*x4*x5 + x1*x4*x5**2 + x2**2*x4*x6 - x1*x4**2*x6, +x2*x3**2*x4 - 2*x1*x3*x4*x5 + x1*x2*x5**2 - x2**3*x6 + x1*x2*x4*x6, +x3**3*x4 - x1*x3*x5**2 - x2**2*x3*x6 - x1*x3*x4*x6 + 2*x1*x2*x5*x6, +x3**2*x4*x5 - x1*x5**3 - 2*x2*x3*x4*x6 + x2**2*x5*x6 + x1*x4*x5*x6, +x3**2*x4*x6 - 2*x2*x3*x5*x6 + x1*x5**2*x6 + x2**2*x6**2 - x1*x4*x6**2, +x1*x3**2*x4 - 2*x1*x2*x3*x5 + x1**2*x5**2 + x1*x2**2*x6 - x1**2*x4*x6}$ + + length n; + + +21$ + + dim n; + + +3$ + + degree n; + + +16$ + + + % Its radical. + + radical n; + + +{ - x1*x5 + x2*x3, + - x2*x5 + x3*x4, + - x2*x6 + x3*x5, + - x1*x4 + x2**2, + - x1*x6 + x3**2, + - x4*x6 + x5**2}$ + + + % Its unmixed radical. + + unmixedradical n; + + +{ - x1*x5 + x2*x3, +x2*x5 - x3*x4, + - x2*x6 + x3*x5, + - x1*x4 + x2**2, + - x1*x6 + x3**2, + - x4*x6 + x5**2}$ + + + % Its equidimensional hull : + + n1:=eqhull n; + + +n1 := {x1**2*x4**2 - 2*x1*x2**2*x4 + x2**4, +x1**2*x6**2 - 2*x1*x3**2*x6 + x3**4, +x4**2*x6**2 - 2*x4*x5**2*x6 + x5**4, +x1**2*x5**2 - 2*x1*x2*x3*x5 + x2**2*x3**2, +x2**2*x6**2 - 2*x2*x3*x5*x6 + x3**2*x5**2, +x1**2*x4*x5 - x1*x2**2*x5 - x1*x2*x3*x4 + x2**3*x3, +x1**2*x5*x6 - x1*x2*x3*x6 - x1*x3**2*x5 + x2*x3**3, +x1*x2*x4*x5 - x1*x3*x4**2 - x2**3*x5 + x2**2*x3*x4, +x1*x2*x4*x6 - x1*x3*x4*x5 - x2**3*x6 + x2**2*x3*x5, +x1*x2*x5*x6 - x1*x3*x5**2 - x2**2*x3*x6 + x2*x3**2*x5, +x1*x2*x6**2 - x1*x3*x5*x6 - x2*x3**2*x6 + x3**3*x5, +x1*x4**2*x6 - x1*x4*x5**2 - x2**2*x4*x6 + x2**2*x5**2, +x1*x4*x5*x6 - x1*x5**3 - x2*x3*x4*x6 + x2*x3*x5**2, +x2*x4*x5*x6 - x2*x5**3 - x3*x4**2*x6 + x3*x4*x5**2, +x2*x4*x6**2 - x2*x5**2*x6 - x3*x4*x5*x6 + x3*x5**3, + - x1*x4*x6 + x1*x5**2 + x2**2*x6 - 2*x2*x3*x5 + x3**2*x4}$ + + length n1; + + +16$ + + setideal(n1,n1)$ + + + submodulep(n,n1); + + +yes$ + + submodulep(n1,n); + + +no$ + + + % Hence there is an embedded component. Let's find it making + % an excursion to symbolic mode. Of course, this can be done + % also algebraically. + + symbolic; + + +nil + + n:=get('n,'basis); + + +(dpmat 21 0 ((1 ((((0 0 4) 4) . 1) (((0 1 2 0 1) 4) . -2) (((0 2 0 0 2) 4) . 1) +) 3 0 nil) (2 ((((0 0 0 4) 4) . 1) (((0 1 0 2 0 0 1) 4) . -2) (((0 2 0 0 0 0 2) +4) . 1)) 3 0 nil) (3 ((((0 0 0 0 0 4) 4) . 1) (((0 0 0 0 1 2 1) 4) . -2) (((0 0 +0 0 2 0 2) 4) . 1)) 3 0 nil) (4 ((((0 0 2 2) 4) . 1) (((0 1 1 1 0 1) 4) . -2) ( +((0 2 0 0 0 2) 4) . 1)) 3 0 nil) (5 ((((0 0 0 2 0 2) 4) . 1) (((0 0 1 1 0 1 1) 4 +) . -2) (((0 0 2 0 0 0 2) 4) . 1)) 3 0 nil) (6 ((((0 0 3 1) 4) . 1) (((0 1 1 1 1 +) 4) . -1) (((0 1 2 0 0 1) 4) . -1) (((0 2 0 0 1 1) 4) . 1)) 4 0 nil) (7 ((((0 0 +1 3) 4) . 1) (((0 1 0 2 0 1) 4) . -1) (((0 1 1 1 0 0 1) 4) . -1) (((0 2 0 0 0 1 +1) 4) . 1)) 4 0 nil) (8 ((((0 0 2 1 1) 4) . 1) (((0 1 0 1 2) 4) . -1) (((0 0 3 0 +0 1) 4) . -1) (((0 1 1 0 1 1) 4) . 1)) 4 0 nil) (9 ((((0 0 2 1 0 1) 4) . 1) ((( +0 1 0 1 1 1) 4) . -1) (((0 0 3 0 0 0 1) 4) . -1) (((0 1 1 0 1 0 1) 4) . 1)) 4 0 +nil) (10 ((((0 0 1 2 0 1) 4) . 1) (((0 1 0 1 0 2) 4) . -1) (((0 0 2 1 0 0 1) 4) +. -1) (((0 1 1 0 0 1 1) 4) . 1)) 4 0 nil) (11 ((((0 0 0 3 0 1) 4) . 1) (((0 0 1 +2 0 0 1) 4) . -1) (((0 1 0 1 0 1 1) 4) . -1) (((0 1 1 0 0 0 2) 4) . 1)) 4 0 nil +) (12 ((((0 0 2 0 0 2) 4) . 1) (((0 1 0 0 1 2) 4) . -1) (((0 0 2 0 1 0 1) 4) . +-1) (((0 1 0 0 2 0 1) 4) . 1)) 4 0 nil) (13 ((((0 0 1 1 0 2) 4) . 1) (((0 1 0 0 +0 3) 4) . -1) (((0 0 1 1 1 0 1) 4) . -1) (((0 1 0 0 1 1 1) 4) . 1)) 4 0 nil) ( +14 ((((0 0 0 1 1 2) 4) . 1) (((0 0 1 0 0 3) 4) . -1) (((0 0 0 1 2 0 1) 4) . -1) +(((0 0 1 0 1 1 1) 4) . 1)) 4 0 nil) (15 ((((0 0 0 1 0 3) 4) . 1) (((0 0 0 1 1 1 +1) 4) . -1) (((0 0 1 0 0 2 1) 4) . -1) (((0 0 1 0 1 0 2) 4) . 1)) 4 0 nil) (16 ( +(((0 0 0 2 2) 4) . 1) (((0 0 1 1 1 1) 4) . -2) (((0 1 0 0 1 2) 4) . 1) (((0 0 2 +0 1 0 1) 4) . 1) (((0 1 0 0 2 0 1) 4) . -1)) 5 0 nil) (17 ((((0 0 1 2 1) 4) . 1 +) (((0 1 0 1 1 1) 4) . -2) (((0 1 1 0 0 2) 4) . 1) (((0 0 3 0 0 0 1) 4) . -1) ( +((0 1 1 0 1 0 1) 4) . 1)) 5 0 nil) (18 ((((0 0 0 3 1) 4) . 1) (((0 1 0 1 0 2) 4 +) . -1) (((0 0 2 1 0 0 1) 4) . -1) (((0 1 0 1 1 0 1) 4) . -1) (((0 1 1 0 0 1 1) +4) . 2)) 5 0 nil) (19 ((((0 0 0 2 1 1) 4) . 1) (((0 1 0 0 0 3) 4) . -1) (((0 0 1 +1 1 0 1) 4) . -2) (((0 0 2 0 0 1 1) 4) . 1) (((0 1 0 0 1 1 1) 4) . 1)) 5 0 nil) +(20 ((((0 0 0 2 1 0 1) 4) . 1) (((0 0 1 1 0 1 1) 4) . -2) (((0 1 0 0 0 2 1) 4) . +1) (((0 0 2 0 0 0 2) 4) . 1) (((0 1 0 0 1 0 2) 4) . -1)) 5 0 nil) (21 ((((0 1 0 +2 1) 4) . 1) (((0 1 1 1 0 1) 4) . -2) (((0 2 0 0 0 2) 4) . 1) (((0 1 2 0 0 0 1) +4) . 1) (((0 2 0 0 1 0 1) 4) . -1)) 5 0 nil)) nil nil) + + + % This needs even more time than the eqhull, of course. + + u:=primarydecomposition!* n; + + +(((dpmat 16 0 ((1 ((((0 0 2 1 0 1) 4) . 1) (((0 1 0 1 1 1) 4) . -1) (((0 0 3 0 0 +0 1) 4) . -1) (((0 1 1 0 1 0 1) 4) . 1)) 4 0 nil) (2 ((((0 0 1 2 0 1) 4) . 1) ( +((0 1 0 1 0 2) 4) . -1) (((0 0 2 1 0 0 1) 4) . -1) (((0 1 1 0 0 1 1) 4) . 1)) 4 +0 nil) (3 ((((0 0 1 1 0 2) 4) . 1) (((0 1 0 0 0 3) 4) . -1) (((0 0 1 1 1 0 1) 4 +) . -1) (((0 1 0 0 1 1 1) 4) . 1)) 4 0 nil) (4 ((((0 0 4) 4) . 1) (((0 1 2 0 1) +4) . -2) (((0 2 0 0 2) 4) . 1)) 3 0 nil) (5 ((((0 0 3 1) 4) . 1) (((0 1 1 1 1) 4 +) . -1) (((0 1 2 0 0 1) 4) . -1) (((0 2 0 0 1 1) 4) . 1)) 4 0 nil) (6 ((((0 0 2 +2) 4) . 1) (((0 1 1 1 0 1) 4) . -2) (((0 2 0 0 0 2) 4) . 1)) 3 0 nil) (7 ((((0 0 +2 1 1) 4) . 1) (((0 1 0 1 2) 4) . -1) (((0 0 3 0 0 1) 4) . -1) (((0 1 1 0 1 1) 4 +) . 1)) 4 0 nil) (8 ((((0 0 2 0 0 2) 4) . 1) (((0 1 0 0 1 2) 4) . -1) (((0 0 2 0 +1 0 1) 4) . -1) (((0 1 0 0 2 0 1) 4) . 1)) 4 0 nil) (9 ((((0 0 0 4) 4) . 1) ((( +0 1 0 2 0 0 1) 4) . -2) (((0 2 0 0 0 0 2) 4) . 1)) 3 0 nil) (10 ((((0 0 0 0 0 4 +) 4) . 1) (((0 0 0 0 1 2 1) 4) . -2) (((0 0 0 0 2 0 2) 4) . 1)) 3 0 nil) (11 (( +((0 0 0 2 0 2) 4) . 1) (((0 0 1 1 0 1 1) 4) . -2) (((0 0 2 0 0 0 2) 4) . 1)) 3 0 +nil) (12 ((((0 0 1 3) 4) . 1) (((0 1 0 2 0 1) 4) . -1) (((0 1 1 1 0 0 1) 4) . -1 +) (((0 2 0 0 0 1 1) 4) . 1)) 4 0 nil) (13 ((((0 0 0 3 0 1) 4) . 1) (((0 0 1 2 0 +0 1) 4) . -1) (((0 1 0 1 0 1 1) 4) . -1) (((0 1 1 0 0 0 2) 4) . 1)) 4 0 nil) ( +14 ((((0 0 0 1 1 2) 4) . 1) (((0 0 1 0 0 3) 4) . -1) (((0 0 0 1 2 0 1) 4) . -1) +(((0 0 1 0 1 1 1) 4) . 1)) 4 0 nil) (15 ((((0 0 0 1 0 3) 4) . 1) (((0 0 0 1 1 1 +1) 4) . -1) (((0 0 1 0 0 2 1) 4) . -1) (((0 0 1 0 1 0 2) 4) . 1)) 4 0 nil) (16 ( +(((0 0 0 2 1) 3) . 1) (((0 0 1 1 0 1) 3) . -2) (((0 1 0 0 0 2) 3) . 1) (((0 0 2 +0 0 0 1) 3) . 1) (((0 1 0 0 1 0 1) 3) . -1)) 5 0 nil)) nil t) (dpmat 6 0 ((1 (( +((0 0 0 1 0 1) 2) . 1) (((0 0 1 0 0 0 1) 2) . -1)) 2 0 nil) (2 ((((0 0 0 0 0 2) +2) . 1) (((0 0 0 0 1 0 1) 2) . -1)) 2 0 nil) (3 ((((0 0 0 1 1) 2) . 1) (((0 0 1 +0 0 1) 2) . -1)) 2 0 nil) (4 ((((0 0 0 2) 2) . 1) (((0 1 0 0 0 0 1) 2) . -1)) 2 +0 nil) (5 ((((0 0 1 1) 2) . 1) (((0 1 0 0 0 1) 2) . -1)) 2 0 nil) (6 ((((0 0 2) +2) . 1) (((0 1 0 0 1) 2) . -1)) 2 0 nil)) nil t)) ((dpmat 18 0 ((1 ((((0 0 1 0 0 +3) 4) . 1)) 1 0 nil) (2 ((((0 0 0 0 0 0 1) 1) . 1)) 1 0 nil) (3 ((((0 0 0 4) 4) +. 1)) 1 0 nil) (4 ((((0 0 0 0 0 4) 4) . 1)) 1 0 nil) (5 ((((0 0 0 2 0 2) 4) . 1 +)) 1 0 nil) (6 ((((0 0 0 3 0 1) 4) . 1)) 1 0 nil) (7 ((((0 0 0 1 0 3) 4) . 1)) 1 +0 nil) (8 ((((0 0 0 0 1) 1) . 1)) 1 0 nil) (9 ((((0 0 3 0 0 1) 4) . 1)) 1 0 nil +) (10 ((((0 0 2 1 0 1) 4) . 1)) 1 0 nil) (11 ((((0 0 1 2 0 1) 4) . 1)) 1 0 nil) +(12 ((((0 0 2 0 0 2) 4) . 1)) 1 0 nil) (13 ((((0 0 1 1 0 2) 4) . 1)) 1 0 nil) ( +14 ((((0 0 4) 4) . 1)) 1 0 nil) (15 ((((0 0 2 2) 4) . 1)) 1 0 nil) (16 ((((0 1) +1) . 1)) 1 0 nil) (17 ((((0 0 1 3) 4) . 1)) 1 0 nil) (18 ((((0 0 3 1) 4) . 1)) 1 +0 nil)) nil t) (dpmat 6 0 ((1 ((((0 0 0 0 0 0 1) 1) . 1)) 1 0 nil) (2 ((((0 0 0 +0 1) 1) . 1)) 1 0 nil) (3 ((((0 1) 1) . 1)) 1 0 nil) (4 ((((0 0 1) 1) . 1)) 1 0 +nil) (5 ((((0 0 0 1) 1) . 1)) 1 0 nil) (6 ((((0 0 0 0 0 1) 1) . 1)) 1 0 nil)) +nil t))) + + for each x in u collect easydim!* cadr x; + + +(3 0) + + for each x in u collect degree!* car x; + + +(16 20) + + + % Hence the embedded component is a trivial one. Let's divide + % it out by a stable ideal quotient calculation : + + algebraic; + + + setideal(n2,matstabquot(n,vars)); + + +{x2**4 - 2*x1*x2**2*x4 + x1**2*x4**2, +x3**4 - 2*x1*x3**2*x6 + x1**2*x6**2, +x5**4 - 2*x4*x5**2*x6 + x4**2*x6**2, +x2**2*x3**2 - 2*x1*x2*x3*x5 + x1**2*x5**2, +x3**2*x5**2 - 2*x2*x3*x5*x6 + x2**2*x6**2, +x2**3*x3 - x1*x2*x3*x4 - x1*x2**2*x5 + x1**2*x4*x5, +x2*x3**3 - x1*x3**2*x5 - x1*x2*x3*x6 + x1**2*x5*x6, +x2**2*x3*x4 - x1*x3*x4**2 - x2**3*x5 + x1*x2*x4*x5, +x2**2*x3*x5 - x1*x3*x4*x5 - x2**3*x6 + x1*x2*x4*x6, +x2*x3**2*x5 - x1*x3*x5**2 - x2**2*x3*x6 + x1*x2*x5*x6, +x3**3*x5 - x2*x3**2*x6 - x1*x3*x5*x6 + x1*x2*x6**2, +x2**2*x5**2 - x1*x4*x5**2 - x2**2*x4*x6 + x1*x4**2*x6, +x2*x3*x5**2 - x1*x5**3 - x2*x3*x4*x6 + x1*x4*x5*x6, +x3*x4*x5**2 - x2*x5**3 - x3*x4**2*x6 + x2*x4*x5*x6, +x3*x5**3 - x3*x4*x5*x6 - x2*x5**2*x6 + x2*x4*x6**2, +x3**2*x4 - 2*x2*x3*x5 + x1*x5**2 + x2**2*x6 - x1*x4*x6}$ + + modequalp(n1,n2); + + +yes$ + + + +comment + + ######################################## + ### ### + ### Test Examples for New Features ### + ### ### + ######################################## + +end comment; + + + +% ==> Testing the different zerodimensional solver + + vars:={x,y,z}$ + + + setring(vars,degreeorder vars,revlex); + + +{{x,y,z},{{1,1,1}},revlex,{1,1,1}}$ + + setideal(m,{x^3+y+z-3,y^3+x+z-3,z^3+x+y-3}); + + +{x**3 + y + z - 3,y**3 + x + z - 3,z**3 + x + y - 3}$ + + zerosolve1 m; + + +{{x + y + z**3 - 3, +y + z**3 + z - 3, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, +{x + y + z**3 - 3, +2*y + z**3 - 3, +z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, +{x + y + z, +y**2 + y*z + z**2 - 1, +z**3 - z - 3}, +{x + z**3 + z - 3, +y - z, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, +{x - z,y - z,z**2 + z + 3}, +{x - 1,y - 1,z - 1}}$ + + zerosolve2 m; + + +{{x + y + z**3 - 3, +y + z**3 + z - 3, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, +{x + y + z**3 - 3, +2*y + z**3 - 3, +z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, +{x + y + z, +y**2 + y*z + z**2 - 1, +z**3 - z - 3}, +{x + z**3 + z - 3, +y - z, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, +{x - z,y - z,z**2 + z + 3}, +{x - 1,y - 1,z - 1}}$ + + setring(vars,{},lex)$ + + setideal(m,m)$ + + m1:=gbasis m$ + + + zerosolve m1; + + +{{x - 1,y - 1,z - 1}, +{x - z,y - z,z**2 + z + 3}, +{x + y + z, +y**2 + y*z + z**2 - 1, +z**3 - z - 3}, +{2*x + z**3 - 3, +2*y + z**3 - 3, +z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, +{x + z**3 + z - 3, +y - z, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, +{x - z, +y + z**3 + z - 3, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}}$ + + zerosolve1 m1; + + +{{x - 1,y - 1,z - 1}, +{x - z,y - z,z**2 + z + 3}, +{x + y + z, +y**2 + y*z + z**2 - 1, +z**3 - z - 3}, +{x - y, +2*y + z**3 - 3, +z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, +{x + z**3 + z - 3, +y - z, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, +{x - z, +y + z**3 + z - 3, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}}$ + + zerosolve2 m1; + + +{{x - 1,y - 1,z - 1}, +{x - z,y - z,z**2 + z + 3}, +{x + y + z, +y**2 + y*z + z**2 - 1, +z**3 - z - 3}, +{x - y, +2*y + z**3 - 3, +z**6 - 2*z**4 - 6*z**3 + 4*z**2 + 6*z + 5}, +{x + z**3 + z - 3, +y - z, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}, +{x - z, +y + z**3 + z - 3, +z**6 + z**4 - 6*z**3 + z**2 - 3*z + 8}}$ + + +% ==> Testing groebfactor, extendedgroebfactor, extendedgroebfactor1 + + % Gerdt et al. : Seventh order KdV type equation. + +A1:=-2*L1**2+L1*L2+2*L1*L3-L2**2-7*L5+21*L6$ + + +A2:=7*L7-2*L1*L4+3/7*L1**3$ + + +B1:=L1*(5*L1-3*L2+L3)$ + + +B2:=L1*(2*L6-4*L4)$ + + +B3:=L1*L7/2$ + + +P1:=L1*(L4-L5/2+L6)$ + + +P2:=(2/7*L1**2-L4)*(-10*L1+5*L2-L3)$ + + +P3:=(2/7*L1**2-L4)*(3*L4-L5+L6)$ + + +P4:=A1*(-3*L1+2*L2)+21*A2$ + + +P5:=A1*(2*L4-2*L5)+A2*(-45*L1+15*L2-3*L3)$ + + +P6:=2*A1*L7+A2*(12*L4-3*L5+2*L6)$ + + +P7:=B1*(2*L2-L1)+7*B2$ + + +P8:=B1*L3+7*B2$ + + +P9:=B1*(-2*L4-2*L5)+B2*(2*L2-8*L1)+84*B3$ + + +P10:=B1*(8/3*L5+6*L6)+B2*(11*L1-17/3*L2+5/3*L3)-168*B3$ + + +P11:=15*B1*L7+B2*(5*L4-2*L5)+B3*(-120*L1+30*L2-6*L3)$ + + +P12:=-3*B1*L7+B2*(-L4/2+L5/4-L6/2)+B3*(24*L1-6*L2)$ + + +P13:=3*B2*L7+B3*(40*L4-8*L5+4*L6)$ + + + +polys:={P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13}; + + +polys := {(l1*(2*l4 - l5 + 2*l6))/2, +( - 20*l1**3 + 10*l1**2*l2 - 2*l1**2*l3 + 70*l1*l4 - 35*l2*l4 + 7*l3* +l4)/7, +(6*l1**2*l4 - 2*l1**2*l5 + 2*l1**2*l6 - 21*l4**2 + 7*l4*l5 - 7*l4*l6) +/7, +15*l1**3 - 7*l1**2*l2 - 6*l1**2*l3 + 5*l1*l2**2 + 4*l1*l2*l3 - 42*l1* +l4 + 21*l1*l5 - 63*l1*l6 - 2*l2**3 - 14*l2*l5 + 42*l2*l6 + 147*l7, +( - 135*l1**4 + 45*l1**3*l2 - 9*l1**3*l3 + 602*l1**2*l4 + 28*l1**2*l5 + - 196*l1*l2*l4 - 14*l1*l2*l5 + 70*l1*l3*l4 - 28*l1*l3*l5 - 2205*l1* +l7 - 14*l2**2*l4 + 14*l2**2*l5 + 735*l2*l7 - 147*l3*l7 - 98*l4*l5 + +294*l4*l6 + 98*l5**2 - 294*l5*l6)/7, +(36*l1**3*l4 - 9*l1**3*l5 + 6*l1**3*l6 - 28*l1**2*l7 + 14*l1*l2*l7 + +28*l1*l3*l7 - 168*l1*l4**2 + 42*l1*l4*l5 - 28*l1*l4*l6 - 14*l2**2*l7 + + 588*l4*l7 - 245*l5*l7 + 392*l6*l7)/7, +l1*( - 5*l1**2 + 13*l1*l2 - l1*l3 - 6*l2**2 + 2*l2*l3 - 28*l4 + 14*l6 +), +l1*(5*l1*l3 - 3*l2*l3 + l3**2 - 28*l4 + 14*l6), +2*l1*(11*l1*l4 - 5*l1*l5 - 8*l1*l6 - l2*l4 + 3*l2*l5 + 2*l2*l6 - l3* +l4 - l3*l5 + 21*l7), +(4*l1*( - 33*l1*l4 + 10*l1*l5 + 39*l1*l6 + 17*l2*l4 - 6*l2*l5 - 22*l2 +*l6 - 5*l3*l4 + 2*l3*l5 + 7*l3*l6 - 63*l7))/3, +l1*(15*l1*l7 - 30*l2*l7 + 12*l3*l7 - 20*l4**2 + 8*l4*l5 + 10*l4*l6 - +4*l5*l6), +(l1*( - 6*l1*l7 + 12*l2*l7 - 6*l3*l7 + 4*l4**2 - 2*l4*l5 + 2*l4*l6 + +l5*l6 - 2*l6**2))/2, +4*l1*l7*(2*l4 - l5 + 2*l6)}$ + +vars:={L7,L6,L5,L4,L3,L2,L1}; + + +vars := {l7, +l6, +l5, +l4, +l3, +l2, +l1}$ + +clear a1,a2,b1,b2,b3$ + + + + off lexefgb; + + + setring(vars,{},lex); + + +{{l7,l6,l5,l4,l3,l2,l1},{},lex,{1,1,1,1,1,1,1}}$ + + + % The factorized Groebner algorithm. + groebfactor polys; + + +{{l1,l4,l7,21*l6 - 7*l5 - l2**2}, +{l1, +l4, +7*l5 - l3*l2 + 5*l2**2, +56*l6 - 5*l3*l2 + 23*l2**2, +588*l7 + 7*l3*l2**2 - 37*l2**3}, +{l1, +l7, +l3 - 5*l2, +14*l6 - 21*l4 - l2**2, +14*l5 - 63*l4 - l2**2}, +{l1,l4,l2,l5,l7}, +{7*l4 - 2*l1**2, +l2 - 2*l1, +l3 - 3*l1, +147*l7 - 4*l1**3, +7*l5 - 6*l1**2, +7*l6 - l1**2}, +{7*l4 - 2*l1**2, +2*l2 - 7*l1, +l3 - 6*l1, +147*l7 - 4*l1**3, +7*l5 - 9*l1**2, +14*l6 - 5*l1**2}, +{l1, +l3 - 5*l2, +63*l4 + 2*l2**2, +63*l5 + 2*l2**2, +63*l6 - 4*l2**2, +1323*l7 + 10*l2**3}, +{l1,l2,l3,l7,l5 - l4,l6 + 2*l4}, +{l2 - 3*l1, +l3 - 5*l1, +14*l4 - 5*l1**2, +98*l7 - 5*l1**3, +7*l5 - 10*l1**2, +14*l6 - 5*l1**2}}$ + + + % The extended Groebner factorizer, producing triangular sets. + extendedgroebfactor polys; + + +{{{98*l7 - 5*l1**3, +14*l6 - 5*l1**2, +7*l5 - 10*l1**2, +14*l4 - 5*l1**2, +l3 - 5*l1, +l2 - 3*l1}, +{}, +{l1}}, +{{l7,l6 + 2*l4,l5 - l4,l3,l2,l1},{},{l4}}, +{{1323*l7 + 10*l2**3, +63*l6 - 4*l2**2, +63*l5 + 2*l2**2, +63*l4 + 2*l2**2, +l3 - 5*l2, +l1}, +{}, +{l2}}, +{{147*l7 - 4*l1**3, +14*l6 - 5*l1**2, +7*l5 - 9*l1**2, +7*l4 - 2*l1**2, +l3 - 6*l1, +2*l2 - 7*l1}, +{}, +{l1}}, +{{147*l7 - 4*l1**3, +7*l6 - l1**2, +7*l5 - 6*l1**2, +7*l4 - 2*l1**2, +l3 - 3*l1, +l2 - 2*l1}, +{}, +{l1}}, +{{l7,l5,l4,l2,l1},{},{l6,l3}}, +{{l7, +14*l6 - (l2**2 + 21*l4), +14*l5 - (l2**2 + 63*l4), +l3 - 5*l2, +l1}, +{}, +{l4,l2}}, +{{588*l7 - (37*l2**3 - 7*l2**2*l3), +56*l6 + (23*l2**2 - 5*l2*l3), +7*l5 + (5*l2**2 - l2*l3), +l4, +l1}, +{}, +{l3,l2}}, +{{l7,21*l6 - (l2**2 + 7*l5),l4,l1},{},{l5,l3,l2}}}$ + + + % The extended Groebner factorizer with subproblem removal check. + extendedgroebfactor1 polys; + + +{{{l7,21*l6 - (l2**2 + 7*l5),l4,l1},{},{l5,l3,l2}}, +{{588*l7 - (37*l2**3 - 7*l2**2*l3), +56*l6 + (23*l2**2 - 5*l2*l3), +7*l5 + (5*l2**2 - l2*l3), +l4, +l1}, +{}, +{l3,l2}}, +{{l7, +14*l6 - (l2**2 + 21*l4), +14*l5 - (l2**2 + 63*l4), +l3 - 5*l2, +l1}, +{}, +{l4,l2}}, +{{l7,l5,l4,l2,l1},{},{l6,l3}}, +{{147*l7 - 4*l1**3, +7*l6 - l1**2, +7*l5 - 6*l1**2, +7*l4 - 2*l1**2, +l3 - 3*l1, +l2 - 2*l1}, +{}, +{l1}}, +{{147*l7 - 4*l1**3, +14*l6 - 5*l1**2, +7*l5 - 9*l1**2, +7*l4 - 2*l1**2, +l3 - 6*l1, +2*l2 - 7*l1}, +{}, +{l1}}, +{{1323*l7 + 10*l2**3, +63*l6 - 4*l2**2, +63*l5 + 2*l2**2, +63*l4 + 2*l2**2, +l3 - 5*l2, +l1}, +{}, +{l2}}, +{{l7,l6 + 2*l4,l5 - l4,l3,l2,l1},{},{l4}}, +{{98*l7 - 5*l1**3, +14*l6 - 5*l1**2, +7*l5 - 10*l1**2, +14*l4 - 5*l1**2, +l3 - 5*l1, +l2 - 3*l1}, +{}, +{l1}}}$ + + + % Gonnet's example (ACM SIGSAM Bulletin 17 (1983), 48 - 49) + +vars:={a0,a2,a3,a4,a5,b0,b1,b2,b3,b4,b5,c0,c1,c2,c3,c4,c5}; + + +vars := {a0, +a2, +a3, +a4, +a5, +b0, +b1, +b2, +b3, +b4, +b5, +c0, +c1, +c2, +c3, +c4, +c5}$ + +polys:={a4*b4, +a5*b1+b5+a4*b3+a3*b4, +a2*b2,a5*b5, +(a0+1+a4)*b2+a2*(b0+b1+b4)+c2, +(a0+1+a4)*(b0+b1+b4)+(a3+a5)*b2+a2*(b3+b5)+c0+c1+c4, +(a3+a5)*(b0+b1+b4)+(b3+b5)*(a0+1+a4)+c3+c5-1, +(a3+a5)*(b3+b5), +a5*(b3+b5)+b5*(a3+a5), +b5*(a0+1+2*a4)+a5*(b0+b1+2*b4)+a3*b4+a4*b3+c5, +a4*(b0+b1+2*b4)+a2*b5+a5*b2+(a0+1)*b4+c4, +a2*b4+a4*b2, +a4*b5+a5*b4, +2*a3*b3+a3*b5+a5*b3, +c3+b3*(a0+2+a4)+a3*(b0+2*b1+b4)+b5+a5*b1, +c1+(a0+2+a4)*b1+a2*b3+a3*b2+(b0+b4), +a2*b1+b2, +a5*b3+a3*b5, +b4+a4*b1}; + + +polys := {a4*b4, +a3*b4 + a4*b3 + a5*b1 + b5, +a2*b2, +a5*b5, +a0*b2 + a2*b0 + a2*b1 + a2*b4 + a4*b2 + b2 + c2, +a0*b0 + a0*b1 + a0*b4 + a2*b3 + a2*b5 + a3*b2 + a4*b0 + a4*b1 + a4*b4 + + a5*b2 + b0 + b1 + b4 + c0 + c1 + c4, +a0*b3 + a0*b5 + a3*b0 + a3*b1 + a3*b4 + a4*b3 + a4*b5 + a5*b0 + a5*b1 + + a5*b4 + b3 + b5 + c3 + c5 - 1, +a3*b3 + a3*b5 + a5*b3 + a5*b5, +a3*b5 + a5*b3 + 2*a5*b5, +a0*b5 + a3*b4 + a4*b3 + 2*a4*b5 + a5*b0 + a5*b1 + 2*a5*b4 + b5 + c5, +a0*b4 + a2*b5 + a4*b0 + a4*b1 + 2*a4*b4 + a5*b2 + b4 + c4, +a2*b4 + a4*b2, +a4*b5 + a5*b4, +2*a3*b3 + a3*b5 + a5*b3, +a0*b3 + a3*b0 + 2*a3*b1 + a3*b4 + a4*b3 + a5*b1 + 2*b3 + b5 + c3, +a0*b1 + a2*b3 + a3*b2 + a4*b1 + b0 + 2*b1 + b4 + c1, +a2*b1 + b2, +a3*b5 + a5*b3, +a4*b1 + b4}$ + + + on lexefgb; + + % Switching back to the default. + setring(vars,{},lex); + + +{{a0,a2,a3,a4,a5,b0,b1,b2,b3,b4,b5,c0,c1,c2,c3,c4,c5}, +{}, +lex, +{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}}$ + + groebfactor polys; + + +{{c5, +b5, +c2, +c4, +b2, +b4, +a4, +a2, +a5, +b3, +a3*b1 + 1, +b0 - b1*c3 + 2*b1, +a0 - a3*c1 + c3, +b1*c3**2 - 2*b1*c3 + b1 - c0 + c1*c3 - 2*c1, +a3*c0 - a3*c1*c3 + 2*a3*c1 + c3**2 - 2*c3 + 1}, +{c5, +c4, +b5, +b4, +a4, +b2, +a5, +a3, +b1, +b3 + 1, +a0 - c3 + 2, +b0*c3 - 2*b0 + c0, +a2 - b0 - c1, +b0**2 + b0*c1 + c2, +b0*c0 + c0*c1 - c2*c3 + 2*c2, +c0**2 - c0*c1*c3 + 2*c0*c1 + c2*c3**2 - 4*c2*c3 + 4*c2}, +{c5, +b5, +c2, +c4, +b2, +b4, +a4, +a2, +a5, +a3, +b3 + 1, +b0 + b1*c3 + c1, +a0 - c3 + 2, +b1*c3**2 - 2*b1*c3 + b1 - c0 + c1*c3 - 2*c1}}$ + + extendedgroebfactor polys; + + +{{{b1*a0 + (b1 + c1), +a2, +b1*a3 + 1, +a4, +a5, +b0 + b1, +b2, +b3, +b4, +b5, +c0 + c1, +c2, +c3 - 1, +c4, +c5}, +{b1,b1}, +{b1,c1}}, +{{a0, +a2 - b0 - c1, +a3, +a4, +a5, +b0**2 + c1*b0 + c2, +b1, +b2, +b3 + 1, +b4, +b5, +c0, +c3 - 2, +c4, +c5}, +{}, +{c1,c2}}, +{{a0 + 1,a2,a3,a4,a5,b0 + (b1 + c1),b2,b3 + 1,b4,b5,c0 + c1,c2,c3 - 1,c4,c5}, +{}, +{b1,c1}}, +{{a0 - (c3 - 2), +a2, +a3, +a4, +a5, +(c3**2 - 2*c3 + 1)*b0 + (c0*c3 + c1), +(c3**2 - 2*c3 + 1)*b1 - (c0 - c1*c3 + 2*c1), +b2, +b3 + 1, +b4, +b5, +c2, +c4, +c5}, +{c3**2 - 2*c3 + 1,c3**2 - 2*c3 + 1}, +{c0,c1,c3}}, +{{a0 - (c3 - 2), +(c3 - 2)*a2 + c0 - (c1*c3 - 2*c1), +a3, +a4, +a5, +(c3 - 2)*b0 + c0, +b1, +b2, +b3 + 1, +b4, +b5, +c0**2 - (c1*c3 - 2*c1)*c0 + (c2*c3**2 - 4*c2*c3 + 4*c2), +c4, +c5}, +{c3 - 2,c3 - 2}, +{c1,c2,c3}}, +{{(c0 - c1*c3 + 2*c1)*a0 + (c0*c3 + c1), +a2, +(c0 - c1*c3 + 2*c1)*a3 + (c3**2 - 2*c3 + 1), +a4, +a5, +(c3**2 - 2*c3 + 1)*b0 - (c0*c3 - 2*c0 - c1*c3**2 + 4*c1*c3 - 4*c1), +(c3**2 - 2*c3 + 1)*b1 - (c0 - c1*c3 + 2*c1), +b2, +b3, +b4, +b5, +c2, +c4, +c5}, +{c0 - c1*c3 + 2*c1, +c0 - c1*c3 + 2*c1, +c3**2 - 2*c3 + 1, +c3**2 - 2*c3 + 1}, +{c0,c1,c3}}}$ + + extendedgroebfactor1 polys; + + +{{{(c0 - c1*c3 + 2*c1)*a0 + (c0*c3 + c1), +a2, +(c0 - c1*c3 + 2*c1)*a3 + (c3**2 - 2*c3 + 1), +a4, +a5, +(c3**2 - 2*c3 + 1)*b0 - (c0*c3 - 2*c0 - c1*c3**2 + 4*c1*c3 - 4*c1), +(c3**2 - 2*c3 + 1)*b1 - (c0 - c1*c3 + 2*c1), +b2, +b3, +b4, +b5, +c2, +c4, +c5}, +{c0 - c1*c3 + 2*c1, +c0 - c1*c3 + 2*c1, +c3**2 - 2*c3 + 1, +c3**2 - 2*c3 + 1}, +{c0,c1,c3}}, +{{a0 - (c3 - 2), +(c3 - 2)*a2 + c0 - (c1*c3 - 2*c1), +a3, +a4, +a5, +(c3 - 2)*b0 + c0, +b1, +b2, +b3 + 1, +b4, +b5, +c0**2 - (c1*c3 - 2*c1)*c0 + (c2*c3**2 - 4*c2*c3 + 4*c2), +c4, +c5}, +{c3 - 2,c3 - 2}, +{c1,c2,c3}}, +{{a0 - (c3 - 2), +a2, +a3, +a4, +a5, +(c3**2 - 2*c3 + 1)*b0 + (c0*c3 + c1), +(c3**2 - 2*c3 + 1)*b1 - (c0 - c1*c3 + 2*c1), +b2, +b3 + 1, +b4, +b5, +c2, +c4, +c5}, +{c3**2 - 2*c3 + 1,c3**2 - 2*c3 + 1}, +{c0,c1,c3}}}$ + + + % Schwarz' example s5 + +vars:=for k:=1:5 collect mkid(x,k); + + +vars := {x1, +x2, +x3, +x4, +x5}$ + + +s5:={ +x1**2+x1+2*x2*x5+2*x3*x4, +2*x1*x2+x2+2*x3*x5+x4**2, +2*x1*x3+x2**2+x3+2*x4*x5, +2*x1*x4+2*x2*x3+x4+x5**2, +2*x1*x5+2*x2*x4+x3**2+x5}; + + +s5 := {x1**2 + x1 + 2*x2*x5 + 2*x3*x4, +2*x1*x2 + x2 + 2*x3*x5 + x4**2, +2*x1*x3 + x2**2 + x3 + 2*x4*x5, +2*x1*x4 + 2*x2*x3 + x4 + x5**2, +2*x1*x5 + 2*x2*x4 + x3**2 + x5}$ + + + setring(vars,degreeorder vars,revlex); + + +{{x1,x2,x3,x4,x5},{{1,1,1,1,1}},revlex,{1,1,1,1,1}}$ + + m:=groebfactor s5; + + +m := {{x1**2 + 2*x3*x4 + 2*x2*x5 + x1, +2*x1*x2 + x4**2 + 2*x3*x5 + x2, +x2**2 + 2*x1*x3 + 2*x4*x5 + x3, +2*x2*x3 + 2*x1*x4 + x5**2 + x4, +x3**2 + 2*x2*x4 + 2*x1*x5 + x5, +2*x1*x3*x4 + 2*x4**2*x5 + x3*x5**2 + x3*x4, +5*x4**3 + 30*x3*x4*x5 + 15*x2*x5**2 - 2*x5, +10*x3*x4**2 - 10*x1*x5**2 - 5*x5**2 - x4, +625*x4*x5**3 + 50*x3*x4 + 75*x2*x5 - 6, +15*x2*x4**2 + 30*x1*x4*x5 + 5*x5**3 + 15*x4*x5 + x3, +100*x1*x4*x5**2 + 25*x5**4 + 50*x4*x5**2 + x4**2 + 4*x3*x5, +1250*x1*x3*x5**2 + 625*x3*x5**2 - 75*x3*x4 - 50*x2*x5 + 8, +75*x4**2*x5**2 + 50*x3*x5**3 + x2*x4 + 4*x1*x5 + 2*x5, +150*x3*x4*x5**2 + 100*x2*x5**3 - 2*x1*x4 - 13*x5**2 - x4, +625*x2*x5**4 - 50*x1*x4*x5 - 75*x5**3 - 25*x4*x5 - x3, +1250*x3*x5**4 - 200*x2*x4*x5 - 50*x1*x5**2 - 25*x5**2 + 3*x4, +625*x5**5 + 375*x4**2*x5 + 500*x3*x5**2 + 24*x1 + 12, +10*x1*x4**2 + 20*x1*x3*x5 + 20*x4*x5**2 + 5*x4**2 + 10*x3*x5 + x2, +75*x2*x4*x5**2 + 50*x1*x5**3 + 25*x5**3 - 2*x1*x3 - 3*x4*x5 - x3, +1250*x1*x5**4 + 625*x5**4 + 100*x1*x3*x5 + 150*x4*x5**2 + 50*x3*x5 + 3* +x2}, +{x5,x2,x4,x3,x1}, +{x5,x2,x4,x3,x1 + 1}}$ + + + % Recompute a list of problems with listgroebfactor for another term + % order. + setring(vars,{},lex); + + +{{x1,x2,x3,x4,x5},{},lex,{1,1,1,1,1}}$ + + listgroebfactor m; + + +{{5*x5 - 1, +5*x4 - 1, +5*x1 + 4, +5*x2 - 1, +5*x3 - 1}, +{5*x5 + 1, +5*x4 + 1, +5*x1 + 1, +5*x2 + 1, +5*x3 + 1}, +{5*x1 + 2, +x2 - x5, +25*x5**2 - 5*x5 - 1, +5*x4 + 5*x5 - 1, +5*x3 + 5*x5 - 1}, +{5*x1 + 3, +x2 - x5, +25*x5**2 + 5*x5 - 1, +5*x4 + 5*x5 + 1, +5*x3 + 5*x5 + 1}, +{5*x1 + 3, +5*x4 - 25*x5**2 + 10*x5 - 2, +x3 - 25*x5**3 + 15*x5**2 - 3*x5, +5*x2 + 125*x5**3 - 50*x5**2 + 10*x5 - 1, +625*x5**4 - 375*x5**3 + 100*x5**2 - 10*x5 + 1}, +{5*x1 + 2, +5*x2 + 5*x5 - 1, +5*x4 - 250*x5**3 + 75*x5**2 - 30*x5 + 2, +5*x3 + 250*x5**3 - 75*x5**2 + 30*x5 - 3, +625*x5**4 - 250*x5**3 + 100*x5**2 - 15*x5 + 1}, +{x4 + 5*x5**2, +5*x1 + 1, +x3 - 25*x5**3, +5*x2 + 125*x5**3 - 25*x5**2 + 5*x5 - 1, +625*x5**4 - 125*x5**3 + 25*x5**2 - 5*x5 + 1}, +{x4 - 5*x5**2, +5*x1 + 4, +x3 - 25*x5**3, +5*x2 + 125*x5**3 + 25*x5**2 + 5*x5 + 1, +625*x5**4 + 125*x5**3 + 25*x5**2 + 5*x5 + 1}, +{5*x1 + 3, +5*x2 + 5*x5 + 1, +5*x4 - 250*x5**3 - 75*x5**2 - 30*x5 - 2, +5*x3 + 250*x5**3 + 75*x5**2 + 30*x5 + 3, +625*x5**4 + 250*x5**3 + 100*x5**2 + 15*x5 + 1}, +{5*x1 + 2, +5*x4 + 25*x5**2 + 10*x5 + 2, +x3 - 25*x5**3 - 15*x5**2 - 3*x5, +5*x2 + 125*x5**3 + 50*x5**2 + 10*x5 + 1, +625*x5**4 + 375*x5**3 + 100*x5**2 + 10*x5 + 1}, +{x5, +x2, +x4, +x3, +x1 + 1}, +{x5, +x2, +x4, +x3, +x1}}$ + + + +% ==> Testing the linear algebra package + + % Find the ideal of points in affine and projective space. + + vars:=for k:=1:6 collect mkid(x,k); + + +vars := {x1, +x2, +x3, +x4, +x5, +x6}$ + + setring(vars,degreeorder vars,revlex); + + +{{x1,x2,x3,x4,x5,x6},{{1,1,1,1,1,1}},revlex,{1,1,1,1,1,1}}$ + + matrix mm(10,6); + + + on rounded; + + + for k:=1:6 do for l:=1:10 do mm(l,k):=floor(exp((k+l)/4)); + + + off rounded; + + + mm; + + +mat((1,2,2,3,4,5),(2,2,3,4,5,7),(2,3,4,5,7,9),(3,4,5,7,9,12),(4,5,7,9,12,15),(5 +,7,9,12,15,20),(7,9,12,15,20,25),(9,12,15,20,25,33),(12,15,20,25,33,42),(15,20, +25,33,42,54))$ + + setideal(u,affine_points mm); + + +{48337*x5**2 - 318*x4*x6 - 75336*x5*x6 + 29579*x6**2 - 11598*x1 - 11016*x2 - +11352*x3 - 2502*x4 + 18371*x5 - 1837*x6 - 1836, +386696*x1*x6 + 175678*x4*x6 + 20108*x5*x6 - 233347*x6**2 - 5821074*x1 - 831000 +*x2 + 1382952*x3 + 741984*x4 - 2153934*x5 + 2692351*x6 - 1491936, +386696*x3*x6 + 239238*x4*x6 - 185716*x5*x6 - 182039*x6**2 - 270738*x1 - +1255800*x2 - 5052384*x3 - 2106864*x4 + 2351946*x5 + 2434483*x6 - 1562736, +48337*x4**2 - 58746*x4*x6 + 148*x5*x6 + 17725*x6**2 + 2502*x1 + 576*x2 - 1302* +x3 + 25721*x4 - 3488*x5 - 12857*x6 + 96, +193348*x4*x5 - 151394*x4*x6 - 118604*x5*x6 + 92869*x6**2 + 1590*x1 + 8712*x2 + + 16560*x3 - 3708*x4 + 43918*x5 - 43409*x6 + 1452, +386696*x2*x6 - 382090*x4*x6 - 43364*x5*x6 + 123645*x6**2 - 1313130*x1 - +4809120*x2 + 91464*x3 + 5853096*x4 + 1118658*x5 - 2323361*x6 - 28128, +193348*x6**3 - 78919578*x4*x6 - 63413004*x5*x6 + 81565689*x6**2 + 1412352942* +x1 + 1563160200*x2 + 761482008*x3 + 10324224*x4 + 304232130*x5 - 1255484065*x6 + - 643375200, +193348*x1*x4 - 3606*x4*x6 + 6664*x5*x6 - 36689*x6**2 - 1729374*x1 - 256248*x2 ++ 422132*x3 + 345556*x4 - 671778*x5 + 747089*x6 - 429404, +193348*x3*x4 - 19782*x4*x6 - 57060*x5*x6 + 1407*x6**2 - 86718*x1 - 378840*x2 - + 1475924*x3 - 576996*x4 + 715078*x5 + 671885*x6 - 449836, +386696*x1*x5 + 139942*x4*x6 - 99156*x5*x6 - 94107*x6**2 - 4388370*x1 - 668088* +x2 + 1063040*x3 + 468112*x4 - 1464774*x5 + 1964239*x6 - 1078088, +386696*x3*x5 + 184150*x4*x6 - 329484*x5*x6 + 3733*x6**2 - 302634*x1 - 1062840* +x2 - 3845096*x3 - 1562608*x4 + 1956858*x5 + 1752663*x6 - 1143880, +193348*x1**2 + 50726*x4*x6 + 4164*x5*x6 - 49995*x6**2 - 1502518*x1 - 234624*x2 + + 337000*x3 + 189344*x4 - 544926*x5 + 709519*x6 - 425800, +193348*x1*x2 - 22834*x4*x6 - 3056*x5*x6 - 4123*x6**2 - 1183010*x1 - 780060*x2 ++ 282940*x3 + 989552*x4 - 238902*x5 + 102179*x6 - 226684, +386696*x1*x3 + 153254*x4*x6 - 46332*x5*x6 - 109011*x6**2 - 2706290*x1 - 776040 +*x2 - 650592*x3 - 288096*x4 - 295470*x5 + 1856303*x6 - 1096080, +96674*x3**2 + 56278*x4*x6 - 44916*x5*x6 - 20423*x6**2 - 85218*x1 - 315900*x2 - + 1104614*x3 - 478348*x4 + 559514*x5 + 528787*x6 - 342672, +193348*x2*x4 - 186922*x4*x6 - 13484*x5*x6 + 80823*x6**2 - 400398*x1 - 1437268* +x2 + 32400*x3 + 1825348*x4 + 346526*x5 - 749039*x6 - 13972, +386696*x2*x5 - 299774*x4*x6 - 183476*x5*x6 + 214259*x6**2 - 1032390*x1 - +3818088*x2 + 38568*x3 + 4563624*x4 + 1175646*x5 - 2005927*x6 - 56304, +193348*x5*x6**2 - 59111766*x4*x6 - 58092824*x5*x6 + 68856463*x6**2 + +1134803514*x1 + 1224865560*x2 + 591403776*x3 - 36549312*x4 + 316517430*x5 - +1023460331*x6 - 498675720, +96674*x2**2 - 69590*x4*x6 - 7908*x5*x6 + 35327*x6**2 - 243426*x1 - 832910*x2 + + 14700*x3 + 1041208*x4 + 204662*x5 - 420851*x6 - 26032, +386696*x2*x3 - 95202*x4*x6 - 92692*x5*x6 + 63421*x6**2 - 736122*x1 - 2670472* +x2 - 1669344*x3 + 2061800*x4 + 1466002*x5 - 394913*x6 - 509528, +96674*x4*x6**2 - 29277416*x4*x6 - 19752504*x5*x6 + 28388673*x6**2 + 433544670* +x1 + 473916360*x2 + 235723620*x3 + 39729120*x4 + 97903830*x5 - 411516489*x6 - +188800920}$ + setgbasis u$ + + dim u; + + +0$ + degree u; + + +10$ + + setideal(u,proj_points mm); + + +{457380*x5**3 - 13500*x2*x5*x6 - 20835*x3*x5*x6 + 76950*x4*x5*x6 - 1050234*x5** +2*x6 + 100*x1*x6**2 + 10800*x2*x6**2 + 16568*x3*x6**2 - 60271*x4*x6**2 + +771366*x5*x6**2 - 179875*x6**3, +330*x4**2 + 1665*x2*x5 + 555*x3*x5 - 4337*x4*x5 - 626*x5**2 + 6*x1*x6 - 1332* +x2*x6 - 450*x3*x6 + 3013*x4*x6 + 2740*x5*x6 - 1635*x6**2, +33*x1*x5 - 90*x2*x5 - 63*x3*x5 + 216*x4*x5 + 60*x5**2 - 25*x1*x6 + 72*x2*x6 + +49*x3*x6 - 170*x4*x6 - 171*x5*x6 + 97*x6**2, +90*x3**2 - 483*x2*x5 - 183*x3*x5 + 1197*x4*x5 + 174*x5**2 - 2*x1*x6 + 384*x2* +x6 + 68*x3*x6 - 937*x4*x6 - 738*x5*x6 + 485*x6**2, +330*x3*x4 + 555*x2*x5 + 75*x3*x5 - 1519*x4*x5 - 172*x5**2 + 2*x1*x6 - 444*x2* +x6 - 260*x3*x6 + 1041*x4*x6 + 950*x5*x6 - 545*x6**2, +457380*x4*x5**2 - 10800*x2*x5*x6 - 9045*x3*x5*x6 - 662625*x4*x5*x6 - 265413*x5 +**2*x6 + 80*x1*x6**2 + 8640*x2*x6**2 + 7156*x3*x6**2 + 238408*x4*x6**2 + +391452*x5*x6**2 - 143900*x6**3, +495*x1*x2 + 1977*x2*x5 + 87*x3*x5 - 4824*x4*x5 - 339*x5**2 - 164*x1*x6 - 1707* +x2*x6 - 97*x3*x6 + 3782*x4*x6 + 2697*x5*x6 - 1840*x6**2, +495*x2**2 + 1134*x2*x5 + 939*x3*x5 - 3771*x4*x5 - 822*x5**2 - 4*x1*x6 - 1257* +x2*x6 - 734*x3*x6 + 2956*x4*x6 + 2709*x5*x6 - 1550*x6**2, +990*x1*x3 - 5043*x2*x5 - 1263*x3*x5 + 12321*x4*x5 + 1866*x5**2 - 464*x1*x6 + +4008*x2*x6 + 788*x3*x6 - 9643*x4*x6 - 7968*x5*x6 + 5165*x6**2, +495*x2*x3 + 1242*x2*x5 - 48*x3*x5 - 3555*x4*x5 - 267*x5**2 + 4*x1*x6 - 1218*x2 +*x6 - 157*x3*x6 + 2786*x4*x6 + 2142*x5*x6 - 1420*x6**2, +66*x1*x4 + 345*x2*x5 + 93*x3*x5 - 861*x4*x5 - 120*x5**2 - 38*x1*x6 - 276*x2*x6 + - 76*x3*x6 + 659*x4*x6 + 540*x5*x6 - 337*x6**2, +495*x2*x4 + 1770*x2*x5 + 645*x3*x5 - 4908*x4*x5 - 729*x5**2 + 4*x1*x6 - 1713* +x2*x6 - 520*x3*x6 + 3677*x4*x6 + 3165*x5*x6 - 1915*x6**2, +152460*x3*x5**2 + 5880*x2*x5*x6 - 237983*x3*x5*x6 - 6896*x4*x5*x6 - 71438*x5** +2*x6 + 64*x1*x6**2 - 4704*x2*x6**2 + 92748*x3*x6**2 + 5427*x4*x6**2 + 113560* +x5*x6**2 - 45061*x6**3, +990*x1**2 - 1893*x2*x5 + 447*x3*x5 + 3771*x4*x5 + 426*x5**2 - 524*x1*x6 + 1488 +*x2*x6 - 322*x3*x6 - 2923*x4*x6 - 2478*x5*x6 + 1715*x6**2, +457380*x2*x5**2 - 754524*x2*x5*x6 - 31530*x3*x5*x6 + 156561*x4*x5*x6 - 132597* +x5**2*x6 + 136*x1*x6**2 + 310896*x2*x6**2 + 25088*x3*x6**2 - 122581*x4*x6**2 + + 141732*x5*x6**2 - 30097*x6**3}$ + setgbasis u$ + + dim u; + + +1$ + degree u; + + +10$ + + + % Change the term order to pure lex in dimension zero. + % Test both approaches, with and without precomputed borderbasis. + + vars:=for k:=1:6 collect mkid(x,k); + + +vars := {x1, +x2, +x3, +x4, +x5, +x6}$ + + r1:=setring(vars,{},lex); + + +r1 := {{x1,x2,x3,x4,x5,x6},{},lex,{1,1,1,1,1,1}}$ + + r2:=setring(vars,degreeorder vars,revlex); + + +r2 := {{x1,x2,x3,x4,x5,x6},{{1,1,1,1,1,1}},revlex,{1,1,1,1,1,1}}$ + + setideal(m,{x1**2+x1+2*x2*x6+2*x3*x5+x4**2, + 2*x1*x2+x2+2*x3*x6+2*x4*x5, + 2*x1*x3+x2**2+x3+2*x4*x6+x5**2, + 2*x1*x4+2*x2*x3+x4+2*x5*x6, + 2*x1*x5+2*x2*x4+x3**2+x5+x6**2, + 2*x1*x6+2*x2*x5+2*x3*x4+x6}); + + +{x1**2 + x4**2 + 2*x3*x5 + 2*x2*x6 + x1, +2*x1*x2 + 2*x4*x5 + 2*x3*x6 + x2, +x2**2 + 2*x1*x3 + x5**2 + 2*x4*x6 + x3, +2*x2*x3 + 2*x1*x4 + 2*x5*x6 + x4, +x3**2 + 2*x2*x4 + 2*x1*x5 + x6**2 + x5, +2*x3*x4 + 2*x2*x5 + 2*x1*x6 + x6}$ + + gbasis m; + + +{72*x1*x3*x5*x6 + 36*x3*x5*x6 - 2*x1*x6 - x6, +2*x1*x2 + 2*x4*x5 + 2*x3*x6 + x2, +2*x2*x3 + 2*x1*x4 + 2*x5*x6 + x4, +2*x3*x4 + 2*x2*x5 + 2*x1*x6 + x6, +10368*x6**7 + 5040*x4*x6**4 + 140*x4**2*x6 + 252*x2*x6**2 - 15*x6, +1296*x4*x6**5 + 180*x4**2*x6**2 + 180*x2*x6**3 + 4*x2*x4 - 15*x6**2, +2592*x3*x6**5 - 360*x2*x5*x6**2 + 2*x1*x4 + 12*x5*x6 + x4, +72*x3*x5**2*x6 + 72*x2*x5*x6**2 - 2*x1*x4 - 8*x5*x6 - x4, +36*x2*x5**3 - 108*x1*x4*x6**2 - 72*x5*x6**3 - 54*x4*x6**2 - 5*x3*x6, +18*x4**2*x5 + 18*x3*x5**2 - 18*x1*x6**2 - 9*x6**2 - 2*x5, +36*x4*x5**2 + 36*x4**2*x6 + 72*x3*x5*x6 + 36*x2*x6**2 - 5*x6, +x1**2 + x4**2 + 2*x3*x5 + 2*x2*x6 + x1, +x2**2 + 2*x1*x3 + x5**2 + 2*x4*x6 + x3, +x3**2 + 2*x2*x4 + 2*x1*x5 + x6**2 + x5, +2592*x5*x6**5 + 360*x4*x5*x6**2 + 360*x3*x6**3 - 2*x2*x5 + 10*x1*x6 + 5*x6, +2592*x5**2*x6**3 + 1296*x4*x6**4 + 36*x4**2*x6 + 144*x3*x5*x6 + 180*x2*x6**2 - + 13*x6, +72*x5**3*x6 + 216*x4*x5*x6**2 + 72*x3*x6**3 + 2*x2*x5 + 6*x1*x6 + 3*x6, +4*x4**3 - 12*x2*x5**2 - 24*x1*x5*x6 - 4*x6**3 - 12*x5*x6 - x4, +12*x2*x4**2 - 24*x1*x3*x6 - 12*x5**2*x6 - 12*x4*x6**2 - 12*x3*x6 - x2, +1296*x1*x6**5 + 648*x6**5 + 180*x1*x4*x6**2 + 180*x5*x6**3 + 90*x4*x6**2 + x4* +x5 + 6*x3*x6, +2592*x2*x6**5 + 360*x2*x4*x6**2 - 180*x6**4 - 6*x1*x3 - 3*x5**2 - 16*x4*x6 - 3 +*x3, +72*x3*x5*x6**3 + 36*x2*x6**4 - x2*x5**2 - 4*x2*x4*x6 - 4*x1*x5*x6 - 6*x6**3 - +2*x5*x6, +648*x4*x5*x6**3 + 324*x3*x6**4 - 9*x3*x5**2 - 18*x2*x5*x6 + 18*x1*x6**2 + 9*x6 +**2 + x5, +2592*x1*x3*x6**3 + 1296*x4*x6**4 + 1296*x3*x6**3 - 36*x4**2*x6 - 72*x3*x5*x6 + + 36*x2*x6**2 + 5*x6, +1080*x2*x4*x6**3 + 216*x6**5 - 60*x1*x3*x6 - 30*x5**2*x6 - 90*x4*x6**2 - 30*x3 +*x6 - x2, +72*x4**2*x6**3 + 36*x2*x6**4 + 3*x2*x5**2 + 8*x2*x4*x6 + 6*x1*x5*x6 - 2*x6**3 ++ 3*x5*x6, +36*x1*x5**2*x6 + 36*x1*x4*x6**2 + 36*x5*x6**3 + 18*x5**2*x6 + 18*x4*x6**2 + x4 +*x5 + 2*x3*x6, +18*x1*x5**3 - 54*x1*x3*x6**2 - 36*x4*x6**3 + 9*x5**3 - 27*x3*x6**2 + x3*x5 - 2 +*x2*x6, +18*x1*x4*x5 + 18*x1*x3*x6 + 18*x5**2*x6 + 18*x4*x6**2 + 9*x4*x5 + 9*x3*x6 + x2 +, +18*x2*x4*x5 + 18*x1*x5**2 + 18*x1*x4*x6 + 18*x5*x6**2 + 9*x5**2 + 9*x4*x6 + x3 +, +2*x1*x4**2 + 4*x1*x3*x5 + 2*x5**3 + 8*x4*x5*x6 + 2*x3*x6**2 + x4**2 + 2*x3*x5, +72*x1*x4*x6**3 + 36*x5*x6**4 + 36*x4*x6**3 - 2*x1*x3*x5 - x5**3 - 2*x4*x5*x6 + + 2*x3*x6**2 - x3*x5, +3240*x1*x5*x6**3 + 648*x6**5 + 1620*x5*x6**3 + 90*x1*x3*x6 + 90*x5**2*x6 + 180 +*x4*x6**2 + 45*x3*x6 + 2*x2, +72*x2*x5**2*x6 + 72*x2*x4*x6**2 + 144*x1*x5*x6**2 + 36*x6**4 + 72*x5*x6**2 - 2 +*x1*x3 - x5**2 - x3, +36*x5**4 - 216*x4**2*x6**2 - 432*x3*x5*x6**2 - 288*x2*x6**3 + 2*x2*x4 + 8*x1* +x5 + 39*x6**2 + 4*x5, +72*x3*x5**3 - 216*x1*x5*x6**2 - 36*x6**4 - 108*x5*x6**2 - 2*x1*x3 - 9*x5**2 - +8*x4*x6 - x3, +1296*x2*x5*x6**3 + 648*x1*x6**4 + 324*x6**4 - 18*x1*x5**2 - 36*x1*x4*x6 - 72* +x5*x6**2 - 9*x5**2 - 18*x4*x6 - x3, +18*x1*x3*x5**2 + 18*x4**2*x6**2 + 54*x3*x5*x6**2 + 36*x2*x6**3 + 9*x3*x5**2 - +x2*x4 - 2*x1*x5 - 5*x6**2 - x5}$ + + m1:=change_termorder(m,r1); + + +m1 := {46656*x4*x5*x6**6 - x4*x5, +80621568*x5*x6**13 + 44928*x5*x6**7 - x5*x6, +637*x2 + 1077507256320*x6**17 - 927987840*x6**11 - 806157*x6**5, +7*x4**2*x5 + 252*x4*x5*x6**3 - 30233088*x5*x6**12 - 17496*x5*x6**6, +58773123072*x6**19 - 47869056*x6**13 - 45657*x6**7 + x6, +2*x1*x4 + x4 + 1296*x5**3*x6**3 + 3*x5*x6, +2548*x4**2*x6 + 91728*x4*x6**4 + 362797056*x6**13 - 33696*x6**7 - 141*x6 +, +8491392*x4*x6**7 - 182*x4*x6 + 19591041024*x6**16 + 10917504*x6**10 - +243*x6**4, +17199*x5**4*x6 + 1238328*x5**2*x6**5 + 4353564672*x6**15 - 5003856*x6**9 + - 1328*x6**3, +4245696*x5**2*x6**7 - 91*x5**2*x6 + 8707129344*x6**17 - 12130560*x6**11 ++ 256*x6**5, +7*x3 - 567*x5**5 - 204120*x5**3*x6**4 + 524880*x5*x6**8 - 90*x5*x6**2, +2916*x5**7 - 567*x5**3*x6**2 + 347680512*x5*x6**12 + 196668*x5*x6**6 - 4 +*x5, +14*x1*x6 + 504*x4*x5*x6**2 + 252*x5**3*x6 + 20155392*x5*x6**11 + 8640*x5 +*x6**5 + 7*x6, +2548*x4**3 + 19813248*x4*x6**6 - 637*x4 + 39182082048*x6**15 + 30326400* +x6**9 + 4428*x6**3, +1911*x4*x5**2 - 68796*x4*x6**4 - 68796*x5**2*x6**3 - 362797056*x6**13 + +151632*x6**7 + 50*x6, +1274*x1*x5 + 1651104*x4*x6**5 + 5733*x5**4 + 1238328*x5**2*x6**4 + 637* +x5 + 6530347008*x6**14 - 1667952*x6**8 + 192*x6**2, +1274*x1**2 + 1274*x1 + 1274*x4**2 + 206388*x5**6 - 85995*x5**2*x6**2 - +11754624614400*x6**18 + 9498228480*x6**12 + 9295668*x6**6}$ + + setring r2$ + + m2:=change_termorder1(m,r1); + + +m2 := {46656*x4*x5*x6**6 - x4*x5, +80621568*x5*x6**13 + 44928*x5*x6**7 - x5*x6, +2*x1*x4 + x4 + 1296*x5**3*x6**3 + 3*x5*x6, +637*x2 + 1077507256320*x6**17 - 927987840*x6**11 - 806157*x6**5, +7*x4**2*x5 + 252*x4*x5*x6**3 - 30233088*x5*x6**12 - 17496*x5*x6**6, +58773123072*x6**19 - 47869056*x6**13 - 45657*x6**7 + x6, +2548*x4**2*x6 + 91728*x4*x6**4 + 362797056*x6**13 - 33696*x6**7 - 141*x6 +, +17199*x5**4*x6 + 1238328*x5**2*x6**5 + 4353564672*x6**15 - 5003856*x6**9 + - 1328*x6**3, +4245696*x5**2*x6**7 - 91*x5**2*x6 + 8707129344*x6**17 - 12130560*x6**11 ++ 256*x6**5, +7*x3 - 567*x5**5 - 204120*x5**3*x6**4 + 524880*x5*x6**8 - 90*x5*x6**2, +8491392*x4*x6**7 - 182*x4*x6 + 19591041024*x6**16 + 10917504*x6**10 - +243*x6**4, +2916*x5**7 - 567*x5**3*x6**2 + 347680512*x5*x6**12 + 196668*x5*x6**6 - 4 +*x5, +14*x1*x6 + 504*x4*x5*x6**2 + 252*x5**3*x6 + 20155392*x5*x6**11 + 8640*x5 +*x6**5 + 7*x6, +1911*x4*x5**2 - 68796*x4*x6**4 - 68796*x5**2*x6**3 - 362797056*x6**13 + +151632*x6**7 + 50*x6, +2548*x4**3 + 19813248*x4*x6**6 - 637*x4 + 39182082048*x6**15 + 30326400* +x6**9 + 4428*x6**3, +1274*x1*x5 + 1651104*x4*x6**5 + 5733*x5**4 + 1238328*x5**2*x6**4 + 637* +x5 + 6530347008*x6**14 - 1667952*x6**8 + 192*x6**2, +1274*x1**2 + 1274*x1 + 1274*x4**2 + 206388*x5**6 - 85995*x5**2*x6**2 - +11754624614400*x6**18 + 9498228480*x6**12 + 9295668*x6**6}$ + + setideal(m1,m1)$ + + setideal(m2,m2)$ + + + setgbasis m1$ + + setgbasis m2$ + + modequalp(m1,m2); + + +yes$ + + +% ==> Different hilbert series driver + + setideal(m,proj_monomial_curve(w1:={0,2,5,9},{w,x,y,z})); + + +{x**5 - w**3*y**2, +w*y**3 - x**3*z, +y**4 - w*x*z**2, +x**2*y - w**2*z}$ + + weights:={{1,1,1,1},w1}; + + +weights := {{1,1,1,1},{0,2,5,9}}$ + + hftestversion 2; + + +hf!=whilb2$ + + f1:=weightedhilbertseries(gbasis m,weights); + + +f1 := ( - w**5*x**17 + w**4*x**17 - w**4*x**15 + w**4*x**8 + w**3*x**15 + w**3* +x**12 + w**3*x**6 + w**2*x**10 + w**2*x**7 + w**2*x**4 + w*x**5 + w*x**2 + + 1)/(w**2*x**9 - w*x**9 - w + 1)$ + + sub(x=1,ws); + + +( - w**5 + w**4 + 3*w**3 + 3*w**2 + 2*w + 1)/(w**2 - 2*w + 1)$ + % The ordinary Hilbert series. + hftestversion 1; + + +hf!=whilb1$ + % The default. + f2:=weightedhilbertseries(gbasis m,weights); + + +f2 := ( - w**5*x**17 + w**4*x**17 - w**4*x**15 + w**4*x**8 + w**3*x**15 + w**3* +x**12 + w**3*x**6 + w**2*x**10 + w**2*x**7 + w**2*x**4 + w*x**5 + w*x**2 + + 1)/(w**2*x**9 - w*x**9 - w + 1)$ + + sub(x=1,ws); + + +( - w**5 + w**4 + 3*w**3 + 3*w**2 + 2*w + 1)/(w**2 - 2*w + 1)$ + + f1-f2; + + +0$ + + +% ==> Different primary decomposition approaches. The example is due + % to Shimoyama Takeshi. CALI 2.2. produced auxiliary embedded + % primes on it. + + vars:={dx,dy,x,y}; + + +vars := {dx,dy,x,y}$ + + setring(vars,degreeorder vars,revlex); + + +{{dx,dy,x,y},{{1,1,1,1}},revlex,{1,1,1,1}}$ + + f3:={DY*( - X*DX + Y**2*DY - Y*DY),DX*(X**2*DX - X*DX - Y*DY)}$ + + + primarydecomposition f3; + + +{{{dx**3, +dy**3, +dx**2*dy, +dx*dy**2, +dy*( - dx*x + dy*y**2 - dy*y), +dx*(dx*x**2 - dx*x - dy*y)}, +{dx,dy}}, +{{x*y - x - y, +dx*x - dx - dy*y + dy, + - dx + dy*y**2 - 2*dy*y + dy}, +{x*y - x - y, +dx*x - dx - dy*y + dy, + - dx + dy*y**2 - 2*dy*y + dy}}, +{{dy,x - 1},{dy,x - 1}}, +{{dy**2, +dy*x, +x**2, +dx*x + dy*y}, +{dy,x}}, +{{dx,y - 1},{dx,y - 1}}, +{{dx**2, +dx*y, +y**2, +dx*x + dy*y}, +{dx,y}}, +{{y**2, +x**2, +x*y, +dx*x + dy*y}, +{y,x}}}$ + + +showtime; + + +Time: 277500 ms plus GC time: 10350 ms + +end; +(TIME: cali 277530 287880)